[原创]实现Arch和Ubuntu共用boot和SWAP,其他空间LVM共享。

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
dickhunt
帖子: 57
注册时间: 2008-08-18 4:50

[原创]实现Arch和Ubuntu共用boot和SWAP,其他空间LVM共享。

#1

帖子 dickhunt » 2011-03-24 17:26

现在情况是这样

GRUB2安装于硬盘的MBR
硬盘第一主分区是Win7(我习惯使用Win7下面的库功能,从来Win7只使用一个分区)

第二主分区是两个Linux共用的/boot分区,

剩下空间全部化为LVM分区,创建一个PV和一个VG,当然PV加入VG
里面有4个LV
lv-swap 这个是共用的SWAP分区
lv-uroot 这个是ubuntu的根分区,我Ubuntu的/home没有单独分区,如果要分出來也就是再建一个LV
lv-sysroot 这个是Arch的根分区
lv-syshome 这个是Arch的/home
VG里面还有一部分剩余空间,等用的时候再加到各个LV中去。

能做到两个Linux共用BOOT和SWAP其实很简单,由于我想使用GRUB2,所以就
先装UBUNTU 10.10,Live CD启动后手工加载LVM2包,然后建立PV-VG-LV等,这样
/dev/sda1是Win7,/dev/sda2 是BOOT,/dev/sda3是PV,VG里面加入这个PV,创建
上述4个LV,然后选择相应的挂载点安装Ubuntu。服务器版的ubuntu自己可以识别LVM,我是装
上网本版本,所以需要自己加载LVM,具体方法搜下一大把。

当Ubuntu安装完成后千万不要重启,一定要chroot到装好的ubuntu的/里面区,再安装一次LVM2包才行。
很多人说这个问题就是鸡和蛋的问题,我详细解释一下:

Live CD 启动后由于默认不能识别LV,所以先要加载LVM2包,这是让Live CD和安装程序能够
识别LV,才能将Ubuntu安装到LV上。这是第一次加载LVM2包。然后在安装Ubuntu过程中才能
选择LV作为挂载点,将Ubuntu装到LV上,千万别直接选/dev/sda3了啊。

ubuntu安装完成后,一定别重启,因为这时虽然Live CD和安装程序可以识别LV,但在硬盘LV上
安装好的新系统并不能识别LV。如果这时直接重启,那么由于系统本身安装在LV上但自己又
不能识别自身所在的LV,所以就会不能启动。因此,装完别急着重启,把新系统的根目录挂载上来,
再chroot进去,再执行一边sudo apt-get install lvm2,这样给新系统也装上LVM2包,让新系统也
能识别LV,然后再启动就一切OK了。

装好ubuntu后,当然/boot(也就是/dev/sda2)和SWAP(lv-swap)是由ubuntu单独使用的,下面
说如何让Arch共用这两个分区

Arch安装盘启动后先别急着装,同样先要加载LVM2模块,不同的是Arch的安装盘自己带有LVM2
包(Arch 2010.05),只要加载该模块,让安装程序识别LV即可,不需要装完后再CHROOT进去。
安装过程请看资料,需要注意的就是挂载点一定要选对应的LV,千万别选成/dev/sda3了。将Arch
的/boot指定为和上面Ubuntu的/boot相同的LV,直接用千万不要格式化,这样Arch的启动文件就会拷贝
到/boot中;最后选择不安装GRUB,因为我们已经装了GRUB2;同样,Arch的SWAP也直接选Ubuntu
的SWAP所在的Lv即可。安装完重启,当然进不了ARCH,需要自己先进ubuntu,手工在GRUB.cfg中加
入引导arch的条目才行,Arch的引导文件就在ubuntu的/boot里面。

这样就完成了双系统共用BOOT和SWAP,并且SWAP和其他分区还都是在LVM里面的,随时可以根据
需要灵活调整分区所占空间,谁用的多就多分一些。

看明白思路后,具体软件和命令自己琢磨吧,网上都有的。
~~~~~~~~~~~~~~~~~~~~~~~~~~
到这里基本就没什么问题了,但是GRUB2支持把BOOT分区也放进LVM里面成为一个LV,有没有哪位
实现全部分区进LVM的?? 有的话请说说做法。有些资料说这样以后就不能使用快照了(这也就是大部
分资料都建议BOOT分区不使用LV,而使用普通BIOS 分区的原因),有人了解详细的吗???

抛砖引玉,胡乱写了一些,希望大家批评。
回复