Grub 2, смена кнопки переключения передач - PullRequest
0 голосов
/ 06 января 2011

Я новичок в Linux и Bash, поэтому я не знаю, что я делаю не так. Я установил grub, чтобы он не показывался, а показывал после нажатия на shift в течение 3 секунд. Это работало нормально. Затем я изменил строку в 30_os-prober (как вы можете видеть ниже), которая содержала 'shift' на 'F11', как я прочел здесь: http://www.gnu.org/software/grub/manual/grub.html (13.3.33). Теперь, когда я нажимаю F11, ничего не происходит, а когда я нажимаю Shift, я вижу «Grub is loading», тогда ОС по умолчанию (Ubuntu) загружается без отображения меню Grub.

Это часть моего / etc / default / grub:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT="Custom Menu"
GRUB_HIDDEN_TIMEOUT=1
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="splash"
GRUB_CMDLINE_LINUX=" splash vga=799 quiet"

и это (ИМХО) важная часть, из /etc/grub.d/30_os-prober:

adjust_timeout () {
  #if [ "x${found_other_os}" = "x" ] ; then
    if [ "x${GRUB_HIDDEN_TIMEOUT}" != "x" ] ; then
      if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
    verbose=
      else
    verbose=" --verbose"
      fi

      if [ "x${GRUB_HIDDEN_TIMEOUT}" = "x0" ] ; then
    cat <<EOF
if [ \${timeout} != -1 ]; then
  if keystatus; then
    if keystatus --F11; then << There I changed shift to F11
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep$verbose --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
EOF
      else
    cat << EOF
if [ \${timeout} != -1 ]; then
  if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
    set timeout=0
  fi
fi
EOF
      fi
    fi
  #fi
}

Спасибо.

1 Ответ

0 голосов
/ 01 марта 2011

Документация о keystatus по указанной вами ссылке (и другая документация о keystatus, с которой я столкнулся) указывает, что она принимает только --shift --ctrl или --alt в качестве параметров, специфичных для ключа. Возможно, он не работает для других клавиш, таких как F11.

Еще одна вещь, о которой следует знать, это то, что keystatus, очевидно, не работает на всех платформах. В этом случае ваш первый вызов keystatus вернет false, а остальная часть условной логики keystatus будет пропущена.

...