arm fnOS飞牛系统从emmc迁移至 NVMe 硬盘全指南

核心逻辑

通过物理克隆(dd)将旧分区的每一个字节搬运到新分区,通过修改 UUID 解决识别冲突,最后通过修改引导参数(PARTUUID)强制内核切换启动设备。


第一阶段:准备新硬盘分区

在操作前,需确保 NVMe 硬盘上的重要数据已备份。

  1. 进入分区工具:
    sudo fdisk /dev/nvme0n1
    
  2. 删除旧分区(如有): 输入 d
  3. 新建分区:
    • 输入 n (新建) -> p (主分区) -> 1 (分区号)。
    • First sector: 直接回车(默认 2048)。
    • Last sector: 输入 +64G(或其他你想要的大小)。
  4. 清除特征码: 如果提示 Contains a zfs_member signature,输入 y 确认清除。
  5. 保存: 输入 w 写入分区表并退出。
  6. 强制内核刷新分区:
    sudo partprobe /dev/nvme0n1
    

第二阶段:全量克隆系统 (Rootfs)

使用 dd 命令进行位对位克隆。

# if 为源(SD/eMMC), of 为目标(NVMe)
sudo dd if=/dev/mmcblk0p2 of=/dev/nvme0n1p1 bs=1M conv=noerror,sync status=progress

注意:克隆完成后,两个分区的 UUID 将完全一致,此时切勿重启。


第三阶段:解决 UUID 冲突与文件系统优化

为了让系统区分开新旧两个“双胞胎”分区,必须修改新分区的身份 ID。

  1. 生成并修改新 UUID:
    NEW_UUID=$(uuidgen)
    sudo btrfstune -U $NEW_UUID /dev/nvme0n1p1
    
  2. 修正新系统内的挂载表 (fstab):
    sudo mount /dev/nvme0n1p1 /mnt
    sudo nano /mnt/etc/fstab
    
    / 挂载点那一行的 UUID= 修改为刚才生成的新 UUID。
  3. 扩容文件系统:
    由于 dd 只是克隆了原分区大小,需手动填满 64G 空间:
    sudo btrfs filesystem resize max /mnt
    sudo umount /mnt
    

第四阶段:注入 NVMe 驱动(可忽略,一般都有驱动)

这是最容易被忽略的一步。如果内核启动镜像(initramfs)里没有 NVMe 驱动,系统将无法识别硬盘。

  1. 添加驱动模块:
    sudo nano /etc/initramfs-tools/modules
    
    在末尾添加:
    nvme
    pcie-rockchip
    
  2. 更新启动镜像:
    sudo update-initramfs -u
    

第五阶段:修改引导参数 (最关键)

由于 FN-OS 的引导程序比较“固执”,我们需要通过 PARTUUID 强制覆盖启动路径。

  1. 查看 NVMe 的 PARTUUID:
    blkid /dev/nvme0n1p1
    # 记下 PARTUUID="f972c3cb-..."
    
  2. 修改引导配置文件:
    sudo nano /boot/fnEnv.txt
    
  3. 设置强制启动参数:
    extraargs 中加入 rootwaitroot=PARTUUID=...,确保它位于参数链末尾以获得最高优先级。
    extraargs=cma=256M rootwait root=PARTUUID=你的新PARTUUID
    rootdev=UUID=你的新UUID
    

第六阶段:重启与验证

执行 sudo reboot

验证命令:

lsblk

如果根目录 / 对应的设备是 nvme0n1p1,迁移大功告成!


进阶小贴士

  • 旧分区处理: 建议稳定运行几天后再格式化旧的 mmcblk0p2,将其作为数据盘或备用系统。
  • 性能提升: NVMe 的随机读写性能(IOPS)远超 SD 卡,你会发现系统更新、数据库运行和网页打开速度有质的飞跃。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容