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


目录

  1. grub 安装指南
    1. 安装到硬盘
    2. 安装到 U 盘
  2. grub 引导 iso
  3. grub 一般配置
  4. 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。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
### 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 界面时,可以手动引导系统,然后再修复引导。


grub 美化教程

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


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