方法三,这个方法是改良方法一的缺陷,更完善,有操作风险,改错了启动不了;改好了,TF和eMMC都可以引导,互不影响。方法一缺陷是因为TF和eMMC的UUID相同,当这两个存储的UUID不一样,各自引导是成功的,使用工具改UUID就行了,然而,不用UUID,用设备名、分区列表名会更简单。方法如下:
1、假设是在lpi4a上运行的revyos, 那么只需要在lpi4a上下载revyos的TF卡镜像,解压,用dd烧录到TF卡上,重启lpi4a, 从TF上启动revyos, 启动完成后,开始把启动中需要的UUID改为设备名,
sudo nano /boot/extlinux/extlinux.conf
修改成与以下内容一样:
## /boot/extlinux/extlinux.conf
##
## IMPORTANT WARNING
##
## The configuration of this file is generated automatically.
## Do not edit this file manually, use: u-boot-update
default l0
menu title U-Boot menu
prompt 2
timeout 50
label l0
menu label RevyOS GNU/Linux 6.6.108-th1520
linux /vmlinux-6.6.108-th1520
initrd /initrd.img-6.6.108-th1520
fdtdir /dtbs/linux-image-6.6.108-th1520/
# append root=PARTUUID=80a5a8e9-c744-491a-93c1-4f4194fd690b console=ttyS0,115200 rootwait rw earlycon clk_ignore_unused loglevel=7 eth= rootrwoptions=rw,noatime rootrwreset=yes
append root=/dev/mmcblk1p4 console=ttyS0,115200 rootwait rw earlycon clk_ignore_unused loglevel=7 eth= rootrwoptions=rw,noatime rootrwreset=yes
label l0r
menu label RevyOS GNU/Linux 6.6.108-th1520 (rescue target)
linux /vmlinux-6.6.108-th1520
initrd /initrd.img-6.6.108-th1520
fdtdir /dtbs/linux-image-6.6.108-th1520/
# append root=PARTUUID=80a5a8e9-c744-491a-93c1-4f4194fd690b console=ttyS0,115200 rootwait rw earlycon clk_ignore_unused loglevel=7 eth= rootrwoptions=rw,noatime rootrwreset=yes single
append root=/dev/mmcblk1p4 console=ttyS0,115200 rootwait rw earlycon clk_ignore_unused loglevel=7 eth= rootrwoptions=rw,noatime rootrwreset=yes single
ctrl+o保存,ctrl+x退出。再修改另一文件:
sudo nano /etc/fstab
修改成与以下内容一样:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# /dev/mmcblk1p4 UUID=5d59ddf3-bd1f-493e-a4b9-4ec49932b773
#PARTUUID=80a5a8e9-c744-491a-93c1-4f4194fd690b / ext4 rw,relatime 0 1
/dev/mmcblk1p4 / ext4 rw,relatime 0 1
# /dev/mmcblk1p2 UUID=54ac5bf0-9255-4973-b3c0-660e326410c8
#PARTUUID=d7f2dcd6-f439-4f93-a651-ba7430ee583c /boot ext4 rw,relatime 0 2
/dev/mmcblk1p2 /boot ext4 rw,relatime 0 2
ctrl+o保存,ctrl+x退出。重启lpi4a, 验证刚才的修改,可以让TF继续引导成功。
2、修改后重新启动成功,假设eMMC上已无数据需要备份,启动到图形登陆界面时不要进入,切换到命令行,
sudo dd if=/dev/mmcblk1 of=/dev/mmcblk0 conv=sync bs=10M status=progress
dd 拷贝完,sudo sync 再次同步一下。因为启动已经改为设备名,如果拔出TF重启lpi4a,eMMC是不会引导成功的,需要修改引导设备名
sudo mount /dev/mmcblk0p2 /mnt
sudo nano /mnt/extlinux/extlinux.conf
把/dev/mmcblk1p4修改成/dev/mmcblk0p4,有两处。ctrl+o保存,ctrl+x退出。
sudo umount /mnt
sudo mount /dev/mmcblk0p4 /mnt
sudo nano /mnt/etc/fstab
把/dev/mmcblk1p2修改成/dev/mmcblk0p2 ,
把/dev/mmcblk1p4修改成/dev/mmcblk0p4 ,
ctrl+o保存,ctrl+x退出。
sudo poweroff , 关机,拔出TF卡,重新开机。如果eMMC引导正常后,记得扩容第4分区。
方法四待续。。。。。