Démarrer à partir d'une clé USB / d'un lecteur?

44

Je sais qu'il n'est pas possible de démarrer directement à partir d'une clé USB, mais vous devez démarrer à partir de la carte SD pour que le périphérique externe prenne le relais. Quel est le moyen le plus simple et le plus pratique pour configurer cela? Par conséquent, démarrez à partir de la carte SD, puis laissez un périphérique externe prendre le relais.

stefan.at.wpf
la source

Réponses:

37

Si vous avez un système d'exploitation existant sur le Pi, il serait d'abord utile de savoir si le périphérique USB est pris en charge. Vous pouvez le faire en le montant comme d'habitude:

mount /dev/sda1 /mnt 

Si cela échoue, vous ne pourrez pas utiliser le périphérique USB en tant que partition racine sans activer les modules du noyau. Et pour cela, vous devrez peut-être compiler votre propre noyau.

Si cela réussit, alors cela devrait fonctionner correctement avec quelques ajustements des paramètres de démarrage que le Pi utilise:

Sur une image existante, ouvrez cmdline.txtce qui se trouve sur la partition de démarrage et entrez les lignes suivantes:

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

Il ne vous reste plus qu'à flasher cette image sur la carte SD et à démarrer le Pi. Si tout va bien, il /dev/sda1devrait s’agir de l’emplacement du lecteur USB lors de l’amorçage du Pi et il devrait donc tenter d’utiliser cet emplacement en tant que root. Ce rootwaitparamètre est important car il va bloquer le processus de démarrage jusqu'à ce que le lecteur USB soit reconnu. Sans cela, le Pi peut se plaindre que l'emplacement n'existe pas.

Je vous suggère de copier la partition racine d'une image existante de Raspberry Pi sur votre clé USB et de l'utiliser pour démarrer.

Faites-moi savoir si vous avez besoin d'informations supplémentaires.

Jivings
la source
+1 excellente réponse. Ne devrait pas console=...déjà être là?
Alex Chamberlain
2
De plus, pouvez-vous utiliser des UUID sur la ligne de commande?
Alex Chamberlain
Oui, j'ai fourni le fichier entier et où parlez-vous de l'utilisation des UUID?
Jivings
3
Merci beaucoup Jivings, j'ai "flashé" l'image officielle sur ma clé USB, puis copié le contenu de la partie FAT sur une carte SD et ajusté le fichier cmdline.txt. Dans mon cas, la partition racine est alors / dev / sda2, car / dev / sda1 est la partition de démarrage (non utilisée) de la clé USB. Je n'ai pas eu besoin du rootwait dans mon cas, mais bon de connaître ce paramètre!
stefan.at.wpf
@ stefan.at.wpf (et Jivings) Vous pouvez utiliser des UUID au lieu de /dev/sdx- du moins dans /etc/fstab/-, peu importe si les xmodifications sont apportées.
Alex Chamberlain
4

Le moyen le plus simple de le configurer serait d’utiliser BerryBoot . Il prend en charge l'installation vers ou depuis une ou plusieurs images sur une clé USB (ou sur la carte SD elle-même) par le biais d'une interface graphique conviviale.

Pour le configurer, il vous suffit de copier environ 70 Mo de fichiers d'installation sur une carte SD au format FAT32, de l'insérer dans votre appareil et de démarrer. Il contient même une liste d'images préconfigurées qu'il peut télécharger et installer automatiquement pour vous via une connexion Ethernet ou Wi-Fi.

Vous sélectionnez ensuite le système d'exploitation que vous souhaitez démarrer par défaut parmi vos images disponibles, et si vous souhaitez ajouter de nouvelles images ou modifier la valeur par défaut à une date ultérieure, vous n'avez qu'à appuyer sur Entrée pendant le processus de démarrage pour reconfigurer!

Nathan Dunn
la source
déplacer l'image sur la carte SD? Je pensais que nous voulions l'installer sur une clé USB?
Suhaib
Comme l'OP l'a indiqué, il n'est pas possible de démarrer directement à partir d'une clé USB sur un Raspberry Pi - Vous avez besoin d'une carte SD avec un chargeur de démarrage installé qui peut transférer le processus à un autre périphérique une fois sous tension.
Nathan Dunn
2

ok, pour clarifier -

suite à @Jivings answer -

Vous pouvez faire référence à un disque dans le fstab de plusieurs manières. L'utilisation de / dev / sdXX n'est peut-être pas toujours sûre car l'ordre d'affichage des disques scsi peut ne pas être garanti.

Ce que je ne sais pas, c'est si la configuration de démarrage comprend autre chose que les étiquettes de périphérique de base. "root = / dev / sda1" est une abstraction, cependant, en théorie, root = LABEL = TEST peut fonctionner. Je dois enquêter.

Je m'excuse si je ne suis pas très clair. J'ai un peu de talent à faire pour expliquer Linux à de nouvelles personnes, évidemment.

Nox
la source
1
Jivings: pourriez-vous expliquer certains des paramètres de votre exemple de ligne de commande pour nous nubies? Merci.
Michael Moriarty
Il n'a jamais mentionné fstab. Le nom du périphérique / partition cible est un paramètre du noyau. Je pense que d’autres conventions de nommage comme UUID sont possibles avec les noyaux modernes, en particulier s’ils disposent de modules initrd / initramfs.
jiggunjer