No nosso trabalho, estamos usando cerca de 80 máquinas sem disco executando o Ubuntu. Queremos fazer a transição para o IPv6, então agora estou tentando fazer com que o nosso sistema sem disco funcione com o IPV6. A transmissão do kernel e do initramfs ainda pode estar em uma conexão IPv4, mas quando a máquina estiver totalmente inicializada, desejo que todas as conexões de rede sejam feitas em IPv6.
Isso significa que o nfsroot deve ser montado via IPv6. Minha pesquisa mostrou que o initramfs-tools (1.18.5-1ubuntu4.1) NÃO suporta IPv6. Isso significa que nem o ipconfig, usado para configuração da interface no início da inicialização, nem o procedimento de montagem da raiz nfs são compatíveis com IPv6.
Para contornar isso, adicionei dois binários ao initramfs ( /etc/initramfs-tools/hooks/ipv6
):
#!/bin/bash
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/dhclient /sbin
copy_exec /sbin/mount.nfs4 /sbin
Eu os uso para (a) solicitar um DHCPv6 no momento da inicialização com
/sbin/dhclient -6 -1 -cf /tmp/dhclient.conf -pf /tmp/dhclient6.eth0.pid -lf /tmp/dhclient6.eth0.leases eth0
e (b) configurar a interface com o endereço que atingi executando:
ipv6=$(cat /tmp/dhclient6.eth0.leases | grep iaaddr | egrep -o "([a-f0-9]{1,4}:){3}([a-f0-9]{0,4}:){0,4}[a-f0-9]{1,4}")
ip -6 addr add $ipv6/112 dev eth0
Normalmente, a raiz nfs é montada com o seguinte comando em /usr/share/initramfs-tools/scripts/nfs
:
nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}
Mas isso não parece aceitar endereços IPv6.
Então eu mudei para:
mount ${roflag} -t nfs4 ${NFSROOT} ${rootmnt}
$NFSROOT
neste caso é [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6
.
A configuração da interface parece funcionar tão bem quanto a montagem raiz, mas quando /sbin/init
é executada (acho), o IPv6 cai novamente e, portanto, o sistema congela (porque não pode mais acessar a raiz do ubuntu).
O /etc/network/interfaces
arquivo fica assim:
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth0 inet6 manual
Existe uma maneira de manter a configuração da interface do initramfs? Ou estou fazendo algo errado ao configurar a interface ip
?
Respostas:
talvez esteja fora do assunto para você, mas acho que seu problema específico pode ser evitado repensando o serviço:
por que se preocupar em inicializar com o NFS?
Você pode tentar inicializar com iscsi (no modo somente leitura para permitir mais de uma conexão com a imagem) e, em seguida, usar iscsi ou nfs (ipv4) para os compartilhamentos de usuários, se necessário. Você pode conseguir isso com o projeto ipxe.
Outra maneira é usar squashfs + tmpfs e não se incomodar tanto com compartilhamentos durante o processo de inicialização do sistema e, em seguida, fazer remontagens dependendo das autenticações do usuário (no entanto, isso tem um maior consumo de memória no lado do cliente).
Espero que ajude você.
fonte