Původní disk nebootuje

Původní disk nebootuje
« kdy: 18. 06. 2022, 22:02:27 »
Mám na i3 nainstalován Debian 11 na 250GB Apacer SSD. Je tam jen Home Assistant, nic jiného. Potřeboval jsem něco vyzkoušet, ale nechtěl jsem si tuto "ostrou" instalaci nějak zmršit, tak jsem vytáh ze šuplíku starší Intel 330 60GB SSD a nainstaloval znova Deb 11 a Home Assistanta.
Pak jsem strčil zpátky Apacer s "ostrou" verzí a hele, prej vyměnte disk za bootable.
Půl dne bádám, pač bootování, UEFI, Grub a tyto věci jsou jaksi k běžnému životu nepotřebné a jediné, co jsem zjistil je, že na původním Apaceru jaksi chybí celej EFI adresář. Samozřejmě BFU napadne hned zkopírovat všechno z Intelu, ale to by asi nebylo moc dobře.

Intel 60GB:
Kód: [Vybrat]
root@HomeAssistant:~# ls /boot/efi/EFI/debian
BOOTX64.CSV  fbx64.efi  grub.cfg  grubx64.efi  mmx64.efi  shimx64.efi

Původní Apacer 250GB
Kód: [Vybrat]
root@HomeAssistant:/media/plazivec/66dc6798-4d29-4c1b-8907-3d55ce0ac2a8# ls /media/plazivec/66dc6798-4d29-4c1b-8907-3d55ce0ac2a8/boot/efi/EFI
ls: nelze přistoupit k '/media/plazivec/66dc6798-4d29-4c1b-8907-3d55ce0ac2a8/boot/efi/EFI': Adresář nebo soubor neexistuje

Lze s tím něco dělat?


Re:Původní disk nebootuje
« Odpověď #1 kdy: 18. 06. 2022, 22:31:42 »
Oprava. Takže co jsem apsal je blbost, nic nechybí, pouze je to v oblasti /dev/sda1 , kterážto nebyla namountována.

Kód: [Vybrat]
root@HomeAssistant:~# mount /dev/sda1 /home/plazivec/mount
root@HomeAssistant:~# ls /home/plazivec/mount/EFI/debian
BOOTX64.CSV  fbx64.efi  grub.cfg  grubx64.efi  mmx64.efi  shimx64.efi

Ale to jsem z toho teď ještě větší blbec, než předtim.

RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Původní disk nebootuje
« Odpověď #2 kdy: 18. 06. 2022, 23:12:09 »
A nebude to tim, ze v BIOSu mas prepsany boot path skrze uefi? Si tam proste navol co chces bootovat (typicky si vybiras z te EFI partisny nejaky .efi soubor)

Re:Původní disk nebootuje
« Odpověď #3 kdy: 18. 06. 2022, 23:19:07 »
Já myslím, že v biosu bude něco přepsaný, pač jsem tam zahlédl slůvko override. Ale nevím, co mám udělat, jediné, co můžu je spustit debian z toho Intelu a pak co?
Udělal jsem:
Kód: [Vybrat]
root@HomeAssistant:~# efibootmgr -v
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0002
Boot0000* debian        HD(1,GPT,d52c577f-2dfe-4857-ad29-77153a6f0b9d,0x800,0x100000)/File(\EFI\debian\shimx64.efi)
Boot0002* Hard Drive    BBS(HD,,0x0)AMGOAMNO........o.I.N.T.E.L. .S.S.D.S.C.2.C.T.0.6.0.A.3...................A..........................>..Gd-.;.A..MQ..L.V.C.P.M.4.2.4.9.7.0.8.6.6.0.A.0.N.G. . .....AMBOAMNO........s.P.1.:. .A.p.a.c.e.r. .A.S.3.5.0. .2.5.6.G.B...................A..........................B..Gd-.;.A..MQ..L.P.1.:. .A.p.a.c.e.r. .A.S.3.5.0. .2.5.6.G.B.....AMBO
root@HomeAssistant:~#

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Původní disk nebootuje
« Odpověď #4 kdy: 18. 06. 2022, 23:26:28 »
Já s tímhle nemám moc zkušeností (UEFI nastupovalo v okamžiku kdy jsem zrovna končil s rozsáhlejším adminováním), ale podle mě jde o konflikt tzv. removable a non-removable UEFI instalace.

Jde o to, že EFI binárka může mít buď generickou cestu (efi_system_oddíl)/EFI/boot/bootx64.efi, která funguje automaticky všude (a tím se médium pozná že je bootovací a nabootuje se z něj), nebo pak má každý operační systém (efi_system_oddíl)/EFI/debian/grubx64.efi apod., takže můžeš mít víc OS na jednom disku a navzájem se nepřepisují. Ale UEFI neskenuje všechny tyto binárky (nechápu proč, přišlo by mi to rozumné), ale má nvram, do které se musí tato cesta zapsat, a to právě dělá grub-install resp. efibootmgr. A asi se tam zapsala cesta závisející na tom druhém disku.

Podle debian wiki https://wiki.debian.org/UEFI máš zkusit "copy \EFI\debian\grubx64.efi to \EFI\boot\bootx64.efi" a pak to nabootuje; a pro příště máš udělat "dpkg-reconfigure grub-efi-amd64" a odpovědět Yes na otázku jestli se má instalovat jako removable.

Pokud by to ani pak nefungovalo, tak bych do souboru EFI/boot/bootx64.efi zkopíroval soubor /usr/lib/grub/x86_64-efi/monolithic/grubx64.efi a pak koukal jestli to alespoň zavede GRUB (ve kterém pak pomocí commandline musíš ručně najít konfigurák s menu a spustit ho - něco jako configfile (můj_disk,gpt2)/boot/grub/grub.cfg, možná předtím ještě set root=(můj_disk,gpt2), funguje tam velmi dobrá tab completion tak se s tím nějak popereš)
« Poslední změna: 18. 06. 2022, 23:28:17 od _Jenda »


_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Původní disk nebootuje
« Odpověď #5 kdy: 18. 06. 2022, 23:41:09 »
V sekci, kde se nastavuje BOOT priority onehdá vznikl jakoby disk s názvem "debian" a s touto volbou naběhne jenom ta zkušební verze na Intelu, ale ta původní na Apaceru ne. Jde to nějak opravit? Mám tam už spoustu práce udělanou a dělá se mi špatně, když to budu muset dělat nanovo.
A tohle vypadá že se oboje jmenuje "debian" a firmware ti nedovolí vybrat který z nich to je. No v nejhorším se přece to druhé dá nabootovat tak, že v tom grubu skočíš do konzole, a řekneš "linux (ten_druhý_disk,gpt2)/vmlinuz root=kde_to_má_rootfs" a "initrd (ten_druhý_disk,gpt2)/initrd.img" a boot. Možná by šlo i říct "configfile (ten_druhý_disk,gpt2)/boot/grub/grub.cfg" a tím mít rovnou celé to menu a všechny parametry té první instalace, ale to nevím jestli se nějak nerozbije pokud to bude mít třeba nekompatibilní moduly (mírně odlišná verze). A v nabootovaném systému pak znova udělat grub-install. A nebo se z toho prvního systému chrootnout do toho druhého a zase udělat grub-install. Chrootuje se takhle:
Kód: [Vybrat]
mount /druhý/systém /někam
cd /někam
mount -t proc none proc;
mount -o bind /dev dev;
mount -t sysfs none sys;
mount -o bind /run/ run/;
chroot . /bin/bash;
asi bych o tom měl napsat blog protože tohle furt někomu vysvětluju.

Re:Původní disk nebootuje
« Odpověď #6 kdy: 19. 06. 2022, 00:37:35 »
Jo, ten blog by byl užitečný, tohle není poprvý, co s tím bojuju, ale v minulosti jsem to řešil radikálně, zhodnotil jsem, že víc práce dá najít informace, nastudovat a nakonec ještě experimentovat s nejistým výsledkem versus hromada práce kterou jsem už jednou dělal. Ale tentokrát jsem se zatnul.

Podívám se asi na ten chroust, to vypadá jednodušejc, potažmo když neumím najít rootfs. Ještě zjistím, co je to /druhý/systém/někam, protože mám /dev/sdb1 mountnutý do /home/mount a /dev/sdb2 do home/mount1 protože ten adresář root je tak blbě rozdělen mezi dvě oblasti, půlka je tam a druhá jinde.
Ale až zítra, už  na to nevidim. Ani umělý čočky v očích nejsou neůnavné.

RDa

  • *****
  • 2 465
    • Zobrazit profil
    • E-mail
Re:Původní disk nebootuje
« Odpověď #7 kdy: 19. 06. 2022, 00:54:25 »
Tak ja tu zmenu delam v BIOSu, proste dam Create new boot entry a nabrowsuji si dany soubor.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Původní disk nebootuje
« Odpověď #8 kdy: 19. 06. 2022, 01:33:21 »
protože mám /dev/sdb1 mountnutý do /home/mount a /dev/sdb2 do home/mount1 protože ten adresář root je tak blbě rozdělen mezi dvě oblasti, půlka je tam a druhá jinde
A co je v které? Tohle se normálně dělá tak, že to co bude / namountuješ jako první a pak ten zbytek do toho kam to patří - v tvém případě nejspíš do boot/efi.

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Původní disk nebootuje
« Odpověď #9 kdy: 19. 06. 2022, 06:27:34 »
Jenda uz to nakousl, sprava EFI boot polozek se dela (pokud to neumi primo bios desky) nastrojem efibootmgr

pri nastartovani z Intelu, predpokladam je Apacer /dev/sdb a EFI oddil je prvni sdb1, pokud ne, uprav ;-)

Kód: [Vybrat]
# pridani polozky, automaticky se zaroven jeji BootXXXX (jen ty 4 znaky za Boot), prida jako prvni do BootOrder
sudo efibootmgr --create --disk /dev/sdb --part 1 --label Apacer --loader /EFI/debian/shimx64.efi

# zobrazeni podrobnejsiho vystupu kde vidis UUID oddilu a cesty u polozek
efibootmgr -v

EDIT: pri pridavani te polozky, NEni potreba zadnej oddil z toho Apaceru primontovavat

Re:Původní disk nebootuje
« Odpověď #10 kdy: 19. 06. 2022, 08:28:30 »
Hezkou nedeli všem.

Takže pokračuju v nabírání vědomostí a začíná se vyjasňovat.
Takže já si to shrnu:

/dev/sda1 bude efi fat32 oddíl intelu
/dev/sda2 je ext4 pro data Intelu

/dev/sdb1 -  efi fat32 oddíl Aaceru - tady jsou ty "chybějící" adresáře a soubory, jak jsem se domníval výše
/dev/sdb2 -  ext4 Apaceru.

V biosu bude v boot položce "debian" přepsána PATH. Dobře. Tady mi ale není jasno proč, protože oba systémy jsou naprosto totožné, akorát jeden je instalován dříve, cca půl roku. Jediný důvod co mě napadá je - nějaká identifikace disků.
Jako nejlepší cesta jak to napravit se mě jeví přidat pomocí efibootmgr novou položku do UEFIbiosu třeba s názvem debian1, kde by byla zapsána PATH na Apacer. Pak bych mohl používat oba disky v případě potřeby, záložního systému Home Assistanta. Pořadí bootování samozřejmě můžu v UEFIbiosu určit.
Malá poznámka, ta deska s UEFIbiosem je hodně stará, tak 10-12 let.
Novou položku přidám pomocí příkazu bootmgr, ještě nevím jak, ale naznačil to tady k3dar.

Jen moc nerozumím té skladbě příkazu, kvůli neznalosti pojmů.

Kód: [Vybrat]
# pridani polozky, automaticky se zaroven jeji BootXXXX (jen ty 4 znaky za Boot), prida jako prvni do BootOrder
sudo efibootmgr --create --disk /dev/sdb --part 1 --label Apacer --loader /EFI/debian/shimx64.efi

- co z toho příkazu uvidím v UEFIbiosu jako novou položku
- jestli mám něco do příkazu doplnit a kde to vyčtu, nebo si to příkaz vyčte sám v části "--disk /dev/sdb --part 1 --label Apacer" ?
Jdu prostudovat samotný příkaz bootmgr.

Re:Původní disk nebootuje
« Odpověď #11 kdy: 19. 06. 2022, 10:34:40 »
No, takže jsem stihl nakoupit a sběhnout příkaz efibootmgr.
Zdá se, že k3dAR mě napsal ten příkaz úplně přesně jak potřebuju.
Rozeberu to tady jednak propříště, druhak mi to prosím zkoukněte, jestli jsem tomu dobře porozuměl. k3dAR to navíc napsal v nezkráceném tvaru, tímto vyslovuji poděkování, jednak za napsání, druhak za formu, moc to pomohlo při pochopení.

--create                 -vytvoření nové položky v UEFIbios dle následujících parametrů
--disk /dev/sdb      -cesta k disku obsahujícímu loader v aktuálně nastartovaném systému
--part 1                 -označení pořadí partice na disku, kde se loader nachází, předpokládám, že to bude v mém případě
                              /dev/sdb1
--label  Apacer       -zde je zadán názeb bootovatelné položky v seznamu UEFIbios, pŕedpokládám, že místo Apacer si
                             sem můžu dát dle libovůle co chci.
--loader /EFI/debian/shimix64.efi
                             -tady bude cesta k loaderu na /dev/sdb1

Čili pak se to napálí do sd paměti na desce, nebo co tam je, dřív to byla eeprom, nebo nvram.
Co mě není jasné:
oddíly /dev/sdx jsou automaticky přiřazeny systémem až po bootu,ne? Jak tedy UEFI ví, když ještě není nastartován systém, kam šáhne? Nebo se pletu a oddíly se definují v momentu detekce disků UEFIbiosem?
Nebo efibootmgr něco vytáhne z loadru shimix64.efi, kde jsou zapsány nějaké parametry disku?  asakra na to už jsem se ptal v předchozím příspěvku.

Re:Původní disk nebootuje
« Odpověď #12 kdy: 19. 06. 2022, 10:52:17 »
Takže vše proběhlo na první ránu, teď mám dva bootovatelné systémy.
Tisíceré díky všem, zvláště k3dARovi, nejenom za zfunkčnení, ale také za objasnění UEFI noční můry. Už se toho nebojím.

Kdyby měl někdo zájem o stavbu FVE svépomocí, mohu poradit s orientací v problematice, jsem těsně před připojením mé druhé FVE. Máme dvě fóra, kde jsou skvělí lidé, co rádi poradí.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Původní disk nebootuje
« Odpověď #13 kdy: 19. 06. 2022, 16:17:08 »
FVE byla jednoduchá, ale potřebuju vykrývat díry když je v zimě týden v kuse temno a nic to nevyrobí.

 - nejlépe větrem; koupil jsem si istabreeze, ale je to takové nic moc, zejména to nic nevyrábí když fouká jenom trochu (chtěl bych aby to i při pomalém větru alespoň něco dávalo) a elektronika je zbastlená ale to si dokážu opravit. Ideální by byla axiální turbína - nápady?
 - máš nějaký osvědčený benzínový generátor co se nastartuje (problém: může být jako -15°C) a bude nabíjet baterky (tady je zase problém že to má nějaký výstup s nějakou regulací výkonu a já to potřebuju tlačit do 48V baterek - samozřejmě v krajním případě koupím HEP-600C-48 a nastavím _nějak_)

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Původní disk nebootuje
« Odpověď #14 kdy: 19. 06. 2022, 21:51:17 »
[...] oddíly /dev/sdx jsou automaticky přiřazeny systémem až po bootu,ne? Jak tedy UEFI ví, když ještě není nastartován systém, kam šáhne? [...]

kdyz si pustis ten "efibootmgr -v" tak uvidis, ze tebou pridana polozka s diskem sdX se ve zkutecnosti pridala s jedinecne) UUID, ktere zobrazis pro vsechny oddily tim "sudo blkid" ;-) takze EFI se nerozhoduje podle sdX resp. poradi disku, ale prave podle toho UUID ktere ma kazdy oddil sve/jine, z tveho vystupu na zacatkyu pro Intel je to pro jeho EFI oddil: d52c577f-2dfe-4857-ad29-77153a6f0b9d,0x800
BTW: nezkracene volby sem daval prave proto ze jsou samovysvetlujici :)