$ cd /Bootloader
$ tar -jxvf u-boot-xlnx.tar.bz2
虚拟机里直接提取到此处,然后进入文件夹
$ cd u-boot-xlnx
开始编译
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- distclean
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_myd_config
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
zynq_myd_config是核心板的配置文件
编译需要一段时间,子系统比虚拟机里编译时间更长。编译完成后,在当前目录下会生成“u-boot”ELF 文件。使用此镜像制作 boot.bin时需要重命名为“u-boot.elf”:
cp u-boot ../u-boot.elf
把u-boot.elf文件移动到$ cd /Kernel
$ tar -jxvf linux-xlnx.tar.bz2
虚拟机直接解压,然后进入文件夹
$ cd linux-xlnx
开始编译:
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- distclean
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- zynq_myd_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- dtbs
我的机器在虚拟机里编译需要约7分钟,而在Linux子系统编译时间非常长(最终放弃编译,估计是在64位系统用32位模拟器运行的原因)。编译完成后,会在arch/arm/boot 目录下生成Linux内核镜像文件uImage;在arch/arm/boot/dts/生成设备树文件zynq-myd.dtb,将这2个文件拷贝到$ cd /Filesystem
$ tar -jxvf buildroot-2015.02.tar.bz2
$ cd buildroot-2015.02
将目录中的zynq_myd_config 文件复制为新的.config文件(显示隐藏文件):
$ cp zynq_myd_config .config
配置buildroot:
$ make menuconfig
设置交叉编译工具路径:
Toolchain ---> () Toolchain path进入Toolchain path 选项,填入编译器路径:
修改保存后退出配置,开始编译:/Toolchain/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux
$ make
编译耗时非常长,大约1小时 ,等待!编译完成之后将在“buildroot-2015.02/output/images”目录内生产rootfs.tar 文件 ,将rootfs.tar文件移动到$ cd /sd_image
$ mkdir -p rootfs
$ sudo tar xvf rootfs.tar -C ./rootfs/
$ cd ./rootfs
$ sudo tar cvf ../rootfs.tar ./*
在$ cd /Filesystem
$ mkdir tmp
$ cp uramdisk.image.gz tmp/
$ cd tmp/
去掉mkimage 生成的64 bytes 的文件头,生成新的ramdisk.image.gz
$ dd if=uramdisk.image.gz of=ramdisk.image.gz bs=64 skip=1
gunzip 解压ramdisk.image.gz 生成 ramdisk.image
$ gunzip ramdisk.image.gz
新建挂载目录“ramdiskdir”,并将ramdisk.image 挂载
$ mkdir -p ramdiskdir
$ sudo mount -o loop,rw ramdisk.image ramdiskdir
(2) 进入ramdiskdir目录,根据需要做修改。
移植vsftpd见上一篇
(3) 重新生成ramdisk
同步文件系统并卸载ramdisk
$ sync
$ sudo umount ramdiskdir
用gzip 压缩 ramdisk.image,生成 ramdisk.image.gz
$ gzip -9 ramdisk.image
用mkimage 添加文件头,生成新的 uramdisk.image.gz 供u-boot 使用
$ mkimage -A arm -T ramdisk -C gzip -n Ramdisk -d ramdisk.image.gz uramdisk.image.gz
删除临时文件 ramdisk.image.gz
$ rm ramdisk.image.gz
说明:也可以用unpackfs.sh 脚本来解压。把unpackfs.sh拷贝到uramdksi.image.gz 所在的目录下,执行命令:
$ ./unpackfs.sh uramdisk.image.gz
如提示sh文件没有权限,执行
$ chmod +x unpackfs.sh
该命令会将uramdisk.image.gz 解压并挂载到ramdiskdir 文件夹下。
如果用unpackfs.sh 脚本来解压,可以用packfs.sh脚本来打包。将packfs.sh 拷贝到uramdisk.image.gz 所在的目录下,执行命令打包:
$ ./packfs.sh
(4) 将uramdisk.image.gz文件拷贝到