Kirjoittaja Aihe: Grub2 ja hidden menu [Ratkaistu]  (Luettu 2289 kertaa)

Jone

  • Käyttäjä
  • Viestejä: 182
  • \,,/
    • Profiili
Grub2 ja hidden menu [Ratkaistu]
« : 29.11.09 - klo:00.42 »
koneessa xubuntu karmic. Uusimman kernelpäivityksen 2.6.31-15 jälkeen hidden menu ei enää toimi. ennen päivitystä grubin menu pysyi kiltisti piilossa kuten halusin, mutta nyt se tulee näkyviin ja vielä ilman minkäänlaista aika rajaa. /etc/default/grub on samanlainen kuin ennen päivitystäkin ja siitä on säädetty ajat 0 sekuntiin ja hidden menu päälle. Onko muilla samanlaista ongelmaa? Ratkaisu ehdotuksia, vai odotellaanko vain että korjaantuu?
« Viimeksi muokattu: 30.11.09 - klo:20.06 kirjoittanut Jone »

nm

  • Käyttäjä
  • Viestejä: 16301
    • Profiili
Vs: Grub2 ja hidden menu
« Vastaus #1 : 29.11.09 - klo:18.12 »
Näytäpä mitä siellä /etc/default/grub-tiedostossa on nyt?

Jone

  • Käyttäjä
  • Viestejä: 182
  • \,,/
    • Profiili
Vs: Grub2 ja hidden menu
« Vastaus #2 : 30.11.09 - klo:11.43 »
Näytäpä mitä siellä /etc/default/grub-tiedostossa on nyt?

Koodia: [Valitse]
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

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

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=800x600x32

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true"

# Ei etsi muilta osioilta asennettuja käyttiksiä
GRUB_DISABLE_OS_PROBER=true

# HUOMIO!!
# /etc/grub.d/00_header tiedostoon lisätty "set gfxmode={$GRUB_GFXMODE}"
# kohdan jälkeen rivi:
# set gfxpayload=keep
# joka säilyttää grub2-valikon resoluution käynnistyksessä.

Tuo viimeinen kommenttikohta on ihan vain oman muistin virkistämiseksi. Toiseksi viimeinen kohta on lisätty siksi ettei grub etsi muita käyttiksiä ja löydä xp:n palautusosiota. Koneella siis pelkästään xubuntu ja xp:n recovery osio.

nm

  • Käyttäjä
  • Viestejä: 16301
    • Profiili
Vs: Grub2 ja hidden menu
« Vastaus #3 : 30.11.09 - klo:15.04 »
Grubin asetusskripteissä on sellainen ominaisuus, että piilotettu valikko on käytössä vain silloin kun os-prober ei löydä koneesta muita käyttöjärjestelmiä tai jos os-proberin käyttö on estetty (kuten sinulla on). Ehkä tässä on nyt jotain häiriötä.

Aja sudo update-grub ja tarkista, että /boot/grub/grub.cfg:n loppupuolella on tämä pätkä:

Koodia: [Valitse]
### BEGIN /etc/grub.d/30_os-prober ###
if [ ${timeout} != -1 ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi

Jone

  • Käyttäjä
  • Viestejä: 182
  • \,,/
    • Profiili
Vs: Grub2 ja hidden menu
« Vastaus #4 : 30.11.09 - klo:16.09 »
Kyllähän sieltä lopusta löytyi tuo mainitsemasi pätkä ja juuri niin kuin olit sen laittanut. Ainut mitä grubin menussa tällä hetkellä on uusimman kernelin ja sen recoveryn lisäksi on kaksi memtestiä. Muistaakseni ennen on ollut vain yksi?? Liittyykö tämä mahdollisesti ongelmaan, vai onko asia merkityksetön. Toinen havainto, grubin menun tullessa näkyviin valinta on valmiiksi recovery moden rivillä, eikä normaalissa käynnistyksessä. Joutuu siis tekemään vielä yhden ylimääräisen painalluksen käynnistäessä..

Laitan tähän vielä kokonaisuudessaan tuon /boot/grub/grub.cfg tiedoston jos siitä voisi bongata jonkun virheen.

Koodia: [Valitse]
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s /boot/grub/grubenv ]; then
  have_grubenv=true
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  saved_entry=${prev_saved_entry}
  save_env saved_entry
  prev_saved_entry=
  save_env prev_saved_entry
fi
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set c3cd96eb-2c6e-446b-8429-63783a8ab17f
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=800x600x32
  set gfxpayload=keep
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=1
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/white
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-15-generic" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set c3cd96eb-2c6e-446b-8429-63783a8ab17f
linux /boot/vmlinuz-2.6.31-15-generic root=UUID=c3cd96eb-2c6e-446b-8429-63783a8ab17f ro   
initrd /boot/initrd.img-2.6.31-15-generic
}
menuentry "Ubuntu, Linux 2.6.31-15-generic (recovery mode)" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set c3cd96eb-2c6e-446b-8429-63783a8ab17f
linux /boot/vmlinuz-2.6.31-15-generic root=UUID=c3cd96eb-2c6e-446b-8429-63783a8ab17f ro single
initrd /boot/initrd.img-2.6.31-15-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
if [ ${timeout} != -1 ]; then
  if keystatus; then
    if keystatus --shift; then
      set timeout=-1
    else
      set timeout=0
    fi
  else
    if sleep --interruptible 3 ; then
      set timeout=0
    fi
  fi
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

nm

  • Käyttäjä
  • Viestejä: 16301
    • Profiili
Vs: Grub2 ja hidden menu
« Vastaus #5 : 30.11.09 - klo:16.33 »
Toinen havainto, grubin menun tullessa näkyviin valinta on valmiiksi recovery moden rivillä, eikä normaalissa käynnistyksessä. Joutuu siis tekemään vielä yhden ylimääräisen painalluksen käynnistäessä..

Ahaa, siinä tapauksessa ongelmana taitaa olla recordfail-muuttujaan jäänyt arvo.
Mitä tämä komento tulostaa: sudo grub-editenv /boot/grub/grubenv list

Jos se sanoo jotain recordfailista, tyhjennä arvo komennolla: sudo grub-editenv /boot/grub/grubenv unset recordfail

Jone

  • Käyttäjä
  • Viestejä: 182
  • \,,/
    • Profiili
Vs: Grub2 ja hidden menu
« Vastaus #6 : 30.11.09 - klo:20.05 »
Noniin, siellä oli tosiaan arvo "recordfail=1" ja kun sen poisti, niin toimii hidden menu taas oikein.

Kiitos avusta!

Jaksaisitko vielä kertoa mikä tuo recordfail oikeastaan on ja mistä sellainen oli sinne tullut? Kiinnostaisi tietää, enkä nopeasti ainakaan löytänyt googlaamalla vastausta..
« Viimeksi muokattu: 30.11.09 - klo:20.07 kirjoittanut Jone »

nm

  • Käyttäjä
  • Viestejä: 16301
    • Profiili
Vs: Grub2 ja hidden menu [Ratkaistu]
« Vastaus #7 : 30.11.09 - klo:20.12 »
Käsittääkseni GRUB käyttää sitä vikatilanteiden käsittelyyn, eli jos käynnistys epäonnistuu, GRUB osaa seuraavalla kerralla näyttää valikon.