我已经设定Grub2 密码下列的这线程。它工作正常,但现在每次我启动或重新启动计算机时,它都会提示输入用户名和密码。这实际上是它做的第一件事。
现在,如果 Grub 配置文件由于某种原因损坏,我基本上就无法访问任何东西了。我想要的是有一些选项,能够在不被 Grub 阻止的情况下访问我的桌面并编辑配置文件,以防出现问题,但在按下shift
键访问 Grub 菜单时仍会提示输入密码。
这就是我的40_自定义文件如下所示:
#!/bin/sh
exec tail -n +3 $0
set superusers="xxx"
password_pbkdf2 xxx hashed_password
我也调查过这帖子中提出了类似的问题并给出了答案,但方法略有不同,并且适用于较旧版本的 Ubuntu。我很乐意尝试这些解决方案,但我真的不想把事情搞砸,把自己锁在外面。
那么有没有一种安全的方法来实现这一点?编辑就/etc/grub.d/10_linux
足够了吗?
提前感谢您的回答。
更新:
所以我决定尝试上面的解决方案,它确实有效,但需要进行一些调整。我修改了/etc/grub.d/10_linux
,将其添加--unrestricted
到第 132 行:
echo "menuentry '$(echo "$os" | grub_quote)' --unrestricted ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
笔记您不应该对上面的第 130 行进行任何更改'$(echo "$title" | grub_quote)'
,否则您将无法通过按下shift
启动键来访问 Grub 菜单。至少我做不到。
运行sudo update-grub
并重新启动后,它将直接跳过 Grub,产生所需的效果。另一方面,如果调用 Grub 菜单,它将显示菜单,但每当尝试点击任何高级选项(包括控制台和编辑)时,它都会提示输入用户名和密码。
希望这能对处于同样境况的人有所帮助。
答案1
我很感谢你亲自回答了这个问题,你帮我省了很多事。我的声誉不够高,无法发表评论,但我想分享一下我用来进行此更改的 sed 命令。
另外,请务必先备份 GRUB.D 目录。从我的错误中吸取教训,在我的测试中,我不知怎么地在每一行都添加了 --unrestricted 哈哈。幸运的是,我有另一个安装,可以从中复制原始文件。
# backup original grub.d folder
cp -a /etc/grub.d .
# add --unrestricted to line matching $os, and backup original file to 10_linux.bak
sed -i.bak "/\$os/s/grub_quote)'/grub_quote)' --unrestricted/" /etc/grub.d/10_linux
# compare changes
diff /etc/grub.d/10_linux{,.bak}