上一篇
如何用GRUB代码引导Linux启动?
- 行业动态
- 2025-04-22
- 5
GRUB是Linux系统常用的引导加载程序,负责在启动时初始化硬件、加载内核及initramfs,其配置文件(如grub.cfg)定义启动项,支持多系统选择,可通过编辑菜单调整内核参数或进入恢复模式,使用grub-mkconfig命令可生成配置。
GRUB的核心功能与作用
GRUB分为两个主要版本:GRUB Legacy(旧版)和GRUB 2(新版),目前大多数Linux发行版默认使用GRUB 2,其核心功能包括:
- 多系统引导:支持同时管理Linux、Windows、macOS等操作系统。
- 动态配置:通过修改
/boot/grub/grub.cfg
配置文件(需通过脚本生成)实现灵活调整。 - 救援模式:提供命令行工具修复损坏的启动环境。
GRUB 2的配置文件与结构
GRUB 2的配置分为三部分:
主配置文件生成
- 核心配置文件位于
/etc/default/grub
,用于定义全局参数(如默认启动项、超时时间)。 - 自定义脚本存放在
/etc/grub.d/
目录,按优先级执行(例如40_custom
用于添加自定义启动项)。 - 修改配置后需运行命令生成最终的
grub.cfg
:sudo update-grub # Debian/Ubuntu系 sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL/CentOS系
- 核心配置文件位于
关键配置参数示例
GRUB_DEFAULT=0 # 默认启动第1个菜单项 GRUB_TIMEOUT=5 # 菜单显示5秒 GRUB_CMDLINE_LINUX="quiet splash" # 内核启动参数
添加自定义启动项
若要为其他内核或系统添加启动项,可在/etc/grub.d/40_custom
中写入以下内容:
menuentry "My Custom Kernel" { set root=(hd0,1) linux /vmlinuz-custom root=/dev/sda1 initrd /initramfs-custom.img }
完成后重新生成配置文件即可生效。
修复GRUB引导的常用方法
场景1:系统无法进入GRUB菜单
- 使用Live CD/USB启动:
- 挂载原系统根分区:
sudo mount /dev/sda1 /mnt sudo mount --bind /dev /mnt/dev sudo chroot /mnt
- 重新安装GRUB:
grub-install /dev/sda update-grub
- 挂载原系统根分区:
场景2:GRUB配置文件错误导致启动失败
- 在GRUB命令行界面手动引导:
ls # 查看磁盘分区 set root=(hd0,msdos1) # 设置根分区 linux /boot/vmlinuz root=/dev/sda1 initrd /boot/initrd.img boot
高级技巧与注意事项
- 主题美化:通过工具如
grub-customizer
修改GRUB界面主题。 - UEFI与Legacy模式:
- UEFI系统需确保GRUB安装在EFI分区(通常为
/boot/efi
)。 - 使用
efibootmgr
命令管理UEFI启动项。
- UEFI系统需确保GRUB安装在EFI分区(通常为
- 安全启动(Secure Boot):部分系统需禁用Secure Boot或使用签名后的GRUB版本。
常见问题解答
Q:如何设置Windows为默认启动项?
A:在/etc/default/grub
中设置GRUB_DEFAULT="Windows 10"
(需与菜单标题完全一致)。Q:GRUB提示“unknown filesystem”错误?
A:可能是分区表损坏或文件系统错误,尝试使用fsck
修复分区。
引用说明
- GRUB官方手册:https://www.gnu.org/software/grub/manual/grub/
- Linux内核启动参数文档:https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
- Ubuntu社区Wiki:https://help.ubuntu.com/community/Grub2
经过多发行版测试,适用于主流的Debian、RHEL及衍生系统,操作前请备份数据。)