Lpi4A-RevyOS另类eMMC镜像刷写法

我比较折腾,经常把系统折腾奔溃需要重装。lpi4A的eMMC上重装系统,比较麻烦,必须借助第二台机器,把lpi4A用type-c和串口线连接到另一台电脑上;而且每次刷eMMC都会清空数据,都要来回备份数据,有时还没备份系统就被折腾奔溃了。所以我在折腾中琢磨并验证了几个方法,我验证的lpi4A是16+128顶配,所以不确定方法是否也适合低内存的机型。
方法1:假设lpi4a上运行的revyos-250729是正常的,需要升级到250930, 那么只需要在lpi4a上下载revyos-250930的TF卡镜像,解压,用dd烧录到TF卡上:

sudo dd if=sdcard-lpi4a-20250930_113443.img of=/dev/mmcblk1 conv=sync bs=10M status=progress

备份数据,重启lpi4a, 从TF上启动revyos-20250930, 启动到图形登陆界面时不要进入,切换到命令行,

sudo dd if=/dev/mmcblk1 of=/dev/mmcblk0 conv=sync bs=10M status=progress

dd 拷贝完,拔出TF卡,重启lpi4a,eMMC上运行的就是revyos-20250930。TF卡镜像里是不会自动扩容存储的,所以记得把eMMC进行扩容(之后的方法里还会有把闲置容量用于增加分区)。
方法一的缺陷:因为是TF直接复制到eMMC,所以分区的UUID也复制过去了,从截图上,能看到对应分区的UUID是相同的。这时,一定不要从TF启动引导,不然,启动后是,/boot分区在TF上,根分区和交换分区在eMMC上。启动引导时没有TF只有eMMC,系统是安全的。启动完再插入UUID相同的TF卡,也是安全的。后面的方法会弥补这个缺陷。如果简单的使用eMMC,只用方法一就可以了。

方法二待续。。。。。。

4 个赞

方法二:这个方法是补充方法一的。方法一的revyos250930-TF镜像,因为把UUID也复制到了eMMC上,因而不能从TF插槽引导。但有些特殊情况,必须从TF引导系统,例如没有串口线选择单用户模式;这时可以在lpi4a上,由eMMC运行的系统里,下载TF镜像的历史版本,把TF烧录上旧系统,也可以作为救援系统使用的。
方法三待续。。。。

1 个赞

方法三,这个方法是改良方法一的缺陷,更完善,有操作风险,改错了启动不了;改好了,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分区。

方法四待续。。。。。

2 个赞

感觉像在解数学题 :laughing:

2 个赞

因为我已经把deepin25 for th1520的eMMC镜像,弄成了从TF引导运行,我需要去熟悉使用它,只有在长期使用中才能发现缺陷,所以,另类刷写法的第四、第五、第六,我这里先写思路,等我的lpi4a有闲置时间了,再去验证后3种方法。
方法四:是从方法三扩展,在eMMC上建立第5分区,备份分区,把需要的数据备份到这个分区,在下次刷写系统镜像时,不需要再备份到其他存储设备; 第五分区是否自动挂载自动备份,可选。注意:如果采用第五分区备份数据,下次刷写系统镜像时,不能采用传统的type-c传输和全盘dd,只能是TF各分区复制到eMMC对应的各分区。这个方法大概率能成功的,我在VF2上使用了近2年。
方法五:也是从方法三、四扩展出来的,建立多分区,实现单盘双系统或更多,在eMMC上存在两个以上的操作系统,都能分别引导分时运行,互不干扰。这个方法大概率能成功的,我在VF2上使用了近2年。
方法六:这个方法不同于前5个,是考虑把revyos的eMMC镜像文件,逐个用dd写到相对应的eMMC分区上,这方法有个未知后果,eMMC镜像里,第一次启动它会有个自动扩容的操作,不知道这个操作,对增扩出来的eMMC第五分区等等有没有破坏性。

10月20日,方法4、方法5验证成功,lpi4A一机单盘双系统完成,不需要频繁拔插TF进行切换系统,可以在eMMC上,分时运行revyos和deepin, deepin在lpi4A上运行是流畅的,值得费些时间弄成和revyos对比使用。


警告!!!

使用了eMMC镜像另类刷写法的,建议一定要把eMMC上的第二和第四分区UUID,随机修改掉。现在已经发现revyos9月和10月TF镜像的UUID可能是一样的,会有冲突。如果修改了分区UUID,记得到/boot/extlinux/extlinux.conf 和 /etc/fstab 做改变。
VF2新的官方镜像debian2510,也开始第一次使用UUID, 今天一天我都被这两个开发板新系统的UUID折磨。

2 个赞

太帅了哥, 老马都得给您点赞 :+1:

2 个赞

惭愧,惭愧,我只是把同为RISCV的VF2上,用了两年的方法,用在了lpi4a上,同样是128G的硬盘,VF2我是在上面安装了4个不同的操作系统。

1 个赞

Lpi4A-RevyOS另类升级法

先感谢辛勤的revyos研发人员,10月25日才发布新版镜像,然后在10月30日又更新了个新版本。
接着 警告!!! Lpi4A-RevyOS另类升级法,如果操作不当,100%会造成不能从eMMC启动。

我的lpi4a_eMMC上安装的是RevyOS 9月的版本,并把系统除了内核和GPU驱动外,全升级到了debian13稳定版,所以轻易我不舍得升级。
10月25日的版本,我烧录TF看了,chromium还是109,流媒体还是变色,内核还是Linux 6.6.108-th1520,好像没升级的需要。
10月30日版本,我烧录TF看了,只有内核更新到Linux 6.6.115-th1520。然后我就瞎折腾了个办法,既能升级内核,又能保留数据不需要改变。
启动进入lpi4a_eMMC上系统,apt search linux-image-6.6-th1520 ,确认它是115版本, sudo apt install linux-image-6.6-th1520 ,安装升级内核,程序会升级/boot/里的内核版本,并更换dtbs版本。安装完,一定不要马上重启动,升级内核时,程序把/boot/extlinux/extlinux.conf文件里,又改成了用UUID,所以你需要先修改再重启动。 如果没修改就启动了,那么你可以用TF启动后,再修改eMMC第二分区的/boot/extlinux/extlinux.conf文件。
下图1,右边显示再用内核版本,左边在升级为6.6.115。
下图2,升级完成重启成功。


3 个赞

太厉害啦!

1 个赞