メモリに画像を作成しています(/tmpはtmpfsです)。
$ dd if=/dev/zero of=/tmp/sdcard.img bs=512 count=3147775
パーティションテーブルとデバイスの最初の3つのパーティションを保持する必要があります。
$ losetup /dev/loop0 /tmp/sdcard.img
$ dd if=bootloader.img of=/dev/loop0 bs=512
最初の2048セクタにはパーティションテーブルが含まれています。
$ fdisk -l /tmp/sdcard.img
Disk /dev/loop0: 1.5 GiB, 1611660800 bytes, 3147775 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: 0x0000de21
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 2048 1050623 1048576 512M c W95 FAT32 (LBA)
/dev/loop0p2 1050624 2099199 1048576 512M 83 Linux
/dev/loop0p3 2099200 3147775 1048576 512M 83 Linux
ところで質問があります。
3147775で始まり、37748724で終わる4番目のパーティション/dev/loop0p4を追加したいと思います。
パーティションを物理的に作成したくありませんが、ドライブが存在すると考えるようにパーティションテーブルを変更したいと思います。
ところで、この目的で使用するとfdisk
文句が出ます。Value out of range.
どうやってfdisk
強制できますか?します。パーティション表が無効かどうかは関係ありません。大きなディスクに追加し、後でフォーマットする予定です。私はパーティションテーブルがより大きなディスクに追加することの一部になりたいです(理由があるので詳細については説明しません)。私が知りたいのは、Hex Editorを終了せずにこれらの任意の値でパーティションテーブルを作成する方法です。
ベストアンサー1
特に、Linux tmpfsでは、ファイルを必要なだけ大きくしたり小さくしたりできます。
df -h /tmp
Filesystem Size Used Avail Use% Mounted on
tmpfs 12G 472K 12G 1% /tmp
まれなファイルを作成できます。
for cmd in \
'dd bs=1024k seek=20k of=' \
'ls -slh '
do eval "$cmd/tmp/file"
echo
done </dev/null
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000152051 s, 0.0 kB/s
0 -rw-r--r-- 1 mikeserv mikeserv 20G Dec 24 20:19 /tmp/file
願いより? 0 ディスク容量を使用しますが、見かけのサイズは 20 GB です。
それから行ってもいいですfdisk /tmp/file
。ちょうどその上にパーティションテーブルを作成しました。これはfdisk -l
:
Disk /tmp/file: 20 GiB, 21474836480 bytes, 41943040 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: 0x057d787a
Device Boot Start End Sectors Size Id Type
/tmp/file1 2048 20973567 20971520 10G 83 Linux
/tmp/file2 20973568 31459327 10485760 5G 5 Extended
/tmp/file3 31459328 41943039 10483712 5G 83 Linux
フォームが作成されたら、次を使用します。小さい少しスペース:
ls -lsh /tmp/file
8.0K -rw-r--r-- 1 mikeserv mikeserv 20G Dec 24 20:21 /tmp/file
しかし、あなたは知らないでしょう。
df -h /tmp
Filesystem Size Used Avail Use% Mounted on
tmpfs 12G 480K 12G 1% /tmp
そして、あなたはまれにすることができます延長する同じ方法でファイルを作成します。
for cmd in \
'dd bs=1024k seek=30k of=' \
'ls -slh ' 'fdisk -l '
do eval "$cmd/tmp/file"
echo
done </dev/null
0+0 records in
0+0 records out
0 bytes (0 B) copied, 9.8239e-05 s, 0.0 kB/s
8.0K -rw-r--r-- 1 mikeserv mikeserv 30G Dec 26 14:24 /tmp/file
Disk /tmp/file: 30 GiB, 32212254720 bytes, 62914560 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: 0x057d787a
Device Boot Start End Sectors Size Id Type
/tmp/file1 2048 20973567 20971520 10G 83 Linux
/tmp/file2 20973568 31459327 10485760 5G 5 Extended
/tmp/file3 31459328 41943039 10483712 5G 83 Linux