Tại nơi làm việc, chúng tôi đang sử dụng khoảng 80 máy không đĩa chạy Ubuntu. Chúng tôi muốn thực hiện chuyển đổi sang IPv6, vì vậy bây giờ tôi đang cố gắng để hệ thống không đĩa của chúng tôi hoạt động với IPV6. Việc truyền kernel và initramfs vẫn có thể qua kết nối IPv4, nhưng một khi máy đã được khởi động đầy đủ, tôi muốn tất cả các kết nối mạng đều qua IPv6.
Điều này có nghĩa là nfsroot phải được gắn qua IPv6. Nghiên cứu của tôi về điều này đã chỉ ra rằng initramfs-tools (1.18.5-1ubfox4.1) KHÔNG hỗ trợ IPv6. Điều đó có nghĩa là cả ipconfig, không được sử dụng cho cấu hình giao diện vào thời điểm khởi động sớm cũng như quy trình gắn kết cho root nfs đều có khả năng IPv6.
Để phá vỡ điều này, tôi đã thêm hai tệp nhị phân vào 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
Tôi sử dụng chúng để (a) yêu cầu DHCPv6 vào thời điểm khởi động sớm với
/sbin/dhclient -6 -1 -cf /tmp/dhclient.conf -pf /tmp/dhclient6.eth0.pid -lf /tmp/dhclient6.eth0.leases eth0
và (b) để định cấu hình giao diện với địa chỉ tôi đạt được bằng cách thực hiện:
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
Thông thường root nfs được gắn với lệnh sau trong /usr/share/initramfs-tools/scripts/nfs
:
nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}
Nhưng điều này dường như không chấp nhận địa chỉ IPv6.
Vì vậy, tôi đã thay đổi nó thành:
mount ${roflag} -t nfs4 ${NFSROOT} ${rootmnt}
$NFSROOT
trong trường hợp này là [2001:4ca0:2218:1::1:2]:/lb/diskless/rootfs/ubuntu_1204_ipv6
.
Cấu hình giao diện dường như hoạt động tốt như cài đặt gốc, nhưng khi /sbin/init
được thực thi (tôi nghĩ), IPv6 lại bị hủy và do đó hệ thống đóng băng (vì nó không thể truy cập vào root ub Ubuntu nữa).
Các /etc/network/interfaces
tập tin trông như thế này:
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth0 inet6 manual
Có cách nào để giữ cấu hình giao diện từ initramfs không? Hay tôi đang làm gì đó sai khi tôi cấu hình giao diện ip
?