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

我有一个embedded式的系统,我最终通过这样做了多个分区稳定:

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,我该怎么做?

除非有人提出更好的build议,否则我认为唯一要做的就是:

  1. 还原您的备份。
  2. 调整您的根分区的大小(使用resize2fs )。
    (你将需要一个启动盘 – 据我所知,你不能直接调整分区大小)
  3. 创build其他分区。
  4. 启动到您的操作系统的单个用户,并挂载/读写,然后为每个新的分区:
    • 将新分区安装在/mnt
    • 移动你的文件
    • 卸载/mnt
    • 将分区添加到/etc/fstab

根据硬盘的大小以及需要移动的数据量,您可能需要重复执行第2步到第4步几次(每个分区一次)。
另外请注意,如果您的根分区非常满,您可能无法创build足够大的新分区以容纳您要移动的所有数据,这意味着您运气不佳。

你也可能想要build立一个不是 dd的备份系统,所以在将来这不是那么痛苦的(所以你可以不需要在磁盘映像中搞清楚数据就可以恢复到你的系统) – Bacula会是我的build议。