Ich bin kürzlich über das GRUB- ntldrModul gestolpert .
Anscheinend kann es als Alternative zum chainloaderBooten der NT> = 6.0-Versionen von Windows wie im folgenden Beispiel verwendet werden. (Sehr praktisch, wenn der Volume Boot Record für eine Windows-Partition beschädigt ist.)
menuentry "Windows 7 (bootmgr on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
ntldr ($root)/bootmgr
}
Wo kann ich mehr darüber erfahren, wie diese Boot-Direktive verwendet werden kann? Ich sah es nicht aufgelistet, als ich in der HTML-Version des GNU GRUB-Handbuchs nachgesehen habe .
Antwort auf die Antwort von ckhan
Vielen Dank! Ich hatte so ziemlich beschlossen, dass ich versuchen müsste, den Quellcode zu durchsuchen, um mehr über den GRUB- ntldrBefehl / das GRUB- Modul zu erfahren . Aber Sie haben einen viel besseren Job gemacht als ich.
Es wäre mir nie in den Sinn gekommen, in den E-Mail-Archiven nachzuschauen, welche Designdiskussionen die Person, die den Code geschrieben hat, möglicherweise geführt hat. Diese Methode scheint in Zukunft sehr hilfreich zu sein. Danke, dass du es erwähnt hast.
Meine Gedanken zur GRUB- ntldrUnterstützung
-
Ich bin mir zwar nicht sicher, wie viel die Unterscheidung bedeutet,
ntldrist aber ein Modul, kein Befehl. Oder vielleicht ein dynamisch geladener Befehl, wenn Sie möchten.
Wenn Sie Ihrem Quellcode-Link folgen und die Zeilen 152 (GRUB_MOD_INIT) und 159 (GRUB_MOD_FINI) betrachten, können Sie den zu ladenden Code sehen und ... Ich vermute ... das Modul entladen.
GRUB implementiert anscheinend viele Funktionen, die Sie für " Befehle " halten, als Module. Der einzige mir bekannte Unterschied in der Verwendung besteht darin, dass vor der Verwendung eines Moduls sichergestellt werden muss, dass es mit dem Befehl geladen wurdeinsmod ntldr.
Nebenbei: Ich habe mich immer gefragt, warum GRUB nicht unterstütztreboot. Es stellt sich heraus, dass der Befehl existiert, aber es ist ein Modul. Wennrebootzurückkommtunknown command, danninsmod rebootErmöglicht GRUB, sich denrebootBefehl zu "merken" .
Nebenbei: Wann und warum GRUB ein Modul " entladen " könnte, weiß ich noch nicht. Vielleicht ist es das Ergebnis von etwas ähnlichem wie " Müllabfuhr "? Ich habe festgestellt, dass die Module nach dem Laden scheinbar bestehen bleiben, auch nachdem ein System heruntergefahren und neu gestartet wurde. Natürlich können Sie nicht hängen auf das, aber das zu sein scheint , wie es funktioniert in der Praxis häufig. -
Es ist interessant , dass sie basierend
ntldraufchainloader. Ich habe denchainloader.cCode nicht angeschaut . Ich vermute, es macht wahrscheinlich auch eine Verlagerung der Last im Intel 16-Bit Real- Modus?
Ich bin eher froh, dass sie nichtntldrals Option implementiert wurdenchainloader. Ich stimme Vladimir zu. Unabhängig von den Ähnlichkeiten unter den Deckungen ist die Verwendungssyntax sehr unterschiedlich. Der derzeitige Ansatz ist weniger klug. - Es ist auch interessant zu sehen, dass GRUB anscheinend nicht begeistert ist, diesen Befehl hinzuzufügen. Anscheinend hielten die GRUB-Entwickler eine Beschädigung des Windows Partition Boot Record (PBR) für äußerst unwahrscheinlich. Ich kann jedoch skizzieren, wie dies bei einer normalen Installation zu tun ist.
Beginnen Sie damit, dass ein Benutzer Windows auf seinem System installiert hat. Sie installieren nun Ubuntu (12.04 LTS) " neben " Windows. An einem Punkt während der Ubuntu-Installation können sie offenbar entscheiden, wo GRUB installiert werden soll. Aus Gründen, die ich nicht erraten kann, entscheiden sich einige von ihnen, GRUB auf der Partition zu installieren, auf der Windows installiert ist.
Die Installation ist abgeschlossen und sie können Ubuntu erfolgreich starten. Wenn sie jedoch versuchen, Windows durch Auswahl des Eintrags im GRUB-Menü zu starten, wird Windows nicht gestartet. Wenn Sie stattdessen versuchen, Windows mit GRUB zu starten, wird das GRUB-Menü erneut angezeigt?
Warum? Nun, anscheinend, als sie sich entschieden, GRUB in die Windows-Partition zu installieren, war ein Teil dessen, was tatsächlich passierte, die PBR für die Windows-Partition, die mit der PBR von GRUB überschrieben wurde. Lädtchainloader +1also keinen Windows-Bootloader in einer Kette, sondern lädt stattdessen GRUB neu.
IMO, der sicherste schnelle Weg , um einen Benutzer zu starten Sie Windows in dieser Situation zu ermöglichen , ist den GRUBs neu zu verwendenntldr. Ich frage mich, ob dies für die Entwickler von Interesse wäre. Ich gehe davon aus, dass sie dieses Szenario nicht antizipiert haben.
Ich frage mich, welche anderen Bootloader als die Windows-Bootloader ntldrund bootmgrder GRUB- ntldrBefehl möglicherweise geladen werden können.