Arch Linuxのガイドに従って、partedを使用してスクリプトからスワップパーティションを作成しようとしています。
https://wiki.archlinux.org/title/Parted#Partition_schemes
とにかく、常にファイルシステムタイプをスキップし、代わりにパーティションラベルとして使用します。
partedを手動で実行すると、正しいファイルシステムlinux-swap(v1)が生成されます。
root@NAS[~]# parted /dev/sdb
GNU Parted 3.4
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you
want to continue?
Yes/No? y
(parted) mkpart
Partition name? []?
File system type? [ext2]? linux-swap
Start? 0%
End? 100%
次のコマンドで parted を実行すると、「空の」ファイルシステムが作成され、パーティションラベル「linux-swap」が割り当てられます。
root@NAS[~]# parted /dev/sdb -s mklabel gpt -- mkpart linux-swap 0% 100%
比較する
parted (manually) - CORRECT FILESYSTEM
=================
root@NAS[~]# parted /dev/sdb print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 4294MB 4293MB linux-swap(v1)
parted (script command) - WRONG FILESYSTEM
=======================
root@NAS[~]# parted /dev/sdb print
Model: QEMU QEMU HARDDISK (scsi)
Disk /dev/sdb: 4295MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 4294MB 4293MB linux-swap
私は何を見逃していますか?
ベストアンサー1
parted
コマンドではスワップスペースを作成できません。スワップパーティションであることを示すためにパーティションラベルを設定できますが、次のものではありません。
dd bs=1M count=100 if=/dev/zero >/tmp/100m.img
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.687057 s, 153 MB/s
lo=$(losetup --show --find /tmp/100m.img); echo $lo
/dev/loop0
parted $lo --script --align optimal unit MiB mklabel gpt mkpart primary linux-swap 1 100% print
Model: Loopback device (loopback)
Disk /dev/loop0: 200MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1.00MiB 100MiB 99.0MiB linux-swap(v1) primary
これで、スワップパーティションが準備されるとmkswap
上書きされたという警告が表示されますが、そうではありません。
mkswap ${lo}p1
Setting up swapspace version 1, size = 99 MiB (103784448 bytes)
no label, UUID=1abc5a9d-9c2e-452f-be16-d63f7e8e6af1
上書き(「以前のスワップ署名を消去」)を表示するために、スワップスペースの準備を繰り返してみましょう。
mkswap ${lo}p1
mkswap: /dev/loop0p1: warning: wiping old swap signature.
Setting up swapspace version 1, size = 99 MiB (103784448 bytes)
no label, UUID=2af1524b-101b-4e30-bdc0-2dfcadc1cde8
最後に、ループバックデバイスを削除し、一時イメージファイルを削除します。
losetup -d $lo
rm -f /tmp/100m.img
ここでの結論は、parted
スワップパーティションはすぐに使用する準備ができておらず、実際に準備することもできないということです。