# [solved] grub-reboot ohne wirkung

## schmidicom

Ich habe hier ein kleines Problem mit grub-reboot.

 *Quote:*   

> grub-reboot  -  set  the default boot entry for GRUB, for the next boot only

 

Eigentlich sollte man damit ja den default boot einmalig ändern können jedoch scheint dies bei mir keine Wirkung zu haben. Egal wie ich es angebe ob mit einfacher Zahl oder mit vollständigem Titel, es wird immer das selbe Betriebssystem gestartet.

Hat einer von euch eine Idee warum?

Hier noch ein paar Infos zu meinem System:

GRUB Version

```
grub-reboot (GRUB) 1.99~rc1
```

/boot/grub/grub.cfg

```
set timeout=5

set default=0

menuentry "Gentoo Linux 2.6.38.6" {

        set root=(hd0,4)

        linux /boot/vmlinuz-2.6.38.6 rootfstype=ext4 root=/dev/sda4 quiet splash

        initrd /boot/initramfs-2.6.38.6.img

}

menuentry "Windows 7 Proffesional" {

        insmod ntfs

        set root='(hd0,1)'

        chainloader +1

}
```

/etc/fstab

```
# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

/dev/sda4               /               ext4            noatime         0 1

/dev/sda3               none            swap            sw              0 0

/dev/sdb1               /mnt/data       ntfs-3g         auto,rw,uid=65534,gid=65534,umask=000 0 0

shm                     /dev/shm        tmpfs           nodev,nosuid,noexec     0 0
```

Last edited by schmidicom on Tue Jul 05, 2011 2:19 pm; edited 2 times in total

----------

## firefly

Ich habe da was gefunden, ist von debian sollte aber generell gelten:

http://wiki.debian.org/GrubReboot

Das Wichtigste die option GRUB_DEFAULT muss entsprechend gesetzt sein

----------

## schmidicom

 *firefly wrote:*   

> Ich habe da was gefunden, ist von debian sollte aber generell gelten:
> 
> http://wiki.debian.org/GrubReboot
> 
> Das Wichtigste die option GRUB_DEFAULT muss entsprechend gesetzt sein

 

Diese Anleitung richtet sich aber nur nach den autoscriptgedöns. Ich habe meine grub.cfg unter /boot/grub von Hand erstellt und würde es gerne auch dabei belassen.

Ich dachte mir schon das in meiner grub.cfg was fehlen könnte das vom script automatisch gesetzt worden wäre doch leider finde ich nirgends heraus wie dieses etwas in der grub.cfg letzten Endes aussehen würde. Und in der grub.cfg die Option "GRUB_DEFAULT=saved" zu setzen hat nichts gebracht.

----------

## firefly

 *schmidicom wrote:*   

>  *firefly wrote:*   Ich habe da was gefunden, ist von debian sollte aber generell gelten:
> 
> http://wiki.debian.org/GrubReboot
> 
> Das Wichtigste die option GRUB_DEFAULT muss entsprechend gesetzt sein 
> ...

 

dann hilft nur testweise sich eine configuration via update-grub erstellen zu lassen.

----------

## schmidicom

 *firefly wrote:*   

> dann hilft nur testweise sich eine configuration via update-grub erstellen zu lassen.

 

Wenn ich das von GRUB zusammenstellen lasse kommt das dabei raus:

(Ist natürlich auf den "set default" Bereich verkürzt da die ganze Ausgabe gleich ganze A4 Seiten füllen würde   :Confused:  )

```
if [ -s $prefix/grubenv ]; then

  load_env

fi

set default="${saved_entry}"

if [ "${prev_saved_entry}" ]; then

  set saved_entry="${prev_saved_entry}"

  save_env saved_entry

  set prev_saved_entry=

  save_env prev_saved_entry

  set boot_once=true

fi

function savedefault {

  if [ -z "${boot_once}" ]; then

    saved_entry="${chosen}"

    save_env saved_entry

  fi

}
```

Doch was jetzt davon genau bewirkt das "grub-reboot" in der Konsole funktioniert ist mir nicht klar.

Ausserdem sieht mir das hier verdächtig danach aus das dann immer einfach das genommen wird was als letztes ausgewählt wurde und das will ich auf keinen Fall. Es soll immer Gentoo gebootet werden ausser wenn ich auf der Konsole mit grub-reboot was anderes angebe.

EDIT:

Inzwischen habe ich herausgefunden was grub-reboot eigentlich macht. Das Programm erstellt, nach der eingabe von "grub-reboot 1" scheinbar einfach diese Datei:

/boot/grub/grubenv

```
# GRUB Environment Block

prev_saved_entry=0

saved_entry=1

######################
```

Jetzt dachte ich man könnte mit diesen variablen ein wenig herumspielen mit folgendem Eintrag in meiner "/boot/grub/grub.cfg":

```
if [ -s $prefix/grubenv ]; then

  load_env

fi

if [ -z "${saved_entry}" ]; then

  set default="${saved_entry}"

  unset saved_entry

  unset prev_saved_entry

else

  set default=0

fi
```

anstelle von einem einfachen:

```
set default=0
```

Doch das haut scheinbar auch nicht so ganz hin, sonst noch einer eine Idee?

EDIT2:

Habe es doch noch hin bekommen.   :Very Happy: 

/boot/grub/grub.cfg

```
# Umgebungsvariablen laden

if [ -s $prefix/grubenv ]; then

  load_env

fi

# Timeout setzen

set timeout=5

# Standard Eintrag bestimmen

set default="${saved_entry}"

set saved_entry=0

save_env saved_entry

# Booteinträge

menuentry "Gentoo Linux 2.6.38.6" {

        set root=(hd0,4)

        linux /boot/vmlinuz-2.6.38.6 rootfstype=ext4 root=/dev/sda4 quiet splash

        initrd /boot/initramfs-2.6.38.6.img

}

menuentry "Windows 7 Proffesional" {

        insmod ntfs

        set root='(hd0,1)'

        chainloader +1

}
```

Hoffentlich hilft das hier anderen die ebenfalls vorhaben das Programm "grub-reboot" zum laufen zu bringen trotz von Hand erstellter Konfiguration.

----------

