在前面已经完成了uboot的编译,kernel的移植适配,和通过busybox制作根文件系统,并且通过nfs方式成功挂载,现在后面要做的就是把rootfs制作成镜像文件然后烧录验证
在我们挂载的rootfs挂载点里执行以下步骤
(1)创建目录ext2_rootfs目录
(2)dd if=/dev/zero of=rootfs.ext2 bs=1024 count=15360
我们这里设置15M,根据你的rootfs大小决定count的大小
(3)losetup /dev/loop1 rootfs.ext2
有时候可能会报错:
losetup: rootfs.ext2:设置回环设备失败: 设备或资源忙
解决办法:
umount /dev/loop1
losetup -d /dev/loop1 #卸载
(4)挂载到目录ext2_rootfs下
mke2fs -m 0 /dev/loop1 15360
mount -t ext2 /dev/loop1 ./ext2_rootfs/
(5)进入ext2_rootfs 向./rootfs中复制内容,用cp …/rootfs/* ./ -rf
(6)卸载资源
umount /dev/loop1
losetup -d /dev/loop1
(7)完成后得到的rootfs.ext2就是我们做好的rootfs镜像。拿去烧录即可。
接下来就是烧录,做个记录把,方便以后查询
首先准备要烧录的文件
我这里把uboot和kernel和rootfs一起准备烧录,复制到fastboot文件目录下
通过在windows的DOS命令进入到fastboot文件下,接下来就是硬件设备的准备
开发板,连接串口线用于信息的输出,连接USB OTG用于文件的下载(驱动没安装需要安装,设备管理器下确定设备运行正常),电源线,(网线可以不用)
(1)开机进入uboot下执行fastboot等待下载
(2)通过fastboot devices确定设备是否连接上
(3)执行uboot,kernel,rootfs下载
fastboot.exe flash bootloader ./u-boot.bin #烧写bootloader#
fastboot.exe flash kernel ./zImage #烧写kernel#
fastboot.exe flash system ./rootfs.ext2 #烧写rootfs#
(4)修改uboot下的参数,烧写完成复位,进入到uboot下修改启动参数
如果你的kernel是通过TFTP下载方式启动的话就设置
setenv bootcmd 'tftp 30008000 zImage;bootm 30008000'
如果kernel也烧录到emmc了的话就在存储器中把内核读到内存中
setenv bootcmd 'movi read kernel 30008000; bootm 30008000'
(5)修改uboot下的参数,这些参数是传给内核的,rootfs挂载方式,控制台输出,波特率设置等
setenv bootargs console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext2
savenv
这里把原先通过nfs方式挂载的参数也给出来吧,方便查询
setenv bootargs 'root=/dev/nfs nfsroot=192.168.1.105:/home/hawen/zyp_linux/nfs/rootfs ip=192.168.1.20:192.168.1.105:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200'
saveenv
(6)复位启动或者通过bootm 30008000启动系统
系统正常启动,完成。