install ubuntu without X but live_cd

这个是重头戏。有资料说可以直接把正在运行的系统拷贝到其他分区上,不过我怕那样可能出现问题,于是采用了在另外一个系统中拷贝的方法。在已经使用了 unionfs(aufs)的系统中似乎无法再挂载其他的unionfs文件目录,所以我们需要一个纯净的环境把现有的文件系统挂载起来,然后再拷贝。不幸的是我们一直使用的gnix_oag大侠的这种安装方式就使用了unionfs,所以不能用来实现下面的操作。不过他的initrd环境里有所有我们需要的东西。为了启动到这个initrd环境中,需要把你用loop方式安装的ubuntu文件夹改个名字,比如从feisty改成feisty1,然后启动,由于找不到需要的文件,它就停在initrd的命令行环境下了,这是一个功能非常简单的mini系统,命令提示符是 “(initramfs)”,在这里执行下面的命令就行了。

首先是准备一大堆用来挂载文件系统的临时目录:

mkdir inst cd casper 02 03 rwfs union new

挂载feisty1目录所在的设备,假设你的feisty1目录是在/dev/hda1上:

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

终于可以使用aufs把这些loop文件合并成我们一直使用的root目录了:

mount -t aufs -o dirs=rwfs=rw:03=ro:02=ro:casper=ro unionfs union

注意,这行里各个目录的顺序是不能改动的!现在union目录下面就是我们熟悉的整个root目录了,把它拷贝到新分区去:

mount /dev/sda1 new
cp -a union/* new

其中/dev/sda1是我刚刚新建的分区。拷贝过程需要几分钟,先休息一下吧。其间看到一些zlib出错的提示,似乎不影响使用,至少我这里没问题。

拷贝完成后修改一下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

同样uuid可以直接用设备号代替。

好了,现在umount刚才挂载的所有分区,重启计算机,选择“Ubuntu Linux 7.04 Mobile”体验一下新系统吧!以后如果需要升级内核,对于用2a方式启动的,把新的vmlinuz和initrd拷贝出来然后修改一下 menu.lst就行了;对于用2b方式启动的直接修改menu.lst就可以了。

我用了两星期,其实速度上没感觉出什么变化,不过升级内核的确方便了,也不担心空间不够用了,呵呵。像我这样折腾的人估计不多,不过文中提到的一些方法其实可以用来修复出错的系统,比如恢复引导代码、修改xorg.conf文件等。

你可能感兴趣的:(linux,ubuntu,mobile)