Boot senza boot-loader

Nuovo di Arch Linux? Nessun problema, fai qui le tue domande
Rispondi
esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Boot senza boot-loader

Messaggio da esokernel » 13 maggio 2020, 17:18

Probabile abbia scoperto l'acqua calda cmq se a qualcuno può servire od interessare ho provato a far avviare la mia seconda Arch (sempre su chiavetta USB 16GB) piazzando nella partizione EFI un file startup.nsh in cui ho inserito la stringa di comando CONTINUA utilizzando il PARTUUID per identificare la partizione di sistema.

Codice: Seleziona tutto

\vmlinuz-linux root=PARTUUID=51e77af4-6ba7-b24f-9f60-48e382029876 rw initrd=\initramfs-linux.img
Ovviamente basta sostituire il PARTUUID con quello della vostra partizione di sistema individuandolo ad es. con blkid

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Boot senza boot-loader

Messaggio da TheSaint » 14 maggio 2020, 6:19

Anche io BIOS ha il boot loader, basta che lo scrivi in NVRAM.
Questo è il mio.

Codice: Seleziona tutto

$ cat /proc/cmdline 
root=LABEL=Linux64 initrd=intel-ucode.img initrd=/initramfs-linux.img pcie_aspm=off rw quiet
Per non incappare in disastri, meglio usare le etichette alle partizioni. In caso la sposti non ci sono problemi.
Oltre al fatto che si può e si fa una partizione EFI sulla chiavetta con il kernel. Quello sarà quello chiamato in causa senza scomodare la shell EFI, che devi averla installata nella partizione EFI.
C'è comunque nella EFI un altro boot loader, viene lanciato del boot loader del BIOS. Serve nel caso la partizione incappa in problemi di avvio.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 14 maggio 2020, 10:26

Interessante, per assegnare la label si può usare cfdisk, parted o simili? Mi spieghi cosa fa di preciso rw grazie
P.S. Per cambiare la label conviene farlo a caldo oppure dall' esterno con un chroot?

Avatar utente
Dusty
Little John
Messaggi: 895
Iscritto il: 12 agosto 2011, 13:15
Località: Firenze

Re: Boot senza boot-loader

Messaggio da Dusty » 14 maggio 2020, 15:31

esokernel ha scritto:
14 maggio 2020, 10:26
Interessante, per assegnare la label si può usare cfdisk, parted o simili?
https://wiki.archlinux.org/index.php/Pe ... g#by-label
Mi spieghi cosa fa di preciso rw grazie
https://wiki.archlinux.org/index.php/Ke ... meter_list
P.S. Per cambiare la label conviene farlo a caldo oppure dall' esterno con un chroot?
Non mi risulta che ci siano rischi a modificare la label a caldo.
Se, per il massimo di precauzione, lo fai da un sistema esterno, comunque non serve chroot perchè il comando non agisce sul sistema corrente ma su quello indicato nei parametri.

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 14 maggio 2020, 18:48

Niente. Da Virtualbox Oracle funge mentre se eseguo boot reale nn va. Mi torna errore "\vmlinuz-linux" non è riconosciuto come un eseguibile, batch etc. Come è possibile che in un caso funzioni perfettamente e nell' altro no?

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Boot senza boot-loader

Messaggio da TheSaint » 15 maggio 2020, 6:19

Come lo spieghi non si capisce, mancano dettagli.
Posta

Codice: Seleziona tutto

S blkid
$ cat /proc/cmdline
$ efibootmgr -v
Che sono quelli della macchina reale.

Se cambi l'etichetta quando il SO è avviato, potrai usa le etichette da subito per riferimenti futuri. Eccetto i programmi che hanno caricato i riferimenti durante l'avvio, come il kernel.

Quindi se hai una etichetta dovrai cambiare la stringa in NVRAM con la stessa etichetta. Vedi efibootmgr per le spiegazioni o cerca le informazioni come si scrive la linea del kernel in NVRAM.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 15 maggio 2020, 16:16

TheSaint ha scritto:
15 maggio 2020, 6:19
Come lo spieghi non si capisce, mancano dettagli.
Ho installato Arch su due chiavette USB da 16GB. La prima parte sia da Virtualbox che dal PC. La seconda parte solo da Virtualbox (con bios impostato su UEFI). Mi chiedevo come mai la stringa in questione

Codice: Seleziona tutto

\vmlinuz-linux root=LABEL=SystemArch2 rw initrd=\initramfs-linux.img
che ho inserito in startup.nsh non mi esegua il boot dal PC. L' ultimo aggiornamento del BIOS disponibile per la mia mobo (MSI Z77A-G43) risale al 2014. L' UEFI della Virtualbox 6.1 è ovviamente più recente.

Codice: Seleziona tutto

 [root@esokernel2~]# blkid
/dev/sdb1: UUID="8424-3DDF" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="7ceeb356-6d73-484c-9316-174da508dcb4"
/dev/sdb2: UUID="96cc5ace-2094-43e8-a239-46f562c400dc" TYPE="swap" PARTUUID="4332a570-fa7a-0044-91e8-9c017c483e2a"
/dev/sdb3: LABEL="SystemArch2" UUID="e2b3e8ac-24ab-4c4e-882e-92ce10278313" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="51e77af4-6ba7-b24f-9f60-48e382029876"

Codice: Seleziona tutto

[root@esokernel2~]# cat /proc/cmdline
\vmlinuz-linux root=LABEL=SystemArch2 rw initrd=\initramfs-linux.img

Codice: Seleziona tutto

 [root@esokernel2~]# efibootmgr -v
BootCurrent: 0003
Timeout: 0 seconds
BootOrder: 0003,0004,0001,0002,0000
Boot0000* UiApp	FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(462caa21-7614-4503-836e-8ab6f4662331)
Boot0001* UEFI VBOX CD-ROM VB2-01700376 	PciRoot(0x0)/Pci(0x1,0x1)/Ata(1,0,0)N.....YM....R,Y.
Boot0002* UEFI VBOX HARDDISK VBd0a4aa3f-08c2bc99 	PciRoot(0x0)/Pci(0xd,0x0)/Sata(0,65535,0)N.....YM....R,Y.
Boot0003* EFI Internal Shell	FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)/FvFile(7c04a583-9e3e-4f1c-ad65-e05268d0b4d1)
Boot0004* UEFI Kingston DataTraveler G3 001CC0EC31EDBBC0E71A014E	PciRoot(0x0)/Pci(0xc,0x0)/USB(1,0)N.....YM....R,Y.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Boot senza boot-loader

Messaggio da TheSaint » 17 maggio 2020, 3:42

Da chiarire che un BIOS su macchina reale non ha nulla da che fare con quello in virtualbox. Non si conoscono minimamente.
Il tuo BIOS pare che ha una shell interna, quello che ho io no, si trova nella ESP, viene riconosciuta se è presente.

Visto la cmdline dovresti riuscire ad avviare come e scritta solo che il contenuto in NVRAM è unicode e per un carattere prende due byte. Se si avvia con quella stringa, allora non si capisce la causa che non procede.

Come si può dedurre dalle pagine wiki esiste il metodo di scrivere il comando in NVRAM tramite efibootmgr.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 17 maggio 2020, 11:51

In effetti dalla EFI shell di Oracle Virtualbox la stringa funziona. Se provo dalla EFI shell del PC mi da errore quindi credo (a meno di nn sbagliarmi) che essendo 2014 manchi qualcosa rispetto alla Shell di O-VB.

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Boot senza boot-loader

Messaggio da TheSaint » 17 maggio 2020, 13:36

efibootmgr dice che non hai scritto quello nella NVRAM del tuo computer.

Codice: Seleziona tutto

efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0002
Boot0000* Arch Linux    HD(1,GPT,05f563fb-d442-4a8f-bfdc-bcd7ce161684,0x800,0x7d000)/File(\vmlinuz-linux)r.o.o.t.=.L.A.B.E.L.=.L.i.n.u.x.6.4. .i.n.i.t.r.d.=.i.n.t.e.l.-.u.c.o.d.e...i.m.g. .i.n.i.t.r.d.=./.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x...i.m.g. .p.c.i.e._.a.s.p.m.=.o.f.f. .r.w. .q.u.i.e.t.
Boot0002* Linux Boot Manager    HD(1,GPT,05f563fb-d442-4a8f-bfdc-bcd7ce161684,0x800,0x7d000)/File(\EFI\systemd\systemd-bootx64.efi)
Come vedi io ce l'ho messa e sta proprio nel computer, non in VB. Da notare che, dicevo, ci vuole 2 byte per una lettera. Ma non so bene il perché.
Se lo vuoi fare vedi bene il wiki.
Se cercavi avresti notato anche questo.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 17 maggio 2020, 21:40

Ho fatto una prova. Ho tirato giù da Intel.com una shell x64 nuova -> Shell.efi ed ho avviato il pc quindi entrato nel bios l'ho lanciata e da li sono entrato sulla chiavetta USB. Come sospettavo startup.nsh parte (OK una shell più recente infatti c'è anche bcfg per inserire le entry) ma ... stranamente dopo i primi passi del boot mi da tipo "ERROR: device label SystemArch2 not found skipping fsck, can't access tty; job control tuned off ed entra in una non ricordo cosa di emergenza. Ho controllato sia la label che il PARTUUID e sono esatti (scrivo dalla 1a Arch funzionante).
Ovviamente usando la shell "originale" non funziona una cipp ... scusate lo sfogo ma in pratica un semplice agg dell' UEFI risolverebbe parecchie cose cmq essendo la cpu intel e la Shell una di quelle che usano loro funge bene almeno nell' avviare ... ho la testa durissima lo so :mrgreen:

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 18 maggio 2020, 11:01

OK risolti tutti gli errori di avvio rigenerando fstab + una cancellatina manuale fila dritto fino al login. Il poweroff viene giù che è una scheggia. Avevo inserito nella UEFI 2 entry tramite bcfg (con la shell presa da intel.com) che però fallivano e dopo averle cancellate nn mi fa più reinserire niente nel menù di boot del pc. Con efibootmgr proprio nn mi è riuscito di salvare in NVRAM cioè nn si vedono nel menù di boot come era successo con bcfg. Va be dai in manuale funge e poi da PC è tutta un'altra sensazione ...

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Boot senza boot-loader

Messaggio da TheSaint » 18 maggio 2020, 18:36

Se non riesci, prova vedere la ricerca problemi.
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 18 maggio 2020, 20:01

TheSaint ha scritto:
18 maggio 2020, 18:36
Se non riesci, prova vedere la ricerca problemi.
Grazie sempre dritto al problema mi leggi nel pensiero :mrgreen:

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 19 maggio 2020, 14:12

TheSaint ha scritto:
18 maggio 2020, 18:36
Se non riesci, prova vedere la ricerca problemi.
E vaiiiiiiiiiiiiiii siiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Da Shell (quella che ho grattato da Intel.com :mrgreen: ) bcfg driver add 00 Shell.efi ... selezionando come prima unità di avvio "USB-Key" mi esegue startup.nsh come da specifiche UEFI attuali senza bloccarsi come accade con quello installato. Stavo per fare un guaio cioè moddare il bios ma alla fine ho pensato che era meglio attaccare una opzione a precedere il lancio da USB-key. La "semplice", come si dice in gergo, alla fine è stata efficace. Ho provato a partire da altre chiavette e l' inserimento del driver.efi sembra non influisca su queste ultime (incrocio le dita) ... ovviamente ho dovuto copiare il file Shell.efi nella ESP e togliere dall' inizio della command line "\Shell.efi". Se fallisco mi incaponisco se riesco mi entusiasmo :D

esokernel
Newbie
Messaggi: 22
Iscritto il: 30 aprile 2020, 6:25
Architettura: x86_64 (64bit)

Re: Boot senza boot-loader

Messaggio da esokernel » 23 maggio 2020, 19:56

Alla continua ricerca del controllo del boot mi sono accorto che i comportamenti di UEFI possono spiazzare cioè ho creato la solita chiavetta USB allo scopo (per sperimentare) ed impostato tutto sulla ricerca del "fallback" (come ad esempio nel rEfind di RodSmith) ma ... sulla mia motherboard dopo varie prove ho notato che esegue esclusivamente la ricerca di EFI\boot\bootx64.efi e quindi tutto felice credevo di essere riuscito nello scopo di inserirmi tra firmware e Sistema operativo ma se sposto la chiavetta su altro PC? ecco che con sorpresa uefi più aggiornato cerca (come da specifiche 2.0) startup.nsh e lo esegue ... quindi? punto e a capo (nel senso che quel bootx64.efi rimane li perchè non viene ricercato) ma un discreto trucchetto mi permette di by-passare il tutto con una stringa all' interno si startup.nsh che antepone l'esecuzione di una Shell.efi al resto dei comandi che di default va cercare startup.nsh (quindi la copio sulla root della ESP per essere sicuro di ciò). Se invece dovessi imbattermi nel firmware che la ignora totalmente ecco che c'è pronto appostato bootx64.efi in EFI\boot ricadendo nel caso del "fallback". Voglio dire che non è scontato che una versione di UEFI anche la più recente sia implementata sulle motherboard's allo stesso modo standard delle spec 2.0 (ed infatti nel "real world" di cui parla Rod ho potuto constatare che è vero). Se qualcuno volesse provare magari scoprirà un terzo modo alternativo di comportarsi di UEFI chissà :mrgreen:

Avatar utente
TheSaint
Robin Hood
Messaggi: 7935
Iscritto il: 8 settembre 2007, 7:43
Architettura: x86_64 (64bit)
Località: davanti al computer

Re: Boot senza boot-loader

Messaggio da TheSaint » 23 maggio 2020, 20:37

Il BIOS può leggere solo quella partizione li in FAT32. Non sa nulla delle altre non avendo necessarie risorse per interpretare altri FS. Allora il suo boot loader deve trovare il necessario nella ESP.

Forse riesce anche trovarne più di una e questo viene elencato per la scelta di avvio, oppure la prima di difetto.

Consiglierei che spezzi un po le tue sentenze con qualche separazione
F the saint 13 anni da questo forum ;)
Gli uomini consumano il pianeta, almeno due di queste cose si possono ridurre.

Rispondi