Как скрыть меню grub и чтобы shift работал?

Добрый вечер!

На ноутбуке с дуалбутом.

В /etc/grub.d/40_custom добавил строки: set timeout_style=hidden и set timeout=0 Затем update-grub
Проблема в том, что сразу начинает грузиться ось(та что первым пунктом идет в grub). Зажимай шифт- не зажимай, меню grub видимым не сделать.
Как бы мне включить возможность сделать меню видимым при зажатии какой-нибудь клавиши? Но при этом и оставить невидимым, если ничего не нажимать и система автоматически грузилась из первой строки grub?
FliXis
Зажимай шифт- не зажимай, меню grub видимым не сделать.
А грабу плевать с высокой горки на зажатый шифт.

FliXis
Как бы мне включить возможность сделать меню видимым при зажатии какой-нибудь клавиши?
Погуглить как минимум...
https://aur.archlinux.org/packages/grub-holdshift/
Теперь понятно, значит в грабе без костыля шифта нет. Благодарю за информацию!
Дело в том, что по некоторым причинам я не могу использовать готовый пакет по вашей ссылке и из-за этого возникает вопрос:
А в чем различие между:
https://github.com/WhyNotHugo/grub-holdshift/blob/master/31_hold_shift (который используется в предложенном вами пакете)
и
https://gist.githubusercontent.com/anonymous/8eb2019db2e278ba99be/raw/257f15100fd46aeeb8e33a7629b209d0a14b9975/gistfile1.sh
взятый из вики https://wiki.archlinux.org/index.php/GRUB/Tips_and_tricks#Hide_GRUB_unless_the_Shift_key_is_held_down

Какой из них лучше использовать?
FliXis
по некоторым причинам я не могу использовать готовый пакет
Даже интересно, по каким же?

FliXis
в чем различие
Первый - проще и у него есть автор. Второй, соответственно, чуть больше и от лукавого от анонимуса... )
В подробности, за ненадобностью, не вникал.
Aivar
FliXis
по некоторым причинам я не могу использовать готовый пакет
Даже интересно, по каким же?
У меня совсем другой дистрибутив, а если точнее, то это mint 18.3 cinnamon. Не найдя помощи на пятерке дугих ресурсов, я пришел сюда. Надеюсь это не запрещено правилами форума, к примеру, на форуме ubuntu(на котором mint и основан) тему снесли и разрешили создать лишь в местной "болталке", где сидит полтора человека.

Так же, я пробовал в /etc/grub.d/40_custom
прописать вот этот кусок кода, который мне посоветовали на лоре:
set timeout_style=hidden
if [ "x\${timeout}" != "x-1" ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
      set timeout=0
    fi
  fi
fi

Но shift так и не заработал.

Еще находил руководство, где требовалось закомментить
if [ "x${found_other_os}" != "x" ]; then
в файле 30_os-prober из-за какого-то бага связанного с дуалбутом, но в нем эта строка уже выглядит несколько иначе, чем в том руководстве, что я видел и не стал это пробовать.
FliXis
добавил строки: set timeout_style=hidden и set timeout=0
Клавиша «SHIFT» не поможет с отображением меню Grub2 (без соответствующей доработки), если значение параметра timeout=0
FliXis
Так же, я пробовал в /etc/grub.d/40_custom
прописать вот этот кусок кода, который мне посоветовали на лоре:
Этот код никогда не пробовал, я использую другой, но есть одно НО - это не работает при перегрузке, работает только при включении - после нажатия на кнопку питания, удерживай SHIFT, пока не появится меню.
UPD - насколько помню, нужно приписывать этот код в файл /etc/grub.d/30_os-prober
Пробуй, если не сработает, привожу рабочий вариант, правда у меня grub.cfg самописный, написанный ручками. Привожу самое начало
# cat /boot/grub/grub.cfg
set default=0
#
set timeout=0
adjust_timeout () {
        cat <<EOF
        if keystatus --shift; then
          set timeout=-1
        else
          set timeout=0
        fi
EOF
}
# пункт меню номер 0
menuentry "Arch Linux" {
 linux /boot/vmlinuz-linux root=/dev/sda3 rw
 initrd /boot/initramfs-linux.img
}
….. и далее прописаны еще 3 системы …. 
Уточнение
1. Установить значение timeout равным нулю ….. и больше никакие параметры не трогать.
2. Привожу отдельно сам код, без которго клавиша SHIFT работать не будет
adjust_timeout () {
        cat <<EOF
        if keystatus --shift; then
          set timeout=-1
        else
          set timeout=0
        fi
EOF
}
Если не хочешь использовать самописный grub.cfg, попробуй прописать этот код в /etc/grub.d/30_os-prober
Ошибки не исчезают с опытом - они просто умнеют
Такс, что я попробовал:
Вот это https://github.com/WhyNotHugo/grub-holdshift/blob/master/31_hold_shift запихнул в /etc/grub.d/ к остальным подобным файлам. Шифт не работает(проверяю теперь не перезагрузкой, а включением). Заметил, что работает Esc, но его надо нажимать в определенный момент не раньше и не позже, и нельзя зажимать. Что не есть удобно.
Затем попробовал добавить set timeout=0 в /etc/grub.d/40_custom, но изменений никаких не заметил. В данный момент убрал эту строку оттуда.
grub.cfg трогать не хочу, ибо он таки сам генерится и будет затираться время от времени.
В файле /etc/grub.d/30_os-prober довольно много кода, но функция adjust почти сверху, вот так она выглядит:

found_other_os=

adjust_timeout () {
  if [ "$quick_boot" = 1 ] && [ "x${found_other_os}" != "x" ]; then
    cat << EOF
set timeout_style=menu
if [ "\${timeout}" = 0 ]; then
  set timeout=10
fi
EOF
  fi
}

И в самом-самом конце файла зачем-то упоминается еще раз:
adjust_timeout

Мне надо это привести к такому состоянию?
found_other_os=

adjust_timeout () {
  cat <<EOF
        if keystatus --shift; then
          set timeout=-1
        else
          set timeout=0
        fi
EOF
}
Как-то стремно, что не загружусь в систему. Я ведь смогу, если вдруг что не так - просто зайти из под лайв-флешки, примотировать корневой раздел и заметить на резервную копию этого файла? Мне не придется выполнять команду update-grub? Я просто не помню как из под флешки дать команду на апдейт примотированному корневому разделу.

На всякий случай еще раз напишу - у меня дуалбут. И забыл упомянуть вначале - стоит luks на всех разделах, кроме boot - не знаю важно это для этой задачи или же нет.
И еще в самом грабе:
#GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX_DEFAULT=""

И еще вопрос, а в чем разница между добавлением кода в /etc/grub.d/40_custom и редактированием /etc/grub.d/30_os-prober или, например, подсовыванием стороннего /etc/grub.d/31_hold_shift?
FliXis, нет времени проводить ликбез, все хорошо расписано в мануалах, советую почитать, но понять с 1-го раза, без практики, будет трудно. А потому, если что то не понятно, то лучше в эти файлы не лазать. Все придет с опытом.
А вот чтоб не заниматься этой ерундой и не иметь кучу разных файлов, рекомендую освоить и написать свой grub.cfg и лучше защитить его от изменений.
Все описано нашим спецом в нашей Wiki. Для примера привожу свой grub.cfg (там жа прописана и win7), код для клавиши SHIFT закомментирован (просто пока не нужен)
# по-умолчанию выбран пункт меню 0
set default=0

set timeout=5
#adjust_timeout () {
#        cat <<EOF
#        if keystatus --shift; then
#          set timeout=-1
#        else
#          set timeout=0
#        fi
#EOF
#}

# пункт меню номер 0
menuentry "Arch Linux" {
 linux /boot/vmlinuz-linux root=/dev/sda3 rw
 initrd /boot/initramfs-linux.img
}

# пункт меню номер 1
menuentry "Arch Linux-lts" {
 linux /boot/vmlinuz-linux-lts root=/dev/sda3 rw
 initrd /boot/initramfs-linux-lts.img
}

# пункт меню номер 2
submenu "Ubuntu" {
 set root=hd0,2
 linux /boot/vmlinuz-3.2.0-39-generic-pae  root=/dev/sda2 rw quiet
 initrd /boot/initrd.img-3.2.0-39-generic-pae
}

# пункт меню номер 3
menuentry "Windows 7" {
 set root=hd0,1
 chainloader (hd0,1)+1
}
И как видишь все просто и все понятно, нет ничего лишнего.
Ошибки не исчезают с опытом - они просто умнеют
Выглядит просто конечно. Но есть и минус - тогда придется не забывать редактировать этот файл после каждого обновления ядра.
В общем, я рискнул и перепрбовал еще гору вариантов из инета с редактированием всего и вся(кроме grub.cfg), но shift так и не завелся. Наткнулся тут на это:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/425979
Похоже, мой случай, у меня как раз UEFI. Пожалуй, придется довольствоваться кнопкой Esc при загрузке.

В любом случае, большое Вам спасибо за отклик и помощь!
FliXis
тогда придется не забывать редактировать этот файл после каждого обновления ядра.
В Archlinux НЕ НУЖНО (название не меняется).
FliXis
у меня как раз UEFI
Нужно писать полнее и точнее ...
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.