1.
用virtualbox把当前(centos-dev.vdi)的虚拟硬盘copy一份。(名称为centos-dev-copy.vdi)
用virtualbox生成一个虚拟机硬盘vdi,目前大小是80G。(名称为centos-dev-80.vdi)
在虚拟机中设置对应的storage下挂载这两个虚拟硬盘。所以一共是3个硬盘。
2.
开机进入操作系统,
sudo fdisk -l 可以发现分别有sda、sdb(copy)、sdc(80)。
dd if=/dev/sda of=/dev/sdc; dd 是二进制拷贝,所有的分区信息都拷贝了,MBR也拷贝了。
3.
df -Th 可以看到 /dev/sda3 43G 40G 800M 99% /
由此可见“/”目录在最后一个主分区下。
sudo fdisk /dev/sdc 分别执行p d3 n3 t83w。 把剩余所有的空间都分配给最后一个主分区。
mkdf.ext3 /dev/sda3 格式化文件系统(ext3),这个是分配inode和block的。
partprobe (探测硬盘,好像没什么作用)
4.
mkdir /mount-cp; mkdir /mount-80;
sudo mount /dev/sdb3 /mount-cp; sudo mount /dev/sdc3 /mount-80
/bin/cp -auf /mount-cp/* /mount-80/ (大概2个小时40G)
5.
sudo e2label /dev/sdc3 /; 这一步必须得做,因为/etc/fstab 下写的是LABEL=/;
blkid /dev/sdc3 主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。
改为 kernel /vmlinuz-2.6.18-274.12.1.el5 ro root=/dev/sda3 rhgb quiet
6.
最后一步了,修改virtualbox storage 只挂载centos-dev-80.vdi就行了,
其他两个centos-dev-copy和centos-dev都卸下来。启动起来完事大吉。
经验:
1)启动出现这个错误就是没有执行sudo e2label /dev/sdc3 /造成的。
mount: could not find filesystem '/dev/root'
setuproot: moving /dev failed:No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
Kernel panic -not syncing: Attempted to kill init!
2)下回可以试试,只拷贝分区表(dd),然后每个分区各个拷贝(cp)。