No, non esiste una configurazione kernel predefinita per l'avvio PXE. È possibile compilare un kernel monolitico che tenterà automaticamente di ottenere un indirizzo IP utilizzando BOOTP / DHCP di base, ma non è così che viene normalmente fatto.
L'approccio moderno consiste nell'utilizzare un bootloader (ad esempio pxelinux o iPXE) che scaricherà due file: il kernel e un file initramfs / initrd. Il file initramfs / initrd può contenere moduli del kernel (da caricare se necessario, al rilevamento dell'hardware corrispondente) e utilità necessarie per l'inizializzazione dell'hardware critico in modo che l'avvio possa procedere. In caso di avvio dalla rete, questo include l'inizializzazione delle interfacce di rete. Quello che succede dopo è determinato dalla combinazione del codice / script incorporato nel file initramfs / initrd e dalle opzioni di avvio fornite al kernel dal bootloader (più comunemente usando la parola chiave APPEND).
Non ho molta familiarità con udhcpd, ma sembra essere un client DHCP molto minimale. Quindi potrebbe avere le seguenti proprietà: - potrebbe aspettarsi che l'interfaccia di rete venga accesa in anticipo (ad es. "Ifconfig eth0 up" o "ip link set eth0 up", a seconda che il vecchio comando di configurazione "ifconfig" o il comando "ip" più recente è disponibile) - potrebbe non gestire la configurazione dell'interfaccia effettiva dopo aver ricevuto i parametri DHCP: invece, li passerà a uno script, che dovrebbe utilizzare comandi come "ifconfig", "ip" e / o "route" per configurare l'interfaccia di rete in base ai parametri ricevuti.
Penso che potresti essere stato inutilmente fissato all'idea di costruire un kernel; è molto improbabile che sia la causa principale del tuo problema. Ti riferisci a https://bugs.busybox.net/show_bug.cgi?id=1963 che ora ha informazioni di 7 anni. (Nelle distribuzioni Linux complete, "ifup -a" è un comando comune di alto livello per inizializzare tutte le interfacce di rete; in configurazioni compatte come Clonezilla il comando ifup di solito non è presente.)
Hai detto che i tuoi tentativi finora sono finiti con il panico. Ciò significa che il kernel non riesce ad accedere al filesystem di root - e con Clonezilla, il filesystem di root si trova nel file filesystem.squashfs che dovrebbe essere scaricato da initrd dopo aver configurato l'interfaccia di rete.
Sai esattamente cosa è andato storto nei tuoi tentativi? Hai monitorato il traffico di rete con Wireshark o simili?
Il problema con la risoluzione dei problemi di avvio di rete è che quando qualcosa va storto all'avvio, il kernel Linux e le utilità associate spesso emettono così tante informazioni che i primi messaggi di errore vengono fatti scorrere fuori dallo schermo. E di solito quel primo messaggio di errore è il più importante: è molto probabile che tutti gli errori successivi siano conseguenze di quel primo fallimento.
Monitorando il traffico di rete, è possibile ottenere alcuni fatti concreti: - il bootloader scaricherà correttamente il kernel e il file initrd dal server TFTP? - dopo l'avvio del kernel, è possibile vedere un'altra query DHCP? Sarebbe udhcpd a ottenere i parametri di rete. - Successivamente, dovrebbe esserci una richiesta TFTP per il file filesystem.squashfs. Ha successo o no? In caso contrario, qual è l'effettiva richiesta TFTP inviata e quale percorso viene mappato nel filesystem del server TFTP? Quel file è presente nel percorso corretto e il server TFTP è autorizzato a inviarlo?
Hai provato Clonezilla Live, una versione di Clonezilla che si intende esplicitamente come netboot PXE?
http://clonezilla.org/livepxe.php