【f1c200s/f1c100s】系统运行期间替换内核镜像和设备树

【f1c200s/f1c100s】系统运行期间替换内核镜像和设备树

  • 前言
  • 方法
    • 在根文件系统挂载镜像所在分区
    • 通过NFS拷贝镜像到`/mnt`目录

前言

前端时间调试自己设计的mango-pi时,由于uboot没有移植USB驱动和网卡驱动,每次更新内核和设备树都需要重新插拔SD卡,非常影响调试效率,后面SD卡都给撸秃噜皮儿了。然后就在想能不能不关机更新内核镜像和设备树,因为我发现ubuntu好像在根文件系统下是可以找得到一个vmlinuz的,因为内核运行是将整个内核镜像文件拷贝到内存中执行的 ,所以可以在根文件系统中直接把镜像替换掉,那估计可行,很遗憾的是,在我自己构建的debian根文件系统中并没有找到。


方法

后面反应过来,我们内核镜像和设备树不是保存在SD卡中一个vfat格式分区中的吗?uboot是直接在这个分区中去加载内核和设备树到内存的,那就意味着我们可以在根文件系统中挂载这个分区,然后将里面的镜像和设备树替换掉直接重启不就好了。

在根文件系统挂载镜像所在分区

使用fdisk -l查看分区信息,这里100M大小的即为镜像所在分区,将它挂载到/mnt目录。

root@mangopi:~# fdisk -l
Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000ad027

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        2048   206847   204800  100M 83 Linux
/dev/mmcblk0p2      206848 31116287 30909440 14.8G 83 Linux
root@mangopi:~# mount /dev/mmcblk0p
mmcblk0p1  mmcblk0p2
root@mangopi:~# mount /dev/mmcblk0p
mmcblk0p1  mmcblk0p2
root@mangopi:~# mount /dev/mmcblk0p1 /mnt/
root@mangopi:~# cd /mnt/
root@mangopi:/mnt# ls
'System Volume Information'   boot.scr   suniv-f1c100s-mangopi.dtb   zImage

通过NFS拷贝镜像到/mnt目录

然后将编译出的镜像和设备树从虚拟机中拷贝到/mnt目录替换掉原有镜像和设备树即可。
然后重启。

root@mangopi:~# cp nfs/zImage nfs/suniv-f1c100s-mangopi.dtb /mnt/
root@mangopi:~# reboot

你可能感兴趣的:(嵌入式Linux,#,内核镜像,系统更新,设备树,替换镜像,荔枝派)