ubuntuusers.de

Linux - Windows Switch Script

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

Newur

Avatar von Newur

Anmeldungsdatum:
3. September 2006

Beiträge: 500

Hallo,

ausgehend von diesem einfachen Script

#!/bin/bash
sudo grub-reboot 0

das ich hier im Forum gefunden habe, will ich bequem von Linux zu Windows wechseln, ohne jedes Mal von Hand den richtigen Grubeintrag zu waehlen.
Nachdem ich /etc/sudoers edtiert habe, funktioniert das Script schonmal ohne PW Abfrage, allerdings stoeren mich noch zwei Dinge.

Erstmal wird dieser Hinweis ausgegeben:

Probing devices to guess BIOS drives. This may take a long time.


Wie kann ich Grub dieses raten und mir die lange Wartezeit ersparen ersparen?

    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

       [ Minimal BASH-like line editing is supported.   For
         the   first   word,  TAB  lists  possible  command
         completions.  Anywhere else TAB lists the possible
         completions of a device/filename. ]
grub> savedefault --once --default=0
grub> quit

Do you want to reboot now? [y/N]


Wie kann ich diese Frage umgehen oder sie wenigstens vom Script beantworten lassen?

btw. wo kann man sich als Anfänger ein bisschen (auf deutsch) in shell scripts einarbeiten?

MfG

dehru Team-Icon

Ehemalige
Avatar von dehru

Anmeldungsdatum:
2. Oktober 2005

Beiträge: 2178

Wohnort: Stuttgart

Newur hat geschrieben:

Erstmal wird dieser Hinweis ausgegeben:

Probing devices to guess BIOS drives. This may take a long time.

Wie kann ich Grub dieses raten und mir die lange Wartezeit ersparen ersparen?

Ist deine Hardware korrekt verkabelt und eingerichtet, oder hängen zum Beispiel DMA und non-DMA-Laufwerke am selben Controller?
Kommt dieser Hinweis auch beim normalen Booten?

Newur hat geschrieben:

Do you want to reboot now? [y/N][/code]
Wie kann ich diese Frage umgehen oder sie wenigstens vom Script beantworten lassen?

Hinter grub-reboot steckt /sbin/grub-reboot . Darin ist die nervige Abfrage enthalten. Du kannst das Skript /sbin/grub-reboot z.Bsp. nach /usr/local/bin/ kopieren und in der Kopie die nervige Abfrage ausbauen.

  • sudo cp /sbin/grub-reboot /usr/local/bin/grub-reboot.forced

  • In der Datei /usr/local/bin/grub-reboot.forced die letzten 6 Zeilen auskommentieren oder gar entfernen und am Ende eine neue Zeile "reboot" einfügen.

  • /usr/local/bin/grub-reboot.forced in /etc/sudoers aufnehmen

  • In deinem "Boot_windows_from_Linux_Skript" den Programmaufruf "sudo grub-reboot 0" mit "sudo /usr/local/bin/grub-reboot.forced 0" ersetzen
    Newur hat geschrieben:

btw. wo kann man sich als Anfänger ein bisschen (auf deutsch) in shell scripts einarbeiten?

BASH zum Beispiel hier:
Shell Bash oder auch sehr umfangreich hier: http://www.linuxfibel.de/kapitel2.htm

SHELL-Programmierung zum Beispiel hier:
http://www.fh-wedel.de/~si/vorlesungen/internet/Unix/ShellProg.html
http://www.linuxfibel.de/kapitel6.htm

dehru

Newur

(Themenstarter)
Avatar von Newur

Anmeldungsdatum:
3. September 2006

Beiträge: 500

dehru hat geschrieben:

Ist deine Hardware korrekt verkabelt und eingerichtet, oder hängen zum Beispiel DMA und non-DMA-Laufwerke am selben Controller?

Meine Verkabelung sieht im Moment so aus:

-Ubuntu Festplatte am SATA 1 Anschluss
-Windows Platte am SATA 2 Anschluss
-DVD Brenner alleine am IDE Anschluss

Von daher sollte es eigentlich keinen Konflikt zwischen den Laufwerken geben.

dehru hat geschrieben:

Kommt dieser Hinweis auch beim normalen Booten?

Nein.

Das Script selbst funktioniert zwar inzwischen, allerdings stoert mich, dass nach der Benutzung immer Windows als Standard geladen wird. Eigentlich soll es ja nur genau einmal den Vorzug vor Ubuntu bekommen, sowie ich es auch in Grub definiert habe. Ich weiss jetzt nicht ob der Fehler im Script, in der Eigenschaft von grub-reboot oder der menu.lst liegt, die ich mal angehaengt habe.

menu.lst

MfG
Newur

Newur

(Themenstarter)
Avatar von Newur

Anmeldungsdatum:
3. September 2006

Beiträge: 500

Newur hat geschrieben:

Das Script selbst funktioniert zwar inzwischen, allerdings stoert mich, dass nach der Benutzung immer Windows als Standard geladen wird. Eigentlich soll es ja nur genau einmal den Vorzug vor Ubuntu bekommen, sowie ich es auch in Grub definiert habe.

Dieses Problem ist inzwischen geloest - herzlichen Dank nochmal an fir3 im IRC, der mir den entscheidenden Tipp gegeben hat.
Der funktionierende menu.lst Eintrag sieht so aus:
menu.lst
wobei der Windowseintrag einfach um ein savedefault 0 ergaenzt werden musste. Damit wird der Wert fuer den naechsten Start wieder auf Ubuntu gesetzt.

Einziges verbliebenes Problem ist jetzt der Hinweis bei jedem grub-reboot

Probing devices to guess BIOS drives. This may take a long time.


der viel Zeit kostet und einfach aergerlich ist.

Warum muss grub den BIOS drive raten?

dehru Team-Icon

Ehemalige
Avatar von dehru

Anmeldungsdatum:
2. Oktober 2005

Beiträge: 2178

Wohnort: Stuttgart

Newur hat geschrieben:

allerdings stoert mich, dass nach der Benutzung immer Windows als Standard geladen wird. Eigentlich soll es ja nur genau einmal den Vorzug vor Ubuntu bekommen, sowie ich es auch in Grub definiert habe. Ich weiss jetzt nicht ob der Fehler im Script, in der Eigenschaft von grub-reboot oder der menu.lst liegt, die ich mal angehaengt habe.

Wenn zum Beispiel der Boot-Eintrag 1 als default definiert ist (siehe Datei /boot/grub/default), dann müsste nach dem Aufruf von

sudo grub --batch  <<EOT
savedefault --once --default=0
quit
EOT

in der Datei /boot/grub/default "1:0" stehen. Das bedeutet, dass der Eintrag 1 eigentlich der DEFAULT-Eintrag ist, aber beim nächsten Bootvorgang, der BOOT-Eintrag 0 abgearbeitet wird.
VERMUTUNG: Wird nun ein OS gestartet, der Zugriff auf /boot/grub/default hat (z.Bsp. ein anderer Kernel), dann wird der Inhalt der Datei /boot/grub/default angepasst, sodass nach dem nächsten Boot-Vorgang in der Datei /boot/grub/default wieder nur "1" steht. Bootest du aber Windows, dann wird der Eintrag in der Datei /boot/grub/default nicht wieder zurückgesetzt, weil Windows auf die /-Partition oder auf die /boot-Partition nicht zugreift. Folglich bleibt Windows dann immer das "Nur-einmal-default-OS". Das wird erst dann korrigiert, wenn Linux einmal manuell im GRUB-Menü ausgewählt wird, und infolgedessen die Datei /boot/grub/default wieder zurückgesetzt wird.

Das kannst du testen, indem du "grub-reboot 3" oder etwas anderes machst. Dann müsste der "OS-Nummer-4" nur einmal gestartet werden, und dann wieder dein default-Boot-Eintrag.

dehru

Newur

(Themenstarter)
Avatar von Newur

Anmeldungsdatum:
3. September 2006

Beiträge: 500

Du hast vollkommen recht dehru. Wenn ich einmal von Hand Ubuntu auswaehle, wird es anschliessend auch wieder als default gestartet, dass habe ich schon festgestellt. Interessant natuerlich jetzt auch zu wissen warum das so ist.

Zum Glueck besteht dieses Problem jetzt nicht mehr. (siehe ein Post weiter oben von mir)

Jetzt stoert nur noch

Probing devices to guess BIOS drives. This may take a long time.

btw. Ich habe irgendwo mal gelesen, dass man unter Windows ueber Start/Ausfuehren auch auf grub zugreifen kann, finde aber die Seite nicht mehr. Weiss dazu jemand etwas genaueres?

MfG
Newur

Antworten |