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 開発ガイドの重要な知識の要約

推薦する

js は axios 制限リクエスト キューを実装します

目次背景は次のとおりです。何が起こるでしょうか?背景は次のとおりです。実際の開発では、ネットワークの...

Dockerイメージ内のファイルを表示する方法

Dockerイメージ内のファイルを表示する方法1. すでに実行中の場合すでに実行中のイメージについて...

Alibaba Cloud OSS アクセス権設定(RAM 権限制御)実装

シナリオmyBuket の static/material/ ディレクトリなど、Alibaba Cl...

HTML タグ マーキーはさまざまなスクロール効果を実現します (JS 制御なし)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

MySQLインデックスとは何ですか?わからない場合は聞いてください

目次概要二分木からB+木へクラスター化インデックス非クラスター化インデックスジョイントインデックスと...

HTMLエンコードによる文字化け問題について

今日、3年生から質問がありました。彼が書いた HTML コードを開くと、文字化けした文字が表示されま...

MySQLでバッチを更新するいくつかの方法

通常、フィールド値を更新するには次の SQL ステートメントを使用します。 mytable を更新し...

Linux で TCP 接続の最大数をテストする方法

序文TCP サーバの最大同時接続数に関して、「ポート番号の上限が 65535 であるため、TCP サ...

Linux システムで Centos7 を使って ElasticSearch ミドルウェアと共通インターフェースを構築するデモ

1. ミドルウェアの紹介1. 基本概念ElasticSearch は Lucene をベースにした検...

Vue Element-ui フォーム検証ルールの実装

目次1. はじめに2. ルール検証の入力モード2.1 サンプルコード2.2、フォーム項目2.3. 小...

HTML 要素 (タグ) とその使用法

a : ハイパーリンクの開始位置または宛先位置を示します。頭字語: 単語の最初の文字からなる略語を示...

MySQLトリガーの使用

目次1. トリガーの紹介1. トリガーとは何ですか? 2. トリガーの特徴2. トリガーを作成する1...

Linux で文字列を整理するためのヒント

Linuxの操作では、ファイル内の文字列を置換したりカウントしたりすることが多いです。ここでまとめを...

IE6 で CSS スタイルの div または li の背景のタイリングと境界の破損を解決する方法

IE6 で CSS スタイルの div または li の背景のタイリングや境界の破壊を解決するには、...

格納可能なセカンダリメニューを実装するための JavaScript

JavaScriptで格納可能なセカンダリメニューを実装するための具体的なコードは参考までに。具体...