Ich mache ein Projekt auf meinem Raspberry Pi, bei dem ich versuche, meine Root-Partition auf einem USB-Stick zu haben. Eigentlich mehrere USB-Sticks. Alles, was ich tun muss, um von einem Arbeitsbereich zum anderen zu gelangen, ist, einen neuen USB-Stick anzuschließen und neu zu starten.
Dies könnte jedoch nur dann funktionieren, wenn sich die Boot-Partition selten ändert und nicht viel mehr über die Root-Partition weiß, als über das Starten des Betriebssystems.
Kann das funktionieren? Kümmern sich Boot-Partitionen nur um ein paar einfache Teile der Wurzel, die leicht für alle gleich bleiben können, oder entwickeln sich die beiden zusammen und verwickeln sich?
Ich verwende Raspian und beabsichtige, dass mehrere Versionen des Root-Systems (jeweils eine) vom selben Boot verwendet werden.
quelle
Antworten:
Ja, meines Wissens ist das völlig möglich!
Wenn ich ein Tutorial gefunden habe, es aber leider nicht auf Englisch ist, werde ich versuchen, das Verfahren in meinen eigenen Worten zu erklären.
Starten Sie den Pi neu, wobei das einzige externe Laufwerk der USB-Stick ist (auf diese Weise vermeiden wir, dass bei jedem Start unterschiedliche Laufwerksnummern verwendet werden, da eindeutige Laufwerks-IDs nicht möglich sind, wenn Sie die USB-Sticks später austauschen möchten).
Die Laufwerksnummer erhalten Sie über
sudo blkid
. Es sollte nur eine sein , die wie folgt aussieht:/dev/sda1
.Mit dem Befehl können
mount
wir sehen, ob es automatisch gemountet wurde. Ist dies nicht der Fall, fahren Sie mit dem nächsten Schritt fort. Wenn dies der Fall ist, führensudo umount /dev/sda1
Sie den Befehl aus (bei unterschiedlichen Nummern korrigieren, falls diese nicht identisch sind), um den USB-Stick zu entfernen.Als nächstes wollen wir den USB-Stick formatieren, um das richtige Dateisystem für die Debian-Root-Partition zu haben
ext4
. Sie können dies tun , indem Sie den Befehl ausführen:sudo mkfs.ext4 /dev/sda1
.Danach müssen wir den USB-Stick an einem temporären Ort (neu) mounten, um die Root-Partition von der SD-Karte zu kopieren. Das tun wir durch Laufen:
sudo mount /dev/sda1 /mnt
. (Wenn sich der Befehl darüber beschwert/mnt
, dass kein Ordner vorhanden ist, erstellen Sie einen Ordner mit diesem Namen, indem Sie Folgendessudo mkdir /mnt
ausführen :, und versuchen Sie es erneut.Jetzt ist es Zeit , indem zuerst Umschalten in den Top-Verzeichnis alle Daten aus der Root - Partition kopieren mit:
cd /
und dann läuft diese tar-Befehl:sudo tar cf - * --exclude /mnt/* | ( cd /mnt; sudo tar xfp -)
. Es ist wahrscheinlich nicht die kompakteste Lösung, aber es hat bei mir funktioniert. Beachten Sie, dass dies abhängig von der Geschwindigkeit Ihrer SD-Karte und Ihres USB-Laufwerks einige Zeit dauern kann.Als nächstes müssen wir das ändern, das
/etc/fstab
die Laufwerke enthält, die beim Booten durch Ausführen gemountet werden sollensudo nano /mnt/etc/fstab
. ( Beachten Sie, dass sich dies auf dem USB-Stick befindet, seit wir es hinzugefügt haben/mnt
. ) Sie müssen die entsprechenden Leitungen ändern, damit sie so aussehen:Schließlich müssen wir die Boot-Partition auf der SD-Karte anweisen, stattdessen vom USB-Laufwerk zu booten. Aber zuerst ist es wahrscheinlich eine gute Idee , eine Sicherungskopie der Datei zu machen , die wir jetzt ändern werden, bevor wir daran , den Schalter, indem Sie verpflichten:
sudo cp /boot/cmdline.txt /boot/cmdline.txt.save
.Führen Sie
sudo nano /boot/cmdline.txt
den Befehlnano
aus, um die Startparameter auf der ersten Partition der SD-Karte zu ändern. Grundsätzlich müssen wir den Eintrag für die Root-Partition auf das USB-Laufwerk ändern. Das Tutorial bietet an, dies dort einzutragen (1 Zeile):Sie können lesen , was in diese Parameter bedeuten hier .
Jetzt speichern und beenden
nano
und beim nächsten Neustart sollte Ihr Raspberry Pi vom USB-Stick booten, aber natürlich wird die SD-Karte weiterhin benötigt, wie Sie bereits erwähnt haben.Solange das USB-Laufwerk (abgesehen von der SD-Karte) beim Booten das einzige Laufwerk ist, sollte dies funktionieren. Sie müssen es etwas dynamisch haben und ich sehe keine andere Art, sich auf das Laufwerk zu beziehen, als es zu verwenden
/dev/diskX
.Bearbeiten: Ich habe vergessen zu erwähnen, dass Sie das USB-Laufwerk duplizieren müssen, nachdem Sie fertig sind oder die gleichen Schritte mit anderen Installationen auf anderen Laufwerken ausführen. Wenn die Raspian-Version einschließlich der installierten Pakete alle gleich sind, sehe ich keinen Grund, warum dies nicht funktionieren sollte.
Die
/boot
Partition ist ziemlich einfach und die Zeile, die ich in 9 erwähnt habe, ist im Grunde alles, was sie tut. Es muss nur an die richtige Partition mit dem richtigen Dateisystem übergeben werden und es sollte funktionieren.Ich hoffe das war hilfreich für dich.
Für den deutschsprachigen Raum lasse ich den Quelllink hier: Quelle .
quelle