img
次のコマンドでファイルを作成しました。
dd if=/dev/zero bs=2M count=200 > binary.img
ゼロのファイルだけですが、それを使用してfdisk
パーティションテーブルを作成できます。
# fdisk binary.img
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x51707f21.
Command (m for help): p
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x51707f21
パーティションがあるとします。
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-819199, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-819199, default 819199):
Created a new partition 1 of type 'Linux' and of size 399 MiB.
Command (m for help): w
The partition table has been altered.
Syncing disks.
パーティションテーブルを確認すると、次の結果が表示されます。
Command (m for help): p
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7f3a8a6a
Device Boot Start End Sectors Size Id Type
binary.img1 2048 819199 817152 399M 83 Linux
だからパーティションが存在します。 gpartedでパーティションをフォーマットしようとすると、次のエラーが発生します。
なぜ見えるのかわからず、binary.img1
ライブコマンドでパーティションをフォーマットする方法もわかりません。
ext4ファイルシステムを使ってフォーマットする方法を知っている人はいますか?
答え1
ループバック機能により、ディスクイメージと個々のパーティションにアクセスできます。特定のディスクユーティリティがディスクイメージで(合理的に)スムーズに実行されることを発見しました。しかし、mkfs
その一つではありません(まだ奇妙なことにmount
)。
出力は次のとおりですfdisk -lu binary.img
。
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes ... Device Boot Start End Sectors Size Id Type binary.img1 2048 819199 817152 399M 83 Linux
作成したパーティションにアクセスするには、いくつかのオプションがあります。
明確なパス
losetup --offset $((512*2048)) --sizelimit $((512*817152)) --show --find binary.img /dev/loop0
出力は
/dev/loop0
割り当てられたループ装置の名前です。この--offset
パラメータは、単にパーティションのオフセット(Start
)とセクタサイズ(512
)を掛けたものです。--sizelimit
むしろ、パーティションのサイズは次のように計算できます。 End-Start+1(819199-2048+1=817152)、この数にセクタのサイズを掛ける必要があります。/dev/loop0
その後、パーティショニングの参照として使用できます。mkfs -t ext4 -L img1 /dev/loop0 mkdir -p /mnt/img1 mount /dev/loop0 /mnt/img1 ... umount /mnt/img1 losetup -d /dev/loop0
暗黙的なルーティング
losetup --partscan --show --find binary.img /dev/loop0
出力は、
/dev/loop0
割り当てられたメインループデバイスの名前です。この--partscan
オプションは、カーネルにパーティションテーブルからデバイスを検索し、セカンダリループデバイスを自動的に割り当てるように指示します。パーティションを使用している場合は、/dev/loop0p1
そのパーティションへの参照として使用することもできます。mkfs -t ext4 -L img1 /dev/loop0p1 mkdir -p /mnt/img1 mount /dev/loop0p1 /mnt/img1 ... umount /mnt/img1 losetup -d /dev/loop0
答え2
通常、これを行う別の方法がありますkpartx
。いいえkde 関連)
sudo kpartx -a binary.img
/dev/mapper
これで、すべてのパーティションデバイスを次のように定義する必要があります。ループ0p1、ループ0p2、...
それから
sudo mkfs.ext4 /dev/mapper/loop0p1
または、完了したら、以下を実行することもできます。
sudo kpartx -d binary.img
loop0pを削除しますか?装備
答え3
なぜ探しているのかわかりません。
binary.img1
(…binary.img2
後でコメントで埋められました。)
これは、これらのツールがファイル名が特定のパターンに従うことを期待しているためです。このモードは、システムの物理ディスクとディスクボリュームのデバイスファイルで使用されるモードです。
- ディスク全体を含むデバイスファイルには名前が付けられます
sda
(または別の名前で指定)。これがfdisk
悪用されると予想されるものです。 - ディスクの各スライス(対応するパーティションで説明されている)のデバイスファイルの名前は、
sda1
などsda2
でsda3
指定されます。このようなツールが何をすべきかを知らせるときに期待gparted
するものは次のとおりです。mkfs
別々のディスクボリューム。
もちろん、通常のファイルはディスクデバイスファイルのように重複しません。ループバックファイルシステムに関する議論は、単一のフルディスクイメージファイルをインポートし、ループバックを使用して目的のパーティションレイアウトをパーティションテーブルに書き込んだ後、その中にある個々のスライスを反映するファイルを作成すること1
です。2
3
答え4
このトピックは直接的な関係はありませんが、同じで関連する情報について多く言及しています。
Debian Wiki | Raspberry Piとqemu-user-static
apt
この資料に記載されているコマンドのいくつかをインストールするのに問題がある場合apt-cache search [package_name]
。コマンドが別の名前のパッケージから出た場合、結果が表示されないことがあります。
たとえば、以前はを使用してインストールできましたが、losetup
今はUbuntuリポジトリの一部です。どのパッケージが他のパッケージのコンテナとして機能するかを調べるには、Linuxディストリビューションのオンラインストアを検索する方法を使用する必要があります。または他のソースからインストールする必要がある場合は、Web検索エンジンを使用してください。losetup
apt install losetup
util-linux
確認する価値があるいくつかのパッケージ...
util-linux genisoimage dosfstools squashfs-tools fsarchiver xfsprogs reiserfsprogs reiser4progs jfsutils ntfsprogs btrfs-tools
各Linuxディストリビューションには独自のオンラインマンページもあります。時にはチュートリアルよりもマニュアルページを使用する方が簡単です。マニュアルページには、すべてのコマンドオプションとパラメータに関する情報も表示されます。チュートリアルでは、一般的に使用される内容にのみ焦点を当てています。