Para entender o que está acontecendo, você precisa entender como o Linux PXE é inicializado.
- O kernel
vmlinuz
é transferido - O initrd
initrd.gz
é transferido - O kernel monta initrd e inicia seu
init
script
initrd é um sistema Linux ultramimal que contém a funcionalidade mínima para conectar (NFS) ou recuperar (HTTP / CIFS) o SO "real" (no seu caso, contido em ubuntu_os.squashfs
), montá-lo e finalmente "chrooting" "para dentro.
Um script init
pronto para PXE é responsável por analisar as variáveis do kernel, iniciar os serviços de rede, manipular NFS, HTTP, CIFS, etc.
Na maioria dos casos, um initrd.gz
em particular não é capaz de lidar com todos os protocolos mencionados acima, então você precisa "personalizar" seu initrd.gz
ou criar um initrd "complementar" fornecendo os recursos que faltam quando necessário.
No seu caso, seu script init
ainda acha que tem que montar um diretório NFS e não um arquivo; então, se você quiser usar o NFS, deverá montar o diretório no qual o ubuntu_os.squashfs
está localizado e, em seguida, montar o arquivo ubuntu_os.squashfs
. Isso, é claro, significa remendar init
(e / ou seus componentes associados)
Se você não se importar em oferecer ubuntu_os.squashfs
em um compartilhamento CIFS, poderá ver
o que Serva faz para o PXE inicializando distribuições ao vivo do Ubuntu; você verá todos os parâmetros para inicialização do CIFS (estou relacionado ao desenvolvimento do Serva)
i.e. Ubuntu LTS 14.04 Desktop Live
[PXESERVA_MENU_ENTRY]
asset = Ubuntu LTS 14.04 Desktop Live
platform = amd64
kernel = /NWA_PXE/$HEAD_DIR$/casper/vmlinuz
append = showmounts toram root=/dev/cifs initrd=/NWA_PXE/$HEAD_DIR$/casper/initrd.lz,/NWA_PXE/$HEAD_DIR$/casper/INITRD_N11.GZ boot=casper netboot=cifs nfsroot=//$IP_BSRV$/NWA_PXE_SHARE/$HEAD_DIR$ NFSOPTS=-ouser=serva,pass=avres,ro ip=dhcp ro