Strona 1 z 1

[+] Nie startuje po aktualizacji (DEBIAN 12 + LUKS + GRUB)

: 30 stycznia 2024, 11:15
autor: Andy
Mam pełną instalację (nie live) debiana 12 na dysku Sandisk USB flash (pendrive)
Całość zaszyfrowana LUKS. Do czasu ostatniej aktualizacji systemu działało (hehehe)
Obecnie nie bootuje z pendrive, czarny ekran, żadnych komunikatów, brak pytania o hasło
Maszyna do której podpiąłem dysk flash USB ma nazwę vdeb

root@vdeb:~# pwd
/root


root@vdeb:~# lsusb | grep -i sandisk
Bus 002 Device 002: ID 0781:55a3 SanDisk Corp. SanDisk 3.2Gen1
czyli urządzenie jest wykrywane


root@vdeb:~# lsblk /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 1 57,3G 0 disk
├─sdc1 8:33 1 300M 0 part /media/h3x/boot_sdc1
├─sdc2 8:34 1 22,9G 0 part
└─sdc3 8:35 1 34,1G 0 part
i widoczne w systemie na którym dokonuję naprawy (wirtualka) jako /dev/sdc


root@vdeb:~# blkid /dev/sdc*
/dev/sdc: PTUUID="88df9bac-0260-4746-ba58-4f23e119dc5b" PTTYPE="gpt"
/dev/sdc1: UUID="034C-992C" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="204ea28a-ab7a-a74e-82bb-e2c426cba611"
/dev/sdc2: UUID="af9e08f5-5249-4506-9a02-b0ef4d6b2cea" TYPE="crypto_LUKS" PARTLABEL="root" PARTUUID="a758ccd6-25fa-504b-bad6-7fb19dc40eac"
/dev/sdc3: UUID="11902504-6160-4ecb-8685-000ed7df2c22" TYPE="crypto_LUKS" PARTUUID="051d5e21-a2f5-0c45-85a7-2ee2a79e32b6"
po zweryfikowaniu widać że /dev/sdc2 oraz /dev/sdc3 są partycjami zaszyfrowanymi przy urzyciu LUKS

utworzyłem katalogi dla tymczasowych punktów montowania pamięci zewnętrznej
root@vdeb:~# mkdir -p /media/h3x/boot_sdc1
root@vdeb:~# mkdir -p /media/h3x/odszyfrowany_sdc2
root@vdeb:~# mkdir -p /media/h3x/odszyfrowany_sdc3


Zamontowałem partycję sdc1 (vfat) w katalogu /media/h3x/boot_sdc1
root@vdeb:~# mount /dev/sdc1 /media/h3x/boot_sdc1/


oraz wyświetliłem jej zawartość (jak widać poniżej katalog boot jest pusty! Czy tak ma być?)
root@vdeb:~# tree /media/h3x/boot_sdc1/
/media/h3x/boot_sdc1/
└── EFI
├── boot
└── Debian
├── BOOTX64.CSV
├── fbx64.efi
├── grub.cfg
├── grubx64.efi
├── mmx64.efi
└── shimx64.efi


Poniżej zawartość grub.cfg z tej partycji
root@vdeb:~# cat /media/h3x/boot_sdc1/EFI/Debian/grub.cfg
cryptomount -u af9e08f5524945069a02b0ef4d6b2cea
search.fs_uuid f2c073af-552a-4686-ac1d-0768acecd9f5 root cryptouuid/af9e08f5524945069a02b0ef4d6b2cea
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

oraz BOOTX64.CSV
root@vdeb:~# cat /media/h3x/boot_sdc1/EFI/Debian/BOOTX64.CSV
shimx64.efi,debian,,This is the boot entry for debian


odszyfrowałem partycje
root@vdeb:~# cryptsetup luksOpen /dev/sdc2 odszyfrowany_sdc2
Hasło dla /dev/sdc2:
root@vdeb:~# cryptsetup luksOpen /dev/sdc3 odszyfrowany_sdc3
Hasło dla /dev/sdc3:


odświeżmy widok
root@vdeb:~# lsblk /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 1 57,3G 0 disk
├─sdc1 8:33 1 300M 0 part /media/h3x/boot_sdc1
├─sdc2 8:34 1 22,9G 0 part
│ └─odszyfrowany_sdc2 254:3 0 22,9G 0 crypt
└─sdc3 8:35 1 34,1G 0 part
└─odszyfrowany_sdc3 254:4 0 34,1G 0 crypt


Zamontowałem odszyfrowany sdc2 do wcześniej utworzonego folderu
root@vdeb:~# mount /dev/mapper/odszyfrowany_sdc2 /media/h3x/odszyfrowany_sdc2


uffffff działa ;) skopiowałem ważne dla mnie dane, bo backup jest dla mięczaków i oczywiście go nie miałem
zaczynam podejście do naprawy grub
poniżej główne drzewo plików odszyfrowanej partycji
root@vdeb:~# tree -L 1 /media/h3x/odszyfrowany_sdc2
/media/h3x/odszyfrowany_sdc2
├── bin -> usr/bin
├── boot
├── crypto_keyfile.bin
├── dev
├── etc
├── home
├── initrd.img -> boot/initrd.img-6.1.0-17-amd64
├── initrd.img.old -> boot/initrd.img-6.1.0-15-amd64
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
├── var
├── vmlinuz -> boot/vmlinuz-6.1.0-17-amd64
└── vmlinuz.old -> boot/vmlinuz-6.1.0-15-amd64


Podsumowanie przed dalszymi pracami
grub na sdc1
system na sdc2
niepodmontowany swap na sdc3

root@vdeb:~# blkid /dev/sdc* /dev/mapper/odszyfrowany*
/dev/sdc: PTUUID="88df9bac-0260-4746-ba58-4f23e119dc5b" PTTYPE="gpt"
/dev/sdc1: UUID="034C-992C" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="204ea28a-ab7a-a74e-82bb-e2c426cba611"
/dev/sdc2: UUID="af9e08f5-5249-4506-9a02-b0ef4d6b2cea" TYPE="crypto_LUKS" PARTLABEL="root" PARTUUID="a758ccd6-25fa-504b-bad6-7fb19dc40eac"
/dev/sdc3: UUID="11902504-6160-4ecb-8685-000ed7df2c22" TYPE="crypto_LUKS" PARTUUID="051d5e21-a2f5-0c45-85a7-2ee2a79e32b6"
/dev/mapper/odszyfrowany_sdc2: UUID="f2c073af-552a-4686-ac1d-0768acecd9f5" BLOCK_SIZE="4096" TYPE="ext4"
/dev/mapper/odszyfrowany_sdc3: LABEL="swap" UUID="fd6e021f-7be2-4f0b-8a91-c1257e6ce3ac" TYPE="swap"

root@vdeb:~# lsblk /dev/sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 1 57,3G 0 disk
├─sdc1 8:33 1 300M 0 part /media/h3x/boot_sdc1
├─sdc2 8:34 1 22,9G 0 part
│ └─odszyfrowany_sdc2 254:3 0 22,9G 0 crypt /media/h3x/odszyfrowany_sdc2
└─sdc3 8:35 1 34,1G 0 part
└─odszyfrowany_sdc3 254:4 0 34,1G 0 crypt


pora na naprawę grub
chroot na system zainstalowany na pendrive
root@vdeb:~# mount -o bind /proc /media/h3x/odszyfrowany_sdc2/proc/
root@vdeb:~# mount -o bind /dev /media/h3x/odszyfrowany_sdc2/dev/
root@vdeb:~# mount -o bind /sys /media/h3x/odszyfrowany_sdc2/sys
root@vdeb:~# chroot /media/h3x/odszyfrowany_sdc2 /bin/bash
root@vdeb:/# pwd
/
if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then echo "jest chroot!"; fi;
jest chroot!

No i teraz pytanie zasadnicze, jak to zrobić, żeby nie strzelić sobie w stopę?
Korci mnie aby wykonać update-grub, ale skąd biedny system ma wiedzieć że chodzi o /dev/sdc1 a nie dowolną inną partycję. Mogę niby wziąść live iso, ale chodzi by się czegoś dodatkowo dowiedzieć.

Nie chciał bym uszkodzić systemu na którym naprawiam (vdeb). Niby wirtualka (jest snapshot), ale wiecie ujma na honorze ;)
Poza tym zasadniczo nie wykonuję poleceń jeżeli nie jestem pewnien co robią i jak zadziałają
Potrzebuję małego objaśnienia jak w końcu działa ten grub i jak naprawić to w moim przypadku.
Dzięki
Andy

Re: Nie startuje po aktualizacji (DEBIAN 12 + LUKS + GRUB)

: 30 stycznia 2024, 12:43
autor: LordRuthwen
Zacząłbym od zamontowania efi, potem instalacji gruba w efi a na koniec nowego pliku konfiguracyjnego gruba:

Kod: Zaznacz cały

grub2-mkconfig -o /boot/grub/grub.cfg

Re: Nie startuje po aktualizacji (DEBIAN 12 + LUKS + GRUB)

: 30 stycznia 2024, 13:04
autor: Andy
EFI mam zamontowane. Wcześniej pisałem, że

Kod: Zaznacz cały

Zamontowałem partycję sdc1 (vfat) w katalogu /media/h3x/boot_sdc1
root@vdeb:~# mount /dev/sdc1 /media/h3x/boot_sdc1/


oraz wyświetliłem jej zawartość (jak widać poniżej katalog boot jest pusty! Czy tak ma być?)
root@vdeb:~# tree /media/h3x/boot_sdc1/
/media/h3x/boot_sdc1/
└── EFI
├── boot
└── Debian
├── BOOTX64.CSV
├── fbx64.efi
├── grub.cfg
├── grubx64.efi
├── mmx64.efi
└── shimx64.efi
tak więc mam ją w /media/h3x/boot_sdc1/EFI

Problem w tym, że nie zagłębiałem się w EFI, gruba i typy rozruchów OS

Kod: Zaznacz cały

grub2-mkconfig -o /boot/grub/grub.cfg
a moje wątpliwości tyczą się tego, że na chrootowanym systemie jest partycja /boot oraz w /media/h3x/boot_sdc1/EFI/boot
Skąd system ma wiedzieć, że chodzi mi o /media/h3x/boot_sdc1/EFI
/media/h3x/boot_sdc1/EFI/Debian/grub.cfg wygląda legitnie


lub jeszcze inaczej jest /boot na zaszyfrowanym dysku
oraz pusty /EFI/boot na partycji rozruchowej
a w /EFI/Debian/ jest grub.cfg

Jeszcze tego nie kminię, a jest to kluczowe żebym poszedł naprzód ;)
Dzięki za zainteresowanie

Re: Nie startuje po aktualizacji (DEBIAN 12 + LUKS + GRUB)

: 10 lutego 2024, 17:23
autor: Andy
System bootuje jeżeli wybiorę w Boot Menu laptopa opcję boot from file i wskażę plik EFI/Debian/shimx64.efi
Natomiast nie startuje automatycznie, co upewniło mnie, że z EFI jest coś nie tak

Reinstalacja GrubEFI rozwiązała problem.

tutaj świetny artykuł https://wiki.debian.org/GrubEFIReinstall

w moim przypadku uruchomiłem system ręcznie z pliku EFI/Debian/shimx64.efi
zostałem poproszony o hasło po czym uruchomił się grub.
po zalogowaniu i podniesieniu uprawnień do roota
#apt install --reinstall grub-efi
#apt autoremove
#grub-install
#update-grub

co rozwiązało problem z bootowaniem

na koniec zweryfikowałem czy bootloader istnieje oraz czy istnieje odpowiedni wpis NVRAM

Kod: Zaznacz cały

root@vdeb:/home/h3x# file /boot/efi/EFI/Debian/grubx64.efi 
/boot/efi/EFI/Debian/grubx64.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows, 5 sections
root@vdeb:/home/h3x# efibootmgr --verbose | grep debian
Boot0005* debian        HD(1,GPT,204ea28a-ab7a-a74e-82bb-e2c426cba611,0x1000,0x96000)/File(\EFI\debian\shimx64.efi)....ISPH
Dzięki za wskazówki