Können Boot-Partitionen eine Eins-zu-Viele-Beziehung zu Root-Partitionen haben? Inwieweit hängen Boot-Partitionen von Root-Partitionen ab?

1

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.

Seph Reed
quelle
Sie meinen also im Grunde, Sie möchten ein bootfähiges USB-Stick erstellen? Oder etwas anderes?
JakeGould
1
Nun ja, das wäre vorzuziehen, aber es ist nicht etwas, was auf einem Pi gemacht werden kann. Was ich tun kann, ist, eine bootfähige SD zu erstellen, die die Root-Partition von USB erhält.
Seph Reed
Und dann könnte ich von dort aus viele verschiedene Versionen von root erstellen, die verschiedene Dinge tun, während alle auf derselben Grundlage basieren (in diesem Fall Raspian)
Seph Reed
Ich habs. Hoffentlich kann jemand anderes eine Antwort mitbringen. Zum Teufel kann es nützlich sein, Ihre Frage zu bearbeiten, um anzugeben, welche Raspberry Pi-kompatible Linux-Distribution Sie verwenden möchten. Oder wenn Sie offen für Ideen sind, fügen Sie dies ebenfalls hinzu.
JakeGould
1
Vielleicht. Ich hatte gehofft, dass dies mehr oder weniger unabhängig von einer Distribution ist. Ich hoffe, dass Boot-Systeme per Definition vom Betriebssystem unabhängig sind, mit Ausnahme der Art und Weise, wie sie vom Internet angegeben werden, aber nicht explizit.
Seph Reed

Antworten:

1

Ja, meines Wissens ist das völlig möglich!

Was Sie tun mögen ist die Root - Partition über auf einen USB - Stick zu kopieren und dann die ändern /etc/fstabund , /boot/cmdline.txtum es von dem externen Laufwerk stattdessen auf der SD - Karte der zweiten Partition zu booten.

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.

  1. 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).

  2. Die Laufwerksnummer erhalten Sie über sudo blkid. Es sollte nur eine sein , die wie folgt aussieht: /dev/sda1.

  3. Mit dem Befehl können mountwir 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ühren sudo umount /dev/sda1Sie den Befehl aus (bei unterschiedlichen Nummern korrigieren, falls diese nicht identisch sind), um den USB-Stick zu entfernen.

  4. 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.

  5. 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 Folgendes sudo mkdir /mntausführen :, und versuchen Sie es erneut.

  6. 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.

  7. Als nächstes müssen wir das ändern, das /etc/fstabdie Laufwerke enthält, die beim Booten durch Ausführen gemountet werden sollen sudo 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:

/dev/mmcblk0p1 /boot vfat defaults 0 0 /dev/sda1 / ext4 defaults,noatime 0 0

  1. 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.

  2. Führen Sie sudo nano /boot/cmdline.txtden Befehl nanoaus, 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):

    dwc_otg.lpm_enable=0 root=/dev/sda1 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2

    Sie können lesen , was in diese Parameter bedeuten hier .

    Jetzt speichern und beenden nanound 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 /bootPartition 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 .

comfreak
quelle
1
Ja, das war total hilfreich. Können Sie diesen Link raspberrypi.org/forums/viewtopic.php?f=29&t=44177 zu Ihrer Antwort für zukünftige Suchende hinzufügen ? Ich bin immer noch ein wenig zögernd, ob boot andere Abhängigkeiten von root hat oder nicht, aber ich kann einige Tests durchführen und bis zum Ende des Tages überprüfen lassen. Vielen Dank!
Seph Reed
Ich denke, wenn Sie Ihren Kommentar hier hinterlassen, werden die Leute ihn sehen, wenn sie weitere Informationen zu diesem Thema benötigen. Ich bin froh, dass ich Ihnen helfen konnte und ich bin bereit, meine Antwort zu verbessern, falls Probleme auftauchen sollten.
Comfreak