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

Lernen Sie die Ausführungsreihenfolge von SQL-Abfragen von Grund auf

Die Ausführungsreihenfolge der SQL-Abfrageanweisu...

JavaScript-Grundlagenreihe: Funktionen und Methoden

Inhaltsverzeichnis 1. Der Unterschied zwischen Fu...

HTML-Auswahloption So treffen Sie die Standardauswahl

Wenn Sie einer Option das Attribut selected = &quo...

2017 neueste Version der Windows-Installation MySQL-Tutorial

1. Laden Sie zunächst die neueste Version von MyS...

Eine vollständige Anleitung zu CSS-Stilattributen css() und width() in jQuery

Inhaltsverzeichnis 1. Grundlegende Verwendung von...

Zusammenfassung der schnellen Spaltenaddition bei MySQL 8.0 Online DDL

Inhaltsverzeichnis Problembeschreibung Historisch...

Erfahrungsaustausch zur Reparatur von MySQL InnoDB-Ausnahmen

Eine Reihe von MySQL-Bibliotheken zum Testen. Die...

So löschen Sie zusätzliche Kernel in Ubuntu

Schritt 1: Den aktuellen Kernel anzeigen rew $ un...

MySQL effiziente Abfrage Left Join und Gruppieren nach (plus Index)

MySQL effiziente Abfrage MySQL verzichtet auf „Gr...