В общем, решил проблему.
В версии 2.00 сильно изменился код файлов /etc/grub.d/10_linux и /etc/grub.d/30_os-prober, по этому старые инструкции для более ранних версий вам уже не подойдут.
Для начала нужно установить пользователей и пароли. Мне достаточно всего одного, суперпользователя, т.к. никто кроме меня этот компьютер не настраивает. Такой вариант должен подойти для большинства.
С помощью grub-mkpasswd-pbkdf2 получаем зашифрованный пароль (grub-mkpasswd-pbkdf2 имя_пользователя)
Заносим данные в конец файла /etc/grub.d/00_header:
echo "Setting password protection..." >&2
cat << EOF
set superusers="admin"
password_pbkdf2 admin зашифрованный_пароль
EOF
После обновления (update-grub2) все элементы меню потребуют пароль. Теперь убираем защиту с загрузки Ubuntu и Windows.
Для Ubuntu:
В файле /etc/grub.d/10_linux находим строку
echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
И дописываем --unrestricted:
echo "menuentry '$(echo "$os" | grub_quote)' --unrestricted ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
Для Windows:
В файле /etc/grub.d/30_os-prober находим строку
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --unrestricted --class windows --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
И дописываем --unrestricted:
menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --unrestricted --class windows --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
Аналогично можно сделать и для OS X, в этом же файле. Поищите по "menuentry".
Теперь обновляем конфигурацию. Если найдены ошибки проверяем файлы еще раз, где то опечатка. Если ошибок нет, перезагружаемся и проверяем результат. Теперь пункты Ubuntu и Windows загружаются без пароля, остальные с паролем.