OpenWrt根文件系统迁移指南

根据你的 grub.cfg 配置,当前系统是通过 PARTUUID 来识别根文件系统的。如果你想将 /dev/sda3 设为新的 /dev/root,需要做以下调整:


步骤 1:确认 /dev/sda3 的 PARTUUID

运行以下命令查看 /dev/sda3PARTUUID

1
blkid /dev/sda3

输出示例:

1
/dev/sda3: UUID="1234abcd-5678-90ef..." PARTUUID="a21fa13b-34b6-35b4-69bb-92e6f5a90e03" TYPE="ext4"

(记下 PARTUUID= 后面的值)


步骤 2:修改 GRUB 启动参数

编辑 /boot/grub/grub.cfg,将 root=PARTUUID=... 替换为 /dev/sda3PARTUUID

1
vi /boot/grub/grub.cfg

修改后的内容:

1
2
3
4
5
6
menuentry "OpenWrt" {
linux /boot/vmlinuz root=PARTUUID=新的PARTUUID rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}
menuentry "OpenWrt (failsafe)" {
linux /boot/vmlinuz failsafe=true root=PARTUUID=新的PARTUUID rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}

(替换 新的PARTUUID/dev/sda3 的实际 PARTUUID


步骤 3:确保 /dev/sda3 是有效的根文件系统

  1. 格式化 /dev/sda3(如果尚未格式化)
    1
    mkfs.ext4 /dev/sda3
  2. 挂载并复制当前根文件系统
    1
    2
    3
    mkdir /mnt/newroot
    mount /dev/sda3 /mnt/newroot
    rsync -aAXv / /mnt/newroot/ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/boot/*"}
  3. 修改 /etc/fstab(如果 /dev/sda3 需要挂载):
    1
    vi /mnt/newroot/etc/fstab
    添加:
    1
    /dev/sda3 / ext4 rw,noatime 0 1

步骤 4:重启并验证

1
reboot

启动后检查:

1
df -h

如果 /dev/root 显示为 /dev/sda3,说明修改成功。


备选方案:直接使用 /dev/sda3 代替 PARTUUID

如果你不想用 PARTUUID,可以直接修改 grub.cfg 使用 /dev/sda3

1
2
3
menuentry "OpenWrt" {
linux /boot/vmlinuz root=/dev/sda3 rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}

(但 PARTUUID 更稳定,推荐优先使用)


可能遇到的问题

  1. 启动失败
    • 检查 blkid /dev/sda3 确保 PARTUUID 正确。
    • 进入 GRUB 救援模式,手动修改启动参数测试。
  2. 文件系统未正确复制
    • 重新执行 rsync 确保所有文件复制完整。

如果仍有问题,请提供错误信息,我可以进一步协助!

时间: 2025-04-23T22:34:22


👤 用户

root@OpenWrt:# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 8G 0 disk
├─sda1 8:1 0 16M 0 part /boot
│ /boot
├─sda2 8:2 0 104M 0 part /
├─sda3 8:3 0 7.9G 0 part
└─sda128 259:0 0 239K 0 part
sr0 11:0 1 1024M 0 rom
root@OpenWrt:
# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 98.3M 91.4M 4.8M 95% /
tmpfs 490.2M 4.4M 485.8M 1% /tmp
/dev/sda1 16.0M 6.1M 9.8M 38% /boot
/dev/sda1 16.0M 6.1M 9.8M 38% /boot
tmpfs 512.0K 0 512.0K 0% /dev
root@OpenWrt:~#

怎么把sda3 设置为 /dev/root

时间: 2025-04-23T22:26:47


🤖 DeepSeek (deepseek-chat)

要将 /dev/sda3 设置为新的根文件系统 (/dev/root),你需要按照以下步骤操作:

1. 格式化 /dev/sda3 为 ext4 文件系统

1
mkfs.ext4 /dev/sda3

(如果你希望使用其他文件系统,比如 f2fsbtrfs,可以替换 ext4


2. 临时挂载 /dev/sda3 并复制现有根文件系统

1
2
mkdir /mnt/newroot
mount /dev/sda3 /mnt/newroot

然后,复制当前 / 的内容到新分区:

1
rsync -aAXv / /mnt/newroot/ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/boot/*"}

rsync 可以确保所有文件权限和符号链接正确复制)


3. 修改 /etc/fstab 以使用 /dev/sda3 作为根文件系统

编辑 /etc/fstab

1
vi /mnt/newroot/etc/fstab

找到 /dev/root 的行(或 /dev/sda2),替换为:

1
/dev/sda3 / ext4 rw,noatime 0 1

(如果 /dev/sda3 使用其他文件系统,请相应调整)


4. 修改 OpenWrt 的启动参数

编辑 /boot/grub/grub.cfg/etc/bootmenu.d/ 中的相关配置(取决于你的启动方式),确保内核使用 /dev/sda3 作为根设备。

例如,在 grub.cfg 中修改 root= 参数:

1
linux /boot/vmlinuz root=/dev/sda3 rootfstype=ext4

(如果使用 extlinuxuboot,请相应调整)


5. 重启并验证

1
reboot

启动后,运行:

1
df -h

检查 /dev/root 是否已挂载到 /dev/sda3


6. (可选)回收 /dev/sda2 的空间

如果 /dev/sda2 不再需要,可以删除它并扩展 /dev/sda3

1
fdisk /dev/sda

(删除 /dev/sda2,调整 /dev/sda3 的分区大小,然后 w 保存)


注意事项:

  • 备份重要数据,避免操作失误导致数据丢失。
  • OpenWrt 默认使用 squashfs 作为只读根文件系统,如果你想要可写根文件系统,可能需要调整。
  • 如果使用 overlayfs,确保 /dev/sda3 正确挂载到 /overlay

如果你遇到问题,可以提供具体的错误信息,我可以进一步协助!

时间: 2025-04-23T22:26:47


👤 用户

search -l kernel -s root

menuentry “OpenWrt” {
linux /boot/vmlinuz root=PARTUUID=a21fa13b-34b6-35b4-69bb-92e6f5a90e02 rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}
menuentry “OpenWrt (failsafe)” {
linux /boot/vmlinuz failsafe=true root=PARTUUID=a21fa13b-34b6-35b4-69bb-92e6f5a90e02 rootwait console=tty0 console=ttyS0,115200n8 noinitrd

时间: 2025-04-23T22:34:22


🤖 DeepSeek (deepseek-chat)

根据你的 grub.cfg 配置,当前系统是通过 PARTUUID 来识别根文件系统的。如果你想将 /dev/sda3 设为新的 /dev/root,需要做以下调整:


步骤 1:确认 /dev/sda3 的 PARTUUID

运行以下命令查看 /dev/sda3PARTUUID

1
blkid /dev/sda3

输出示例:

1
/dev/sda3: UUID="1234abcd-5678-90ef..." PARTUUID="a21fa13b-34b6-35b4-69bb-92e6f5a90e03" TYPE="ext4"

(记下 PARTUUID= 后面的值)


步骤 2:修改 GRUB 启动参数

编辑 /boot/grub/grub.cfg,将 root=PARTUUID=... 替换为 /dev/sda3PARTUUID

1
vi /boot/grub/grub.cfg

修改后的内容:

1
2
3
4
5
6
menuentry "OpenWrt" {
linux /boot/vmlinuz root=PARTUUID=新的PARTUUID rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}
menuentry "OpenWrt (failsafe)" {
linux /boot/vmlinuz failsafe=true root=PARTUUID=新的PARTUUID rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}

(替换 新的PARTUUID/dev/sda3 的实际 PARTUUID


步骤 3:确保 /dev/sda3 是有效的根文件系统

  1. 格式化 /dev/sda3(如果尚未格式化)
    1
    mkfs.ext4 /dev/sda3
  2. 挂载并复制当前根文件系统
    1
    2
    3
    mkdir /mnt/newroot
    mount /dev/sda3 /mnt/newroot
    rsync -aAXv / /mnt/newroot/ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/boot/*"}
  3. 修改 /etc/fstab(如果 /dev/sda3 需要挂载):
    1
    vi /mnt/newroot/etc/fstab
    添加:
    1
    /dev/sda3 / ext4 rw,noatime 0 1

步骤 4:重启并验证

1
reboot

启动后检查:

1
df -h

如果 /dev/root 显示为 /dev/sda3,说明修改成功。


备选方案:直接使用 /dev/sda3 代替 PARTUUID

如果你不想用 PARTUUID,可以直接修改 grub.cfg 使用 /dev/sda3

1
2
3
menuentry "OpenWrt" {
linux /boot/vmlinuz root=/dev/sda3 rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}

(但 PARTUUID 更稳定,推荐优先使用)


可能遇到的问题

  1. 启动失败
    • 检查 blkid /dev/sda3 确保 PARTUUID 正确。
    • 进入 GRUB 救援模式,手动修改启动参数测试。
  2. 文件系统未正确复制
    • 重新执行 rsync 确保所有文件复制完整。

如果仍有问题,请提供错误信息,我可以进一步协助!

时间: 2025-04-23T22:34:22



对话统计

  • 消息总数: 4 条
  • 处理状态: 成功转换