parted: invalid token: swap

Да, это, безусловно, возможно, поскольку ссылка на вики-страницу openSUSE, на которую вы ссылаетесь, подробно объясняет. Также это делают некоторые производители, например RPM-пакет google-chrome для Fedora / openSUSE (также хорошо работает с другими rpm-дистрибутивами) является одним из примеров, когда у них есть только один rpm-пакет, который охватывает основные rpm-дистрибутивы.

Но вы должны обращать внимание на то, что вам нужно. Вы должны различать Требует: в обычных пакетах, например, двоичные файлы, которые могут вам понадобиться. Их нужно добавлять вручную. Также требования к именам файлов (например, Requires: / usr / bin / sendmail ) игнорируются, и они также не переносимы, так как некоторые дистрибутивы будут размещать свои файлы в немного разных местах.

Для неверсированных Требуется: в обычных пакетах библиотек, они обычно всегда неверны. Они автоматически добавляются во время сборки RPM . Есть действительно редкие случаи, когда необходимо принудительно применять определенную версию и добавлять явные требования с указанием версий, в основном в пакетах библиотек. Это объясняется, например, at http://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires

4
26.08.2018, 16:11
2 ответа

Хотя 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

Итак, мы здесь. Неподдерживаемые флаги просто получают сообщение о недопустимом токене, и это подразумевает, что вы опечатались или что-то в этом роде, но вы не сделали ничего плохого, в некоторых случаях он просто не поддерживает эти флаги.

3
27.01.2020, 20:57

Раздел либо содержит файловую систему, в данном случае ext4, либо содержит пространство подкачки и не содержит файловой системы. Поэтому нет смысла добавлять флаг swapк разделу файловой системы.

Если позже вы захотите создать файл подкачки в файловой системе, нет необходимости добавлять флаг к разделу. Вы просто создаете файл и используете его для обмена.

0
27.01.2020, 20:57

Теги

Похожие вопросы