У нашій роботі ми використовуємо близько 80 бездискових машин під управлінням Ubuntu. Ми хочемо зробити перехід до 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
Я використовую їх для (а) запиту 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 знову відкидається, і тому система зависає (тому що більше не може отримати доступ до кореня ubuntu).
/etc/network/interfaces
Файл виглядає наступним чином :
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth0 inet6 manual
Чи є спосіб зберегти конфігурацію інтерфейсу від initramfs? Або я роблю щось не так, коли налаштовую інтерфейс ip
?