LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?

- -

Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #15 kdy: 07. 03. 2021, 11:37:31 »
novy disk si tedy rozdelil jak?
- rozlozeni GPT
- 1 oddil EFI (a pridan v gparted priznak Boot a ESP)
- 2 oddil pro LUKS, ten si odemknul, zformatoval a rsyncem prehodil vse z odemknuteho puvodniho disku?
Děkuju  :D , ano, GPT a EFI s boot a esp flag. LUKS byl vytvořený grafickým instalátorem systému Manjaro, protože jsem to nechtěl komplikovat manuálním vytvářením (nikdy jsem to nedělal). Na disk byl tedy nainstalován výchozí Linux systém s EFI, LUKS a obsah dešifrovaného LUKS oddílu jsem pod live USB systémem přepsal tím rsyncem ze starého disku (rsync -qaHAXS /staryroot /novyroot/).
Ano, nový disk teď zkouším bootovat v UEFI počítači.

nesprávné UUID cryptodisku (začínající písmenem b) hledá zavaděč při bootování.. jediné co se zobrazí je:


i přes to, že jsem v chroot na tom disku nastavil UUIDs která jsou v grub souborech uvedených níže
sudo cryptsetup luksUUID /dev/XY --uuid id1
sudo tune2fs -U id2 /dev/mapper/luks-XY
(zde obrázek kde cryptsetup a gparted dokládá změnu)

a grub soubory mají ID, které zobrazuje gparted/cryptsetup:

etc/default/grub:
https://bin.disroot.org/?36a335aed5f4dc28#F9ZECTmruWeFACbL6HuxMz14W7Rcs5kePgQBAjRVwrYR

boot/grub/grub.cfg boot menu linky obsahující UUID (kryptodisku a nebo v něm obsaženého ext4 oddílu):
https://bin.disroot.org/?4045942c6085ad1f#385HRHYLQdYMwjMr8ryoYLnn7R674X9RG3SP1nHHekBo

boot/grub/grub.cfg kompletní:
https://bin.disroot.org/?aebb087e1f20da57#63nGcegJKyk5wJ5Lo3PYwf2hyfmRCV5iXcGcQj5H5WhD

"sudo cryptsetup luksUUID /dev/sda1" ti zobrazi UUID to ktere si menil? to co to hleda?
ukazuje to, ktere jsem měnil (9...) ne to které je vidět při bootu

update-grub pokus, obrázek

v pripade ze si regeneroval initramdisk, mel si v tu chvili luks kontejner odemcenej pod STEJNYM nazvem jako mas uvedene v /etc/crypttab? (prvni sloupec) a mel si tam spravne UUID=... ? (druhej sloupec)
Tohle nevím, nevěděl jsem že jde odemknout pod jiným názvem a tím narušit update-grub apod., je to ale pravděpodobné, že jsem dal název např. abc (cryptsetup luksOpen dev abc), ale v /etc/crypttab je název luks-uuid ...

=> přijde mi že v  chroot jsem správně změnil ID na ta, která jsou v uvedených grub souborech, ale nevím proč tedy zavaděč hledá jiné luks ID... možná by pomohlo dočasně v GRUB cmd spustit pod novým ID a po startu OS aktualizovat grub.

@k3dAR doufám že můj popis nebyl moc zmatečný, děkuji moc za případné rady


k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #16 kdy: 07. 03. 2021, 12:10:10 »
pozor na ten rsync, pouzite parametry byli zamyslene pro prenos puvodniho systemu na novej CISTEJ oddil, protoze si tam ale mel novou/cistou instalaci, tak je vhodne pridat parameter --delete aby to v cili smazalo to co neni ve zdroji ;-)

ad /etc/default/grub:

asi to nevadi, ale pro pripadne parsovani lepsi tohle odstranit:
Kód: [Vybrat]
# Uncomment to enable booting from LUKS encrypted devices
#GRUB_ENABLE_CRYPTODISK=y
(nebo odkomentovat a odstranit GRUB_ENABLE_CRYPTODISK=y na konci, proste aby jsi stejnou promenou nemel 2x)

Kód: [Vybrat]
GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=UUID=9....:luks-9.... s timhle nevim jiste, ja tohle vubec nedefinuju, urcuje mi to Grub, resp. pouzivam misto Grub sicherboot, kazdopadne v /proc/cmdline mam kolem disku jen "root=/dev/lvm/root resume=/dev/lvm/swap", nicmene predpokladam ze to tam dal Instalator...

ad "update-grub pokus, obrázek"
error s sda je irelevantni, resp. jde o to ze "doplnek" os-prober hleda systemy na jinejch diskach aby je pridal do Grub menu, zakazat to lze pridanim do /etc/default/grub:
Kód: [Vybrat]
GRUB_DISABLE_OS_PROBER=true
a k te zahade, myslim ze to prislo s nejakou novejsi verzi Grubu (nemyslim ze to zaclo delat mnou pouzivane *buntu samo za sebe), zkus se podivat do /boot/efi/EFI/manjaro?/grub.cfg ;-)

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #17 kdy: 07. 03. 2021, 12:12:11 »
pozor na ten rsync, pouzite parametry byli zamyslene pro prenos puvodniho systemu na novej CISTEJ oddil, protoze si tam ale mel novou/cistou instalaci, tak je vhodne pridat parameter --delete aby to v cili smazalo to co neni ve zdroji ;-)
NEzapomen si pred tim zazalohovat soubory ktere si kvuli (napr.) UUID pripadne v cili jiz menil ;-)

- -

Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #18 kdy: 07. 03. 2021, 14:49:04 »
zkus se podivat do /boot/efi/EFI/manjaro?/grub.cfg ;-)
v /mnt/boot/efi nic není, na EFI oddílu /mnt2/EFI/Manjaro je pak binární .efi soubor.
Zkusil jsem tedy znovu rsync ze starého oddílu na nový, tentokrát s --delete ale nepomohlo to, zde jak jsem to udělal:

  • nový PC:
    gparted, decrypt LUKS partition
    ls /dev/mapper|grep crypt
    sudo mount /dev/mapper/XY_crypt /mnt

    starý PC:
    sudo rsync -qaHAXS --delete / root@novypc:/mnt/
    Přihlášení nešlo, po editaci /etc/ssh/sshd_config a odkomentování, upravení PermitRootLogin yes; systemctl restart sshd
    to šlo, ale skončilo s chybami jako:
    "rsync: [generator] delete_file: unlink(proc/1257/task/1257/net/route) failed: Operation not permitted (1)"
    takže jsem udělal to @k3dAR doporučované "sudo mkdir /mnttmp;sudo mount --bind / /mnttmp/" na zdrojovém PC.
    a pak znovu rsync jen z /mnttmp/ "sudo rsync -qaHAXS --delete /mnttmp/ root@novypc:/mnt/"
    Evidentně to přenášelo data a po několika minutách skončilo
    po restartu stále hledá nesprávné UUID kryptodisku a a ani nepomohlo update-grub:
    sudo mount --bind /dev /mnt/dev;sudo mount --bind /sys /mnt/sys;sudo mount --bind /proc /mnt/proc;
    sudo chroot /mnt;sudo update-grub

Takže pořád nechápu odkud to bere to UUID, které v grub nevidím. Jestli vás napadají další příkazy co zkusit?, mě tedy napadá

A) znovu potupně reinstalovat systém, nabootovat (snad by měl fungovat) a pak sudo mount --bind / /mnt a zo samé na starém PC a rsyncnout ze starého na nový (rsync -qaHAXS --delete) s tím že z rsyncu vypustím ty adresáře jako je /boot/, ale tady zase nevím které mám dát do exclude. A nebo jestli by stačio rsync pouze neexistující soubory /.
B) Druhá varianta je skutečně čistá instalace a znovu nainstalovat apliakce:
STARY: pacman -Qqen > pkglist.txt;pacman -Qqem > pkglist_aur.txt
NOVY: pacman -S --needed - < pkglist.txt; for p in $(cat pkglist_aur.txt);do pamac build $p --no-confirm;done
a obnovit /home

jak to vidíte? děkuji

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #19 kdy: 07. 03. 2021, 15:35:32 »
pred update-grub v chrootu, mej pripojenej EFI oddil do "chroot"/boot/efi/


- -

Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #20 kdy: 07. 03. 2021, 17:40:01 »
pred update-grub v chrootu, mej pripojenej EFI oddil do "chroot"/boot/efi/

Nevím jestli jsem pochopil správně, zkusil jsem tohle:
Citace
sudo cryptsetup luksOpen /dev/nvme0n1p2 c;sudo mount /dev/mapper/c /mnt
mkdir /mnt/boot/efi 2>/dev/null;sudo mount /dev/nvme0n1p1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done;sudo chroot /mnt
update-grub;exit;cd;sudo umount /mnt*;sudo cryptsetup luksClose c
(nvme0n1p1 je první fat32 oddíl pro EFI, a také 2 .efi soubory obsahuje)

Jinak na netu se psalo něco o "update-initramfs -u -k 4.10.0-38-generic" před update-grub, ale "bash: update-initramfs: command not found"
v /boot mám a používám kernel initramfs-5.10-x86_64.img

Pak jsem si uvědomil že starý disk ze kterého jsem kopíroval na tento nový nebyl instalovaný pod UEFI ale legacy a MBRMBR, možná že GRUB soubory neobsahují UEFI instrukce a je potřeba grub-install, v chroot:

# sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck
Citace
Installing for x86_64-efi platform.
EFI variables are not supported on this system.
EFI variables are not supported on this system.
grub-install: error: efibootmgr failed to register the boot entry: No such file or directory.

exit
Když jsem to zkoušel mimo chroot (sudo mkdir /boot/efi;sudo mount /dev/nvme0n1p1 /boot/efi)
nvme0n1p1 = 1. boot partition pro efi. Tak si to stěžovalo "failed to get canonical path of `overlay'"

/etc/fstab NEobsahuje boot/EFI:
Citace
# <file system>             <mount point>  <type>  <options>  <dump>  <pass>
/dev/mapper/luks-9...-...-...-...-..... /              ext4    defaults,noatime 0 1
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

Už jsem tam zkusil dát linku:
Citace
UUID=uuid_z_lsblk_f /boot/efi Fat32 defaults,noatime 0 2
ale stále to hledá jiné UUID kryptodisku

Napadá vás co zkusit dál? děkuji
« Poslední změna: 07. 03. 2021, 17:42:08 od - - »

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #21 kdy: 07. 03. 2021, 18:55:38 »
pochopil si spravne, jen 3 postrehy:
- mkdir -p /cesta # nerve kdyz dir uz existuje, zaroven umi udelat rovnou vnorenej /cesta/dalsi/neco
- mount -B (aka --bind) si nejsem jistej zda je vhodne pro proc a sys, to vzdy montuju ciste:
sudo mount -t proc proc /cesta/proc
sudo mount -t sysfs sysfs /cesta/sys
- umount /mnt/* ti NEodpoji /mnt/dev/pts ani /mnt/boot/efi

ad update-initramfs
- to je pouzivane v debian/*ubuntu/mint/atd, ale v Arch/Manjaro je to: "mkinitcpio -P # pro regen initramdisku vsem dostupnej jadrum"
https://wiki.archlinux.org/index.php/mkinitcpio#Image_creation_and_activation

jinak urcite to chce initramdisky pregenerovat a spravne ti doslo ze pridat zaznam pro EFI oddil do /etc/fstab (pro boot je to jedno, ale pak pro pripadne aktualizace Grubu by to nejspis cpalo do adresare /boot/efi/EFI nikoliv do mountpointu z EFI oddilu... nicmene aktualni problem to neresi, tobe se to zastavi v pruhebu Grubu, tzn. jeste pred tim nez se ma nacist grub menu, drive nez se z menu pusti polozka co natahne jadro a initramdisk...

ad instalace Grub, po rsync urcite musis nainstalovat Grub
- target pro uefi ocividne mas, ale nemas:
-- nainstalovanej balicek efibootmgr
-- nejspis NEmas nastartovane to LiveUSB v rezimu UEFI (viz: EFI variables are not supported on this system.)
--- pokud mas v UEFI nastartovano muzes zkusit zavest modul pro pristup k efi variables: modprobe efivarfs (mozna si ho natahne efibootmgr kdyz bude nainstalovanej)
https://wiki.archlinux.org/index.php/GRUB_(Česky)#Instalace_nebo_obnova_GRUBu_na_EFI_oddíl_(moderní_UEFI_zařízení)

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #22 kdy: 07. 03. 2021, 18:57:47 »
ad "ale stále to hledá jiné UUID kryptodisku"
ses si jistej ze startujes disk v UEFI rezimu? a ze disk je GPT? aby jsi na "novem" disku nemel MBR s GrubLegacy co ma zadratovene to stare UUID :)

- -

Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #23 kdy: 08. 03. 2021, 01:44:20 »
Díky, tak jsem zkusil následovat Tvoje zmíněné rady a povedlo se dostat k bootování, ALE jen do příkazové řádky:

Ten efibootmgr už nainstalovaný byl
$ efibootmgr -v
Citace
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0003,0005
Boot0001* HDDabc    PciRoot(0x0)/Pci(0x2,0x1)/Pci(0x0,0x1)/Sata(3,65535,0)N.....YM....R,Y.....ISPH
Boot0003* Generic USB3.0 Card Reader 000000001536   PciRoot(0x0)/Pci(0x8,0x1)/Pci(0x0,0x3)/USB(5,0)N.....YM....R,Y.....ISPH
Boot0004* SK hynix(systHDD) ...   PciRoot(0x0)/Pci(0x2,0x2)/Pci(0x0,0x0)/NVMe(0x1,AC-E4-2E-00-0A-8B-BA-ED)N.....YM....R,Y.....ISPH
Boot0005* SK hynix(systHDD) ...   PciRoot(0x0)/Pci(0x2,0x2)/Pci(0x0,0x0)/NVMe(0x1,AC-E4-2E-00-0A-8B-BA-ED)N.....YM....R,Y.....ISPH

sudo modprobe efivarfs
lsmod|grep -i efi
(nic)

$ ls /sys/firmware/efi
Citace
config_table  efivars  esrt  fw_platform_size  fw_vendor  runtime  runtime-map  systab

efibootmgr ale na rozdíl od normálního shellu nefungoval v chrootu a negunguje v něm ani modprobe efivarfs:

Citace
[manjaro /] # sudo modprobe efivarfs
modprobe: FATAL: Module efivarfs not found in directory /lib/modules/5.9.16-1-MANJARO
[manjaro /]# find /lib/modules -iname *"efivar"*
/lib/modules/5.4.100-1-MANJARO/build/include/config/efivar
/lib/modules/5.4.100-1-MANJARO/build/fs/efivarfs
/lib/modules/5.10.18-1-MANJARO/build/include/config/efivar
/lib/modules/5.10.18-1-MANJARO/build/fs/efivarfs

mimo chroot je to bez chyb. Takže tady si nejsem jistý jestli není problém, protože později to při bootu hlásilo EFI problémy.

Pak jsem našel příkaz (spuštění v normální shell), po kterém začal v chroot fungovat efibootmgr:
sudo mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars

nepamatuju si jestli modprobe efivars začal fungovat v chrootu, pochybuju.

a přestal si i stěžovat grub-install:
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=manjaro --recheck
Citace
Installing for x86_64-efi platform.
Installation finished. No error reported.

Pak jsem zkusil
[manjaro /]# ls /etc/mkinitcpio.d
linux510.preset  linux54.preset  linux58.preset.pacsave
[manjaro /]# mkinitcpio -p linux510
výstup bez chyb

pak:
# sudo update-grub
Citace
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-5.10-x86_64
Found initrd image: /boot/intel-ucode.img /boot/amd-ucode.img /boot/initramfs-5.10-x86_64.img
Found initrd fallback image: /boot/initramfs-5.10-x86_64-fallback.img
Found linux image: /boot/vmlinuz-5.4-x86_64
Found initrd image: /boot/intel-ucode.img /boot/amd-ucode.img /boot/initramfs-5.4-x86_64.img
Found initrd fallback image: /boot/initramfs-5.4-x86_64-fallback.img
Adding boot menu entry for UEFI Firmware Settings ...
Found memtest86+ image: /boot/memtest86+/memtest.bin
done

Nepamatuju si že by předešlé updaty obsahovaly řádku "Adding boot menu entry for UEFI Firmware Settings ..."

někdo pak ještě spouštěl "grub-mkconfig -o /boot/grub/grub.cfg" ale nevím jestli je to vhodné, tak jsem nespustil..

exit

"efibootmgr -v" začal zobrazovat novou linku:
Boot0000* manjaro   HD(1,GPT,d..-..-..-..-...,0x1000,0x96000)/File(\EFI\manjaro\grubx64.efi)

Po restartu vidím v UEFI boot entry Manjaro, potvrdím, zadám LUKS heslo, pak si to stěžuje že nemá klíč a chce to heslo znovu a nakonec to skončí na příkazové řádce údržbového módu ze kterého se nemůžu dostat do normálního:

Zde jsem to vyfotil:
https://postimg.cc/gallery/QxqzDDF

Máte nějaké nápady co zkusit, nebo jsem to už příliš rozhasil? @k3dAR děkuji
« Poslední změna: 08. 03. 2021, 01:47:00 od - - »

- -

Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #24 kdy: 08. 03. 2021, 02:48:36 »
Tak ten emergency mód/příkazová řádka byla tou /etc/fstab linkou
UUID=uuid_z_lsblk_f /boot/efi Fat32 defaults,noatime 0 2
po přidání # na začátek už boot funguje do grafického rozhraní, jen se 2x ptá na LUKS heslo...
a přestal mi fungovat internet na obou počítačích, asi něco s hostname nebo konfigurací sítě, že je identická...

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #25 kdy: 08. 03. 2021, 13:23:40 »
Tak ten emergency mód/příkazová řádka byla tou /etc/fstab linkou
UUID=uuid_z_lsblk_f /boot/efi Fat32 defaults,noatime 0 2
po přidání # na začátek už boot funguje do grafického rozhraní, jen se 2x ptá na LUKS heslo...
a přestal mi fungovat internet na obou počítačích, asi něco s hostname nebo konfigurací sítě, že je identická...
misto Fat32 musis pouzit vfat, nicmene kdyz sem chtel kouknout jake ArchLinux doporucuje parametry k EFI v fstab, zarazilo me ze jiz nepouziva /boot/efi, ale /efi (je treba vytvorit dir, vhodne asi pri pouziti Grub) nebo /boot (pri pouziti napr. systemd-boot, kam spada i mnou pouzivanej sicherboot):
https://wiki.archlinux.org/index.php/EFI_system_partition#Mount_the_partition

ad 2x dotaz na LUKS heslo, to si pretim nemel? to je normalni stav, resi se to tim ze vytvoris keyfile(prava 000), priradis ho jako dalsi klic pro luks oddil, a do crypptab das cestu ke klici (treti sloupec) a mozna do ctvrteho luks => luks,keyscript=/bin/cat (nevim jak to ma Arch ani jestli to jeste vyzaduje "me" *buntu)), ani nevim zda Arch ma pak pomocne skripty co to pri sestaveni initramdisku poresej (to *buntu uz od tusim 18.04 ma)

EDIT: info na ArchWiki: https://wiki.archlinux.org/index.php/dm-crypt/Device_encryption#With_a_keyfile_embedded_in_the_initramfs

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:LUKS šifrovaný disk + MBR. Jak vytvořit EFI boot?
« Odpověď #26 kdy: 08. 03. 2021, 13:25:10 »
ad sit: zda je to duplicitou, poznas kdyz puvodni stroj vypnes ;-)