1. 第一步:设置用户名、密码

打开 /etc/grub.d/00_header
在最下面加入

cat << EOF
set superusers="su"
password su 1234
password user1 4321
EOF

su、user1 可以替换成你喜欢的用户名
superuser 是必需的(可以执行和修改任何启动项)
user1 非必需的,可以用于限制不同用户启动不同的系统,可以设置多个
如果你不希望使用明文密码,可以在终端下运行
grub-mkpasswd-pbkdf2

然后输入密码,应该会得到类似下面这样的代码
grub.pbkdf2.sha512.10000.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
然后将 password 换成password_pbkdf2 即可

第二步:设置需要密码才可启动的启动项
例子为设置恢复模式需要密码

编辑 /etc/grub.d/10_linux
找到linux_entry ()
修改为
linux_entry () { os="$1" version="$2" recovery="$3" args="$4" user="" #新添加 if ${recovery} ; then title="$(gettext_quoted "%s, with Linux %s (recovery mode)")" user="--users su" #新添加 else title="$(gettext_quoted "%s, with Linux %s")" user="" #新添加 fi printf "menuentry ${user} '${title}' ${CLASS} {\n" "${os}" "${version}" #${user}为新添加的 cat << EOF
--users 用户名 设置该启动项需要使用的用户名
我定义了一个变量 user 用来设置是否要求密码

然后 sudo update-grub 即可

重启按住Shift键试试恢复模式是不是要求密码了,编辑启动项是不是也要密码了
以上转自 http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=279633

下面为win系统启动项添加密码,编辑 /etc/grub.d/30_os-prober
找到found_other_os=1 cat << EOF menuentry "${LONGNAME} (on ${DEVICE})" --class windows --class os { EOF
修改为
found_other_os=1 cat << EOF menuentry "${LONGNAME} (on ${DEVICE})" --users su --class windows --class os { EOF
--users su 是我新添加的,要启动这个启动项需要用su用户才行

sudo update-grub 生效,

标签: grub2启动密码