раздел хранилища curtin/autoinstall не работает при монтировании подкачки в конфигурации

Я использую раздел хранилища autoinstal для простого настраиваемого макета диска /dev/sda: sda1 (512 МБ) /boot, sda2 (2 ГБ) подкачки, sda3 (-1) /. У меня проблема с правильным определением свопа. Документы Curtin утверждают, что это:

  1. определить раздел,
  2. определить формат с помощью fstype: swap,
  3. определить монтирование без пути с некоторыми параметрами: (параметры: pri=1,discard=pages).

Моя простая конфигурация:

  storage:
    version: 1
#    swap:
#      filename: /dev/sda2
#      size: 2GB
#      maxsize: 2GB
    config:
      - type: disk
        id: sda
        path: /dev/sda
        ptable: msdos
        name: system-disk
        wipe: superblock
        grub_device: true
      - type: partition
        id: sda-sda1
        number: 1
        size: 512MB
        device: sda
        name: boot-partition
        flag: boot
      - type: partition
        id: sda-sda2
        number: 2
        size: 2GB
        device: sda
        name: swap-partition
        flag: swap
      - type: partition
        id: sda-sda3
        number: 3
        size: -1
        device: sda
        name: root-partition
      - type: format
        id: sda-sda1-fs
        fstype: ext4
        label: boot
        volume: sda-sda1
      - type: format
        id: sda-sda2-fs
        fstype: swap
        label: swap
        volume: sda-sda2
      - type: format
        id: sda-sda3-fs
        fstype: ext4
        label: root
        volume: sda-sda3
      - type: mount
        id: sda-sda1-fs-mount1
        path: /boot
        device: sda-sda1-fs
      - type: mount
        id: sda-sda2-fs-mount1
        options: pri=2,discard=pages
        device: sda-sda2-fs
      - type: mount
        id: sda-sda3-fs-mount1
        path: /
        device: sda-sda3-fs

При установке я получаю: "TypeError: __init__() missing 1 required positional argument: 'path'". Если я удалю запись с идентификатором: sda-sda2-fs-mount1 (тот, который предназначен для подкачки) и раскомментирую раздел подкачки, указывающий на /dev/sda2. Я получаю рабочий своп. Как определить своп, используя только раздел конфигурации. Смешивание нескольких решений это не изящное решение имхо.

1 ответ

Я бы попробовал добавить аргумент path: noneи посмотреть, работает ли это. Глядя на источник curtin, похоже, что это то, что он делает, когда нет значения пути, а файловая система находится в режиме подкачки

https://github.com/canonical/curtin/blob/b4f5078663d9cbfd31a7d23b77c458e6a7447226/curtin/commands/block_meta.py#L1107

У меня нет такой настройки свопа, но ваша ссылка ведет к фрагменту сути четырехлетней давности какого-то парня. В Куртина документы находятся на https://curtin.readthedocs.io/en/latest/topics/storage.html?#mount-command

Цитаты из раздела крепления

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

Если указанное устройство отформатировано как пространство подкачки, то в файл / etc / fstab целевой системы будет добавлена ​​запись, чтобы использовать это пространство подкачки.

Раньше я обнаруживал, что документы curtin неверны, поэтому я нашел этот файл, который, по-видимому, определяет требования схемы. Я не уверен, как это разобрать, но мне кажется, что path не требуется, так как у вас есть device аргумент

https://github.com/canonical/curtin/blob/master/curtin/block/schemas.py

Также существует вероятность того, что ошибка является причиной ошибки. subiquity выполняет свою собственную проверку yaml. Он использует эту схему, но похоже, что storageраздел не имеет требований. Я предполагаю, что они полагаются на curtin для проверки

https://ubuntu.com/server/docs/install/autoinstall-schema

Другие вопросы по тегам