Ich habe eine Maschine, die Multi-Boot-Partitionen hat. Ich habe Ubuntu 14.04 auf einer Partition, Ubuntu 15.04 auf der zweiten und Ubuntu 16.04 auf einer dritten. Gibt es eine Möglichkeit, von der Kommandozeile aus zu erfahren, von welcher Partition ich gebootet habe, um herauszufinden, auf welcher Partition /boot/grub/grub.cfg
der Bootvorgang durchgeführt wurde? Ich habe /boot/grub/grub.cfg
auf jeder der drei Partitionen.
12
/boot/grub/grub.cfg
zum Booten verwendete Datei gelöscht, diese Partition aus der Partitionstabelle gelöscht und diese Festplatte physisch aus dem System entfernt worden sein.Antworten:
Nachdem GRUB das Booten an den Kernel übergeben hat, hat der Kernel keine Ahnung, wie er gestartet wurde, und ist
/boot
möglicherweise nicht derjenige, den GRUB verwendet hat. Sie können die Zugriffszeitenboot/grub/grub.cfg
in jeder Partition überprüfen, um festzustellen, auf welche Partition zuletzt zugegriffen wurde. Das könnte Ihnen sagen, welche Partitionskonfigurationsdatei GRUB verwendet.Wenn die Zugriffszeiten nicht aktualisiert werden, müssen Sie nach Unterschieden in den Kernel-Parametern suchen, die von den verschiedenen GRUB-Konfigurationsdateien verwendet werden. Wenn Sie sie ändern können, beispielsweise Add
foo=1
,foo=2
etc. zuGRUB_CMDLINE_LINUX
in jedem dieser laufensudo update-grub2
und Neustart, dann können Sie überprüfen/proc/cmdline
, welche dieser Werte sehen verwendet wurden.quelle
/boot
sich befindet, aber das ist möglicherweise nicht das, was grub verwendet hat, und Sie und Katu finden, dass die gemountete Partition gemountet/
ist, aber, wie Ravexina bemerkte, das hat es wahrscheinlich noch weniger eine verbindung/
sicher, dass Sie die Partition gefunden haben, auf der sie installiert ist. Finden Sie heraus, welche GRUB-Konfiguration der Partition beim Booten verwendet wurde? Ich verstehe nicht, wie das zusammenhängt.Wie Sie wissen, befindet sich die gesuchte Datei im
/boot
Verzeichnis Ihres laufenden Systems. entweder/boot
ist eine separate Partition oder nicht; Wenn/boot
es sich um eine separate Partition handelt, sollten Sie danach suchen:Bedeutet, dass sich das,
grub.cfg
was verwendet wurde, in befindetsda2
.Andernfalls sollten Sie suchen
root
:Dieses Mal befindet es sich in
sda1
.Oder auch zum Spaß können wir die Boot-Zeit-Parameter überprüfen:
Verwenden Sie dann,
UUID
um herauszufinden, welche Partition Ihre Wurzel ist.Welches bedeutet aus
sda1
.Sie können auch überprüfen, ob diese Boot-Parameter in einer Ihrer
grub.cfg
Dateien enthalten sind. Dies funktioniert nur, wenn sich die Boot-Parameter ingrub.cfg
voneinander unterscheiden.quelle
readlink -f /dev/disk/by-uuid/<UUID>
.So zeigen Sie das Gerät an, auf dem sich das aktuell gemountete Root-Dateisystem befindet:
So zeigen Sie die aktuell ausgeführte Ubuntu-Release-Version an:
quelle
lsb_release -rs
jedes Mal verwenden wird. KISSWir könnten in jedem Betriebssystem einen einfachen benutzerdefinierten Menüeintrag hinzufügen und im Grub-Menü sehen, von welchem Betriebssystem Grub die Konfigurationsdatei geladen hat.
Beispiel:
Wir booten in 16.04 und bearbeiten die Datei
/etc/grub.d/40_custom
, um einen Menüeintrag hinzuzufügen.Wir stellen sicher, dass die Datei ausführbar ist und ausgeführt wird
sudo update-grub
.Dann nehmen wir die gleichen Änderungen in den anderen Betriebssystemen vor, wir verwenden nur andere Namen für den Menüeintrag, z. B. ändern wir
16.04
zu15.04
und so weiter.Wenn wir diesen Menüeintrag während des Bootens im Grub-Menü auswählen, wird die Maschine nur neu gestartet. Wir haben sie erstellt, um kein Betriebssystem zu booten, sondern um zu sehen, welches Betriebssystem tatsächlich zum Laden verwendet wird
grub.conf
.Zusätzliche Information
Diese Art von Verwirrung tritt auf, wenn wir mehrere Betriebssysteme installieren, die alle Grub verwenden, und während der Installation eines Betriebssystems denselben Bootloader-Speicherort auswählen. Wir brauchen in der Tat nur ein Betriebssystem, das Grub installiert. Grub kann in jede Linux-Distribution booten. Wenn also eine Distribution (einschließlich Grub) installiert ist, können wir zusätzliche Betriebssysteme installieren, ohne Grub zu installieren.
Bei älteren Installationen ist es ziemlich einfach, den Speicherort für die Bootloader-Installation zu ermitteln, da wir den Partitions-Boot-Record als Speicherort auswählen können, aber wir müssen darauf achten, die richtige Partition auszuwählen. Ein Betriebssystem installiert also den Bootloader auf dem MBR und weitere Betriebssysteme installieren den Bootloader auf dem PBR der OS-Partition. Diese Möglichkeit haben wir nur, wenn wir
Something else
während der Installation die -Option verwenden.Bei UEFI-Installationen ist es etwas seltsamer, der Bootloader wird in einem Ordner in der EFI-Systempartition (ESP) installiert, und mehrere Bootloader können problemlos gleichzeitig installiert werden. Das Problem dabei ist, dass alle Ubuntu-Varianten und auch einige andere Linux-Distributionen Grub im selben Ordner im ESP installieren und wir keine Wahl haben. Das Installieren einer zusätzlichen Linux-Distribution würde also unseren bereits vorhandenen Bootloader überschreiben. Die einzige Möglichkeit, dies zu vermeiden, besteht darin, eine Live-Sitzung zu starten und das Installationsprogramm mit zu starten
sudo ubiquity -b
.Eine andere einfache Lösung
Nehmen wir an , dass wir drei Linux - Distributionen auf den Partitionen installiert haben
sda1
,sda2
undsda3
. Nun werfen wir einen Blick auf Grubs Bootmenü-Einträge. Während des Bootens werden wir so etwas sehen:Die ersten beiden Einträge sind die Einträge für das Betriebssystem, das die
grub.conf
tatsächlich verwendete -Datei generiert hat . Die Einträge # 3 und # 4 sind im Moment nicht interessant. Die Einträge # 5, # 6, # 7 und # 8 sind die Einträge, die mit dem OS-Prober generiert wurden, und wir sehen, auf welchen Partitionen sich die Betriebssysteme für diese Einträge befinden. In diesem kleinen Beispiel können wir also schließen, dass diegrub.config
tatsächlich verwendete -Datei nicht zum eingeschalteten Betriebssystemsda2
odersda3
aber zum eingeschalteten Betriebssystem gehörtsda1
./boot
Wenn ein oder mehrere Betriebssysteme mit einer separaten -Partition installiert sind, müssten wir herausfinden, welche/boot
-Partition zu welchem Betriebssystem gehört. Dies kann jedoch problemlos durch Ausführen desfindmnt
-Befehls in jedem Betriebssystem erfolgen.quelle
Und überprüfen Sie, in welcher Festplatte gemountet ist
/
. Bitte lesen Sie die Kommentare unten oder Ravexinas Antwort, wenn Sie/boot
in Ihren berittenen Punkten haben.Wenn Sie sich nicht sicher sind, überprüfen Sie die UUID
quelle
/boot
eine separate Partition ist? dann/boot/grub/grub.cfg
befindet sich nicht in der/
Partition./
Partition für die Zwecke dieses Benutzers jedoch nicht ?/boot
suchen.Um herauszufinden, von welcher Partition der Benutzer gestartet hat, sehen Sie sich das Bootloader-Menü an, bevor Sie eines der installierten Systeme starten . Es ist schwer zu sagen, ohne das Bootloader-Menü zu sehen.
Wohin schauen?
In den folgenden kombinierten Screenshots habe ich drei Hinweise angegeben, von denen man möglicherweise weiß, von welcher Partition der Benutzer gebootet hat.
Der offensichtlichste Hinweis ist label (3), mit dem das GNU GRUB-Hintergrundbild auf dem System geändert werden soll, auf dem das Bootloader-Menü gesteuert wird. Dies lässt sich am einfachsten feststellen, vorausgesetzt, der Benutzer hat es zuvor eingerichtet.
Label (1) erklärt
Suchen Sie nach Partitionen, die nicht in den Menüeinträgen unter dem ersten Eintrag aufgeführt sind. Im Screenshot sind nur zwei Betriebssysteme installiert, nämlich "Ubuntu" und "Ubuntu 14.04.5 LTS".
Letzterer hat erwähnt
(on /dev/sda3)
, was bedeutet, dass ersterer sich auf/dev/sda2
oder befinden könnte/dev/sda1
. Um sicherzugehen, führen Sie nach dem Booten des Systems, dh "Ubuntu", den entsprechenden Befehl aus, um die verfügbaren Partitionen aufzulisten (lsblk
scheint am einfachsten zu sein).Erst nach dem Vergleich mit der Ausgabe von
lsblk
wissen wir, dass das System zB "Ubuntu" unter/dev/sda2
(welches nicht in Menüeinträgen aufgeführt war) von welchem Bootloader-Menü aus verwaltet wird.Label (2) erklärt
Suchen Sie nach der GRUB-Version, die oben im Bootloader-Menü gedruckt wird. Beachten Sie diese Version und vergleichen Sie sie mit der GRUB-Version, die sich auf dem gebooteten System befindet, dh "Ubuntu".
Im Screenshot (untere Hälfte):
GNU GRUB version 2.02~beta2-9
Führen Sie nach dem Booten des Systems, dh "Ubuntu", den entsprechenden Befehl aus, um die Version des GRUB-Pakets zu überprüfen (dies
grub-install --version
ist relevant und am einfachsten).Wie ist das relevant? Weil
grub-install
undupdate-grub
Befehle beide von demselben Paket bereitgestellt werdengrub2-common
. Da das Bootloader-Menü mit Tools aus demselben Paket erstellt und aktualisiert wird, ist die gedruckte Version oben im Bootloader-Menü identisch.Label (3) erklärt
Dieser Hinweis muss manuell eingerichtet werden, da das Standard-Hintergrundbild des Bootloader-Menüs none ist (nur schwarz). Das Hintergrundbild muss eine Tiefe von 8 Bit haben.
Wenn das
desktop-base
Paket auf Ihrem System installiert ist, werden solche Hintergrundbilder, die speziell für GRUB erstellt wurden,*grub.png
im Zielverzeichnis leicht mit dem Dateinamensuffix gefunden .So richten Sie das Hintergrundbild ein:
Öffnen Sie die
/etc/default/grub
Datei als Superuser und fügen Sie die ZeileGRUB_BACKGROUND=
mit dem vollständigen Pfad zum gewünschten Bild hinzu.Führen Sie
sudo update-grub
dann ein Update aus/boot/grub/grub.cfg
, das das Bootloader-Menü enthält. Der Benutzer sieht eine ähnliche Ausgabe wie die folgende.Starten Sie den Computer neu und prüfen Sie, ob im Bootloader-Menü sichtbare Änderungen durch den Aktualisierungsbefehl des Systems vorgenommen wurden.
Andernfalls wiederholen Sie die Schritte nacheinander für andere Systeme. Die wiederholten Schritte wären unnötig gewesen, wenn der Benutzer gewusst hätte, welches System die Kontrolle über das Bootloader-Menü hatte (dies hängt wiederum davon ab, wie die Installation durchgeführt wurde).
Haftungsausschluss
Diese Antwort erklärt die bewährten und getesteten Kriterien für ein BIOS-System mit Multi-Boot-Setup unter Verwendung der GNU GRUB PC / BIOS-Version. Es gelten die folgenden Ausnahmen.
Für UEFI System Pendant Version mit GNU GRUB EFI ist es nicht oder garantiert nicht bekannt, ob die Kriterien anscheinend mit den oben beschriebenen übereinstimmen.
Der Schwerpunkt liegt auf dem Aussehen des Bootloader-Menüs (wie es anders aussehen kann, dh in der oberen Hälfte des Screenshots), anstatt zu demonstrieren, wie das Chainloading funktioniert. Daher wird in dieser Antwort nicht erläutert , wie der Mehrfachstart eingerichtet wurde (siehe Screenshot) .
Wenn mehrere Boot-Setups mit genau denselben Kopien eines ähnlichen Betriebssystems wie Ubuntu 14.04, Kubuntu 14.04, Xubuntu 14.04 usw. erstellt wurden, ist label (3) die einzige zuverlässige Methode, um festzustellen, von welcher Partition der Benutzer gebootet hat.
Label (3) funktioniert möglicherweise besser, wenn ein benutzerdefiniertes Hintergrundbild verwendet wird, das explizit schreibt, von welchem es gestartet wird, z. B. "Dieses Startmenü wird von / dev / sda1 verwaltet". Ebenso wird in dieser Antwort nicht erläutert , wie ein benutzerdefiniertes Hintergrundbild für GRUB erstellt wird .
TL; DR Überprüfen Sie das Bootloader-Menü, bevor Sie eines der installierten Systeme starten . Der einfachste und zuverlässigste Weg, dies herauszufinden, ist label (3), bei dem das GRUB-Hintergrundbild manuell eingerichtet wird.
quelle