Ich habe einen benutzerdefinierten Linux-Kernel in BusyBox kompiliert. BusyBox init
unterstützt keine Runlevel. Wenn der Kernel in BusyBox hochfährt, wird er zuerst ausgeführt, init
wobei nach dem angegebenen Runlevel gesucht wird /etc/inittab
. BusyBox init
funktioniert gut ohne /etc/inittab
. Wenn no inittab
gefunden wird, hat es das folgende Verhalten:
::sysinit:/etc/init.d/rcS
Dieser Teil ist mir sehr klar, aber ich möchte wissen, wie Dämonen verwaltet werden, die das Netzwerk starten, serielle Schnittstellen erstellen oder java
Prozesse starten . Ich habe in den Skripten nachgesehen, /etc/init.d/
aber ich verstehe nicht, wie ich sie verwalten soll. Ich suche nach einem guten Tutorial oder einer Lösung, um diese Dienste selbst zu steuern, ohne ein automatisiertes Tool wie buildroot
. Ich möchte verstehen, wie diese Skripte funktionieren und wie Geräte erstellt werden /dev/
(im Moment habe ich nur console
und ttyAM0
).
S[0-99]script_name
Die Dateinamensyntax wirdS10*
vorher ausgeführtS2*
und bricht das Skript.S20*
läuft nachS10*
, wenn Sie etwas kommen , bevorS10
Sie es nennen müssenS01*
,S02*
usw. am nächsten Arbeitstag.Es ist eine schlechte Idee, Ihre fs im "Ziel" -Ordner zu ändern. Dies liegt daran, dass Änderungen in
output/target/
denmake clean
Befehl nicht überleben .Im Buildroot-Handbuch wurde beschrieben, wie es richtig gemacht wird
Sie sollten irgendwo ein Verzeichnis erstellen, das das Dateisystem teilweise überlagert. Beispielsweise können Sie das Verzeichnis "your-overlay" im Buildroot-Verzeichnis erstellen, in dem Sie diese Struktur erstellen
your-overlay/etc/init.d/<any_file>
Dann sollten Sie in defconfig den Pfad zu diesem Overlay festlegen
System configuration > Root filesystem overlay directories
(oder finden Sie BR2_ROOTFS_OVERLAY)
Der empfohlene Pfad für diese Überlagerung lautet außerdem
board/<company>/<boardname>/rootfs-overlay
quelle