Нет, конфигурации ядра по умолчанию для загрузки 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