乾坤大挪移练功指南
1、使用你熟悉的分区工具(比如gparted)为ubuntu建立一个新分区,格式化成ext3格式,并建立一个swap分区。我是分了10G的ext3作为root分区,另外还有一个256M的swap。如果你空间足够可以把root分区分的大些,256M swap在我这里足够了,我有1~2G内存,用了两星期,swap最多好象只用过10几M。
2、做好启动新系统的准备。
2a、如果想继续用windows xp的ntldr启动请执行这一步。
首先把希望使用的内核和initrd文件拷贝出来。比如我用的是2.6.20-16-generic,就把vmlinuz-2.6.20-16-generic和initrd.img-2.6.20-16-generic从/boot目录拷贝到原来启动时放内核的目录(如C盘的boot目录)。然后修改原来使用menu.lst文件,加入下面的内容:
代码: 全选
title Ubuntu Linux 7.04 Mobile
kernel (hd0,0)/boot/vmlinuz-2.6.20-16-generic root=UUID=9a92ac52-bc67-49bd-8a54-00370f78658a rw splash
initrd (hd0,0)/boot/initrd.img-2.6.20-16-generic
代码: 全选
ls -l /dev/disk/by-uuid
2b、如果想用grub4dos直接引导启动请执行这一步。
下载并解压缩grub4dos最新版,用bootlace.com安装引导代码:
代码: 全选
bootlace.com /dev/sda
代码: 全选
touch /mount-point-of-new-partition/ubuntu-mobile
代码: 全选
timeout 5
default 0
fallback 1
splashimage /boot/bj2008.xpm.gz
fontfile /boot/fonts
title Ubuntu Linux 7.04 Mobile
find --set-root /ubuntu-mobile
kernel /boot/vmlinuz-2.6.20-16-generic root=UUID=9a92ac52-bc67-49bd-8a54-00370f78658a rw splash
initrd /boot/initrd.img-2.6.20-16-generic
title M$ Windows XP
find --set-root /ntldr
makeactive
chainloader /ntldr
3、把现有系统拷贝到新分区上。
这个是重头戏。有资料说可以直接把正在运行的系统拷贝到其他分区上,不过我怕那样可能出现问题,于是采用了在另外一个系统中拷贝的方法。在已经使用了unionfs(aufs)的系统中似乎无法再挂载其他的unionfs文件目录,所以我们需要一个纯净的环境把现有的文件系统挂载起来,然后再拷贝。不幸的是我们一直使用的gnix_oag大侠的这种安装方式就使用了unionfs,所以不能用来实现下面的操作。不过他的initrd环境里有所有我们需要的东西。为了启动到这个initrd环境中,需要把你用loop方式安装的ubuntu文件夹改个名字,比如从feisty改成feisty1,然后启动,由于找不到需要的文件,它就停在initrd的命令行环境下了,这是一个功能非常简单的mini系统,命令提示符是“(initramfs)”,在这里执行下面的命令就行了。
首先是准备一大堆用来挂载文件系统的临时目录:
代码: 全选
mkdir inst cd casper 02 03 rwfs union new
代码: 全选
mount /dev/hda1 inst
代码: 全选
mount -o loop inst/feisty1/ubuntu-7.04-desktop-i386.iso cd
mount -o loop cd/casper/filesystem.squashfs casper
mount -o loop inst/feisty1/02*.rofs 02
mount -o loop inst/feisty1/03*.rofs 03
mount -o loop inst/feisty1/ubuntu.fs rwfs
代码: 全选
mount -t aufs -o dirs=rwfs=rw:03=ro:02=ro:casper=ro unionfs union
代码: 全选
mount /dev/sda1 new
cp -a union/* new
拷贝完成后修改一下new/etc/fstab文件,删除里面原有的挂载root和swap目录的行,替换成下面这两行:
代码: 全选
UUID=9a92ac52-bc67-49bd-8a54-00370f78658a / ext3 defaults,errors=remount-ro 0 1
UUID=77f87526-0686-47c1-b0da-37d178292d2e none swap sw 0 0
好了,现在umount刚才挂载的所有分区,重启计算机,选择“Ubuntu Linux 7.04 Mobile”体验一下新系统吧!以后如果需要升级内核,对于用2a方式启动的,把新的vmlinuz和initrd拷贝出来然后修改一下menu.lst就行了;对于用2b方式启动的直接修改menu.lst就可以了。
我用了两星期,其实速度上没感觉出什么变化,不过升级内核的确方便了,也不担心空间不够用了,呵呵。像我这样折腾的人估计不多,不过文中提到的一些方法其实可以用来修复出错的系统,比如恢复引导代码、修改xorg.conf文件等。