Aquacolor

Aquacolor



TMP

zcxsb · 2026-03-10 · 3浏览 · 未分类



U 盘里的 Linux 系统迁移到 eMMC,本质上是做一次 block 级或文件级系统迁移。根据你是否想保持分区结构、bootloader 等,有三种常见方法。下面按 可靠性和工程实践给你排序。


方法一:rsync 文件级迁移(最推荐)

这是 Linux 服务器迁移系统最常见的方法。优点:

  • 不复制 U 盘的坏分区结构
  • 可以自由调整 eMMC 分区
  • 风险较低

1 创建 eMMC 分区

先确认设备:

lsblk

假设:

U盘     /dev/sda
eMMC    /dev/mmcblk0

创建分区:

fdisk /dev/mmcblk0

例如:

/dev/mmcblk0p1  EFI /boot
/dev/mmcblk0p2  rootfs

格式化:

mkfs.vfat /dev/mmcblk0p1
mkfs.ext4 /dev/mmcblk0p2

2 挂载新系统

mount /dev/mmcblk0p2 /mnt
mkdir /mnt/boot
mount /dev/mmcblk0p1 /mnt/boot

3 用 rsync 复制系统

rsync -aAXHv \
/ \
/mnt \
--exclude=/dev \
--exclude=/proc \
--exclude=/sys \
--exclude=/tmp \
--exclude=/run \
--exclude=/mnt \
--exclude=/media \
--exclude=/lost+found

关键参数:

-a   保留权限
-A   ACL
-X   xattr
-H   hardlink

这样复制后 权限、软链接、设备文件都能保持


4 修复 fstab

进入新系统:

blkid

/mnt/etc/fstab 改成 eMMC 的 UUID。


5 安装 bootloader

如果是 x86

mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

chroot /mnt

grub-install /dev/mmcblk0
update-grub

方法二:dd 整盘克隆(最简单但风险大)

如果你想 完全复制 U 盘系统

dd if=/dev/sda of=/dev/mmcblk0 bs=4M status=progress
sync

优点:

  • 最简单
  • 完全镜像

缺点:

  • eMMC 必须 >= U盘大小
  • 复制所有垃圾分区
  • UUID 会重复

之后可能需要:

resize2fs

扩展 rootfs。


方法三:clonezilla(工程化方案)

如果你做嵌入式开发或批量部署:

推荐用:

Clonezilla

优点:

  • 自动复制
  • 自动修复 bootloader
  • 支持不同大小盘

嵌入式设备特别注意(很多人踩坑)

很多 ARM / SBC / 开发板

bootloader 在 特殊区域

例如:

mmcblk0boot0
mmcblk0boot1

或者:

eMMC offset 8KB

这时你需要额外复制:

dd if=u-boot.bin of=/dev/mmcblk0 seek=8

否则 系统复制成功但无法启动


一步到位的推荐流程(嵌入式开发最常见)

1 插U盘启动
2 分区 eMMC
3 rsync 系统
4 修改 fstab
5 安装 bootloader
6 reboot

一个非常实用的检查清单

迁移完成前检查:

/mnt/etc/fstab
/mnt/boot
/mnt/boot/efi
bootloader 是否写入

确认:

lsblk
blkid

如果你愿意,我可以再给你一份 嵌入式开发常用的“系统迁移脚本”(50行自动迁移),基本一条命令就能把 U盘系统转到 eMMC。 很多 ARM 开发板厂商其实就是这么干的。



©

comment 评论区

添加新评论

face表情



  • ©2026 bilibili.com

textsms
内容不能为空
昵称不能为空
email
邮件地址格式错误
web
beach_access
验证码不能为空
keyboard发表评论


star_outline 咱快来抢个沙发吧!




©2026 Aquacolor

Theme Romanticism2.2 by Akashi
Powered by Typecho