【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
前面几篇文章,我们说到了怎么下载编译器、怎么编译uboot、怎么编译kernel和根文件系统。这样一步一步下来,虽然繁琐,但是也算步骤比较清晰。只是在最终量产的时候,或者说有些同学只是希望在windows系统下面使用这块板子,那么上述这些操作就有点复杂了。今天,我们讨论下,如何在构建系统image,以及如何在windows下面烧入镜像文件。
注意,此次烧入的方法还是sd卡。
1、准备镜像文件
所谓镜像文件,就是想办法把所有需要的uboot bin文件、内核文件、设备树文件、根文件都集中到一个文件里面。
1)创建image文件,大小为420M
sudo dd if=/dev/zero of=demo.img bs=1M count=420
sync
2)开始分区
sudo parted demo.img --script -- mklabel msdos
sudo parted demo.img --script -- mkpart primary fat16 4096s 65783s
sudo parted demo.img --script -- mkpart primary ext4 65784s -1
3)查看一下分区是否正确
shell> sudo parted demo.img
GNU Parted 3.3
Using /home/feixiaoxing/Desktop/demo.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model: (file)
Disk /home/feixiaoxing/Desktop/demo.img: 440MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: Number Start End Size Type File system Flags1 2097kB 33.7MB 31.6MB primary lba2 33.7MB 439MB 406MB primary
4)挂在到设备节点
先查看可用的设备节点,
sudo losetup -f
/dev/loop10
开始挂载,
shell> sudo losetup /dev/loop10 demo.img
shell> sudo kpartx -av /dev/loop10
add map loop10p1 (253:0): 0 61688 linear 7:10 4096
add map loop10p2 (253:1): 0 792424 linear 7:10 65784
kpartx这个工具一般ubuntu不是自带的,需要自己sudo apt-get install 安装下。如果配置没有问题,一般看到两个子设备节点,
ls -l /dev/mapper
total 0
crw------- 1 root root 10, 236 5月 27 08:14 control
lrwxrwxrwx 1 root root 7 5月 27 09:01 loop10p1 -> ../dm-0
lrwxrwxrwx 1 root root 7 5月 27 09:01 loop10p2 -> ../dm-1
5)创建文件系统
sudo mkfs.msdos /dev/mapper/loop10p1
sudo mkfs.ext4 /dev/mapper/loop10p2
6)先拷贝uboot文件,挂在到/dev/loop10下面
sudo dd if=u-boot-3s-current/u-boot-sunxi-with-spl.bin of=/dev/loop10 bs=1024 seek=8
7)拷贝dtb文件和kernel文件
sudo mount /dev/mapper/loop10p1 /mnt
sudo cp ~/Desktop/linux-zero-4.10.y/arch/arm/boot/zImage /mnt
sudo cp ~/Desktop/linux-zero-4.10.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dtb /mnt
sudo umount /mnt
8) 拷贝根文件系统
sudo mount /dev/mapper/loop10p2 /mnt
sudo cp ~/Desktop/buildroot-2017.08/output/images/rootfs.tar /mnt
cd /mnt
sudo tar xvf rootfs.tar
sudo rm rootfs.tar
cd ~/Desktop/
sudo umount /mnt
9)卸载磁盘
sudo kpartx -d demo.img
loop deleted : /dev/loop10
完成上面这些操作之后,demo.img的镜像文件就算制作好了。后续,我们就可以用它来完成镜像文件的烧录工作了。
2、windows下面镜像文件烧入
在windows上面,如果需要完成对sd卡的烧入,可以先将刚才的demo.img拷贝到windows系统上,接着下载一个win32diskimager的软件,截图如下,
将micro sd卡插入读卡器,连接电脑,选择好镜像文件和盘符,这样就可以烧入了。烧入完毕后,可以插入到开发板,进一步验证确认下是否ok。