Nicht beständiges Linux von der Festplatte

450
Eric Johnson

Ich entwickle ein Embedded-Produkt, das Linux auf Hardware ähnlich einem Himbeer-Pi, aber mit internem Speicher laufen lässt. Ich möchte es so, dass die Stromzufuhr zur Maschine unterbrochen werden kann und ein sehr geringes Korruptionsrisiko besteht. Ich dachte daran, dass eine Live-Version von Linux keine HDD-Schreibvorgänge ausführen würde.

In allen Anwendungsfällen, die ich gesehen habe, geschieht dies normalerweise auf einem USB-Laufwerk. Ich möchte dies auf dem internen Speicher installieren, damit es von diesem booten kann.

In einer perfekten Welt wäre es auch einfach, das Image direkt zu aktualisieren, z. B. eine Datei zu erstellen und dann das Image auf der Festplatte "zu aktualisieren", um diese Datei aufzunehmen.

Unterstützt eine Linux-Version so etwas? Wie würde die Installation funktionieren, um die nicht persistente Installation auf einem internen Laufwerk und nicht auf einem Flash-Laufwerk zu installieren?

0
Eine Ramdisk oder ein anderes schreibgeschütztes Dateisystem ist Ihre Antwort - wenn Sie eine Konfiguration benötigen, speichern Sie sie auf einer separaten Lese- / Schreibpartition. Attie vor 5 Jahren 0
Das klingt, als hätte das Projekt einige unbeantwortete Fragen - zB: Wie ist Ihr Speicher? (Raw Flash / eMMC / drehende Festplatte). Für jedes dieser Schritte müssen Sie verschiedene Schritte ausführen, um die Zuverlässigkeit zu verbessern. Attie vor 5 Jahren 0

2 Antworten auf die Frage

2
Austin Hemmelgarn

Zunächst einmal können Sie ein derartiges "Live" -System von einer Festplatte oder einem anderen permanenten Speicher ziemlich leicht booten. Schreiben Sie einfach das Image, das Sie auf dem USB-Flashlaufwerk ablegen, in den beliebigen Speicher und starten Sie von dort aus. Viele Kiosk-Systeme tun dies ebenso wie viele Thin-Clients.

Nun ist dies jedoch wahrscheinlich nicht die beste Option für Ihren Anwendungsfall. Ich würde sehr empfehlen, einen Blick darauf zu werfen, wie Android und ChromeOS mit ihren Root-Dateisystemen umgehen. Beide Geräte sind äußerst robust gegen Beschädigungen durch unerwarteten Stromausfall und bieten standardmäßig auch einen Manipulationsschutz (IOW, Sie wissen, ob jemand die Daten geändert hat, während das Gerät ausgeschaltet war). Ähnliche Setups können mit einem von Buildroot erstellten benutzerdefinierten Root-Dateisystem ohne allzu große Schwierigkeiten erreicht werden .

Als Alternative dazu können Sie Alpine Linux in Betracht ziehen . Es ist für die Ausführung von schreibgeschützten Medien konzipiert, obwohl ich nicht sicher bin, wie gut es andere als 64-Bit-x86-Systeme unterstützt.

2
sawdust

Ich entwickle ein Embedded-Produkt ...

Geräte, auf denen Embedded Linux ausgeführt wird, verfügen normalerweise über einen benutzerdefinierten Kernel und ein benutzerdefiniertes Root-Dateisystem. In der Regel lohnt es sich nicht, zu versuchen, eine vorhandene Linux-Distribution an benutzerdefinierte Hardware anzupassen und ein Universal-Desktop-Dateisystem für eine dedizierte eingebettete Anwendung zu verwenden.
Tools zum Erstellen von benutzerdefinierten Linux-Kernel- und Root-Dateisystemen sind Buildroot und Yocto.

Unterstützt eine Linux-Version so etwas?

Eine "Live-Version von Linux" ist einfach ein Linux-Kernel, der mit einer Ramdisk oder eher einem Ramfs für das Root-Dateisystem bootet. Ich habe (wie auch gebaut) zahlreiche Embedded-Linux-Systeme gesehen, die eine Ramfs oder Ramdisk für ihre Rootfs verwenden.
IOW, was Sie vorschlagen, ist weder einzigartig noch neu. Es ist ein gut verwendetes Konzept, das viele Implementierungsvarianten aufweist.

Das Startmedium liegt bei Ihnen und was die Hardware unterstützt.
Wenn Sie Linux mit einem initramfs von einer Festplatte booten möchten, besteht das einzige Problem darin, dass Sie lernen, wie man es erstellt.
Je nachdem, welche Hardware Sie verwenden, muss möglicherweise (außer Ihrer Anwendung) kein neuer Code entwickelt werden. Wenn Sie einen solchen Kernel und Rootfs erstellen, müssen Sie bereits vorhandenen Quellcode herunterladen, konfigurieren und erstellen.

Das Aktualisieren eines Systems vor Ort ist ein komplexes Thema, und es gibt viele Lösungen. Die verschiedenen Paketsysteme, wie sie von Distros verwendet werden, sind normalerweise für Embedded-Systeme zu schwer / komplex, insbesondere für solche, die auf NAND-Flash basieren.