フラグを追加しようとしましたがswap
無効なparted
トークンを受け取りました。なぜですか?
Model: Kingston DataTraveler 3.0 (scsi)
Disk /dev/sda: 15.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 512B 2000MB 2000MB primary ext4 boot, lba
(parted) set
Partition number? 1
Flag to Invert? swap
parted: invalid token: swap
答え1
(およびマニュアルページ)はコメントのないフラグのリストを提供しますが、help set
どのパーティション化スキームがどのフラグをサポートしているかを教えてくれません。
無効なトークンメッセージは、トークンが利用できないときに表示されるメッセージとまったく同じです。よりユーザーフレンドリーなエラーメッセージが必要です。
parted 3.2では、GPTパーティションの場合、フラグは使用swap
できません。root
lba
static int
gpt_partition_is_flag_available (const PedPartition *part,
PedPartitionFlag flag)
{
switch (flag)
{
case PED_PARTITION_RAID:
case PED_PARTITION_LVM:
case PED_PARTITION_BOOT:
case PED_PARTITION_BIOS_GRUB:
case PED_PARTITION_HPSERVICE:
case PED_PARTITION_MSFT_RESERVED:
case PED_PARTITION_MSFT_DATA:
case PED_PARTITION_DIAG:
case PED_PARTITION_APPLE_TV_RECOVERY:
case PED_PARTITION_HIDDEN:
case PED_PARTITION_LEGACY_BOOT:
case PED_PARTITION_PREP:
case PED_PARTITION_IRST:
case PED_PARTITION_ESP:
return 1;
case PED_PARTITION_SWAP:
case PED_PARTITION_ROOT:
case PED_PARTITION_LBA:
default:
return 0;
}
return 0;
}
MSDOSは次のフラグのみをサポートします。
static int
msdos_partition_is_flag_available (const PedPartition* part,
PedPartitionFlag flag)
{
switch (flag) {
case PED_PARTITION_HIDDEN:
if (part->type == PED_PARTITION_EXTENDED)
return 0;
else
return 1;
case PED_PARTITION_BOOT:
case PED_PARTITION_RAID:
case PED_PARTITION_LVM:
case PED_PARTITION_LBA:
case PED_PARTITION_PALO:
case PED_PARTITION_PREP:
case PED_PARTITION_IRST:
case PED_PARTITION_ESP:
case PED_PARTITION_DIAG:
return 1;
default:
return 0;
}
}
それでは、フラグに正確に何が起こっているのでしょうかswap
?
DVHでサポートされているようです。
static int
dvh_partition_is_flag_available (const PedPartition* part,
PedPartitionFlag flag)
{
switch (flag) {
case PED_PARTITION_ROOT:
case PED_PARTITION_SWAP:
case PED_PARTITION_BOOT:
return 1;
...そしてMACパーティション:
static int
mac_partition_is_flag_available (
const PedPartition* part, PedPartitionFlag flag)
{
switch (flag) {
case PED_PARTITION_BOOT:
case PED_PARTITION_ROOT:
case PED_PARTITION_SWAP:
case PED_PARTITION_LVM:
case PED_PARTITION_RAID:
return 1;
良いニュースは、Linuxが当初パーティションタイプにはあまり気にしないということです。したがって、パーティションテーブルで指定されているかどうかに関係なく、スワップに任意のパーティションを使用できます。
上記のコードによると、msdosパーティションラベルの場合、hidden
パーティションが拡張されるとフラグを設定できません。これは parted から提供されるエラーメッセージをテストする良い方法です。
(parted) mklabel msdos # new dos partition
(parted) mkpart primary 1MiB 2MiB # primary
(parted) mkpart extended 2MiB 10MiB # extended
(parted) mkpart logical 3MiB 4MiB # logical
(parted) set 1 hidden on # OK
(parted) set 2 hidden on # FAIL
parted: invalid token: hidden # very helpful message
Flag to Invert? # I didn't mistype
(parted) set 5 hidden on # OK
だからここにあります。サポートされていないフラグは無効なトークンメッセージを受け取ります。言い換えれば、間違った入力や間違ったものではなく、場合によってはフラグがサポートされていません。
答え2
パーティションはファイルシステム(この場合)を含むext4
か、スワップスペースを含みますが、ファイルシステムは含まれません。したがって、swap
ファイルシステムパーティションにフラグを追加する必要はありません。
後でファイルシステムにスワップファイルを作成したい場合は、このフラグをパーティションに追加する必要はありません。ファイルを作成して交換に使用できます。