Есть ли файл conf по умолчанию для сборки ядра для загрузки pxe?

460
Paul

Резюме:

Я пытаюсь собрать ядро ​​для pxe загрузки Clonezilla. Я думаю, что тот, который поставляется с live CD, имеет проблемы с загрузкой pxe. Мне нужно собрать ядро, и все мои попытки закончились паникой. Я надеялся, что кто-то сможет поделиться базовым конфом, из которого я смог бы попробовать. Что-то подобное существует?

Немного больше контекста к вопросу ....

Пытаюсь загрузиться в Clonezilla. Эта ссылка https://bugs.busybox.net/show_bug.cgi?id=1963 объясняет, что я вижу. Но после некоторого исследования я не думаю, что это проблема. Мой интерфейс не получает IP-адрес. Если я запускаю его из командной строки, он говорит, что выбирает адрес, но никогда не устанавливает интерфейс. Я пробовал pxelinux.0 (9.09.2009) pxelinux.0 (06.10.2014) и gpxelinux.0 (06.10.2014), и все они показывают ту же проблему.

Поскольку IP-адрес отсутствует, процесс загрузки не может быть продолжен, поскольку он не может извлечь файл squashfs.

Когда я спросил, что Clonezilla и udchpd не работают, было высказано предположение, что проблема может быть в ядре, когда я начал собирать новое и увидел параметры DHCP.

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

Невозможно TFTP клонировать файлы с TFTP-сервера WDS во время загрузки PXE

Объедините squashFS и initrd в один файл (загрузка PXE)

0

1 ответ на вопрос

0
telcoM

Нет, конфигурации ядра по умолчанию для загрузки PXE нет. Можно скомпилировать монолитное ядро, которое будет автоматически пытаться получить себе IP-адрес, используя базовый BOOTP / DHCP, но обычно это не так.

Современный подход заключается в использовании загрузчика (например, pxelinux или iPXE), который загружает два файла: ядро ​​и файл initramfs / initrd. Файл initramfs / initrd может содержать модули ядра (загружаемые при необходимости при обнаружении подходящего оборудования) и утилиты, необходимые для инициализации критического оборудования, чтобы можно было продолжить загрузку. В случае загрузки из сети это включает в себя инициализацию сетевых интерфейсов. Что происходит после этого, определяется комбинацией кода / сценариев, встроенных в файл initramfs / initrd, и параметров загрузки, предоставляемых ядру загрузчиком (чаще всего с использованием ключевого слова APPEND).

Я не очень знаком с udhcpd, но, похоже, это очень минимальный DHCP-клиент. Поэтому он может иметь следующие свойства: - он может ожидать, что сетевой интерфейс будет включен раньше времени (например, «ifconfig eth0 up» или «ip link set eth0 up», в зависимости от того, была ли старая команда конфигурации «ifconfig» или доступен более новый «ip») - он может не обрабатывать фактическую настройку интерфейса после получения параметров DHCP: вместо этого он передает их в сценарий, который, как ожидается, будет использовать такие команды, как «ifconfig», «ip» и / или «маршрут» для настройки сетевого интерфейса в соответствии с полученными параметрами.

Я думаю, что вы, возможно, излишне зациклены на идее построения ядра; это очень маловероятно, чтобы быть основной причиной вашей проблемы. Вы ссылаетесь на https://bugs.busybox.net/show_bug.cgi?id=1963, которой уже 7 лет. (В полнофункциональных дистрибутивах Linux «ifup -a» является общей высокоуровневой командой для инициализации всех сетевых интерфейсов; в компактных установках, таких как Clonezilla, команда ifup обычно отсутствует.)

Вы сказали, что ваши попытки до сих пор заканчивались паникой. Это означает, что ядру не удается получить доступ к корневой файловой системе - и с Clonezilla корневая файловая система находится в файле filesystem.squashfs, который должен быть загружен initrd после настройки сетевого интерфейса.

Так вы точно знаете, что пошло не так с вашими попытками? Вы контролировали сетевой трафик с помощью Wireshark или аналогичного?

Проблема с устранением неполадок при загрузке по сети заключается в том, что когда во время загрузки что-то идет не так, ядро ​​Linux и связанные с ним утилиты часто выдают столько информации, что первые сообщения об ошибках прокручиваются за пределы экрана. И обычно это первое сообщение об ошибке является наиболее важным: весьма вероятно, что все последующие ошибки являются последствиями этого первого сбоя.

Отслеживая сетевой трафик, вы можете получить некоторые неопровержимые факты: - успешно ли загрузчик загрузит ядро ​​и файл initrd с TFTP-сервера? - после запуска ядра загрузчик, вы можете увидеть еще один запрос DHCP? Это было бы udhcpd получения параметров сети. - После этого должен быть TFTP-запрос для файла filesystem.squashfs. Это успешно или нет? Если нет, то каков фактический отправленный запрос TFTP и какому пути он соответствует в файловой системе сервера TFTP? Этот файл присутствует в правильном имени пути, и разрешено ли серверу TFTP отправлять его?

Вы пробовали Clonezilla Live, версию Clonezilla, которая явно предназначена для сетевой загрузки PXE? http://clonezilla.org/livepxe.php