Kickstarting Ubuntu 14.04: Как мне создать "загрузочный раздел EFI" из моего ks.cfg?

Я загружаю PXE-сервер, на котором два RAID-массива 4 ГБ настроены в RAID-1, чтобы запустить экземпляр Ubuntu Server 14.04. Я загружаю PXE в режиме EFI, и установка проходит нормально, пока я не получу эту ошибку при разметке:

Формат таблицы разделов, используемый на ваших дисках, обычно требует создания отдельного раздела для кода загрузчика. Этот раздел должен быть помечен для использования в качестве "загрузочного раздела EFI" и должен иметь размер не менее 35 МБ. Обратите внимание, что это не то же самое, что раздел, смонтированный в / boot.

Я прочитал эту ветку и эту статью, в которой предлагается добавить это в мой файл ks.cfg:

part /boot/efi --fstype=efi --grow --maxsize=200 --size=20
part /boot --fstype=ext4 --size=512

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

Я также пробовал синтаксис, похожий на строки biosboot:

part efiboot  --fstype efi --size 200

а также

part efi --fstype efi

но ничего не работает.

Можете ли вы помочь / сказать, какой правильный синтаксис, пожалуйста? Спасибо!

Вот весь мой конфиг разметки:

part /            --fstype ext4 --size 2048  --asprimary
part /boot        --fstype ext4 --size 512
part /boot/efi    --fstype efi  --size 256
part /opt         --fstype ext4 --size 8192
part /var         --fstype ext4 --size 8192
part /media/video --fstype ext4 --size 65536 --grow
part swap                       --size 8192

4 ответа

Решение

Не используйте кикстарт с дистрибутивами на основе Debian. Кикстарт будет преобразован в preseed, поэтому лучше использовать preseed ( http://en.wikipedia.org/wiki/Preseed) напрямую.

Как рекомендуется, начните с примера preseed: https://help.ubuntu.com/14.04/installation-guide/example-preseed.txt

Затем загрузитесь с preseed url и DEBCONF_DEBUG=5 в установщик. Каждый раз, когда установщик задает вопрос, вы видите опцию конфигурации, зарегистрированную на консоли 4. Затем вы можете использовать это имя для установки правильного значения.

Для разбиения вы можете увидеть пример в связанном примере-preseed.txt, вам нужно будет адаптировать его для вашего раздела EFI.

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

Ранее у меня был рабочий кикстарт, но я не мог настроить его для работы с машинами, готовыми к UEFI, и кикстарт /preseed может быть сложным (много документации в Интернете, но большая часть этого не работает, как ожидалось, из-за разных версии ubuntu/debian, кикстарт от Red Hat против эмуляции Ubuntu Kickstart и т. д. и т. д.).

Я попытался создать разделы методом кикстарта (безуспешно), и преобразовать все файлы в preseed сейчас не вариант для меня (я сделаю это в будущей версии), поэтому после миллионов и миллионов тестов моя рабочая конфигурация (на 16.04):

preseed --owner d-i partman-auto/method string regular

preseed --owner d-i partman-auto/expert_recipe 'string gpt-boot-root :: 256 256 256 fat32 $primary{ $iflabel{ gpt } $iflabel{ gpt } $reusemethod{ } method{ efi } format{ } mountpoint{ /boot/efi } . 512 512 512 ext4 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /boot } . 4000 10000 -1 ext4 $primary{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } .'

preseed --owner d-i partman-auto/choose_recipe select gpt-boot-root

Заметки:

1) Эта конфигурация создает /boot (256 МБ), /boot/efi (512 МБ) и / (остальную часть диска). Я решил не создавать swap, потому что я сделал это позже с файлом подкачки в /. Не забудьте использовать "preseed --owner di partman-basicfilesystems/no_swap boolean false", если вы не хотите менять разделенный раздел на разделы (в новых версиях ubuntu он больше не нужен)

2) Обратите внимание, что он имеет одинарные кавычки перед "строкой" и в конце строки.

3) Все синтаксис должен быть в одной строке. Я где-то читал, что кикстарт не поддерживает синтаксис обратной косой черты, как это делает preseed, поэтому все рецепты экспертов должны быть в одной строке.

Я полагаю, что строка, которую вам нужно будет добавить в ваш файл, чтобы ответить "нет" на этот конкретный вопрос:

d-i partman-partitioning/no_bootable_gpt_biosgrub boolean false

Итак, я так долго безуспешно возился с вариантами кикстарта "part", и понял, что многие опции redhat не поддерживаются. И если вы допустите всего 1 простую ошибку в 1 варианте, то установщик Ubuntu переключится на разделение с управлением. Более того, в этом случае не удается выполнить управляемое разбиение: он не может установить grub на разделы MBR в конце установки и не может приступить к установке, поскольку не может обнаружить загрузочный раздел EFI, предложенный на экране управляемого разбиения.

Я использовал ответ @Anderson Zardo, но мне пришлось добавить несколько строк к предварительному заданию, чтобы partman не предлагал пользователю "Завершить разбиение и записать изменения на диск", а также включал некоторые возможные предостережения.

После того, как конфигурация секционирования кикстарта работает как на конфигурациях EFI, так и на MBR, она обнаруживает все автоматически и даже создает /swapfile с рекомендуемым размером и активирует его для установленной системы.

#System bootloader configuration
zerombr
bootloader --location=mbr
clearpart --all --initlabel

# preseeding partman partition information
preseed --owner d-i partman-auto/method string regular
preseed --owner d-i partman-auto/expert_recipe 'string gpt-boot-root :: 256 256 256 fat32 $primary{ $iflabel{ gpt } $iflabel{ gpt } $reusemethod{ } method{ efi } format{ } mountpoint{ /boot/efi } . 512 512 512 ext4 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /boot } . 4000 10000 -1 ext4 $primary{ } method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ / } .'

# preseeding partman additional options for automation
preseed --owner d-i partman-auto/choose_recipe select gpt-boot-root
preseed --owner d-i partman-basicfilesystems/no_swap boolean false
preseed --owner d-i partman/choose_partition select finish
preseed --owner d-i partman-md/confirm boolean true
preseed --owner d-i partman-partitioning/confirm_write_new_label boolean true    
preseed --owner d-i partman-lvm/confirm_nooverwrite boolean true

В результате система EFI разделена на GPT

# fdisk -l
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: EE83EBC4-881D-4157-A627-AC46A14AE694

Device       Start      End  Sectors  Size Type
/dev/sda1     2048   499711   497664  243M EFI System
/dev/sda2   499712  1499135   999424  488M Linux filesystem
/dev/sda3  1499136 20969471 19470336  9.3G Linux filesystem
# swapon -s
Filename                Type        Size    Used    Priority
/swapfile                               file        448816  0   -2

Система без EFI, разделенная на MBR

# fdisk -l
Disk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xaf7c9c63

Device     Boot  Start      End  Sectors  Size Id Type
/dev/sda1  *      2048   999423   997376  487M 83 Linux
/dev/sda2       999424 20969471 19970048  9.5G 83 Linux
# swapon -s    
Filename                Type        Size    Used    Priority
/swapfile                               file        460496  0   -2

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

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