Назад | Перейти на главную страницу

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

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

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

Раньше у меня был рабочий кикстарт, но я не мог настроить его для работы с машинами, готовыми к UEFI, а кикстарт / предварительная установка могут быть сложными (много документации в Интернете, но большая часть из них работает не так, как ожидалось из-за разных версии 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 МБ) и / (остальную часть диска). Я решил не создавать подкачку, потому что сделал это позже с файлом подкачки /. Не забудьте использовать "preseed --owner d-i partman-basicfilesystems / no_swap boolean false", если вы не хотите, чтобы свопинг на отдельном разделе (новым версиям ubuntu он больше не нужен)

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

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

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

Я считаю, что для ответа «нет» на этот конкретный вопрос вам нужно будет добавить в файл preseed следующую строку:

d-i partman-partitioning/no_bootable_gpt_biosgrub boolean false

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

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

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

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