우리는 Ubuntu를 실행하는 약 80 개의 디스크없는 머신을 사용하고 있습니다. IPv6으로 전환하고 싶으므로 이제 디스크없는 시스템이 IPV6과 작동하도록 노력하고 있습니다. 커널과 initramfs의 전송은 여전히 IPv4 연결을 통해 이루어질 수 있지만 일단 머신이 완전히 부팅되면 모든 네트워크 연결이 IPv6을 통해 이루어지기를 원합니다.
이는 nfsroot가 IPv6을 통해 마운트되어야 함을 의미합니다. 이것에 대한 나의 연구에 따르면 initramfs-tools (1.18.5-1ubuntu4.1)는 IPv6을 지원하지 않습니다. 즉, 초기 부팅시 인터페이스 구성에 사용되는 ipconfig 나 nfs 루트의 마운트 마운팅 절차 중 어느 것도 IPv6를 지원하지 않습니다.
이를 피하기 위해 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
나는 이것을 사용하여 (a) 초기 부팅시 DHCPv6을 요청합니다.
/sbin/dhclient -6 -1 -cf /tmp/dhclient.conf -pf /tmp/dhclient6.eth0.pid -lf /tmp/dhclient6.eth0.leases eth0
(b) 다음을 실행하여 얻은 주소로 인터페이스를 구성합니다.
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
일반적으로 nfs 루트는 다음 명령으로 마운트됩니다 /usr/share/initramfs-tools/scripts/nfs
.
nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}
그러나 이것은 IPv6 주소를 허용하지 않는 것 같습니다.
그래서 나는 그것을 다음과 같이 바꿨다.
mount ${roflag} -t nfs4 ${NFSROOT} ${rootmnt}
$NFSROOT
이 경우입니다 [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6
.
인터페이스 구성은 루트 마운트뿐만 아니라 작동하는 것처럼 보이지만 /sbin/init
실행 되면 (제 생각에) IPv6이 다시 삭제되어 시스템이 정지합니다 (더 이상 우분투 루트에 액세스 할 수 없기 때문에).
/etc/network/interfaces
파일은 다음과 같습니다 :
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth0 inet6 manual
initramfs에서 인터페이스 구성을 유지하는 방법이 있습니까? 또는 인터페이스를 구성 할 때 무언가 잘못하고 ip
있습니까?