Construiu o kernel com suporte a NFS, mas não obteve / dev / nfs

5

Eu estou tentando construir o kernel 3.13.9, obtido usando apt-get source , e construído em um% limpodebootstrap chroot (ambos hospedam e chroot sendo instalações do Ubuntu Trusty). Meu objetivo é inicializar uma máquina sem disco para um console através do NFS.

Eu executei o make menuconfig e habilitei o kernel de 64 bits, depuração desabilitada e verifiquei que estava fazendo uma compilação de 64 bits. Além disso, fui a sistemas de arquivos e sistemas de arquivos de rede e ativei o seguinte:

  • Sistemas de arquivos de rede
  • Suporte ao cliente NFS

O host tem nfs-kernel-server instalado e uma configuração de exportação para o diretório que gostaria de usar como raiz do sistema inicializado pela rede.

A inicialização do PXE acontece OK, o kernel e o initrd são carregados, mas depois de uma longa pausa, eu sou enviado para o prompt do busybox devido a falta de um sistema de arquivos raiz.

Qual poderia ser a causa? (ou mais informação é necessária?)

Editar: já estou passando nfsroot :

LABEL linux
KERNEL vmlinuz-3.13.9
APPEND root=/dev/nfs initrd=initrd.img-3.13.9 nfsroot=192.168.1.39:/nfsroot,rw ip=dhcp rw
    
por hexafraction 01.07.2014 / 16:15

1 resposta

4

Como a documentação do kernel afirma, /dev/nfs não é um dispositivo real, mas apenas uma sugestão para o kernel usar o NFS como rootfs . Você também terá que informar ao kernel onde encontrar essa raiz através do parâmetro nfsroot ou um daemon DHCP configurado corretamente. Para este último funcionar, você também terá que configurar seu kernel para configurar automaticamente suas interfaces de rede ou ter um initramfs que cuida disso.

Além disso, certifique-se de ter o suporte ao NFS embutido em seu binário do kernel e não como um módulo (ou tenha um initramfs , que cuida disso). O mesmo vale para os drivers de rede: você provavelmente desejará ter o driver para sua placa ethernet embutida em sua imagem do kernel, caso contrário você terá que carregá-la de um initramfs .

Em suma, existem várias possibilidades:

  1. Faça como o link acima informa: tenha root=/dev/nfs set, forneça o parâmetro nfsroot correto e informe ao seu kernel sua configuração de rede por meio do parâmetro ip (essa seria a melhor maneira de ter certeza de que está funcionando , ou seja, excluir um servidor DHCP mal configurado).
  2. Tenha CONFIG_IP_PNP e CONFIG_IP_PNP_DHCP ativado e configure um daemon DHCP para informar ao seu cliente qual endereço IP usar e onde encontrar sua raiz NFS.
  3. Compile um initramfs que faz a configuração correta e a montagem do NFS.

Editar: acho que se você estiver usando um initrd / initramfs como sua edição sugere, você terá que fazer a montagem NFS no initrd (resp. o seu initrd tem que estar ciente do fato de que tem que fazer isso). A automontagem através do kernel (como configuração automática de IP, IIRC) só funciona se não houver initrd .

    
por 01.07.2014 / 16:58