Transplantieren des Befehls mkfs.vfat in Busybox unter Linux

Transplantieren des Befehls mkfs.vfat in Busybox unter Linux

Um die Lebensdauer der Festplatte zum Speichern von Audio- und Videodateien zu verlängern, wird empfohlen, beim Formatieren der Festplatte eine größere Clustergröße einzustellen. Da die gespeicherten Audio- und Videodateien relativ groß sind, wird die Clustergröße so groß wie möglich eingestellt, wodurch die Leistung beim Lesen der Daten von der Festplatte verbessert werden kann, ohne zu viel Speicherplatz zu verschwenden.

Wir haben jedoch festgestellt, dass mkfs.vfat unseres Geräts den Parameter -s zum Festlegen der Clustergröße nicht unterstützt.

Daher plane ich, mkfs.vfat erneut zu portieren.

Idee 1

Busybox erneut melden

1. Laden Sie den neuesten Busybox-Quellcode von der offiziellen Website herunter

2. Makefile ändern

ARCH =Arm

CROSS_COMPILE = /opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/arm-hisiv100nptl-linux- 

2. Menükonfiguration erstellen

Als statische Bibliothek festlegen

3. machen

Ein Fehler ist aufgetreten

make: *** [busybox_unstripped] Fehler 1
root@chenwr-pc:/home/soft/busybox-1.31.0# make
 LINK busybox_unstripped
Ihr Linker unterstützt --sort-section,alignment nicht
Ihr Linker unterstützt --sort-common nicht
Statisches Verknüpfen mit glibc, --gc-sections kann nicht verwendet werden
Ausprobieren von Bibliotheken: crypt m resolv
Fehlgeschlagen: -Wl,--start-group -lcrypt -lm -lresolv -Wl,--end-group
Ausgabe von:
/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/arm-hisiv100nptl-linux-gcc -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement -Wold-style-definition -fno-builtin-strlen -finline-limit=0 -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-builtin-printf -Os -static -march=armv7l -o busybox_unstripped -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a klibc-utils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o klibc-utils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -lresolv -Wl,--end-group
==========
networking/lib.a(ipcalc.o): In der Funktion „ipcalc_main“:
ipcalc.c:(.text.ipcalc_main+0x24c): Warnung: gethostbyaddr ist veraltet, verwenden Sie stattdessen getaddrinfo().
libbb/lib.a(inet_common.o): In der Funktion „INET_resolve“:
inet_common.c:(.text.INET_resolve+0x60): Warnung: gethostbyname ist veraltet, verwenden Sie stattdessen getnameinfo().
coreutils/lib.a(mktemp.o): In der Funktion „mktemp_main“:
mktemp.c:(.text.mktemp_main+0x8c): Warnung: Die Verwendung von „mktemp“ ist gefährlich, verwenden Sie besser „mkstemp“.
networking/lib.a(nslookup.o): In der Funktion „add_query“:
nslookup.c:(.text.add_query+0x70): undefinierter Verweis auf „res_mkquery“
networking/lib.a(nslookup.o): In der Funktion „send_queries“:
nslookup.c:(.text.send_queries+0x2d0): undefinierter Verweis auf „__ns_initparse“
nslookup.c:(.text.send_queries+0x308): undefinierter Verweis auf „__ns_parserr“
nslookup.c:(.text.send_queries+0x480): undefinierter Verweis auf „__ns_get16“
nslookup.c:(.text.send_queries+0x5cc): undefinierter Verweis auf „__ns_get32“
nslookup.c:(.text.send_queries+0x5e4): undefinierter Verweis auf „__ns_get32“
nslookup.c:(.text.send_queries+0x5fc): undefinierter Verweis auf „__ns_get32“
nslookup.c:(.text.send_queries+0x614): undefinierter Verweis auf „__ns_get32“
nslookup.c:(.text.send_queries+0x628): undefinierter Verweis auf „__ns_get32“
util-linux/lib.a(fallocate.o): In der Funktion „fallocate_main“:
fallocate.c:(.text.fallocate_main+0x80): undefinierter Verweis auf „posix_fallocate“
util-linux/lib.a(unshare.o): In der Funktion „unshare_main“:
unshare.c:(.text.unshare_main+0x1ec): undefinierter Verweis auf „unshare“
collect2: ld hat 1 Exit-Status zurückgegeben
Hinweis: Wenn der Build zusätzliche Bibliotheken benötigt, legen Sie diese in CONFIG_EXTRA_LDLIBS ab.
Beispiel: CONFIG_EXTRA_LDLIBS="pthread dl tirpc audit pam"
make: *** [busybox_unstripped] Fehler 1

Erstellen Sie die Menükonfiguration neu, geben Sie die Einstellungen ein, schließen Sie das Modul, das einen Fehler meldet, und deaktivieren Sie es.

Betrachtet man die Aussagen im Internet, so finden sich dort noch viele Fehler. Und ich habe eine Menge Netzwerkkram und Systemkonfigurationen heruntergefahren, aus Angst, dass dies andere Befehle beeinträchtigen könnte. Weil ich festgestellt habe, dass die ursprünglich portierte Busybox, wie beispielsweise der Befehl ls, keine separate Bin-Datei ist. Stattdessen ist es mit busybox verknüpft

Und ich habe festgestellt, dass der Speicherplatz des Geräts begrenzt ist. Die ursprüngliche Busybox hat nur mehr als 800 KB, und selbst wenn die neue Transplantation erfolgreich ist, werden mehr als 2 MB benötigt. Also änderte ich meine Meinung und transplantierte mkfs.vfat allein aus dem Quellcode

Damit ist die Befehlstransplantation abgeschlossen.

Zusammenfassen

Oben habe ich Ihnen das Portieren des Befehls mkfs.vfat in Busybox unter Linux vorgestellt. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde 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:
  • 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?

<<:  Detaillierte Erklärung der Beziehung zwischen dem Primärschlüsselwert 0 und der Selbstauswahlbeschränkung des Primärschlüssels in MySQL (Details)

>>:  Zusammenfassung der wichtigsten Erkenntnisse des Vue-Entwicklungshandbuchs

Artikel empfehlen

Einführung in RHCE-Bridging, passwortfreie Anmeldung und Portnummernänderung

Inhaltsverzeichnis 1. Konfigurieren Sie Bridging ...

So testen Sie die Netzwerkgeschwindigkeit mit JavaScript

Inhaltsverzeichnis Vorwort Zusammenfassung des Pr...

Implementierung der MySQL-Datendesensibilisierung (Telefonnummer, ID-Karte)

1. Erklärung zur Datendesensibilisierung Bei den ...

So aktivieren Sie das Root-Konto in Ubuntu 20.04

Nach der Installation von Ubuntu 20.04 gibt es st...

Implementierung der IP-Adresskonfiguration in Centos7.5

1. Bevor Sie die IP-Adresse konfigurieren, verwen...

Vue CodeMirror realisiert den Effekt des Online-Code-Compilers

Vorwort Wenn wir den Effekt der Online-Codekompil...

So starten Sie mehrere MySQL-Instanzen in CentOS 7.0 (mysql-5.7.21)

Konfigurationsanweisungen Linux-System: CentOS-7....

Tutorial zu XHTML-Webseiten

Dieser Artikel soll vor allem Anfängern einige gr...

Einführung in Abfragebefehle für gespeicherte MySQL-Prozeduren

Wie unten dargestellt: Wählen Sie den Namen aus m...