Khởi động không cần đĩa với IPv6


16

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/interfacestậ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?


2
Có một cái nhìn vào các lệnh tuyến và arp. Cả hai có thể được gọi vào lúc khởi động và có hỗ trợ IPV6
j0h

1
Điều này khá đáng ngạc nhiên. IPv6 NFS root đã được hỗ trợ đầy đủ trên các hệ thống loại Red Hat. Tôi sẽ phàn nàn trên launchpad.
Michael Hampton

Câu trả lời:


1

có thể nó lạc đề với bạn nhưng tôi nghĩ rằng vấn đề cụ thể của bạn có thể tránh được bằng cách suy nghĩ lại về dịch vụ:

Tại sao phải khởi động với NFS?

Bạn có thể thử khởi động với iscsi (ở chế độ chỉ đọc để cho phép nhiều hơn một kết nối đến hình ảnh) và sau đó sử dụng iscsi hoặc nfs (ipv4) cho người dùng chia sẻ nếu bạn cần. Bạn có thể đạt được điều này với dự án ipxe.

Một cách khác là sử dụng squashfs + tmpfs và không bận tâm quá nhiều đến việc chia sẻ trong quá trình khởi động hệ thống và sau đó thực hiện lại tùy thuộc vào xác thực người dùng (tuy nhiên điều này có mức tiêu thụ bộ nhớ cao hơn ở phía máy khách).

Hy vọng rằng sẽ giúp bạn.


1
Ubuntu thậm chí còn hỗ trợ khởi động từ iSCSI qua IPv6?
Michael Hampton

1
Rõ ràng là nó làm.
Antoine Rodriguez
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.