私のAndroid携帯電話(snapdragon650と3GB RAM)にchrooted debian(arm64)をインストールしようとしています。私はそれに関する多くのチュートリアルを見つけました。ほとんどすべてのガイドでは、chrooted debian用のimgを生成するためのこのコマンドについて説明します。
dd if=/dev/zero of=jessie-arm64.img bs=1M count=0 seek=5120
ここでbs = 1Mです。私はddについてよく知りません。しかし、私の考えでは、bsパラメータが次に影響を与えるようです。
- img 読み書き速度
- ファイルのスペース割り当てとファイルサイズ
私はarm64用のソースコードをコンパイルし、いくつかの重いGUIプログラム(openboxまたはxfceで)を実行するためにchroot環境を使用します。私はbsの値が読み書き速度と空間利用の両方に最適であることを望みます。
答え1
パラメータcount=0
は次のとおりです。非常にここで重要なのは、このコマンドは特定のサイズのファイルを作成するためにのみ使用され、実際には何もコピーしないことです。
だからいいえ optimal value for bs
ハードウェアの観点から
生成されたファイルのサイズはbs * seek
。 1MB bsを使用すると、5120MBのサイズのファイルを作成していることが簡単にわかります。
システムコールレベルでは、これは単に実行と呼び出しopen
ですlseek
。 ddは計算をclose
実行し、それをシステムコールに渡します。だから生産するbs * seek
lseek
bs if=/dev/zero seek=5368709120 bs=1 of=jesse-arm64.img
正確に同じシステムコール。
答え2
まず、コマンドに関するいくつかの詳細
dd if=/dev/zero of=jessie-arm64.img bs=1M count=0 seek=5120
~からdd マニュアルページ:
if = FILEはstdinの代わりにFILEから読み取られます。
of = FILEはstdoutの代わりにFILEに書き込みます。
bs = BYTESは一度に最大BYTESバイトを読み書きします。
count = NはN個の入力ブロックのみをコピーします。
eek = Nは、出力開始時にN個のobsサイズチャンクをスキップします。
count=0
コピーする入力チャンクは0個ですが、スキップするseek=5120
サイズのチャンクは5120個です。出力ブロックサイズです。私たちの場合は指定されていません。obs
obs
obs=bs=1M
必要に応じて削除しif=/dev/zero
て同じ結果を得ることもできます。
dd of=jessie-arm64.img bs=1M count=0 seek=5120
今問題はbs
私たちが持っている最適な価値です。dd ソースコードcount=0
ブロックがコピーされても、我々はseek=5120
(seek_records
ソースコードから)値を持ち、bs
(obs
、intソースコードから)値を使用します。output_blocksize
if (seek_records != 0 || seek_bytes != 0)
{
size_t bytes = seek_bytes;
uintmax_t write_records = skip (STDOUT_FILENO, output_file,
seek_records, output_blocksize, &bytes);
if (write_records != 0 || bytes != 0)
{
memset (obuf, 0, write_records ? output_blocksize : bytes);
do
{
size_t size = write_records ? output_blocksize : bytes;
if (iwrite (STDOUT_FILENO, obuf, size) != size)
{
error (0, errno, _("writing to %s"), quoteaf (output_file));
quit (EXIT_FAILURE);
}
if (write_records != 0)
write_records--;
else
bytes = 0;
}
while (write_records || bytes);
}
}
最適な値はbs
ハードウェアによって異なります。記事測定方法について説明します。答えが長すぎるので、ここでは詳しく説明しません。
コメント:
1)次のコマンドを使用して、16進形式の画像を観察できます。
cat jessie-arm64.img | xxd
2)これはddコマンドに有効です。GNUコアツール。 BSDスタイルのdd
コマンド(macOSなど)をbs=1m
使用している場合bs=1M
。