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 просто не используется и все работает нормально. Надеюсь, я сэкономил много времени для кого-либо.