这部分内容可以参考韦东山的imx6ull的buildroot部分教程。本博客只是记录了步骤和相关脚本设置,开发环境的构建请参考韦东山的教程。该步骤只适用于imx6ull。
资料链接如下
http://download.100ask.org/boards/Nxp/100ask_imx6ull_pro/index.html
第一步:制作文件系统
vmuser@vmuser-virtual-machine:~/work/emmc$ tree kernel
kernel
├── rtthread.bin
├── rtthread.elf
├── rtthread.img
└── rtthread.imx
0 directories, 4 files
vmuser@vmuser-virtual-machine:~/work/emmc$ tree root/
root/
└── bin
├── gpio.elf
├── hello.elf
├── i2c.elf
├── ntp.elf
├── ping.elf
├── pong.elf
├── pwm.elf
├── uart.elf
├── uPnP.elf
├── vi.elf
├── webclient.elf
└── webserver.elf
1 directory, 12 files
使用 dd if 命令生成一个大小为 100MB 大小的镜像文件,之后使用 mkfs.fat 格式化生成的镜像为 fat 分区
dd if=/dev/zero of=./boot.fat bs=512 count=200k
mkfs.fat boot.fat
制作好大小为 100MB 的 fat 镜像后,需要挂载到某个文件夹用来对其进行写入文件操作,使用 mount 命令把 boot.fat 分区挂载到当前目录下 tmp 目录
mkdir tmp
sudo mount ./boot.fat ./tmp/
之后我们拷贝kernel文件夹和root文件夹到已挂载的 tmp 目录下,拷贝完成后使用 sync 来同步一下数据状态,之后使用 umount 命令来取消挂载
sudo cp -rfd kernel/ ./tmp/
sudo cp -rfd root/ ./tmp/
sync
sudo umount ./tmp
第二步:制作镜像
vmuser@vmuser-virtual-machine:~/work/emmc/Image$ sudo apt-get install libconfuse2
vmuser@vmuser-virtual-machine:~/work/emmc/Image$ tree
.
├── genimage
├── genimage.cfg
├── input
│ ├── boot.fat
│ └── u-boot-dtb.imx
├── root
└── tmp
3 directories, 4 files
vmuser@vmuser-virtual-machine:~/work/emmc/Image$ ./genimage
INFO: cmd: "rm -rf "/home/vmuser/work/emmc/Image/tmp"/*" (stderr):
INFO: cmd: "mkdir -p "/home/vmuser/work/emmc/Image/tmp"" (stderr):
INFO: cmd: "cp -a "/home/vmuser/work/emmc/Image/root" "/home/vmuser/work/emmc/Image/tmp/root"" (stderr):
INFO: cmd: "find '/home/vmuser/work/emmc/Image/tmp/root' -depth -type d -printf '%P\0' | xargs -0 -I {} touch -r '/home/vmuser/work/emmc/Image/root/{}' '/home/vmuser/work/emmc/Image/tmp/root/{}'" (stderr):
INFO: cmd: "mkdir -p "/home/vmuser/work/emmc/Image/images"" (stderr):
INFO: hdimage(art-pi.img): adding partition 'u-boot' from 'u-boot-dtb.imx' ...
INFO: hdimage(art-pi.img): adding partition 'rootfs' (in MBR) from 'boot.fat' ...
INFO: hdimage(art-pi.img): writing MBR
INFO: cmd: "rm -rf "/home/vmuser/work/emmc/Image/tmp"/*" (stderr):
vmuser@vmuser-virtual-machine:~/work/emmc/Image$
genimage.cfg
# Minimal SD card image for the Freescale boards Template
#
# We mimic the .sdcard Freescale's image format:
# * the SD card must have 1 kB free space at the beginning,
# * U-Boot is dumped as is,
# * a FAT partition at offset 8 MB is containing zImage/uImage and DTB files
# * a single root filesystem partition is required (ext2, ext3 or ext4)
#
image art-pi.img {
hdimage {
}
partition u-boot {
in-partition-table = "no"
image = "u-boot-dtb.imx"
offset = 1024
size = 2M
}
partition rootfs {
partition-type = 0xc
image = "boot.fat"
size = 200M
}
}
setenv bootcmd "fatload mmc 1:1 0x80001000 /kernel/rtthread.bin; dcache flush; go 0x80001000"
saveenv