Di tempat kerja kami, kami menggunakan sekitar 80 mesin tanpa disk yang menjalankan Ubuntu. Kami ingin melakukan transisi ke IPv6, jadi sekarang saya mencoba agar sistem diskless kami berfungsi dengan IPV6. Transmisi kernel dan initramfs masih dapat melalui koneksi IPv4, tetapi begitu mesin ini sepenuhnya boot saya ingin semua koneksi jaringan menjadi lebih dari IPv6.
Ini berarti bahwa nfsroot harus dipasang melalui IPv6. Penelitian saya tentang ini menunjukkan bahwa initramfs-tools (1.18.5-1ubuntu4.1) TIDAK mendukung IPv6. Itu berarti bahwa baik ipconfig, yang digunakan untuk konfigurasi antarmuka pada waktu boot awal, maupun prosedur pemasangan mount untuk root nfs mampu IPv6.
Untuk menghindari ini saya menambahkan dua binari ke 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
Saya menggunakan ini untuk (a) meminta DHCPv6 pada saat boot awal dengan
/sbin/dhclient -6 -1 -cf /tmp/dhclient.conf -pf /tmp/dhclient6.eth0.pid -lf /tmp/dhclient6.eth0.leases eth0
dan (b) untuk mengkonfigurasi antarmuka dengan alamat yang saya dapatkan dengan mengeksekusi:
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
Biasanya root nfs di-mount dengan perintah berikut di /usr/share/initramfs-tools/scripts/nfs
:
nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}
Tapi ini sepertinya tidak menerima alamat IPv6.
Jadi saya mengubahnya menjadi:
mount ${roflag} -t nfs4 ${NFSROOT} ${rootmnt}
$NFSROOT
dalam hal ini adalah [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6
.
Konfigurasi antarmuka tampaknya berfungsi serta pemasangan root, tetapi ketika /sbin/init
dijalankan (saya pikir), IPv6 dijatuhkan lagi, dan karena itu sistem membeku (karena tidak dapat mengakses root ubuntu lagi).
The /etc/network/interfaces
file terlihat seperti ini:
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth0 inet6 manual
Apakah ada cara untuk menjaga konfigurasi antarmuka dari initramfs? Atau apakah saya melakukan sesuatu yang salah ketika saya mengkonfigurasi antarmuka ip
?