ubuntuusers.de

GRUB 2 von BIOS nach EFI umstellen (MSDOS-Schema)

Status: Gelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

Lidux

Anmeldungsdatum:
18. April 2007

Beiträge: 17150

Hallo san04,

Du hast doch von der Boot Partition für das verschlüsselte Sytem doch 100 MB für EFI abgezweigt. Kontrolliere doch mal die UUID aller Partitionen mit denen in der fstab ....

Diese:

 3      106MB   512MB  406MB  primary   ext2

müsste doch /boot sein wegen Verschlüsselung.

Gruss Lidux

black_tencate

Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11455

Hej san04,

san04 schrieb:

... Eine Meldung kommt noch bei parted bzgl. der physischen Blockgröße, die ich nicht deuten kann, ob das Probleme verursachen könnte?

nein, die bezieht sich auf das nachfolgende device (iso9660,der USBLiveStick, hast Du listigerweise 'abgeschnitten', bzw nicht mit 'ignore'beantwortet)

ubuntu@ubuntu:~$ sudo parted -l
...
Warnung: Der Treiberdeskriptor sagt, dass die physische Blockgröße 2048 Bytes
ist. Linux sagt, dass es 512 Bytes sind.
Ignorieren/Ignore/Abbrechen/Cancel?  

Ich würde jetzt folgendes machen

  1. mich fragen, ob es den überhaupt EFI sein muß (braucht man doch nur dann zwingend, wenn Windows auf einer GPT Platte installiert werden soll)

  2. Datensicherung, falls erforderlich

  3. im Livesystem die ESP (/dev/sda3) löschen, die "/boot" (/dev/sda1) nach hinten schieben, davor eine neue ESP (50 MB reichen dicke) anlegen und mit esp markieren. Die neuen Einträge im NVRAM löschen

  4. Livesystem neu starten bis zum GRUB (im EFI Modus), dort dann mit Strg + C auf die Konsole wechseln

  5. set root=(hd0,1)

  6. vmlinuz /boot/vmlinuz root=/dev/sda1

  7. initrd /boot/initrd.img

  8. boot

Im laufenden System die neu ESP nach /boot/efi mounten und dann ein sudo grub-install. Danach den Inhalt von /boot/efi überprüfen, ebenso wie die Einträge im NVRAM.

Das ist zwar im Prinzip™ dasselbe wie schon oben mit dem chroot…aber man weiß ja nie!

Edit:

  • wie hast Du denn sda3 und sda1 "vertauscht"?

  • der neu angelegte

    /mnt/EFI/GRUB:
    .  ..  grub.cfg  grubx64.efi

    und der dazu erzeugte NVRAMeintrag

    grub-install --target=x86_64-efi --efi-directory=/mnt/boot/efi --bootloader-id=GRUB

    passen nicht zusammen.

Gruß black tencate

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

Hi Lidux,

Kontrolliere doch mal die UUID aller Partitionen mit denen in der fstab ....

alles mehrfach gecheckt, das passt.

Hi black_tencate,

hast Du listigerweise 'abgeschnitten', bzw nicht mit 'ignore'beantwortet)

Danke für die Aufklärung, hatte versucht mit "i" bzw. "I" weiter zu kommen, hat aber nicht geklappt, hätte ich wohl ausschreiben müssen?

  1. mich fragen, ob es den überhaupt EFI sein muß

Nach meiner Recherche: Ja, muss... Die Platte soll schlussendlich in einem brandneuen Lenovo P350 laufen und der kann offenbar kein CSM mehr (konnte die Funktion im UEFI nicht finden und meine kurze Recherche ergab dann, dass Lenovo inzwischen bei vielen Geräten nur noch auf EFI setzt) Das Windows GPT lief bei mir schon länger nebenher, musste ich die seltenen Male dann übers one-time boot menü starten, hat mich aber nicht weiter gestört...

2. Datensicherung, falls erforderlich

Daten sind gesichert, geht wie so oft eher um die diversen Konfigurationen des Systems...

  1. im Livesystem die ESP (/dev/sda3) löschen, die "/boot" (/dev/sda1) nach hinten schieben, davor eine neue ESP (50 MB reichen dicke) anlegen und mit esp markieren. Die neuen Einträge im NVRAM löschen

  2. Livesystem neu starten bis zum GRUB (im EFI Modus), dort dann mit Strg + C auf die Konsole wechseln

  3. set root=(hd0,1)

  4. vmlinuz /boot/vmlinuz [mark]root=/dev/sda1[/mark]

  5. initrd /boot/initrd.img

  6. boot

Das werde ich morgen nochmal testen und berichten. Der von mir markierte Bereich zeigt dann für root auf die EFI-Partition, das ist schon so gewollt, ja?

  • wie hast Du denn sda3 und sda1 "vertauscht"?

Habe mit dd die beiden Partitionen auf einen Stick gezogen und sie dann auf der SSD gelöscht. Mit gparted neue Partitionen gleicher Größe angelegt, aber in umgekehrter Reihenfolge, dann mit dd zurückgespielt und dann nochmal GRUB 2 von BIOS nach EFI umstellen, um auf Nummer sicher zu gehen...

  • der neu angelegte

    /mnt/EFI/GRUB:
    .  ..  grub.cfg  grubx64.efi

    und der dazu erzeugte NVRAMeintrag

    grub-install --target=x86_64-efi --efi-directory=/mnt/boot/efi --bootloader-id=GRUB

    passen nicht zusammen.

Dann habe ich da Mist gebaut, das war der Versuch nach dem Archlinux Wiki das EFI nochmal zu installieren...

Lidux

Anmeldungsdatum:
18. April 2007

Beiträge: 17150

Hallo san04,

Kannst du das verschlüsselte System nun starten bzw. auch nicht mit einer SG2D ?

Gruss Lidux

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

Hi Lidux,

vielleicht hab ich das noch etwas missverständlich formuliert, daher fasse ich es hier nochmal zusammen:

Ich hab zwei Rechner (A und B).

A kann CSM (und natürlich auch EFI) booten und da ist das System momentan drauf und läuft auch im CSM-Modus wenn ich das entsprechend starte.

Das System soll jetzt auf B umziehen, B hat kein CSM mehr. Hier starten (so wie ich das gelesen habe) ausschließlich EFI Betriebssysteme.

Daher hier mein versuchtes Vorgehen: System unter A auf EFI umstellen (das versuchen wir ja hier gerade) und dann unter B ans Laufen zu bekommen.

Ob das System mit SG2D auf B startbar ist habe ich nicht versucht, ist aber auch für mich irrelevant, da das keine langfristige Lösung darstellt.

Grüße

san04

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

Hi black_tencate,

ich habe nun

  1. Die ESP gelöscht und neu angelegt (50 MB wie von dir vorgeschlagen), diese mit esp und boot (boot-Markierung ist optional?) markiert, die "/boot" ist schon hinten:

ubuntu@ubuntu:~$ sudo fdisk -l
...
Festplatte /dev/sda: 465,78 GiB, 500107862016 Bytes, 976773168 Sektoren
Festplattenmodell: Samsung SSD 850 
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: 0x930af656

Gerät      Boot  Anfang      Ende  Sektoren  Größe Kn Typ
/dev/sda1  *       2048    104447    102400    50M ef EFI (FAT-12/16/32)
/dev/sda2       1001470 976771071 975769602 465,3G  5 Erweiterte
/dev/sda3        206848    999423    792576   387M 83 Linux
/dev/sda5       1001472 976771071 975769600 465,3G 83 Linux

Partitionstabelleneinträge sind nicht in Festplatten-Reihenfolge.
...
ubuntu@ubuntu:~$ sudo parted -l
Modell: ATA Samsung SSD 850 (scsi)
Festplatte  /dev/sda:  500GB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags: 

Nummer  Anfang  Ende    Größe   Typ       Dateisystem  Flags
 1      1049kB  53,5MB  52,4MB  primary   fat32        boot, esp
 3      106MB   512MB   406MB   primary   ext2
 2      513MB   500GB   500GB   extended
 5      513MB   500GB   500GB   logical

2. Einträge im NVRAM löschen:

ubuntu@ubuntu:~$ sudo efibootmgr -v
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0000,0002,0002,0003
Boot0000* ubuntu-enc	HD(3,MBR,0x930af656,0xc2000,0x32000)/File(\EFI\ubuntu\grubx64.efi)
Boot0002* ubuntu-enc2	HD(1,MBR,0x930af656,0x800,0x32000)/File(\EFI\ubuntu\grubx64.efi)
Boot0003* UEFI: SanDisk USB Ultra 1100	PciRoot(0x0)/Pci(0x1a,0x0)/USB(1,0)/USB(4,0)/HD(1,MBR,0x2cf4ba3a,0x506fcc,0x1f40)AMBO
ubuntu@ubuntu:~$ sudo efibootmgr -b 0000 -B
...
ubuntu@ubuntu:~$ sudo efibootmgr -b 0002 -B
...
ubuntu@ubuntu:~$ sudo efibootmgr -v
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0003
Boot0003* UEFI: SanDisk USB Ultra 1100	PciRoot(0x0)/Pci(0x1a,0x0)/USB(1,0)/USB(4,0)/HD(1,MBR,0x2cf4ba3a,0x506fcc,0x1f40)AMBO
ubuntu@ubuntu:~$ 

Jetzt mal der Reboot...

 grub> set root=(hd0,1)
grub> vmlinuz /boot/vmlinuz root=/dev/sda1
error: can't find command 'vmlinuz'. # Wahrscheinlich meintest du linux ?!
grub> linux /boot/vmlinuz root=/dev/sda1
error: invalid sector size 65535.

Beschwert er sich über die Ausrichtung der EFI-Partition, oder muss ich hier die Boot wählen?

black_tencate

Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11455

Hej sane04,

sorry, natürlich muß das linux /boot/vmlinuz… heißen.

Aber, zuvor muß das richtige device gesetzt werden → "/boot" (sda1 ist ja jetzt die ESP)

Gruß black tencate

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

Ok, war nicht ganz sicher wo root= hinzeigen muss. Aber mit dem nachfolgenden Befehl muss es wohl "/boot" sein, weil dort ja der Kernel liegt... Mein Fehler 😇

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

Ok nächster Anlauf... Dieser integrierte USB-Kartenleser hat mich schon wieder ausgetrickst, wie ich durch Abstecken erst herausgefunden hab 👿

grub> ls (hd5,msdos3)/
# zeigt hier liegen die Kernel....

Könntest du mir nochmal mit der Syntax auf die Sprünge helfen?

Alle meine Versuche enden mit

error:file '/boot/vmlinuz' not found.'

black_tencate

Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11455

Hej sane04,

also

set root=(hdx,y)
linux /boot/vmlinuz root=/dev/sdx,y …

bei (hd…) x,y = je Zahl, bei /dev/sd… x,y x=Buchstabe, y=Zahl

EDIT.

kannst danach suchen: search -f /boot/v… (kann man mit der Tabulatortaste vervollständigen)

Gruß black tencate

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

 grub> search -f /boot/vmlinuz
error: no such device: /boot/vmlinuz.

☹

edit: Zuvor hatte ich jetzt

set root=(hd5,msdos3) 

gesetzt.

Aber brauchen wir das /boot hier vorweg, bei separater "/boot"-Partition?

Verstehe noch nicht ganz, "in welchem Pfad" sich die grub-Konsole dann befindet. Wechselt man mit dem set root gewissermaßen schon das Verzeichnis?

EDIT2:

linux /vmlinuz root=/dev/sda1

klappt.

EDIT3:

initrd /initrd.img
boot

System startet, fragt wie gewohnt nach dem LUKS-Passwort. Dann lande ich in der BusyBox.

Ein paar Zeilen die relevant sein könnten (gekürzt):

cryptsetup ...set up succesfully
check root file system ... fsck ... done.

Begin: Runnin /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
... # mehrere fehlende Dateien
No init found. Try passing init= bootarg.
Busybox
(initramfs)

Hmm... also initramfs kaputt? Was hat das mit EFI zu tun 🙄

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

Hatte vergessen, nach der letzten Neuanlegung der esp die UUID in der fstab anzupassen, das habe ich jetzt nachgeholt.

initramfs meldet aber trotzdem noch Probleme, weiß noch nicht warum:

root@ubuntu:/# update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-5.4.0-97-generic
cryptsetup: WARNING: target 'luks-2da9c4d7-7431-4e06-9f78-a1b74123ed7b' not 
    found in /etc/crypttab
update-initramfs: Generating /boot/initrd.img-5.4.0-96-generic
cryptsetup: WARNING: target 'luks-2da9c4d7-7431-4e06-9f78-a1b74123ed7b' not 
    found in /etc/crypttab
root@ubuntu:/# 

Hab die crypttab und fstab jetzt mal aufs Minimum reduziert, aber bisher ohne Erfolg.

root@ubuntu:/# cat /etc/crypttab
sda5_crypt UUID=2da9c4d7-7431-4e06-9f78-a1b74123ed7b none luks,discard

# (4.2.22) luks-4a7cdc70-1fb9-42f6-a68c-76d9da15d349 UUID=4a7cdc70-1fb9-42f6-a68c-76d9da15d349 /etc/luks-keys/luks-4a7cdc70-1fb9-42f6-a68c-76d9da15d349 nofail
# (4.2.22) luks-98c00064-07f1-4034-84ff-0ae3b619dca3 UUID=98c00064-07f1-4034-84ff-0ae3b619dca3 none nofail,noauto
# funktioniert nicht: (18.1.22)
# luks-5bd28192-9781-4e3d-a12c-16333e5bb0b7 UUID=5bd28192-9781-4e3d-a12c-16333e5bb0b7 none nofail,noauto
# (4.2.22) luks-5bd28192-9781-4e3d-a12c-16333e5bb0b7 UUID=5bd28192-9781-4e3d-a12c-16333e5bb0b7 /etc/luks-keys/luks-5bd28192-9781-4e3d-a12c-16333e5bb0b7 nofail

root@ubuntu:/# 
root@ubuntu:/# cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=c6a09940-8791-4e76-9256-14918ab02d49 /boot           ext2    defaults        0       2
/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0

# mount Windows Partition
# (4.2.22) UUID=DE106CE5106CC5DD /media/Windows  ntfs   auto,users,defaults,umask=0022,uid=1000   0   0

#mount Windows Desktop 
# (4.2.22) /media/Windows/Dokumente\040und\040Einstellungen/lalala/Desktop /media/WinDesktop ntfs-3g  auto,rbind,nosuid,user,umask=0022 0 0

# (4.2.22) //lalalalala.prv/home /media/lalalala cifs user,credentials=/home/lalala/.smbcredentials,domain=lalala,noperm,iocharset=utf8,sec=ntlm,vers=1.0,uid=lalalala 0 0 

# lalala_Cloud (_netdev als Option hängt erst bei verfügbarem Netzwerk ein)
# (4.2.22) https://lalalala /media/lalalala_backup davfs noauto,user,rw 0 0

# mount VMs-partition
# (4.2.22) /dev/disk/by-uuid/3f4c37ac-eb36-4de0-b621-0281dc1e30c4 /media/VMs auto nosuid,nodev,nofail,x-gvfs-show 0 0
# funktioniert nicht: (18.1.22)
# /dev/mapper/luks-5bd28192-9781-4e3d-a12c-16333e5bb0b7 /media/lalalala/Weiterelalala auto nosuid,nodev,nofail,x-gvfs-show 0 0


# (4.2.22) /dev/disk/by-uuid/e91c9b38-aa63-421c-97f7-c4768fa58758 /media/lalala/Weiterelalala auto nosuid,nodev,nofail,x-gvfs-show 0 0

# EFI hinzugefügt (02.02.22)
UUID=9546-986F	/boot/efi  vfat   umask=0077  0    1

root@ubuntu:/# 

EDIT: Hatte den LUKS-Container mit dem falschen Namen geöffnet (über die GUI mit ubuntu-vg statt sda5_crypt so wie es in der crypttab steht)

Jetzt fehlerfrei:

root@ubuntu:/# update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-5.4.0-97-generic
update-initramfs: Generating /boot/initrd.img-5.4.0-96-generic
root@ubuntu:/# 

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

So, jetzt hab ichs:

grub> set root=(hd5,msdos3) 
grub> linux /vmlinuz root=/dev/mapper/ubuntu--vg-root
grub> initrd /initrd.img
grub> boot
$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS  
UEFI
user@user-OptiPlex-7010:~$ sudo -i
[sudo] Passwort für user: 
root@user-OptiPlex-7010:~# ls -aR /boot/efi/
/boot/efi/:
.  ..
root@user-OptiPlex-7010:~# grub-install
x86_64-efi wird für Ihre Plattform installiert.
Installation beendet. Keine Fehler aufgetreten.
root@user-OptiPlex-7010:~# ls -aR /boot/efi/
/boot/efi/:
.  ..  EFI

/boot/efi/EFI:
.  ..  BOOT  ubuntu

/boot/efi/EFI/BOOT:
.  ..  BOOTX64.EFI

/boot/efi/EFI/ubuntu:
.  ..  grub.cfg  grubx64.efi
root@user-OptiPlex-7010:~# 
# less /boot/efi/EFI/ubuntu/grub.cfg 
search.fs_uuid c6a09940-8791-4e76-9256-14918ab02d49 root hd0,msdos3 
set prefix=($root)'/grub'
configfile $prefix/grub.cfg
# efibootmgr -v
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0000,0003
Boot0000* ubuntu	HD(1,MBR,0x930af656,0x800,0x19000)/File(\EFI\ubuntu\grubx64.efi)
Boot0003* UEFI: SanDisk USB Ultra 1100	PciRoot(0x0)/Pci(0x1a,0x0)/USB(1,0)/USB(4,0)/HD(1,MBR,0x2cf4ba3a,0x506fcc,0x1f40)AMBO

san04

(Themenstarter)

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

Das System lief jetzt im EFI-Modus, aber das UEFI-BIOS kriegt es nicht gestartet. Ich lande bei dem gleichen Screen: No bootable devices found.

Eigentlich kann doch nicht mehr viel fehlen...

Mich wundert:

grub> set root=(hd5,msdos3) 

Bzw. wenn ich den Kartenleser (internes USB) abstecke dann funktioniert:

grub> set root=(hd1,msdos3) 

Aber hier steht:

# less /boot/efi/EFI/ubuntu/grub.cfg 
search.fs_uuid c6a09940-8791-4e76-9256-14918ab02d49 root hd0,msdos3 

black_tencate

Avatar von black_tencate

Anmeldungsdatum:
27. März 2007

Beiträge: 11455

Hej san04,

ändere es halt mal (mehr, als weiterhin nicht zu funktionieren, kann ja eh nicht passieren)

Warum ein grub-install an der Stelle nicht

…search --fs-uuid --set=root <UUID>…

schreibt, ist mir sowieso ein Rätsel.

Gruß black tencate