GRUB2是下一代的多系统引导器,grub即将退位,项目名也改成了grub-legacy。相比grub(目前的版本是0.97)而言,grub2重写了代码以实现模块化和可移植性。
有趣的Grub Logo:
将archlinux的grub升级到grub2是一件很简单的事情,你只需要通过pacman安装新的grub2软件包,转换menu.lst为grub.cfg就可以了。这篇日志的大部分资料来自Archlinux的wiki,命令操作记录来自我的笔电。
首先来搜索一下仓库里的grub2软件包:
~>; pacman -Ss grub2
extra/grub2-bios 1.99~rc2.r3238-1
The GNU GRand Unified Bootloader version 2 – Built for PC BIOS
extra/grub2-common 1.99~rc2.r3238-1
The GNU GRand Unified Bootloader version 2 – Files common for all platforms
extra/grub2-efi-i386 1.99~rc2.r3238-1
The GNU GRand Unified Bootloader version 2 – i386 UEFI version
extra/grub2-efi-x86_64 1.99~rc2.r3238-1
The GNU GRand Unified Bootloader version 2 – x86_64 UEFI version
你会发现目前仓库里有4个grub2的软件包,做个简单的介绍吧:
grub2-bios –> 适用于PC BIOS
grub2-commin –> 文件集合(包含了所有平台相关的文件)
grub2-efi-i386 –> 适用于32位平台的UEFI
grub2-efi-x86_64 –> 适用于64位平台的UEFI
一般情况下,我们选择安装grub2-bios。什么是UEFI呢?这货全称Unified Extensible Firmware Interface,直译叫做“统一的可扩展固件接口”,这种接口用于操作系统自动从预启动的操作环境,加载到某种操作系统上,从而使开机程序化繁为简,节省时间。UEFI将替代已存在多年的BIOS,目前市场上的主板已经开始采用UEFI 。
安装和升级步骤:
1) 安装grub2-bios
~>; sudo pacman -S grub2-bios
resolving dependencies…
looking for inter-conflicts…
:: grub2-common and grub are in conflict. Remove grub? [y/N] yRemove (1): grub-0.97-17
Total Removed Size: 0.61 MB
Targets (2): grub2-common-1.99~rc2.r3238-1 grub2-bios-1.99~rc2.r3238-1
Total Download Size: 1.74 MB
Total Installed Size: 7.25 MBProceed with installation? [Y/n] y
安装时肯定会报与现有的grub冲突,想装就YY吧。如果你喜欢干净,可以在安装之前先把/boot/grub目录备份到其他地方,然后删除/boot下的grub目录。
2) 擦除MBR上grub-legacy的痕迹。这一步一定要小心,如果你的grub安装在MBR上的,需要做这一步操作。of后面跟的是主硬盘的设备名,也许你的是/dev/hda。
~>; sudo dd if=/dev/zero of=/dev/sda bs=440 count=1
1+0 records in
1+0 records out
440 bytes (440 B) copied, 3.1918e-05 s, 13.8 MB/s
3) 安装grub2到MBR
~>; sudo grub_bios-install –boot-directory=/boot –no-floppy –recheck /dev/sda
Installation finished. No error reported.~>; sudo cp /usr/share/grub/{unicode.pf2,ascii.pf2} /boot/grub/
4) 生成grub2使用的配置文件grub.cfg (可以从 menu.lst 或者 grub.conf 转换过来)
~>; sudo grub-menulst2cfg /boot/grub/menu.lst.pacsave /boot/grub/grub.cfg
5) 重启系统,检验成果。
结束语:
这里只是介绍了Archlinux上如何将grub(又名grub-legacy)升级到grub2,至于grub2的命令操作、grub.cfg的配置方式则没有给出说明 (你可以在wiki上获得详细内容,下面有链接)
参考资料:
1. Archlinux上有详细的介绍,包括BIOS和UEFI的安装方式,GPT的延伸阅读。
https://wiki.archlinux.org/index.php/GRUB2#For_BIOS_Systems
2. GRUB项目主页
http://www.gnu.org/software/grub/index.html