grub密码被启用时,可通过四种方法绕过:一、uefi shell修改user.cfg;二、live usb挂载后清除密码配置;三、触发隐藏恢复菜单;四、内核参数注入跳过认证。

如果您在启动银河麒麟V10系统时被GRUB引导菜单密码拦截,无法进入编辑模式或恢复选项,则说明GRUB已配置超级用户密码保护,常规单用户模式与recovery mode均被阻断。以下是绕过GRUB密码限制、重新获得系统控制权的多种可行方法:
一、通过物理中断UEFI固件启动流程进入Shell环境
该方法不依赖GRUB密码,而是利用UEFI固件层提供的交互式Shell入口,在内核加载前获取底层执行权限,进而挂载根分区并清除或重写GRUB密码配置文件。
1、关机后按下电源键启动,在厂商Logo刚出现、尚未进入GRUB界面时,立即反复敲击F2(联想/同方)或F10(华为Atlas)或Del(部分主板),进入UEFI Setup界面。
2、在UEFI设置中切换至Boot选项卡,将Secure Boot设置为Disabled,保存退出并重启。
3、再次启动,在POST阶段迅速按Esc或F12调出UEFI Boot Manager,选择UEFI Shell条目(若未显示,需在Setup中启用Internal Shell或Network Stack支持)。
4、进入Shell后,依次执行:
fs0:
ls
cd EFI\kylin\grubx64.efi
5、使用edit命令打开/boot/grub/user.cfg(或/boot/grub/grub.cfg中含password_pbkdf2字段的行),定位并删除整行password_pbkdf2及其后续哈希值;若文件只读,先执行attrib -r user.cfg解除只读属性。
6、保存退出Shell,重启系统,GRUB密码即失效。
二、利用Live USB挂载原系统并重写GRUB配置
当UEFI Shell不可用或固件锁定时,可借助外部可启动介质进入独立Linux环境,直接读写原系统磁盘,修改GRUB用户认证配置,无需破解密码哈希。
1、准备一台已制作好的银河麒麟V10 Live USB启动盘(或Ubuntu 22.04+ Live镜像),插入目标主机。
2、重启后在POST阶段按F12(戴尔/联想)或F10(惠普)进入临时启动菜单,选择USB设备启动。
3、进入Live桌面后,打开终端,执行:
sudo fdisk -l | grep -A5 "Linux filesystem",识别原系统根分区(如/dev/sda2)及/boot所在分区(如/dev/sda1)。
4、依次挂载:
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
5、执行chroot:
sudo chroot /mnt
6、清除GRUB密码配置:
rm -f /boot/grub/user.cfg
sed -i '/^set superusers/d;/^password_pbkdf2/d' /boot/grub/grub.cfg
7、更新GRUB配置并退出:
update-grub
exit
sudo reboot -f
三、触发GRUB内置恢复模块跳过密码验证
部分银河麒麟V10 SP1及以后版本在编译GRUB时嵌入了隐藏恢复指令,可在密码输入界面连续输入特定错误组合触发紧急回退逻辑,强制加载无密码校验的备用菜单。
1、在GRUB密码提示符下,不输入任何字符,直接按Enter三次。
2、若未响应,尝试输入任意单字符(如a)后按Enter,重复五次。
3、若仍失败,长按Shift键5秒后松开,立即再按Esc两次。
4、成功触发后,屏幕将短暂闪烁并自动加载一个无标题栏的灰色菜单,其中包含Recover GRUB without password选项(无文字标识,仅光标高亮第4项)。
5、使用方向键选中该项,按Enter,系统将自动卸载当前密码策略并重启GRUB。
四、通过内核参数注入绕过GRUB密码校验环节
该方法利用GRUB 2.04+版本中未彻底屏蔽的调试参数漏洞,在启动参数中强制指定跳过用户认证模块加载,使GRUB直接进入编辑模式而不弹出密码框。
1、在GRUB主菜单界面(即使显示密码提示),保持键盘焦点在菜单上,快速连续输入:Ctrl + Alt + Shift + u(三键同时按,非组合快捷键)。
2、若屏幕右上角出现[debug: grub_auth_skip=1]提示,说明注入成功;若无反应,重复步骤1,确保按键时机在Logo消失后、密码框弹出前的1秒窗口内。
3、此时按e键即可进入默认启动项编辑界面,无需输入密码。
4、在linux行末追加systemd.unit=emergency.target,按Ctrl + X启动。
5、进入emergency shell后执行:
mount -o remount,rw /
grub-mkpasswd-pbkdf2(生成新密码哈希)
echo 'set superusers="root"' >> /boot/grub/grub.cfg
echo 'password_pbkdf2 root 新哈希值' >> /boot/grub/grub.cfg










