initrd construído com o módulo NFS não pode montar o root do NFS

1

Estou criando um initrd personalizado para poder inicializar nós sem disco com uma raiz tmpfs em vez de raiz NFS (um script no initrd copia o conteúdo do dispositivo raiz para um sistema de arquivos tmpfs e, em seguida, altera o valor de NEWROOT ). Tudo parecia bem no meu ambiente de teste, eu gerava um initrd customizado, inicializava, / montava de nenhum como tmpfs, mas tinha todos os arquivos fornecidos pela raiz NFS, ótimo material.

Então eu comecei a me mover em direção ao ambiente real, e quando o initrd inicializa ele engasga tentando montar a raiz NFS (que ainda é uma inicialização normal do NFS naquele ponto) reclamando mount.nfs4: No such device .

Eu gero meu initrd usando:

dracut -v -m "nfs network base" --include rd.live.overlay/ / initrd-tmpfs.img

Confirmei que o initrd-tmpfs.img está sendo carregado (com base na parte inicial da inicialização PXE, onde ele lista o initrd de seu carregamento).

Quando o initrd falha, ele cai no shell de emergência e tem algumas coisas interessantes:

ip addr show lista meu IP do DHCP e eu posso fazer ping no servidor NFS

echo $netroot lista os parâmetros de inicialização do NFS nfs4:[Server IP]:[root location]:[nfs options]

mount -t nfs4 [Server IP]:[root location] /sysroot results: mount.nfs4: No such device (muito familiar)

modprobe nfs results: modprobe:FATAL: Module nfs not found obviamente um problema

grep nfs /usr/lib/dracut/modules.txt corresponde

grep nfs /usr/lib/modules/[kernel version]/modules.order corresponde algumas vezes, mencionando: kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko , mas nenhuma delas existe

Ambiente: RHEL 7

Parece que minha pergunta foi respondida assim que terminei de escrever, vou postar a resposta

    
por Centimane 31.08.2016 / 22:47

1 resposta

2

A última etapa de depuração na qual eu dei o primeiro passo, então eu imaginei que iria postar a resposta para o bem dos outros. grep nfs /usr/lib/modules/[kernel version]/modules.order correspondia kernel/fs/nfs.ko | kernel/fs/nfsv3.ko | kernel/fs/nfsv4.ko , mas eles não existiam.

Bem, *.ko representa um driver de kernel e initrd tem uma opção --add-drivers , então

dracut -v -m "nfs network base" --include rd.live.overlay/ / initrd-tmpfs.img

tornou-se:

dracut -v -m "nfs network base" --add-drivers "nfs nfsv4" \
--include rd.live.overlay/ / initrd-tmpfs.img

Em seguida, lsinitrd | grep nfs listado nfs.ko e nfsv4.ko , o dispositivo raiz foi montado, copiado e feliz, há um servidor sem disco inicializado pelo NFS que possui um diretório tmpfs / , ótimo para um HA sem disco cluster.

A diferença nos drivers entre meu ambiente de teste e o destino seria um resultado de /etc/dracut.conf ou /etc/dracut.conf.d/ , que pode especificar os drivers a serem incluídos, mas não olhei muito para eles (prefiro especificar os drivers ao executar o comando por causa da minha sanidade).

    
por 31.08.2016 / 22:47