IPv6 के साथ डिस्क रहित बूट


16

अपने काम में हम उबंटू चलाने वाली लगभग 80 डिस्कलेस मशीनों का उपयोग कर रहे हैं। हम IPv6 में परिवर्तन करना चाहते हैं, इसलिए अब मैं अपनी डिस्कलेस प्रणाली को IPV6 के साथ काम करने की कोशिश कर रहा हूं। कर्नेल और इनट्राम्राम्स का प्रसारण अभी भी एक आईपीवी 4 कनेक्शन पर हो सकता है, लेकिन एक बार मशीन पूरी तरह से बूट हो जाने के बाद मैं चाहता हूं कि सभी नेटवर्क कनेक्शन आईपीवी 6 से अधिक हो।

इसका मतलब है कि IPv6 के माध्यम से nfsroot को माउंट किया जाना है। मेरे इस शोध से पता चला है कि initramfs-tools (1.18.5-1ubuntu4.1) IPv6 का समर्थन नहीं करता है। इसका मतलब है कि न तो ipconfig, जिसका उपयोग शुरुआती समय में इंटरफ़ेस कॉन्फ़िगरेशन के लिए किया जाता है, और न ही nfs रूट के लिए माउंट बढ़ते प्रक्रिया IPv6 सक्षम है।

इसे दरकिनार करने के लिए मैंने toitramfs में दो बायनेरिज़ जोड़े ( /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

और (बी) निष्पादन के द्वारा प्राप्त किए गए पते के साथ इंटरफ़ेस को कॉन्फ़िगर करने के लिए:

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?


2
मार्ग और arp कमांड पर एक नज़र डालें। दोनों को बूट समय पर बुलाया जा सकता है, और IPV6 का समर्थन है
j0h

1
यह काफी आश्चर्यजनक है। IPv6 NFS रूट पहले से ही Red Hat टाइप सिस्टम पर पूरी तरह से समर्थित है। मैं लॉन्चपैड पर शिकायत करूंगा।
माइकल हैम्पटन

जवाबों:


1

हो सकता है कि यह आपके लिए विषय से दूर हो, लेकिन मुझे लगता है कि आपकी विशिष्ट समस्या को सेवा पर पुनर्विचार करके टाला जा सकता है:

एनएफएस के साथ बूटिंग क्यों परेशान करती है?

आप iscsi के साथ बूट करने की कोशिश कर सकते हैं (छवि को एक से अधिक कनेक्शन की अनुमति देने के लिए केवल एक रीड मोड में) और यदि आवश्यक हो तो उपयोगकर्ता के शेयरों के लिए iscsi या nfs (ipv4) का उपयोग करें। आप इसे ipxe प्रोजेक्ट के साथ हासिल कर सकते हैं।

एक और तरीका स्क्वैशफॉस्ट + tmpfs का उपयोग करना है और सिस्टम की बूटिंग प्रक्रिया के दौरान शेयरों के साथ इतना परेशान नहीं करना है और फिर उपयोगकर्ता प्रमाणीकरणों के आधार पर रीमेक करता है (हालांकि यह क्लाइंट की तरफ अधिक मेमोरी खपत है)।

आशा है कि आपकी मदद करता है।


1
क्या Ubuntu भी IPv6 पर iSCSI से बूटिंग का समर्थन करता है?
माइकल हैम्पटन ने

1
जाहिर है यह करता है।
एंटोनी रोड्रिग्ज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.