Avvio da chiavetta USB / unità esterna?


44

So che non è possibile avviare direttamente da una chiavetta / unità USB esterna, ma invece è necessario eseguire l'avvio dalla scheda SD e quindi il dispositivo esterno può subentrare. Qual è il modo più semplice e preferito per configurarlo, quindi avviare dalla scheda SD e lasciare che un dispositivo esterno prenda il sopravvento?

Risposte:


37

Se hai un sistema operativo esistente in esecuzione sul Pi, in primo luogo sarebbe utile sapere se il dispositivo USB è supportato. Puoi farlo montandolo come di consueto:

mount /dev/sda1 /mnt 

In caso contrario, non sarà possibile utilizzare il dispositivo USB come partizione di root senza abilitare i moduli del kernel. E per questo potrebbe essere necessario compilare il proprio kernel.

Se riesce, allora dovrebbe funzionare bene con alcune modifiche ai parametri di avvio che Pi utilizza:

Su un'immagine esistente, apri cmdline.txt, che si trova sulla partizione di avvio, e inserisci le seguenti righe:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text

Tutto ciò che devi fare è eseguire il flashing dell'immagine sulla scheda SD e avviare il Pi. Se tutto va bene, /dev/sda1dovrebbe essere la posizione dell'unità USB all'avvio del Pi, e quindi dovrebbe tentare di utilizzare quella posizione come root. Il rootwaitparametro è importante poiché bloccherà il processo di avvio fino a quando non viene riconosciuta l'unità USB. Senza di essa il Pi potrebbe lamentarsi che la posizione non esiste.

Ti suggerisco di copiare la partizione di root da un'immagine Raspberry Pi esistente sull'unità USB e utilizzarla per l'avvio.

Fammi sapere se hai bisogno di ulteriori informazioni.


+1 Ottima risposta. Non dovrebbe console=...già essere lì?
Alex Chamberlain,

2
Inoltre, puoi usare gli UUID sulla riga di comando?
Alex Chamberlain,

Sì, ho fornito l'intero file e di cosa stai parlando utilizzando gli UUID?
Jivings,

3
Grazie mille Jivings, ho "trasferito" l'immagine ufficiale sulla mia chiavetta USB, quindi ho copiato il materiale dalla parte FAT su una scheda SD e ho modificato cmdline.txt. Nel mio caso la partizione di root è quindi / dev / sda2, perché / dev / sda1 è la partizione di avvio (non utilizzata) sulla chiavetta USB. Non ho avuto bisogno del rootwait nel mio caso, ma buono per conoscere questo parametro!
stefan.at.wpf,

@ stefan.at.wpf (e Jivings) Puoi usare gli UUID invece di /dev/sdx- almeno in /etc/fstab/- quindi non importa se le xmodifiche.
Alex Chamberlain,

4

Il modo più semplice per configurarlo sarebbe usare BerryBoot . Supporta l'installazione su, o da, una o più immagini su una chiavetta USB (o sulla stessa scheda SD) fuori dalla scatola attraverso una bella interfaccia GUI.

Per configurarlo, è sufficiente copiare i ~ 70 MB di file di installazione su una scheda SD formattata FAT32, inserirli nel dispositivo e avviarli. Ha anche un elenco di immagini preconfigurate che può essere scaricato e installato automaticamente tramite una connessione Ethernet o Wi-Fi.

Quindi selezionare il sistema operativo che si desidera avviare per impostazione predefinita dalle immagini disponibili e, se si desidera aggiungere nuove immagini o modificare l'impostazione predefinita in un secondo momento, è sufficiente premere Invio durante il processo di avvio per riconfigurare!


spostare l'immagine sulla scheda SD? Pensavo che volessimo installarlo su una chiavetta USB?
Suhaib,

Come affermato dall'OP, non è possibile eseguire l'avvio direttamente da una chiavetta USB su un Raspberry Pi: è necessaria una scheda SD con un bootloader installato in grado di trasferire il processo su un altro dispositivo una volta acceso.
Nathan Dunn,

2

ok, per chiarire -

oltre alla risposta di @Jivings -

Esistono diversi modi in cui è possibile fare riferimento a un disco in fstab. L'uso di / dev / sdXX potrebbe non essere sempre sicuro, poiché l'ordine in cui appaiono i dischi scsi potrebbe non essere garantito.

Quello che non so è se la configurazione di avvio comprende qualcosa di diverso dalle etichette di base del dispositivo. "root = / dev / sda1" è comunque un'astrazione, quindi in teoria root = LABEL = TEST potrebbe funzionare. Ho bisogno di indagare.

Mi scuso se non sono molto chiaro. Ovviamente ho un po 'di abilità da fare nello spiegare Linux a nuove persone.


1
Jivings: potresti spiegare alcuni dei parametri nell'esempio della tua linea di comando per noi nubies? Grazie.
Michael Moriarty,

Non ha mai menzionato Fstab. Il nome del dispositivo / partizione di destinazione è un parametro del kernel. Credo che altre convenzioni di denominazione come UUID siano possibili con i kernel moderni, specialmente se hanno moduli initrd / initramfs.
Jiggunjer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.