Detaillierte Schritte zum Portieren von Busybox zum Erstellen eines minimalen Root-Dateisystems

Detaillierte Schritte zum Portieren von Busybox zum Erstellen eines minimalen Root-Dateisystems

Busybox: Ein Schweizer Taschenmesser voller kleiner Befehle.

SCHRITT 1: Erstellen Sie eine Verzeichnisstruktur

Erstellen Sie das Stammdateisystemverzeichnis, das hauptsächlich die folgenden Verzeichnisse enthält

/dev /etc /lib /usr /var /proc /tmp /home /root /mnt /bin /sbin /sys
#mkdir /home/rootfs
#cd /home/rootfs
#mkdir dev usw. lib usr var proc tmp home root mnt sys

SCHRITT 2: Verwenden Sie busybox zum Erstellen von /bin /sbin linuxrc

Wechseln Sie in das Verzeichnis busybox-1.16.1 und führen Sie es aus

#defconfig erstellen
#Menükonfiguration erstellen
Busybox-Einstellung ----->
 Build-Optionen -----> 
  //1 Wählen Sie die statische Kompilierung von Busybox. [*]BusyBox als statische Binärdatei erstellen (keine gemeinsam genutzten Bibliotheken) 
  //2. Geben Sie den Cross-Compiler als (/usr/local/arm/4.3.2/bin/arm-linux-)Cross-Compiler-Präfix an
Installationsoptionen -----> (Wählen Sie das Verzeichnis zum Speichern der generierten Dateien aus, oder Sie können sie ohne Kopieren direkt in das Root-Dateisystem einfügen.)

  //3. Wählen Sie „/usr nicht verwenden“ 
Busybox-Bibliotheksoptimierung---> 
 [*]Benutzernamen-Vervollständigung 
 [*]Ausgefallene Shell-Eingabeaufforderungen 
 [*]Cursorposition vom Terminal abfragen 
  //4. Der kompilierte Busybox-Shell-Befehlsinterpreter unterstützt die Anzeige des aktuellen Pfads und der Hostinformationen

Speichern und beenden

#make #make installieren

Im Busybox-Verzeichnis finden Sie das Verzeichnis _install, das drei Dateien enthält: /bin /sbin und linuxrc. Kopieren Sie diese drei Verzeichnisse bzw. Dateien in den im ersten Schritt erstellten Rootfs-Ordner.

#cp bin/ sbin/ linuxrc /home/rootfs -ra

Denken Sie daran, den Parameter -a anzugeben, da das Bin-Verzeichnis größtenteils aus Links besteht. Wenn Sie den Parameter -a nicht angeben, wird er nach dem Kopieren entsprechend kopiert und hat nicht mehr die Form eines Links.

SCHRITT 3 Erstellen Sie das Verzeichnis etc: (hauptsächlich die Datei etc/inittab, etc/init.d/rcs, etc/fstab)

1) Wechseln Sie in das Verzeichnis etc. des Root-Dateisystems rootfs und führen Sie die folgenden Vorgänge aus:

Kopieren Sie Busybox-1.16.1/examples/bootfloopy/etc/* in das aktuelle Verzeichnis

 #cp –r busybox-1.16.1/Beispiele/bootfloopy/usw./* rootfs/usw.

Ändern Sie inittab (erstellen Sie darauf basierend andere Unterprozesse).

Die Originaldatei ist:

1 ::sysinit:/etc/init.d/rcS 2 ::respawn:-/bin/sh 
    3 tty2::askfirst:-/bin/sh 4 ::ctrlaltdel:/bin/umount -a -r

Nach der Änderung:

---(1): Starten Sie den Computer, ohne sich anzumelden, und öffnen Sie direkt die Shell (die Zahl davor ist die Zeilennummer).

1 ::sysinit:/etc/init.d/rcS 
        2 #::respawn:-/bin/sh 
        3 #::respawn:-/bin/login 
        4 console::askfirst:-/bin/sh 
        5 #tty2::askfirst:-/bin/sh 6 ::ctrlaltdel:/bin/umount -a -r

---(2): Zum Booten müssen Sie sich anmelden (die Zahl davor ist die Zeilennummer)

 1 ::sysinit:/etc/init.d/rcS 
        2 #::respawn:-/bin/sh 
      3 ::respawn:-/bin/login 
        4 #console::askfirst:-/bin/sh 
       5 #tty2::askfirst:-/bin/sh 
       6 ::ctrlaltdel:/bin/umount -a -r

2) Kopieren Sie /etc/passwd, /etc/group, /etc/shadow auf der virtuellen Maschine nach rootfs/etc

  # cp /etc/passwd rootfs/etc
  # cp /etc/Gruppe rootfs/etc 
  # cp /etc/Schattendächer/etc

Ändern Sie die folgenden drei Dateien und speichern Sie nur die Elemente, die sich auf root beziehen. Der Inhalt variiert je nach der jeweiligen Situation.

Ändern Sie das Passwort in root:x:0:0:root:/root:/bin/sh, was bedeutet, dass nur mit root in Zusammenhang stehende Elemente gespeichert werden, und ändern Sie es abschließend in /bin/ash.

Ändern Sie die Gruppe in root:x:0:root

Schatten zur root:$1$x9yv1WlB$abJ2v9jOlOc9xW/y0QwPs.:14034:0:99999:7:::

Wenn Sie sich beim Entwicklungsboard anmelden, müssen Sie Ihren Benutzernamen und Ihr Passwort eingeben, die mit denen der virtuellen Maschine identisch sind.

3) Profil ändern

PATH=/bin:/sbin:/usr/bin:/usr/sbin //Umgebungsvariable für ausführbares Programm export LD_LIBRARY_PATH=/lib:/usr/lib //Umgebungsvariable für dynamische Linkbibliothek /bin/Hostname osee
  BENUTZER="`id -un`"
  LOGNAME=$USER
  HOSTNAME='/bin/hostname'
  PS1='[\u@\h \W]# ' //Hostnamen, aktuellen Pfad und weitere Informationen anzeigen:

4) Ändern Sie die Datei etc/init.d/rc.S (fügen Sie Befehle zur automatischen Ausführung hinzu) #! /bin/sh

/bin/mount -n -t ramfs ramfs /var 
   /bin/mount -n -t ramfs ramfs /tmp
  /bin/mount -n -t sysfs keine /sys
  /bin/mount -n -t ramfs keine /dev
  /bin/mkdir /var/tmp
  /bin/mkdir /var/modules
  /bin/mkdir /var/run
  /bin/mkdir /var/log
  /bin/mkdir -p /dev/pts //Erforderlich für den Telnet-Dienst /bin/mkdir -p /dev/shm //Erforderlich für den Telnet-Dienst #echo /sbin/mdev > /proc/sys/kernel/hotplug //Automatisches USB-Mounting erfordert /sbin/mdev -s //Starten Sie mdev, um automatisch Gerätedateiknoten unter /dev zu erstellen /bin/mount -a 
  ########Netzwerk konfigurieren######################################
  /sbin/ifconfig lo 127.0.0.1 Netzmaske 255.0.0.0
  /sbin/ifconfig eth0 192.168.1.70
  /sbin/ifconfig eth0 Netzmaske 255.255.255.0
  /sbin/route add default gw 192.168.1.1 eth0
  /sbin/ifconfig eth1 192.168.1.71 Netzmaske 255.255.255.0
  /sbin/route add default gw 192.168.1.1 eth1

5) Ändern Sie die Datei etc/fstab und fügen Sie die folgende Datei hinzu, um das proc tmpfs-Dateisystem zu mounten

#Geräte-Einhängepunkt-Typ Optionen Dump Fsck Reihenfolge
  keine /dev/pts devpts Modus=0622 0 0
  tmpfs /dev/shm tmpfs-Standardwerte 0 0
  proc /proc proc-Standardwerte 0 0

SCHRITT 4 Erstellen Sie das Lib-Verzeichnis:

(~/at91/x-tools/arm-zch-linux-gnueabi/arm-zch-linux-gnueabi/sysroot/lib, ich kopiere einfach die SO-Datei in dieses Verzeichnis)

1 )#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib

Kopieren Sie die folgenden dynamischen Bibliotheken nach rootfs/lib

#cp *so* roofs/lib -a

2 )#cd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib

Kopieren Sie die folgenden dynamischen Bibliotheken nach rootfs/lib

#cp ./libstdc++.so.* rootfs/lib -a

SCHRITT 5 Erstellen Sie das lmdev-Verzeichnis:

Methode 1: Gerätedateien statisch erstellen cat /proc/devices

mknod-Konsole c 5 1
mknod null c 1 3
mknod ttySAC0 c 204 64
mknod mtdblock0 b 31 0

Methode 2: Verwenden Sie mdev, um eine Gerätedatei zu erstellen

Stellen Sie sicher, dass Ihr Kernel CONFIG_SYSFS CONFIG_TMPFS einstellt

Beim Start des Kernels wird mdev automatisch ausgeführt

Ändern Sie etc/fstab, um das Root-Dateisystem automatisch zu mounten. Ändern Sie etc/init.d/rcS, um automatisch auszuführende Befehle hinzuzufügen.

Zusammenfassen

Oben sind die detaillierten Schritte zum Transplantieren von Busybox zum Erstellen eines minimalen Root-Dateisystems, die vom Herausgeber vorgestellt wurden. Ich hoffe, dass es für alle hilfreich sein wird. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Transplantieren des Befehls mkfs.vfat in Busybox unter Linux
  • Docker verwendet Busybox, um ein Basis-Image zu erstellen
  • Telnet wird im Alpine-Image zu busybox-extras verschoben
  • Was tun, wenn das Android-Gerät den awk-Befehl nicht erkennt und keine Busybox hat?

<<:  Mysql aktualisiert bestimmte Felder einer anderen Tabelle basierend auf Daten aus einer Tabelle (SQL-Anweisung)

>>:  Detaillierter Vergleich von Ember.js und Vue.js

Artikel empfehlen

Vue implementiert Klick-Feedback-Anweisungen für den Wasserwelleneffekt

Inhaltsverzeichnis Wasserwelleneffekt Sehen wir u...

JS implementiert einen einfachen Zähler

Verwenden Sie HTML, CSS und JavaScript, um einen ...

JavaScript verwendet Canvas zum Zeichnen von Koordinaten und Linien

In diesem Artikel wird der spezifische Code zur V...

Schritte zum Erstellen der MHA-Architekturbereitstellung in MySQL

Inhaltsverzeichnis MAH 1. Einführung in die MAH-A...

So laden Sie die Kamera in HTML

Wirkungsdiagramm: Gesamtwirkung: Video wird gelad...

WeChat-Applet implementiert Suchfunktion und springt zur Suchergebnisseite

Suchseite: search.wxml-Seite: <view class=&quo...

Teilen Sie 8 sehr nützliche CSS-Entwicklungstools

CSS3-Mustergalerie Diese CSS3-Musterbibliothek ze...

Zusammenfassung der Vorteile der Bereitstellung von MySQL Delayed Slaves

Vorwort Die Master-Slave-Replikationsbeziehung vo...

Detaillierter Vergleich von Ember.js und Vue.js

Inhaltsverzeichnis Überblick Warum ein Framework ...

So installieren Sie PostgreSQL und PostGIS mit yum auf CentOS7

1. Aktualisieren Sie die Yum-Quelle Die PostgreSQ...

Hallo – Erfahrungsaustausch zum Entwurf von Dialogfeldern

„Was ist los?“ Sofern Sie nicht an bestimmte Arten...

Vue Grundanleitung Beispiel grafische Erklärung

Inhaltsverzeichnis 1. v-on-Richtlinie 1. Grundleg...