GNU GRUB(GRand Unified Bootloader)是一个来自 GNU 项目的启动引导程序。GRUB 是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。目前绝大部分现代 linux 发行版都采用 grub 来引导系统,并且 windows 和 mac 也可以用 grub 来引导。这使得用 grub 引导多系统非常方便。


目录

  1. grub 安装指南
    1. 安装到硬盘
    2. 安装到 U 盘
  2. grub 引导 iso
  3. grub 一般配置
  4. grub2 引导 LiveCD
  5. grub 美化教程

grub 安装指南

GRUB 的一个重要的特性是安装它不需依附一个操作系统;但是,这种安装需要一个 Linux 副本,如果没有 linux 环境, 可以安装一个 linux 虚拟机来安装 grub. 当前在 Windows 下有一个实验性版本可以使用。
GRUB 实质上是一个微型系统,通过链式启动的方式,它可以启动所有安装的主流操作系统。除了安装到硬盘外,GRUB 也可安装到光盘、软盘和闪存盘等移动介质中,这样就可以带起一台无法从硬盘启动的系统。


安装到硬盘

这个一般不需要手动安装,在安装系统时,grub 会自动安装到硬盘上,如果需要手动安装,可参考下面安装到 u 盘的方法。

安装到 U 盘

制作一个可启动优盘会带在身边有时候会很方便,grub 是非常好的选择。 一般我们使用的就是 i386-pc 和 x86_64-efi 两种模式。

  • i386-pc platform

如果使用 ubuntu,一般是安装的这个模式。 可以在传统 bios 模式下工作。

  • x86_64-efi platform

如果使用 fedora 或 opensuse, 一般是 x86_64-efi 模式, 可以在 uefi 模式下工作。

生成引导文件:

将其放到 u 盘 的 /EFI/BOOT/ 下面,替换掉原来的 BOOTX64.EFI(做好备份).

当然 fedora/opensuse 下也可以安装 i386-pc platform,只是相应地要改一下命令。安装到硬盘的话,只需将–removable 去掉就好了。

当然你需要一台已经装了 linux 的电脑,windows 下暂时没有试过官方提供的 grub for windows。


grub 引导 iso

一般的 linux 发行版都会有 livecd, 使用 grub 可以轻松引导 iso 并进行体验或者安装. 或者可以使用 syslinux 中的 引导 winpe 等 iso, memdisk 可以从这里 下载 编译. 使用方法按照下面的配置就可以.


grub 一般配置

下面是一份 GPT/UEFI 分区的 USB 上 grub 的通用配置,用来做引导 u 盘, MBR 模式的可以相应修改, 通常存放在 /EFI/grub2/grug.cfg。

### grub configuration
### Author: Darkshell
### Email:  byujiang@163.com
### Home:   https://www.darkshell.me

### Basic Setting ###
### Partition USB to two parts,and uuid1 and uuid2 are uuids of two partitions.
set uuid1=1F83-3F65
set uuid2=1F83-3F65
search --no-floppy --fs-uuid --set root $uuid2
set default=0
set timeout=5

nsmod terminal
set font=/efi/grub2/fonts/unicode.pf2
loadfont $font
set gfxmode=auto
insmod gfxterm
insmod gfxmenu
insmod gfxterm_menu
# terminal_input gfxterm
# terminal gfxterm
terminal_output gfxterm
insmod fat
insmod ext2
insmod part_gpt
insmod efi_gop
insmod iso9660
insmod chain
insmod linux
insmod exfat
insmod linuxefi
insmod echo
insmod configfile
insmod boot
insmod search_label
insmod search_fs_file
insmod search
insmod search_fs_uuid
insmod loadbios
insmod linux16
insmod lsefi
insmod lspci
insmod memdisk
insmod ls
insmod video
insmod video_fb
insmod normal
insmod test
insmod sleep
insmod probe
insmod png
insmod jpeg
insmod gettext
insmod video_bochs
insmod video_cirrus
insmod gzio
insmod efi_uga

if  loadfont /efi/grub2/themes/ascii.pf2;then
	loadfont /efi/grub2/themes/DejaVuSans-Bold14.pf2
	loadfont /efi/grub2/themes/DejaVuSans10.pf2
	loadfont /efi/grub2/themes/DejaVuSans12.pf2
	loadfont /efi/grub2/themes/asciii.pf2
	set theme=/efi/grub2/themes/theme.txt
	background_image -m stretch /efi/grub2/themes/background.jpg
fi

# 引导 LiveCD ISO 和 DVD files entry, iso 文件都在 (hd,gpt1)/boot/ 下面
# Most from wiki.archlinux.org/index.php/GRUB
### Ubuntu AMD64 ###
menuentry "Ubuntu LiveCD" {
	GRUB_DISTRIBUTOR=ubuntu
	setearch --no-floppy --fs-uuid --set=root $uuid1
	set gfxpayload=keep
	loopback loop /boot/ubuntu.iso
	echo Loading vmlinuz.efi...
	linux (loop)/linuxcasper/vmlinuz.efi boot=casper iso-scan/filename=/boot/ubuntu.iso  locale=en_US.UTF-8
	echo Loading initrd.lz...
	initrd (loop)/casper/initrd.lz
	echo booting...
}
### local opensuse ###
menuentry "Local Fedora"{
	set gfxpayload=keep
	set root=(hd1,gpt1)
	echo loading linux...
	chainloader (hd1,gpt1)/efi/fedora/grubx64.efi
	boot
}
menuentry "Local openSUSE"{
	set gfxpayload=keep
	set root=(hd1,gpt3)
	echo loading linux...
	chainloaderinloader (hd1,gpt1)/EFI/opensuse/grubx64.efi
	boot
}

#### openSUSE KDE ###
menuentry "openSUSE KDE liveCD" {
	GRUB_DISTRIBUTOR=opensuse
	set gfxpayload=keep
	#set root=(hd0,gpt1)
	search --no-floppy --fs-uuid --set root $uuid1
	loopback loopback /boot/opensuse.iso
	echo Loading linux...
	linuxefi (loop)/boot/x86_64/loader/linux isofrom_device=/dev/sdb1 isofrom_system=/boot/opensuse.iso LANG=en_US.UTF-8
	echo Loading initrd...
	initrdefi (loop)/boot/x86_64/loadfontder/initrd
	echo booting...
}

当系统引导遭到破坏只能进入 grub 界面时,可以手动引导系统,然后再修复引导。

grub2 引导 LiveCD


grub 美化教程

grub 是高度可定制的, 可以按照喜好,美化引导界面。 也可以套用现成的主题。


水水更健康…<( ̄▽ ̄)> 哇哈哈…