2021/01/30

ディスクイメージにパーティションを作成する

ディスクのRAWイメージの中に、パーティションを作成したい。どうするか。

必要なサイズのRAWイメージを作成。説明はこちらの記事あたりを参照。

ループバックデバイスとして読み込む。

# losetup --find --show raw_disk.img
/dev/loop0

おわり

この段階でfdiskなどを使って、パーティションを切ることができる。

# fdisk -l /dev/loop0
Disk /dev/loop0: 953.69 MiB, 1000000000 bytes, 1953125 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

おわり

試しにこんな感じで作ってみた。

# fdisk -l /dev/loop0
Disk /dev/loop0: 953.69 MiB, 1000000000 bytes, 1953125 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: 0x35e97b7c

Device       Boot  Start     End Sectors   Size Id Type
/dev/loop0p1 *      2048  206847  204800   100M 83 Linux
/dev/loop0p2      206848 1953124 1746277 852.7M 83 Linux

おわり

/dev/loop0p1とか/dev/loop0p2とかできているので、確認してみる。

# ls /dev/loop0*
/dev/loop0

でも、ない。

一旦、losetupで/dev/loop0を消して、再度読み込んで見る。

# losetup -d /dev/loop0
# losetup --find --show raw_disk.img
/dev/loop0

# ls /dev/loop0*
/dev/loop0

# ls /dev/mapper/loop0*
ls: cannot access '/dev/mapper/loop0*': No such file or directory

やっぱりない。

今回作成したパーティションは、そのままではOSに認識されない。読み込ませるには、losetupのあとに、kpartxを使う。

ちなみに、Gentooでは、kpartxはsys-fs/multipath-toolsパッケージに含まれているのでemergeしておく。

# kpartx -a /dev/loop0

# ls /dev/loop0*
/dev/loop0

# ls /dev/mapper/loop0*
/dev/mapper/loop0p1@  /dev/mapper/loop0p2@

# ls -l /dev/mapper/loop0*
lrwxrwxrwx. 1 root root 7 Jan 30 16:48 /dev/mapper/loop0p1 -> ../dm-3
lrwxrwxrwx. 1 root root 7 Jan 30 16:48 /dev/mapper/loop0p2 -> ../dm-4

このような形で、各パーティションは/dev/mapper/の下にできている。

各パーティションをフォーマット

# mkfs.ext4 /dev/mapper/loop0p1
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks: done
Creating filesystem with 102400 1k blocks and 25688 inodes
Filesystem UUID: d7939034-11c6-42a9-b0e6-2319a3f3a512
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done


# mkfs.ext4 /dev/mapper/loop0p2
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks: done
Creating filesystem with 218284 4k blocks and 54656 inodes
Filesystem UUID: 4f58e21b-10b1-4a67-b376-17e1dc159aab
Superblock backups stored on blocks:
        32768, 98304, 163840

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

あとは、お好きなように。

使い終わったら、取り外す。

# kpartx -d /dev/loop0

# losetup -d /dev/loop0

おわり

0 件のコメント:

コメントを投稿