grub2的配置文件grub.cfg详解

本文介绍如何配置 Ubuntu 9.10 的 GRUB2 引导加载程序,包括修改默认启动项、添加背景图片、设置终端字体及分辨率等。同时还涉及如何手动添加引导项及自动检测其他操作系统的引导项。

注:一般修改/etc/default/grub文件,然后执行sudo update-grub来生成/boot/grub/grub.cfg

grub.cfg 默认为只读,要修改前先设为可写
sudo chmod +w /boot/grub/grub.cfg

set default=0

#更改为以下两项可以保存上次的默认启动项
# GRUB_DEFAULT=saved
# GRUB_SAVEDEFAULT=true
#默认为0  


insmod jpeg
#添加jpg支持,如要使用png或tga文件做背景,加上 insmod png或insmod tga  

insmod ext2
#除了用作启动的分区外,其他分区格式可在menu底下再添加  

set root=(hd0,7)
#设定root分区  

search –no-floppy –fs-uuid –set f255285a-5ad4-4eb8-93f5-4f767190d3b3
#设定uuid=****的分区为root,和上句重复,可删除  

# 以下为终端配置  
if loadfont /usr/share/grub/unicode.pf2 ; then
#设置终端字体,unicode.pf2支持中文显示  

set gfxmode=640×480

#设置分辨率,默认为 640×480,可用800×600,1024×768,建议跟你想设定的图片大小一致  

insmod gfxterm
#插入模块 gfxterm,支持中文显 示,它还支持 24 位图像  

insmod vbe
#插入 vbe 模块,GRUB 2 引入很多模块的东西,要使用它,需要在这里加入  

if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don’t
# understand terminal_output
terminal gfxterm
#设置 GRUB 2 终端为 gfxterm  

fi
fi
set timeout=10
background_image (hd0,7)/boot/images/1.jpg
#设置背景图片  

### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=cyan/black
#这两行为 Debian 下的菜单颜色设置,如果默认的话,你会发现背景完全被蓝色挡住了,你需要修改 blue 为 black,这样背景就会出现 

### END /etc/grub.d/05_debian_theme ###

# 10_linux 为自动添加的当前root分区linux引导项  

### BEGIN /etc/grub.d/10_linux ###
#菜单项,要包括 menuentry 双引号” ” 和大括号 { }才完整,否则不显示菜单  

menuentry “Ubuntu, Linux 2.6.31-9-386″ {
insmod ext2
set root=(hd0,7)
search –no-floppy –fs-uuid –set f255285a-5ad4-4eb8-93f5-4f767190d3b3
#这句与set root=(hd0,7)重复,可删除  

linux /boot/vmlinuz-2.6.31-9-386 root=UUID=f255285a-5ad4-4eb8-93f5-4f767190d3b3 ro quite splash
#不喜欢看到一长串的, roo=UUID=***可用root=/dev/sda7代替  

initrd /boot/initrd.img-2.6.31-9-386
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry “Memory test (memtest86+)” {
linux16 /boot/memtest86+.bin
}
### END /etc/grub.d/20_memtest86+ ###

# 自动添加存在于其他分区的系统引导项  

### BEGIN /etc/grub.d/30_os-prober ###
#windows 启动菜单  
menuentry “Windows Vista (loader) (on /dev/sda1)” {
insmod ntfs
#windows格式为ntfs,或为fat32改为 insmod fat 

set root=(hd0,1)
search –no-floppy –fs-uuid –set ece067d2e067a196
#可删除  
#grub2比较先进的地方就是如果发现windows启动是通过ntldr 引导的,定为2000/xp/2003,会在这加上 drivemap -s (hd0) ${root} ,作用相当于grub的map,可正常启动非第一硬盘的xp/2003系统。  

chainloader +1
}
# 查找到其他分区上的linux系统并自动添加 

menuentry “Ubuntu karmic (development branch) (9.10) (on /dev/sda3)” {
insmod ext2
set root=(hd0,3)
search –no-floppy –fs-uuid –set 4d893970-0685-44ed-86b3-1de45b2db84a
linux /boot/vmlinuz-2.6.31-9-generic root=/dev/sda3
initrd /boot/initrd.img-2.6.31-9-generic
}
#若存在macos会自动在这里添加。  

### END /etc/grub.d/30_os-prober ###

# 以下为手动添加的菜单项  
### BEGIN /etc/grub.d/40_custom ###
menuentry “CDLinux”{
set root=(hd0,8)
linux /CDlinux/bzImage root=/dev/ram0 vga=791 CDL_LANG=zh_CN.UTF-8
initrd /CDlinux/initrd
}
### END /etc/grub.d/40_custom ###

# 手动添加时,硬盘编号从0开始(hd0),主分区编号从1开始(hd0,1),逻辑分区从5开始(hd0,5)

原文地址:http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=225669&start=0

 

原创文章如转载请注明:转自Ubuntu之家 {www.ubuntuhome.com }
本文地址:http://www.ubuntuhome.com/ubuntu9-10-grub2-config.html

 

### GRUB配置文件grub.cfg参数详解及配置方法 GRUB(Grand Unified Bootloader)是Linux系统中常用的引导加载程序,其配置文件`grub.cfg`定义了启动菜单和启动行为。以下是关于`grub.cfg`参数的详细解析以及如何正确配置的方法。 #### 1. 配置文件结构 `grub.cfg`文件由一系列脚本生成,通常位于`/boot/grub/`目录下。它包含了多个部分,包括但不限于: - 启动菜单项(menuentry) - 内核加载指令(linuxlinux16) - 初始化RAM磁盘镜像路径(initrd或initrd16) 每个菜单项通过`menuentry`关键字定义,具体格式如下[^2]: ```plaintext menuentry "菜单名称" { linux /boot/vmlinuz-版本号 root=/dev/sdaX ro quiet splash initrd /boot/initrd.img-版本号 } ``` #### 2. 关键参数详解 以下是一些常见的`grub.cfg`参数及其作用: - **`menuentry`**:定义一个启动菜单项。 ```plaintext menuentry "Ubuntu" { ... } ``` - 参数解释:`"Ubuntu"`为菜单显示名称。 - **`linux` 或 `linux16`**:指定内核镜像的路径,并传递启动参数给内核。 ```plaintext linux /boot/vmlinuz-5.4.0-42-generic root=/dev/sda1 ro quiet splash ``` - 参数解释: - `/boot/vmlinuz-5.4.0-42-generic`:内核文件路径。 - `root=/dev/sda1`:指定根文件系统的设备。 - `ro`:以只读方式挂载根文件系统。 - `quiet splash`:减少启动时的日志输出并启用图形化启动界面[^4]。 - **`initrd` 或 `initrd16`**:指定初始化RAM磁盘镜像的路径。 ```plaintext initrd /boot/initrd.img-5.4.0-42-generic ``` - 参数解释:`/boot/initrd.img-5.4.0-42-generic`为初始RAM磁盘镜像路径[^4]。 - **`set timeout`**:设置GRUB等待用户选择的时间(秒)。 ```plaintext set timeout=10 ``` - 参数解释:等待10秒后自动启动默认选项[^1]。 - **`set default`**:指定默认启动的菜单项索引。 ```plaintext set default=0 ``` - 参数解释:默认启动第一个菜单项[^1]。 #### 3. 配置方法 为了避免手动修改`grub.cfg`后被`update-grub`命令覆盖,推荐通过以下方法进行个性化配置: - **修改`/etc/default/grub`文件**: - 编辑`/etc/default/grub`文件,添加或修改启动参数。 - 示例: ```bash GRUB_TIMEOUT=10 GRUB_DEFAULT=0 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="root=/dev/sda1" ``` - 修改完成后运行`sudo update-grub`以更新`grub.cfg`[^1]。 - **创建自定义脚本**: - 在`/etc/grub.d/`目录下创建自定义脚本(如`40_custom`),定义个性化的启动菜单项。 - 示例: ```bash #!/bin/sh exec tail -n +3 $0 menuentry "Custom Linux" { linux /boot/vmlinuz-custom root=/dev/sda1 ro quiet splash initrd /boot/initrd-custom.img } ``` #### 4. 常见问题与解决方法 - **救援模式**: 如果在加载`normal.mod`模块时出现故障,可能会进入GRUB的救援模式[^3]。此时可以手动加载缺失的模块: ```bash insmod normal normal ``` - **`update-grub`覆盖修改**: 直接修改`grub.cfg`可能导致配置丢失。应通过`/etc/default/grub`或自定义脚本进行配置。 #### 示例代码 以下是一个完整的`/etc/default/grub`示例配置: ```bash GRUB_TIMEOUT=10 GRUB_DEFAULT=0 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="root=/dev/sda1" ``` 运行以下命令以应用更改: ```bash sudo update-grub ``` ---
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值