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