最近看了这个大佬的文章,写了使用远程来挂载linux的方案,觉得还是很有意思的,瞬间感觉linux这块都还是相通的,就跑了一下,果然,牛逼!
香橙派全志H3烧录Uboot,远程加载zImage,dtb,rootfs
但是这个博主只讲了用网络挂载,我觉得还可以弄个本地的,这样更方便。下面说一下具体的流程:
1、编译uboot和烧写
这里我用了和博主一样的文件,解压安装就完事
这里注意一下交叉编译器的安装,参考这个:交叉编译器安装
最后验证一下:
之后进入uboot的路径,修改目标啥的,就开始编译
make orangepi_pc_defconfig
make
最后得到uboot,使用sd卡来烧录
sd卡格式化成这样两个分区
烧录uboot
2、编内核
也是进入内核的目录,修改目标之后就可以编译
make sunxi_defconfig
make
得到内核和设备树
3、使用uboot加载kernel
使用这个命令:
tftp 42000000 zImage //zImage复制到内存的42000000处
tftp 43000000 sun8i-h3-orangepi-pc.dtb //设备树复制到内存的43000000 处
固化到uboot里面就是:
setenv bootcmd 'tftp 42000000 zImage; tftp 43000000 sun8i-h3-orangepi-pc.dtb; bootz 0x42000000 - 0x43000000'
saveenv
4、编译文件系统
做一些配置
make defconfig
make menuconfig
之后安装到nfs的路径下
make
make install CONFIG_PREFIX=/home/lx/orangepi/nfs/rootfs
5、使用nfs挂载文件系统
在uboot里面加上这段,上电后就会自动加载
setenv bootargs 'console=ttyS0,115200 root=/dev/nfs nfsroot=192.168.1.100:/home/lx/orangepi/nfs/rootfs,proto=tcp rw ip=192.168.1.10:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off'
saveenv
6、uboot在sd卡中加载kernel和设备树
先把内核镜像和设备树放到sd卡,如下所示
之后使用下面的命令设置启动方式
setenv bootcmd 'mmc dev 1; fatload mmc 1:1 80800000 zImage; fatload mmc 1:1 83000000 imx6ull-alientek-emmc.dtb; bootz 80800000 - 83000000;'
saveenv
启动如下,就不是从tftp拉文件了
7、uboot在sd卡中加载rootfs
这个需要先参考正点原子把库拿过来,就是下面这一章
拷贝了下面三个路径
最后文件系统还是很大的
最后做一下拷贝:
sudo cp -a ~/orangepi/nfs/rootfs/* /mnt/sdcard/
就是文件系统都拷贝到ext4那个分区里面
将启动方式固化到文件系统:
setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10
saveenv
最后启动如下: