ubuntuusers.de

Wie fragt man den GRUB2 Installations-Ort ab?

Status: Gelöst | Ubuntu-Version: Kubuntu 24.04 (Noble Numbat)
Antworten |

Hartmut2

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2018

Beiträge: 274

black_tencate schrieb:

Du kannst auch den ähnlichen Befehl, der im verlinkten Artikel steht, benutzen ... der zeigt auch einen evt. in einem PR installierten grub an

Was meinst Du hier mit "PR"?

Im "BIOS" Modus kann die firmware (das BIOS) zu gegebener Zeit ausschließlich auf der im BIOS in der Reihenfolge entsprechend eingestellten Platte im ersten Sektor (genauer in den ersten 446 Byte) nach einem Bootloader (resp. kleinem Teil davon) suchen, wenn es einen findet, bringt es den zur Ausführung.

In diesen Bereich paßt nur ein Loader! (bei der Installation eines weiteren O/S Bootloaders würde der Bereich mit dem neuen überschrieben). Man kann grub auch (für bestimmte Fälle) in einen PBR schreiben, allerdings kann das BIOS den nicht zur Ausführung bringen ("Abstellgleis").

Was meinst Du hier mit "PBR"?

Mir ist klar, daß (im BIOS-Modus) in die ersten 446 Byte des MBR nur 1 Bootloader (resp. ein kleiner Teil davon) passt. Ich war bisher davon ausgegangen, daß sich der größere Teil von GRUB2

  • entweder direkt hinter dem MBR befindet (das meinte ich mit "global")

  • oder sich alternativ auch am Anfang der zu bootenden Partition befinden kann.

Kannst Du mir sagen, ob das so stimmt oder falsch ist?

Gruß Hartmut


kB schrieb: Welche Version von Ubuntu benutzt Du denn? Zeige:

cat /etc/lsb-release 
g6@i3300:/media/D/Tst$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.2 LTS"
hg6@i3300:/media/D/Tst$

Lidux

Anmeldungsdatum:
18. April 2007

Beiträge: 16753

Hallo Hartmut2,

Bitte noch ....

sudo parted -l
sudo fdisk -l

Gruss Lidux

Hartmut2

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2018

Beiträge: 274

Lidux schrieb:

Bitte noch ....

sudo parted -l
sudo fdisk -l
hg6@i3300:/media/D/Tst$ sudo parted -l
[sudo] Passwort für hg6:
Modell: ATA Samsung SSD 860 (scsi)
Festplatte  /dev/sda:  1000GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags:

Nummer  Anfang  Ende    Größe   Typ       Dateisystem  Flags
 1      1049kB  59,1GB  59,0GB  primary   ntfs
 4      59,1GB  166GB   107GB   primary   ext4
 2      166GB   169GB   2139MB  primary   fat16        boot, LBA
 3      169GB   1000GB  832GB   extended               LBA
 5      169GB   171GB   2145MB  logical   fat16
 6      171GB   173GB   2145MB  logical   fat16
 7      173GB   177GB   4292MB  logical   ntfs
 8      177GB   999GB   822GB   logical   ntfs
 9      999GB   1000GB  1073MB  logical   fat32

Modell: ATA Samsung SSD 870 (scsi)
Festplatte  /dev/sdb:  2000GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags:

Nummer  Anfang  Ende    Größe   Typ      Dateisystem  Flags
 1      1049kB  1893GB  1893GB  primary  ntfs
 2      1893GB  2000GB  107GB   primary  ext4

hg6@i3300:/media/D/Tst$ sudo fdisk -l
... alle /dev/loop entfernt ...

Festplatte /dev/sda: 931,51 GiB, 1000204886016 Bytes, 1953525168 Sektoren
Festplattenmodell: Samsung SSD 860
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x76cb73b0

Gerät      Boot     Anfang       Ende   Sektoren  Größe Kn Typ
/dev/sda1             2048  115333119  115331072    55G  7 HPFS/NTFS/exFAT
/dev/sda2  *     325109760  329287679    4177920     2G  e W95 FAT16 (LBA)
/dev/sda3        329287680 1953525167 1624237488 774,5G  f W95 Erw. (LBA)
/dev/sda4        115333120  325109759  209776640   100G 83 Linux
/dev/sda5        329289728  333479935    4190208     2G  6 FAT16
/dev/sda6        333481984  337672191    4190208     2G  6 FAT16
/dev/sda7        337674240  346056703    8382464     4G  7 HPFS/NTFS/exFAT
/dev/sda8        346058752 1951426559 1605367808 765,5G  7 HPFS/NTFS/exFAT
/dev/sda9       1951428608 1953523711    2095104  1023M  b W95 FAT32

Partitionstabelleneinträge sind nicht in Festplatten-Reihenfolge.

Festplatte /dev/sdb: 1,82 TiB, 2000398934016 Bytes, 3907029168 Sektoren
Festplattenmodell: Samsung SSD 870
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x9767aca6

Gerät      Boot     Anfang       Ende   Sektoren Größe Kn Typ
/dev/sdb1             2048 3697313791 3697311744  1,7T  7 HPFS/NTFS/exFAT
/dev/sdb2       3697313792 3907028991  209715200  100G 83 Linux

hg6@i3300:/media/D/Tst$

Kannst Du mir bitte sagen, inwiefern diese Befehle zur Antwort auf meine Frage beitragen können? Das verstehe ich nämlich noch nicht...

black_tencate

Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11299

Hej Hartmut2,

Hartmut2 schrieb:

... Was meinst Du hier mit "PR"?

ist 'n Tippfehler, soll PBR heißen, bedeutet Partititons Boot Record

...daß sich der größere Teil von GRUB2

  • entweder direkt hinter dem MBR befindet (das meinte ich mit "global")

das ist so im "legacy" Bootmodus.

Ich hänge hier mal ein altes informatives Wiki dran, kannst ja mal reinschauen.

Hartmut2 schrieb:

... Kannst Du mir bitte sagen, inwiefern diese Befehle zur Antwort auf meine Frage beitragen können? Das verstehe ich nämlich noch nicht...

och, das wüßten andere (z.B. ich) bestimmt auch gern.

Gruß black tencate

Grundlagen_eines_Multibootsystems.zip (141.9 KiB)
Download Grundlagen_eines_Multibootsystems.zip

Hartmut2

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2018

Beiträge: 274

black_tencate schrieb:

Du kannst auch den ähnlichen Befehl, der im verlinkten Artikel steht, benutzen, der ist nur "holperig", sollte mal von einem bash Kundigen überarbeitet werden

sudo fdisk -l 2>/dev/null | egrep "Disk /|/dev/" | sed "s#^/dev/#Part /dev/#" | awk '{print $2}' | sed 's/://' | xargs -n1 -IX sudo sh -c "hexdump -v -s 0x80 -n  2 -e '2/1 \"%x\" \"\\n\"' X | xargs -n1 -IY sh -c \"case  \"Y\" in '48b4') echo X: GRUB 2 v1.96 ;; 'aa75' | '5272') echo X: GRUB Legacy ;; '7c3c') echo X: GRUB 2 v1.97 oder v1.98 ;; '020') echo X: GRUB 2 v1.99 ;; *) echo X: Kein GRUB Y ;; esac\"" 

der zeigt auch einen evt. in einem PR installierten grub an

Inzwischen konnte ich auch diesen mega-kryptischen Monster-Befehl mal ausprobieren. Wenn man alle ungewollten Ausgaben für jede Menge /dev/loop Devices und alle Warnungen "xargs: Warnung: Die Optionen --max-args und --replace/-I/-i schließen sich gegenseitig aus, der vorherige --max-args-Wert wird ignoriert" daraus entfernt, dann bleibt folgendes übrig:

/dev/sda: GRUB 2 v1.99
/dev/sda1: Kein GRUB 8cd
/dev/sda2: Kein GRUB 6616
/dev/sda3: Kein GRUB 00
/dev/sda4: Kein GRUB 00
/dev/sda5: Kein GRUB 6616
/dev/sda6: Kein GRUB 6616
/dev/sda7: Kein GRUB 8cd
/dev/sda8: Kein GRUB 8cd
/dev/sda9: Kein GRUB 745

/dev/sdb: Kein GRUB 00
/dev/sdb1: Kein GRUB 6f6f
/dev/sdb2: GRUB 2 v1.99

Das war interessant für mich, weil auf /dev/sdb ist GRUB offensichtlich nicht hinter dem MBR installiert (wie ich bisher immer annahm), sondern ist in /dev/sdb2 installiert (was ein 2. bootbares Ubuntu enthält).

Ich sehe hier wieder einen 'hexdump', der wohl jeweils 2 Bytes ab Offset 0x80 liest und dafür vermutlich den Output von 'sudo fdisk -l' benutzt und mit dem 'case' werden dann diese 2 Bytes wohl gegen die ID's der verschiedenen GRUB-Versionen geprüft, die in https://wiki.ubuntuusers.de/GRUB-Umgebung_analysieren/#Bootsektor-analysieren gelistet sind.

Wenn ich dieses Ergebnis mit obigem Ergebnis von dem 1. mega-kryptischen Monster-Befehl aus https://forum.ubuntuusers.de/post/9477901/ vergleiche:

/dev/sda: Grub 2
/dev/sdb

dann wird klar, daß der 1. Befehl eine GRUB-Installation, die in eine Partition gemacht wurde, nicht erkennt und damit nicht die gesuchte Antwort auf meine Frage ist - aber der 2. Befehl macht genau das, was ich gesucht habe ☺

black_tencate schrieb:

Ich hänge hier mal ein altes informatives Wiki dran, kannst ja mal reinschauen.

Habe den Artikel bisher nur mal grob überflogen und finde ihn sehr interessant. Hab ihn archiviert und werde ihn bei nächster Gelegenheit mal genauer lesen. Da steht vieles drin, was in dem aktuellen Wiki zum Bootvorgang https://wiki.ubuntuusers.de/Bootvorgang/ nicht enthalten ist.

Nochmals vielen Dank an @black_tencate für Deine Lösung und diesen Artikel.

black_tencate

Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11299

Hej Hartmut2,

Hartmut2 schrieb:

...

/dev/sdb: Kein GRUB 00
/dev/sdb1: Kein GRUB 6f6f
/dev/sdb2: GRUB 2 v1.99

Das war interessant für mich, weil auf /dev/sdb ist GRUB offensichtlich nicht hinter dem MBR installiert (wie ich bisher immer annahm), sondern ist in /dev/sdb2 installiert (was ein 2. bootbares Ubuntu enthält).

derlei kann nur vom Benutzer veranlaßt worden sein.

Diesen grub kann das "BIOS" nicht direkt starten, allerdings kannst Du in den grub von sda z.B. einen Eintrag in die /etc/grub.d/40_custom schreiben, der Dir auch dafür (sdb) das Menü anzeigt

menuentry "Ubuntu auf sdb" {
set root=hd1,2  # besser die UUID verwenden
chainloader +1
}

Gruß black tencate

Hartmut2

(Themenstarter)

Anmeldungsdatum:
11. Oktober 2018

Beiträge: 274

black_tencate schrieb:

Diesen grub kann das "BIOS" nicht direkt starten, allerdings kannst Du in den grub von sda z.B. einen Eintrag in die /etc/grub.d/40_custom schreiben, der Dir auch dafür (sdb) das Menü anzeigt

Aus irgendwelchen Gründen war das nie nötig, weil diese Partition /dev/sdb2 (seit es sie gibt) immer schon in meinem "ganz normalen" GRUB-Menü von sda erscheint und von dort gebootet werden kann. Und wenn mein GRUB-Menü von sda mal neu gebaut wird, z.B. nach jedem "sudo apt autoremove --purge", dann wird auch Partition /dev/sdb2 dort immer mit eingetragen. Trotzdem Danke für den Tipp.

Antworten |