ローカルで複製した画像をインストールする予定ですdd
。このイメージは512 GBのストレージ容量のmSATAディスクに対応し、Ubuntuの最下位バージョンにはほとんど構成がありません。したがって、現実的にデータを含むコンテンツは3 GBを超えてはいけません。
ただし、リソースと空間効率のために、次のコマンドを使用してgzで画像を圧縮しました。
dd bs=64K if=/dev/sdd conv=sync,noerror status=progress | gzip -c > /image.img.gz
/dev/sdd
問題のディスクはどこにありますか?その中に2.4GBの圧縮画像が生成されますが、解凍しようとすると当然オリジナルの512GBを占めるようになります。
圧縮イメージを別のディスクに書き込むには、次のコマンドを使用します。
gunzip -c /image.img.gz | dd bs=64K of=/dev/sdy status=progress
しかし、今は別のディスクに書き込むのではなく、特定のディスクに書き込む前にいくつかの変更や設定をしたいので、セットアップユーティリティを使って自分のシステムにインストールします。ところでディスク容量(512GB)が足りません。
直接圧縮してマウントする方法はありますか?そうでない場合は、ディスクを複製してスペースを少なくする方法はありますか?
答え1
画像はうまく圧縮されているので、ヌルバイトが多く含まれる可能性があります。 SSD は、fstrim
ファイルシステムで一時的に使用されていないセクタに対して NULL バイトを返すことがよくあります。この場合、.gz
アーカイブをスパースファイルに解凍する必要があります。これが正常に機能するには、ターゲットファイルシステムがスパースファイルをサポートする必要があります。コマンド例:
gunzip -c /image.img.gz | cp --sparse=always /dev/stdin /path/to/store/image.img
cp --sparse=always
代わりに使用できますが、dd conv=sparse
次の点に注意してください。dd conv=sparse
予想以上にスペースが節約されないのはなぜですか?
別のコンソールで実行しwatch ls -hls /path/to/store/image.img
、最初と6番目の列を観察してください。列6の数字は約512GBに増加します。列 1 の数字は、解凍されたイメージがディスク上に占めるスペースの量と同じくらい少なくなければなりません。
kpartx
次に、Accessでパーティションを使用するか、または/path/to/store/image.img
(fdisk -l /path/to/store/image.img
またはgdisk -l …
)mount -o offset=…
イメージから直接インストールします。お使いのコンピュータが/dev/sdd
スーパーフロッピーである場合(パーティションはなく、ファイルシステムのみ)mount /path/to/store/image.img /the/mountpoint
。