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
?