Я пробую клиентам начальной загрузки PXE UEFI. Моя текущая установка для клиентов BIOS использует pxelinux.0 с pxelinux.cfg/default как это:
DEFAULT vmlinuz-3.8.0-25-generic
APPEND initrd=initrd.img-3.8.0-25-generic root=/dev/nfs nfsroot=10.17.76.1:/var/lib/tribble/ephemeral ip=dhcp ro nomodeset
Но я изо всех сил пытаюсь сделать то же с UEFI, сторона, потому что существует столько разных подходов, которые могут быть проявлены, и там существует так мало хорошей документации.
После этого руководства по PXE начальная загрузка netboot mini.iso на UEFI, я смог к начальной загрузке PXE в установщик, но к настоящему времени я не выяснил, как адаптировать те инструкции к моему варианту использования.
Таким образом, существует немного вещей, я после:
Какой загрузчик рекомендуется для PXE, загружающего клиенты UEFI?
Можно ли указать на меня на рабочий пример использования упомянутого загрузчика к начальной загрузке PXE клиент UEFI, rootfs которого экспортируется по NFS?
Я видел, что много учебных руководств ссылаются на pxe и модули личинки pxecmd, но они не присутствуют на Ubuntu 13.04... они удержанный от использования, и если так, что заменяет их?
Опции я рассматриваю:
Используйте syslinux.efi
Используйте elilo
Используйте grub2
Используйте загрузчик тупика EFI Linux (бит боли, потому что мы должны были бы скомпилировать наше собственное ядро с трудно кодированными параметрами начальной загрузки),
В этом море опций я надеюсь найти решение с низким риском, которое продолжит хорошо поддерживаться Ubuntu.
Имеются в виду только как «пробуждающие» вопросы:
Является ли UEFI на этих клиентах обязательным условием? -
Вы не можете отключить UEFI на каждом клиенте и включить только EFI на них? -
Вероятно, тогда будет проще загрузить все установки с помощью grub2.
Вы можете рассмотреть возможность настройки параметров BIOS для EFI-загрузки вместо UEFI-загрузки - потому что двойная загрузка с UEFI не совсем надежна, например. Windows 7 или Windows 8. Я знаю о некоторых установках, когда Ubuntu с двойной загрузкой UEFI Win7 часто вылетал обратно в gdm.
Как запустить EFI для сетевой загрузки?
Вам не нужно никакого дополнительного программного обеспечения, чтобы получить EFI для запуска сеанса сетевой загрузки. Любой EFI-компьютер может быть настроен на запуск сеанса PXE / DHCP, ЕСЛИ у него есть сетевой адаптер, поддерживающий протокол UNDI / PXE. Большинство современных карт имеют такую поддержку.
Чтобы включить сетевую загрузку, вам нужно войти в меню обслуживания менеджера загрузки EFI и «Добавить загрузочную опцию». На экране вы видите список устройств для загрузки. По крайней мере, один из них должен иметь форму:
Load File [Acpi(PNP0A03,0)/Pci(5|0)/Mac(00D0B7A6FC25)]
, которые представляют карту Ethernet (Mac-адрес). Если у вас нет такой опции, это означает, что у вас либо нет сетевого адаптера на вашем компьютере, либо нет поддержки UNDI / PXE в дополнительном ПЗУ.
Вам нужно выбрать эту опцию и дать ей логическое имя, например, «netboot». Далее вы выходите из меню обслуживания и возвращаетесь в главное меню. Теперь у вас есть новый вариант меню загрузки. Если вы выберете «netboot», EFI запустит запрос на обнаружение PXE / DCHP и будет искать сервер для получения IP-адреса.
На стороне сервера вы можете использовать стандартный DHCP-сервер.
Сетевая загрузка с использованием PXE
EFI имеет встроенную поддержку PXE. На самом деле он сначала пытается PXE, а затем по умолчанию DHCP, когда не находит действительный сервер PXE.
В Linux / ia32 доступен пакет PXE-сервера, однако у этого пакета нет необходимых расширений для связи со стороной EFI.
Нет необходимости использовать специальные опции или флаги времени компиляции, чтобы заставить elilo работать с PXE вместо стандартного DHCP. При загрузке по сети elilo автоматически определяет, была ли она загружена через PXE или DHCP, и будет определять, как запрашиваются последующие файлы.
Вам нужна специальная версия сервера DHCPD, разработанная Internet Software Consortium ( http://www.isc.org ) со специальным патчем для добавления расширений PXE. К сожалению, начиная с версии 3.0xx, патч еще не попал в официальное дерево. Предполагается, что он появится в версии 3.1 сервера dhcpd.
В любом случае пакет elilo содержит простой пример того, как вы можете сконфигурировать файл /etc/dhcpd.conf
для DHCP-сервера с поддержкой PXE, используя расширения, представленные в патче. Вы можете посмотреть в examples/dhcpd-pxe.conf
. Синтаксис сильно отличается от стандартного сервера dhcpd.
Ключевыми элементами, которые следует иметь в виду, являются слои PXE, используемые elilo для запроса различных файлов:
Layer 0 : to get the name of the boot loader (elilo.efi)
Layer 1 : to get the name of the elilo config file
Layer 2 : to get the name of the kernel image
Существует ВАЖНОЕ различие между этими уровнями. Первые два (0,1) и запрашиваются систематически, тогда как последний используется только тогда, когда файл конфигурации не найден, то есть, какое ядро по умолчанию загружается. Фактические файлы по-прежнему загружаются через TFTP. Поэтому сервер TFTP также должен быть настроен (см. Предыдущий раздел для получения дополнительной информации)
Получение файла конфигурации
В этом режиме elilo использует уровень 1 PXE, чтобы получить файл конфигурации для использования. Поэтому это должно быть установлено на стороне сервера. Elilo будет использовать следующую последовательность при поиске файла конфигурации:
- use the name provide by the PXE server Layer 1 or
- elilo-ia64.conf/elilo-ia32.conf/elilo-x86_64 or
- elilo.conf
Пример файла elilo.conf
chooser=textmenu
default=install
delay=20
prompt
message=boot-screens/elilo_menu.msg
f1=boot-screens/general.msg
f2=boot-screens/params.msg
relocatable
image=vmlinuz
label=install
description="Install"
initrd=initrd.gz
append="--"
read-only
image=vmlinuz
label=expert
description="Install [Expert mode]"
initrd=initrd.gz
append="priority=low --"
read-only
image=vmlinuz
label=rescue
description="Rescue"
initrd=initrd.gz
append="rescue/enable=true --"
read-only
Еще один
boot=/dev/sda1
delay=30
timeout=50
default=Gentoo
append="console=ttyS0,9600"
prompt
image=/vmlinuz
label=Gentoo
root=/dev/sda2
read-only
image=/vmlinuz.old
label=Gentoo.old
root=/dev/sda2
read-only
Также взять посмотрите на elilo.conf и Управление загрузчиками EFI для Linux: Использование ELILO
Elilo останавливается на первом совпадении. При использовании PXE elilo не пытается загрузить файл конфигурации с именем в соответствии с назначенным IP-адресом, как это происходит для DHCP, поскольку для этого достаточно конфигурации сервера PXE.
Получение образа ядра
Если файл конфигурации отсутствует, elilo будет использовать имя ядра, возвращаемое PXE-уровнем 2. Если оно не указано там, по умолчанию используется значение ' vmlinux». [тысяча сто тридцать шесть]
Получение исходного ramdisk
Имя файла для ramdisk ДОЛЖНО быть взято из файла конфигурации. Elilo не использует слой PXE для запроса имени по умолчанию.
Получение информации об IP-адресе
Когда elilo загружается по сети, модуль сетевой файловой системы инициализирует некоторые переменные elilo информацией, полученной от DHCP-сервера. Как минимум, он получил IP-адрес.
Следующая информация хранится в переменных, указанных ниже:
assigned IP address -> %I
assigned netmask -> %M
assigned domainname -> %D
assigned gateway -> %G
Эти переменные могут использоваться для динамической настройки аргументов командной строки, передаваемых ядру.
Для получения дополнительной информации см. PXE Linux и Реализация загрузки PXE
Источник: HP sup>