Pages

Tuesday, 17 January 2012

使用GPT进行分区操作的初步心得

对笔记本硬盘进行最后的升级,并且开始摸索GPT的分区模式。到现在为止,已经成功把Arch Linux安装于GPT并且搭配Grub2引导成功。
由于网上资料几乎都是讲解UEFI+GPT的组合,而我的芯片组BIOS没有UEFI支持选项,所以基本是自己摸索。虽然付出的时间和精力远超我的预期,但是也学到了一些知识,分享如下:

前期准备
首先明确一点,虽然GPT是EFI项目的派生产品,但是GPT本身并不依赖EFI,这个必须要明确。
能否使用GPT分区,取决于三个支持条件,一是OS内核,二是引导管理器,也就是Bootloader,第三就是磁盘工具,比如分区工具等等。
明确了以上要点以后,就可以开始对硬盘进行MBR——>GPT的转化,这里我用的是DiskGenius这款工具,有个分区表类型转换功能。当 然,Windows的cmd下面也有个工具叫做diskpart,Linux下面的有gdisk和parted工具,各自的用法就不赘述了,可以自行搜 索。
在对硬盘转化完成后,还不能马上开始安装OS,还需要先建立保护分区。
如果你的主板芯片组支持UEFI,并且打算要安装Windows,那么就分出ESP和MSR两个保护分区,前者用于存放EFI工具和文件,后者是微软在GPT+UEFI分区所需要的启动文件存放区。当然,不装Windows的话,只分ESP即可。
如果主板芯片组不支持UEFI,那么只需要分出BIOS boot partition即可。不推荐在不支持UEFI的GPT分区安装Windows,关于这点,我还在尝试。
以上分区操作,都用DiskGenius完成。

Linux安装
在这里,我选择的是Arch Linux,个人比较喜欢。
安装方法和在MBR分区一样,注意,一般光盘里面默认的分区工具是不支持GPT的,推荐使用parted或者gdisk进行GPT分区,具体的用法可以看帮助文档。
其他的安装过程没有什么特殊,无非就是注意不要把前面分出来的保护分区给格式化就行,然后安装到最后一步会要求进行Grub的安装。当然,必定安装失败,因为Arch 2010.05光盘带的Grub是0.97版本,为了获得GPT支持,我个人推荐Grub2。
由于自带的Grub不支持GPT,因此我是选择不安装Bootloader,安装完成后不急着重启,因为无法引导。在这里,我先把Arch的分区挂载到 /mnt,把/proc,/dev这两个挂载点也挂上了,然后chroot到Arch环境,先用pacman -Syu进行系统升级,然后再pacman -S grub2安装grub2.
接下来是Grub2的配置,先把Grub2安装到磁盘前面作为引导管理吧,grub-install --no-floppy ‘(hd0)’,然后自动生成配置文件,grub-mkconfig -o /boot/grub/grub.cfg。
注意,不需要手动加载GPT模块,Grub2会对GPT自动进行处理。而且,如果非UEFI芯片组之前不分出BIOS boot partition的话,Grub2也是会安装失败的,我在这里卡了很久。
重启,不出意外的话,就能看到Grub2的引导菜单了。由于我在chroot环境升级系统时候也升级了内核,而新的内核在做mkinitcpio处理时候 提示我sys/devices不存在,正常的内核映像是无法引导的,但是fallback模式可以进。于是进入fallback,再做一遍 mkinitcpio -p kernel26,重新生成内核映像。重启,可以正常进入Arch了。

以上只是初步应用心得,这几天我会继续尝试在GPT分区添加Windws 7,FreeBSD等OS并且用Grub2全局引导,完成以后再一并写出来。

No comments:

Post a Comment