En nuestro trabajo estamos utilizando alrededor de 80 máquinas sin disco que ejecutan Ubuntu. Queremos hacer la transición a IPv6, así que ahora estoy tratando de hacer que nuestro sistema sin disco funcione con IPV6. La transmisión del kernel y initramfs todavía puede realizarse a través de una conexión IPv4, pero una vez que la máquina se haya iniciado por completo, quiero que todas las conexiones de red se realicen a través de IPv6.
Esto significa que nfsroot debe montarse a través de IPv6. Mi investigación de esto ha demostrado que initramfs-tools (1.18.5-1ubuntu4.1) NO es compatible con IPv6. Eso significa que ni ipconfig, que se usa para la configuración de la interfaz en el inicio temprano, ni el procedimiento de montaje de montaje para la raíz nfs son compatibles con IPv6.
Para evitar esto, agregué dos binarios a 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
Los uso para (a) solicitar un DHCPv6 al inicio del arranque con
/sbin/dhclient -6 -1 -cf /tmp/dhclient.conf -pf /tmp/dhclient6.eth0.pid -lf /tmp/dhclient6.eth0.leases eth0
y (b) para configurar la interfaz con la dirección que obtuve ejecutando:
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
Por lo general, la raíz nfs se monta con el siguiente comando en /usr/share/initramfs-tools/scripts/nfs
:
nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}
Pero esto no parece aceptar direcciones IPv6.
Entonces lo cambié a:
mount ${roflag} -t nfs4 ${NFSROOT} ${rootmnt}
$NFSROOT
en este caso es [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6
.
La configuración de la interfaz parece funcionar tan bien como el montaje raíz, pero cuando /sbin/init
se ejecuta (creo), el IPv6 se cae nuevamente y, por lo tanto, el sistema se congela (porque ya no puede acceder a la raíz de ubuntu).
El /etc/network/interfaces
archivo se ve así:
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth0 inet6 manual
¿Hay alguna manera de mantener la configuración de la interfaz de initramfs? ¿O estoy haciendo algo mal cuando configuro la interfaz ip
?