📌 适用环境
- 设备:OES系列(如OES、OES-plus)下面是oes的实操
- 原系统盘:eMMC(容量约8GB/16GB,挂载在
/)
- 目标盘:SATA SSD(240GB,盘符为
/dev/sda)
- 数据盘:独立存储池(
/vol1、/vol2),迁移过程中不受影响
注意点
- 迁移系统一定要谨慎谨慎谨慎.最好做好备份
- 如果过程有不懂的或者流程进行不下去,把步骤贴给AI,问问AI应该怎么做以及为什么这么做
- 操作系统相关文件的时候,一定要先备份一份出来.
一、准备SSD硬盘
1. 确认盘符
lsblk -f
确认你的SSD盘符(通常是 /dev/sda),并确保其上数据已备份。
2. 清除旧分区表并创建GPT分区
# 清除旧分区表
sudo wipefs -a /dev/sda
# 创建GPT分区表
sudo parted /dev/sda mklabel gpt
# 创建系统分区(使用全部容量,你自己选多少)
sudo parted /dev/sda mkpart primary btrfs 0% 100%
3. 格式化为btrfs
sudo mkfs.btrfs -f /dev/sda1 -L ROOT_SSD
二、挂载并复制系统
1. 挂载新SSD
sudo mount /dev/sda1 /mnt
2. 复制系统(排除数据盘)
sudo rsync -avxHAWXS --numeric-ids --info=progress2 \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
--exclude="/vol1" \
--exclude="/vol2" \
/ /mnt/
等待复制完成(约5-15分钟)。
三、配置新系统
sudo blkid /dev/sda1
记下 UUID 和 PARTUUID 的值,例如:
UUID="3b655a34-7bc9-4233-8a34-e9bf0686ad3f"
PARTUUID="a1b2c3d4-01"
2. 修改新系统的fstab
sudo nano /mnt/etc/fstab
找到 UUID=d184dea7-... / btrfs ... 这一行,将UUID替换为SSD的UUID:
UUID=你的SSD-UUID / btrfs rw,relatime,space_cache=v2,subvolid=5,subvol=/ 0 0
保存退出:Ctrl+O,回车,Ctrl+X。
四、配置引导(核心步骤)
你的OES使用U-Boot引导,通过 /boot/fnEnv.txt配置文件控制启动参数。
1. 编辑引导配置文件
sudo nano /boot/fnEnv.txt
2. 在文件末尾添加以下两行
rootdev=/dev/sda1
rootfstype=btrfs
完整文件示例(根据实际情况可能略有不同):
verbosity=1
bootlogo=false
console=both
fdtfile=amlogic/meson-g12b-a311d-oes.dtb
kernelfile=vmlinuz-6.18.18-trim
instdisk_bootuuid=13dc68af-01
instdisk_rootuuid=13dc68af-02
rootdev=/dev/sda1
rootfstype=btrfs
保存退出。如果是nano 操作是ctrl + o 保存 ctrl + x 退出
3. 确认boot.cmd已加载fnEnv.txt(验证性操作)
cat /boot/boot.cmd | grep fnEnv.txt
应该能看到 if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}fnEnv.txt; then 这样的行,说明系统会读取 fnEnv.txt。
五、重启验证
1. 重启
sudo reboot
2. 验证根分区
df -h /
根分区应显示为SSD容量(约223G-你的ssd容量)
3. 验证内核参数
cat /proc/cmdline
应显示 root=/dev/sda1。
4. 扩容文件系统
sudo btrfs filesystem resize max /
df -h /
六、后续维护提醒
内核升级后更新fnEnv.txt
系统更新内核后,新内核文件会放在SSD的 /boot目录,但 fnEnv.txt中的 kernelfile需要手动更新:
# 查看新内核文件名
ls /boot/vmlinuz-*
# 编辑fnEnv.txt,更新kernelfile
sudo nano /boot/fnEnv.txt
将 kernelfile=vmlinuz-6.18.18-trim 改为新版本号。
备份配置文件
sudo cp /boot/fnEnv.txt /boot/fnEnv.txt.bak
七、故障恢复(万一无法启动)
如果修改 fnEnv.txt后系统无法启动:
- 使用U盘启动救援系统。
- 挂载eMMC的
/boot分区。
- 恢复备份的
fnEnv.txt或删除添加的 rootdev和 rootfstype行。
- 重启即可恢复原状。
| 设备 |
盘符 |
用途 |
| eMMC |
/dev/mmcblk1 |
U-Boot引导 +/boot/fnEnv.txt |
| SSD |
/dev/sda1 |
完整系统根目录 |
| 数据盘 |
/vol1、/vol2 |
用户数据(不受影响) |
迁移完成! 🎉
成功后的图
