一、检查烧录文件夹下的文件
前期已经建立好烧录文件夹,路径为/home/daemonchen/linux/V3S/mysys_kernel_5.2.y,经过前期的移植,烧录文件夹下应该包含以下四个文件:
文件名 | 作用 |
rootfs | 根文件系统 |
sun8i-v3s-licheepi-zero-dock.dtb | 设备树 |
u-boot-sunxi-with-spl.bin | uboot |
zImage | linux内核镜像 |
具体文件如下图所示:
二、格式化SD卡
1. 在windows主机端利用SD Card Formatter软件格式化SD卡(确保SD卡中无重要文件):
2. 依次选择自己SD卡对应的盘符(我的是G盘),选择快速格式化(可以直接删除inode,速度块),然后Format,进度条结束即格式化完成。
三、制作SD卡分区
1. 在主机弹出SD卡挂载,将SD卡重新挂载到虚拟机ubuntu端。
虚拟机上的Super Top Mass Storage Device大容量存储设备显示“断开连接(连接主机)”,则已将SD卡挂载到虚拟机ubuntu端。
2. 在Ubuntu下找到用于设置SD卡分区的GParted软件。
3. 双击打开(需要输密码),右上角选择/dev/sdb(即SD卡盘符)
4. 将已创建的/dev/sdb1分区 右键 卸载并删除。
5. 点击左上角的 对勾 同步一下
6. 点击左上角加号创建新分区,之前剩余空间输入2MB(主要用来存放uboot),新大小输入20MB,文件系选择fat16,点击添加。
7. 再次点击左上角加号创建新分区,之前的空余空间填0,这次将剩余的空间全部分配,文件系统是ext4.
8. 分配完成的SD卡分区如下图所示,再次点击左上角对勾同步一下。
9. 在终端输入以下命令查看刚才创建的分区:
sudo su
fdisk -l
创建好的分区如下图所示:
至此,SD卡分区创建完成。
四、开始烧录
1. 进入烧录文件夹下的并打开终端
2. 将uboot写入到sd卡8k偏移处。
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8
烧录完成:
3. 在烧录文件夹下创建mnt文件夹(用来挂载SD卡分区)。将内核文件,启动参数文件,dtb写入到sd卡的第一分区sdb1。
sudo mkdir mnt
sudo mount /dev/sdb1 mnt
sudo cp zImage mnt/
sudo cp sun8i-v3s-licheepi-zero-dock.dtb mnt/
sync
sudo umount /dev/sdb1
4. 进入rootfs目录下,打包所有文件,名称为rootfs.tar.gz,并将其移动到烧录文件夹下,最后要回到烧录文件夹下。
cd rootfs
tar -czvf rootfs.tar.gz *
mv rootfs.tar.gz ../ -f
cd ../
5.将根文件系统内容写入到sd卡的第二分区sdb2。(之前不压缩rootfs直接写入的话会报错)。
sudo mount /dev/sdb2 mnt/
sudo rm -rf mnt/*
sudo tar xzvf rootfs.tar.gz -C mnt/
sudo dd if=/dev/zero of=mnt/swap bs=1M count=128
sudo mkswap mnt/swap
sudo echo "/swap swap swap defaults 0 0" >> mnt/etc/fstab
sync
sudo umount /dev/sdb2
sudo rm -rf mnt
五、启动测试
1. ubuntu端取消SD卡挂载(尽量别直接拔,会丢文件),将SD卡插入licheepi,上电启动,利用SecureCRT查看串口输出(串口0,用USB转串口接电脑)。但此时上电会有如下问题:
原因是没有设置bootcmd和bootargs。
2. 复位电路板,在uboot倒计时结束前按回车键,进入设置界面。如下图所示:
设置bootcmd和bootargs:
setenv bootargs 'console=tty0 console=ttyS0,115200 panic=5 rootwait root=/dev/mmcblk0p2 earlyprintk rw vt.global_cursor_default=0'
setenv bootcmd 'mmc dev 1; fatload mmc 0:1 0x41000000 zImage; fatload mmc 0:1 0x41800000 sun8i-v3s-licheepi-zero-dock.dtb; bootz 0x41000000 - 0x41800000'
saveenv
3. 重启以后,可以实现开机倒计时结束自启动,版本号正确。
4. 进入根文件系统正常。
至此移植完毕!!!