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

Zusammenfassung der Dateninteraktion zwischen Docker-Container und Host

Vorwort Beim Einsatz von Docker in einer Produkti...

So öffnen Sie Ports zur Außenwelt in Alibaba Cloud Centos7.X

Kurz gesagt: Wenn Sie einen Cloud-Server eines be...

Detaillierte grafische Erläuterung der MySql5.7.18-Zeichensatzkonfiguration

Hintergrund: Vor langer Zeit (2017.6.5, der Artik...

Vue verwendet drei Methoden zum Aktualisieren der Seite

Beim Schreiben von Projekten stoßen wir häufig au...

Detaillierte Erläuterung der MySQL-Benutzervariablen und Set-Anweisungsbeispiele

Inhaltsverzeichnis 1 Einführung in Benutzervariab...

Einführung in die Verwendung gängiger XHTML-Tags

Es gibt viele Tags in XHTML, aber nur wenige werd...