Linux システムの busybox に mkfs.vfat コマンドを移植する

Linux システムの busybox に mkfs.vfat コマンドを移植する

オーディオおよびビデオ ファイルを保存するためのディスク寿命を延ばすには、ディスクをフォーマットするときに、より大きなクラスター サイズを設定することをお勧めします。保存されるオーディオ ファイルとビデオ ファイルは比較的大きいため、クラスター サイズを可能な限り大きく設定し、スペースをあまり浪費せずにディスク データ読み取りのパフォーマンスを向上させることができます。

しかし、デバイスの mkfs.vfat は、クラスター サイズを設定するための -s パラメーターをサポートしていないことがわかりました。

そこで、mkfs.vfat を再移植する予定です。

アイデア 1

ビジーボックスの再報告

1. 公式サイトから最新のbusyboxソースコードをダウンロードする

2. Makefileを変更する

ARCH = 腕

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

2.メニュー構成を作成する

静的ライブラリとして設定

3.作る

エラーが発生しました

作成: *** [busybox_unstripped] エラー 1
root@chenwr-pc:/home/soft/busybox-1.31.0# 作成する
 リンク busybox_unstripped
リンカーは --sort-section,alignment をサポートしていません
リンカーは --sort-common をサポートしていません
glibc に対する静的リンク、--gc-sections は使用できません
ライブラリを試す: crypt m resolv
失敗: -Wl,--start-group -lcrypt -lm -lresolv -Wl,--end-group
出力:
/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/arm-hisiv100nptl-linux-wall -wshadow -wwrite-strings-wundef-wstrict-prototy WDECLARATION-AFTER-STATEMENT -WOLD-STYLE-DEFINITION -FNO-BUILTIN-STRLEN -FINLINE-LIMIT = 0 -FOMIT-FOINTER-FUCTACTIONS-FDATA-SECTIONS -FNO-GUESS-BRANCH-PRANCH-FUNSINED-CHAR-LIBGCC -FALIGN-FALIGN-FALIGN-FALIGN-FALIGN-FALIGN-FALINC 1-FALIGN-LOOPS = 1 -FNO-UNWIND-TABLES -FNO-ASYNCHRONOUS-UNWIND-TABLES -FNO-BUILTEN-PRINTF -OS -STATIC -MARCH = ARMV7L -O BUSYBOX_UNSTRIPT-WL、​​ -  Start-Group Applets/Borting-in.o Arcival/lib.a Archive/lib.a ils/libcoreutils/lib.a debianutils/lib.a klibc-utils/lib.a e2fsprogs/lib.a editors/findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/ ils/lib.aネットワーキング/lib.aネットワーキング/libiproute/lib.aネットワーキング/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib. ival/libarchive/bedintin.o Console-Tools/bordin.o coreutils/bedintin.o coreutils/libcoreutils/bedintin.o debianutils/bedintin.o klibc-utils/build.o .o loginutils/bedintin.o mailutils/builtin.o miscutils/bortin.o modutils/bedutin.oネットワーキング/bedintin.oネットワーキング/libiproute/bedintin.oネットワーキング/udhcp/bedintin.o printin.o/buildin.o selin. util-linux/bilding.o util-linux/volume_id/bildingin.o -wl、 -  end-group -wl、 -  start-group -lcrypt -lm -lresolv -wl、 -  end-group
==========
networking/lib.a(ipcalc.o): 関数 `ipcalc_main' 内:
ipcalc.c:(.text.ipcalc_main+0x24c): 警告: gethostbyaddr は廃止されました。代わりに getaddrinfo() を使用してください。
libbb/lib.a(inet_common.o): 関数 `INET_resolve' 内:
inet_common.c:(.text.INET_resolve+0x60): 警告: gethostbyname は廃止されました。代わりに getnameinfo() を使用してください。
coreutils/lib.a(mktemp.o): 関数 `mktemp_main' 内:
mktemp.c:(.text.mktemp_main+0x8c): 警告: `mktemp' の使用は危険です。`mkstemp' を使用することをお勧めします。
networking/lib.a(nslookup.o): 関数 `add_query' 内:
nslookup.c:(.text.add_query+0x70): `res_mkquery' への未定義の参照
networking/lib.a(nslookup.o): 関数 `send_queries' 内:
nslookup.c:(.text.send_queries+0x2d0): `__ns_initparse' への未定義の参照
nslookup.c:(.text.send_queries+0x308): `__ns_parserr' への未定義の参照
nslookup.c:(.text.send_queries+0x480): `__ns_get16' への未定義の参照
nslookup.c:(.text.send_queries+0x5cc): `__ns_get32' への未定義の参照
nslookup.c:(.text.send_queries+0x5e4): `__ns_get32' への未定義の参照
nslookup.c:(.text.send_queries+0x5fc): `__ns_get32' への未定義の参照
nslookup.c:(.text.send_queries+0x614): `__ns_get32' への未定義の参照
nslookup.c:(.text.send_queries+0x628): `__ns_get32' への未定義の参照
util-linux/lib.a(fallocate.o): 関数 `fallocate_main' 内:
fallocate.c:(.text.fallocate_main+0x80): `posix_fallocate' への未定義の参照
util-linux/lib.a(unshare.o): 関数 `unshare_main' 内:
unshare.c:(.text.unshare_main+0x1ec): `unshare' への未定義の参照
collect2: ld は 1 の終了ステータスを返しました
注意: ビルドに追加のライブラリが必要な場合は、CONFIG_EXTRA_LDLIBS に配置します。
例: CONFIG_EXTRA_LDLIBS="pthread dl tirpc Audit pam"
作成: *** [busybox_unstripped] エラー 1

menuconfig を再作成し、設定を入力し、エラーを報告するモジュールを閉じてチェックを外します。

インターネット上の記述を参考にすると、まだ多くの誤りがあります。また、他のコマンドに影響する恐れがあるため、ネットワーク関連の機能やシステム構成の多くをシャットダウンしました。 ls コマンドなどの元の移植された busybox は、個別の bin ファイルではないことがわかったためです。代わりに、busyboxにソフトリンクされています

そして、デバイスのスペースが限られていることがわかりました。元のbusyboxは800k以上しかなく、新しい移植が成功したとしても2M以上かかります。そこで考えを変えて、ソースコードだけからmkfs.vfatを移植しました

これでコマンドの移植は完了です。

要約する

上記は、Linux システムの busybox に mkfs.vfat コマンドを移植する方法について紹介したものです。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Dockerはbusyboxを使用してベースイメージを作成します
  • Telnet は Alpine イメージの busybox-extras に移動されました
  • Androidデバイスがawkコマンドを認識せず、busyboxがない場合の対処方法

<<:  MySQL における主キーが 0 であることと主キーの自己選択制約の関係についての詳しい説明 (詳細)

>>:  Vue 開発ガイドの重要な知識の要約

推薦する

ウェブページの再設計の7つの主要要素 ウェブページの再設計の7つの主要要素を共有する

Shopify Plus は、私たちが設立した e コマース プラットフォームのエンタープライズ バ...

sqlalchemy に基づいて MySQL で追加、削除、変更、クエリ操作を実装する

需要シナリオ:上司は、クロ​​ーラーを使用してMySQLデータベースにデータを書き込んだり更新したり...

Zabbixリモートコマンド実行の詳細な例

目次1つ。環境二。予防三つ。例Zabbix トリガーがしきい値に達すると、アラート メッセージの送信...

MySQL から Excel にテーブルデータをエクスポートする際の日時形式に関する簡単な説明

最近、MySQL を使用してテーブル データを Excel ファイルにエクスポートしました。MySQ...

Ubuntu での Subversion (SVN) の詳細なインストールと設定

ソフトウェア開発者であれば、Subversion に精通している必要があります。 Subversio...

MySQL の自動増分主キーが使い果たされた場合の対処方法

面接では、次のようなシナリオを経験する必要があります。インタビュアー: 「MySQL を使用したこと...

MySQL パフォーマンス最適化のヒント

MySQL パフォーマンスの最適化MySQL はインターネット企業で広く使用されており、MySQL ...

Mac での MySQL と Squel Pro の設定

Node.js の人気に応えて、最近、いくつかのサーバー側機能を実装するために Node.js を使...

MySQL 8.0.19 では、間違ったパスワードを 3 回入力するとアカウントがロックされるようになりました (例)

MySQL 8.0.19 では、間違ったパスワードを 3 回入力するとアカウントがロックされるよう...

MySQL ピボットテーブルについての簡単な説明

次のような製品部品表があります。一部 部品ID 部品タイプ 製品ID ---------------...

macOS での MySQL 8.0.16 のインストールと設定のグラフィック チュートリアル

この記事では、macOSでのMySQL 8.0.16のインストールと設定のチュートリアルを参考までに...

mysql replace into の使用法の詳細な説明

replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...

JavaScript でカウントダウン効果を実装する

カウントダウン効果を実現するにはJavascriptを使用します。参考までに、具体的な内容は次のとお...