将单个分区 Linux 安装转换为具有只读根目录的多个分区

将单个分区 Linux 安装转换为具有只读根目录的多个分区

我有一个嵌入式系统,最终通过如下方式进行多个分区使其稳定下来:

Disk /dev/sda: 4017 MB, 4017807360 bytes
255 heads, 63 sectors/track, 488 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0000e4b5

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          25      194560   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              25         489     3726337    5  Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5              25         329     2440192   83  Linux
/dev/sda6             329         377      386048   83  Linux
/dev/sda7             377         456      633856   83  Linux
/dev/sda8             456         462       51200   83  Linux
/dev/sda9             463         489      210944   82  Linux swap / Solaris

问题是,当我这样做时,我升级了内核和软件包,但软件的性能并不理想。现在我想恢复到像这样分区的版本:

Disk /dev/sda: 4017 MB, 4017807360 bytes
98 heads, 57 sectors/track, 1404 cylinders
Units = cylinders of 5586 * 512 = 2860032 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0008aff7

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        1405     3921920   83  Linux

以下是我想要的挂载点的方式:

rootfs on / type rootfs (rw)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=1546156k,nr_inodes=216373,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmod
e=000)
/dev/disk/by-uuid/3882d0e8-bdc0-49ef-a62a-9208ae70ce9b on / type ext3 (ro,noatim
e,errors=remount-ro,barrier=0,data=ordered)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,relatime,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,relatime)
/dev/sda7 on /home type ext3 (rw,noatime,errors=continue,barrier=0,data=ordered)
/dev/sda8 on /tmp type ext3 (rw,noatime,errors=continue,barrier=0,data=ordered)
/dev/sda5 on /usr type ext3 (rw,noatime,errors=continue,barrier=0,data=ordered)
/dev/sda6 on /var type ext3 (rw,noatime,errors=continue,barrier=0,data=ordered)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
gvfs-fuse-daemon on /home/hhp/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,
relatime,user_id=1000,group_id=1000)

我有旧操作系统的 dd,我该怎么做?

答案1

除非有人想出更好的办法,否则我认为你唯一能做的就是:

  1. 恢复您的备份。
  2. 调整根分区的大小(使用resize2fs)。
    (您需要一张启动盘 - 据我所知,您无法实时调整分区大小)
  3. 创建附加分区。
  4. 启动到操作系统单用户模式,并挂载/读写权限,然后对每个新分区进行如下操作:
    • 将新分区挂载到/mnt
    • 移动你的文件
    • 卸载/mnt
    • 添加分区到/etc/fstab

根据硬盘的大小和需要移动的数据量,您可能需要多次执行步骤 2 到 4(每个分区一次)。
还请注意,如果您的根分区非常满,您可能无法创建足够大的新分区来容纳您想要移动的所有数据,这意味着您运气不佳。

您可能还想设置一个备份系统不是 dd这样以后就不会那么痛苦了(这样你就可以将数据恢复到你的系统中而不必摆弄磁盘映像)——巴库拉这是我的建议。

相关内容