diskimage.part1
低速の外付け(USB 2)ハードドライブに2つのファイルがあるため、次diskimage.part2
の作業を行う必要があります。
cat diskimage.part{1,2} > diskimage
mount -o ro,loop diskimage /tmp/mountpoint
ただし、これをcat
完了するには数時間かかり、ディスクイメージはサイズが大きいためどこにも合いません。
このディスクイメージで使用できる「catの怠惰なバージョン」はありますか?それはまるで
losetup --readonly /dev/loopX --concatenate diskimage.part*
mount -o ro /dev/loopX /tmp/mountpoint
(ただしlosetup --concatenate
存在しない)
答え1
たぶんあなたが使用したいかもしれませんmdadm
$ losetup --readonly /dev/loop1 diskimage.part1
$ losetup --readonly /dev/loop2 diskimage.part2
$ mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop1 /dev/loop2
$ mount -o ro /dev/md0 /tmp/mountpoint
答え2
diskimageとdiskimage2に少なくとも十分な空き容量がある場合は、後者を古いファイルに追加できます。
cat diskimage.part2 >> diskimage.part1 && mv diskimage.part1 diskimage
また、多くのデータを移動する必要がないため、両方をコピーするよりも高速です。ただし、速度上の理由から、他の高速デバイスをカスケード接続することをお勧めします。
十分な空き容量がない場合は、別の(おそらく外部)デバイスを使用してディスクイメージファイルを作成してください。
答え3
mdadm --create
私はループデバイスに書きたいと思っていましたが、うまくいくかどうかを確認するのに十分な勇気がなかったので、dmsetupを使ってより良い解決策を見つけました。はい、LVMはそうです。職業に適しています。
losetup --read-only /dev/loop1 diskimage.part1 # For this example, 5120 bytes
losetup --read-only /dev/loop2 diskimage.part2 # For this example, 2560 bytes
echo -e "0 10 linear /dev/loop1 0 \n10 5 linear /dev/loop2 0" | dmsetup create merge0
mount -o ro /dev/mapper/merge0 /tmp/mountpoint
説明:
dmsetup
LVM を管理するコマンドです。新しいマッピングされたデバイスを作成するときに使用し、dmsetup create <dev_name>
マッピングを説明するテーブルも必要です。デフォルトでは、テーブルは標準入力で提供されます。
テーブルは次の形式の行で構成されていますstart_sector number_sectors target_type [target_type_arguments]
。セクタは512バイトで構成されています。この例では、linear
マップするファイルとマップするファイルのオフセット(セクター単位)をパラメータとして使用するマップを使用します。この例では、ファイル内のどの項目もスキップしないと仮定するため、値は0に設定されています。
このコマンドは、新しいデバイスの場合、merge0
最初の10個のセクタがにマッピングされ、/dev/loop1
次の5個のセクタがにマッピングされることを意味します/dev/loop2
。
新しい機器が市場に発売される予定です/dev/mapper/merge0
。partprobe
イメージにパーティションが含まれている場合は、それを実行してパーティションを読み取る必要があります。
より多くの情報を見ることができますここ(特にTABLE_FORMATセクションで)いくつかの非常に便利な例を見つけることができます。ここ。
完全に間違ったコマンドを提供しましたが、正しい方向を教えてくれたchatGPTに感謝します。