Preseed автоматическое разделение

Я использую следующее partman Настройки для автоматической установки виртуальных машин на несколько лет:

d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman/alignment string "optimal"
d-i partman-auto/expert_recipe string                         \
      boot-root ::                                            \
              64 512 300% linux-swap                          \
                      $primary{ }                             \
                      method{ swap } format{ }                \
              .                                               \
              500 10000 1000000000 ext4                       \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
              .
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

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

Сейчас я пытаюсь адаптировать этот рецепт для установки нескольких идентичных серверов без поддержки. Для этого я просто переключил разделы и установил более приемлемые размеры для машины с 256 ГБ ОЗУ и системным диском 460 ГБ (твердотельные накопители в аппаратном RAID1, но это не должно иметь значения):

  boot-root ::                                            \
          32768 65536 1000000000 ext4                     \
                  $primary{ } $bootable{ }                \
                  method{ format } format{ }              \
                  use_filesystem{ } filesystem{ ext4 }    \
                  mountpoint{ / }                         \
          .                                               \
          16384 16384 65536 linux-swap                    \
                  $primary{ }                             \
                  method{ swap } format{ }                \
          .                                                 

Остаток от partman* Директивы идентичны.

Насколько я понимаю документация (и дополнительные посты, подобные этой), это должно создать большой корневой раздел, занимающий почти весь диск, с разделом подкачки между 16 и 64 ГБ в конце.

Ну, это не так. Он создает раздел размером 450 МБ, за которым следует раздел подкачки объемом 460 ГБ.

Когда я устанавливаю тот же компьютер с preseed для виртуальных машин, разделы создаются должным образом, как определено в файле preseed:

Итак, что я делаю не так с рецептом для голой металлической машины?

Если это имеет значение, установка iso основана на iso сервера Ubuntu 16.04.5.

Выход из fdisk /dev/sda а также parted /dev/sda print:

Еще несколько вариантов, которые я попробовал:

# this belongs to tha last block, as suggested by @Peter
#d-i partman-basicfilesystems/choose_label string gpt
#d-i partman-basicfilesystems/default_label string gpt
#d-i partman-partitioning/choose_label string gpt
#d-i partman-partitioning/default_label string gpt
#d-i partman/choose_label string gpt
#d-i partman/default_label string gpt

d-i partman-auto/expert_recipe string                         \
      boot-root ::                                            \
##########################
              65536 1 -1 ext4                             \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                         \
              .                                               \
              65536 65536 65536 linux-swap                    \
                      $primary{ }                             \
                      method{ swap } format{ }                \
              .                                               
##########################
#              1 1 -1 ext4                             \
#                      $primary{ } $bootable{ }                \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext4 }    \
#                      mountpoint{ / }                         \
#              .                                               \
#              65536 65536 65536 linux-swap                    \
#                      $primary{ }                             \
#                      method{ swap } format{ }                \
#              .                                               
##########################
#              32768 50 5242880 ext4                             \
#                      $primary{ } $bootable{ }                \
#                      method{ format } format{ }              \
#                      use_filesystem{ } filesystem{ ext4 }    \
#                      mountpoint{ / }                         \
#              .                                               \
#              16384 100 65536 linux-swap                    \
#                      $primary{ }                             \
#                      method{ swap } format{ }                \
#              .                                               
##########################
# use along with the annoted partman-* directives above
#              538 538 1075 free                           \
#                      $iflabel{ gpt }                     \
#                      $reusemethod{ }                     \
#                      method{ efi }                       \
#                            format{ }                     \
#              .                                           \
#              1 1 -1 ext4                                 \
#                  $primary{ } $bootable{ }                \
#                  method{ format } format{ }              \
#                  use_filesystem{ } filesystem{ ext4 }    \
#                  mountpoint{ / }                         \
#              .                                           \
#              65536 65536 65536 linux-swap                \
#                  $primary{ }                             \
#                  method{ swap } format { }               \              .                         
#              .

Это не имеет значения, результирующий корневой раздел всегда имеет только 453 МБ.

2 ответа

Решение

TL;DR:

Неправильный образ был смонтирован. Спасибо @Peter за указание на меня.

Длинная история:

После комментария Петерса я перепроверил весь свой конвейер сборки iso, файлы.seed, isolinux txt.cfg, пользовательский загрузочный скрипт, скрипт bash, который собирает.iso, и не нашел ничего плохого. Я снова изменил файл.preseed, на этот раз добавив третий раздел, который должен быть смонтирован как /var, перестроил образ, нажал "Размонтировать" и "Смонтировать" в интерфейсе BMC сервера, перезагрузил компьютер, запустил установку и угадаю, что, это была та же схема, что и раньше, без дополнительного раздела. Подозрительно я проверил /target/etc/issue:

Ubuntu 16.04.1 LTS

Это должно было быть 16.04.5. Во время моих тестов установки я полностью воссоздал Ubuntu .iso, основываясь на 16.04.5 вместо предыдущего 16.04.1 (в результате получилось другое имя iso, потому что файл.iso содержит номер версии).

У меня есть два способа крепления ISO-образов на этих платах SuperMicro. Я могу подключиться к одному BMC и смонтировать там ISO, или я могу использовать SuperMicro Server Manager для монтирования ISO на нескольких машинах одновременно. У меня было несколько машин для установки, поэтому, естественно, я использовал метод SSM и установил ISO везде.

После изменения на 16.04.5 я только изменил имя файла непосредственно в BMC хоста, на котором я работал, и перемонтировал его. Я только получаю There is an iso file mounted. как подтверждение, не более подробной информации.

Нажав на Save Кнопка на странице образа монтирования приводит к этому сообщению об ошибке:

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

Именно то, что я настроил, чтобы проверить это.

Мораль этой истории: я потратил около недели своего времени (и часть ценного времени на вас, полезные люди) только из-за глупости дешевого интерфейса BMC. Имейте это в виду и перепроверьте ВСЕ, когда столкнетесь с необъяснимыми проблемами.

Особые заметки

Не было упомянуто, есть ли bios_grub, ESP, GPT или MBR, или какой метод использует прошивка. При использовании GPT, вам нужен один или другой (или оба). Так что произойдет, что установщик выберет для вас, основываясь на некоторых неизвестных критериях, вероятно, связанных с размером диска. Чтобы принудительно использовать GPT, вы можете установить такие вещи (которые, как я помню, не всегда работают, несмотря на использование всех 6 методов, которые я нашел здесь):

d-i partman-basicfilesystems/choose_label string gpt
d-i partman-basicfilesystems/default_label string gpt
d-i partman-partitioning/choose_label string gpt
d-i partman-partitioning/default_label string gpt
d-i partman/choose_label string gpt
d-i partman/default_label string gpt

Например, для bios_grub вы должны установить:

    1 1 1 free                          \
        $primary{}                      \
        $bios_boot{}                    \
        method{ biosgrub }              \
    .                                   \

(Я не положил $iflabel{ gpt } там, и это может быть полезно, потому что, если что-то пойдет не так, и вы позже конвертируете это из MBR в GPT, вам нужно зарезервированное пространство)

А для EFI (беззастенчивое копирование и вставка из Preseeding debian install - EFI и не удалили iflabel):

    538 538 1075 free
        $iflabel{ gpt }
        $reusemethod{ }
        method{ efi }
        format{ } .

И ответить на вопрос

Чтобы использовать остаток, вы используете -1а не сколь угодно большое число, а затем просто установите для других чисел фиктивные значения, такие как 1. И я бы тоже не стал доверять диапазонам... Я просто использую другой файл preseed для другого оборудования, а не для автоматических вещей в Debian. Поэтому я установил значение 65536, а не диапазон.

d-i partman-auto/expert_recipe string               \
    boot-root ::                                    \
        1 1 -1 ext4                                 \
            $primary{ } $bootable{ }                \
            method{ format } format{ }              \
            use_filesystem{ } filesystem{ ext4 }    \
            mountpoint{ / }                         \
        .                                           \
        65536 65536 65536 linux-swap                \
            $primary{ }                             \
            method{ swap } format { }               \
        .

И убедитесь, что он действительно использует ваш новый файл preseed. Мне нравится помещать его в образ initbo netboot, потому что тогда он не зависит от сети и т. Д. И считаю, что он отлично работает. Если вы измените что-то, как указано выше, и это не сработает, проверьте это снова и снова. Если это http/tftp, проверьте журналы http / tftp или tcpdump. Или внесите изменения, которые вы наверняка заметите, и посмотрите, если это произошло.

Если это initrd, посмотрите в initrd и посмотрите, действительно ли он там. Например:

cd emptydir
gunzip -c path_to_initrd | cpio -i
# It must be named "preseed.cfg" if it's in the initrd.
cat preseed.cfg
Другие вопросы по тегам