是否有Linux内核引导参数来配置IPv6地址?


16

我知道有一个名为的参数ip,您可以通过引导加载程序在Linux内核上配置IPv4地址。如下所示:

ip=192.0.2.1::192.0.2.62:255.255.255.192::eth0:none

我正在寻找IPv6配置的相同参数。我在内核文档中找不到关于此的任何信息。

更新:因为很多人问我为什么需要这样做:使用内核配置的想法与这个问题有关。我怀疑常规的启动接口配置尚未完成,因为接口已经启动。原因可能是因为我正在使用带有Dropbear SSH服务器的预启动环境,以允许我解锁加密的根分区。通过GRUB使用该ip=参数配置此环境的IP地址。该以太网段上没有可用的DHCP或路由器广告,并且由于这是大型托管公司提供的上行链路段,因此无法更改这一事实。


实际上,没有一个。您可以启用IPv6自动配置,但这可能不是您想要的。是否有您要实现的特定结果(即,要在计算机的初始化过程中避免配置IPv6的原因是什么?)该ip=参数最初是在内核尝试装入NFS根文件系统之前配置IP堆栈的。 ,但我认为您应该依靠其他方式来实现IPv6的相同结果(很可能是SLAAC)。
pino42

我知道SLAAC。但是我需要手动设置。
2012年

3
我的感觉是,由于引入了“早期用户空间”功能(initramfs嵌入在内核中,或者像传统的initrd一样作为单独的文件),因此鼓励您在此处配置IP地址,而不要使用特殊的一次性配置。命令行参数。这可能就是为什么IPv4有一个历史命令行参数,但没有为IPv6添加任何历史参数的原因。
Celada 2012年

您需要在引导过程中的什么时候进行设置?
pino42

您极不可能需要此功能。什么究竟是你想实现什么?
迈克尔·汉普顿

Answers:


7

抱歉,但是如果您要这样做,则必须自己构建,或者更有可能复用其他人的实现。

ip=您一直在使用的命令行选项实际上是内核引导代码的一部分,用于挂载NFS根文件系统。它从未针对IPv6进行过扩展,并且在启动时没有用于配置IPv6的内核启动参数。

也就是说,某些Linux发行版(例如Red Hat)已经为其安装介质实现了自己的ipv6=启动参数。您可能可以在自定义initramfs中重用此代码。


3

根据Fedora的说法,ip =参数可以与IPv4或IPv6地址一起使用。IPv6地址必须放在方括号中。如果两者都需要,则可以在内核行上使用多个ip =选项,如下所示:

... ip = [2001:db8 :: dead:beef] :: [2001:db8 :: cafe:babe]:64 :: eth0:none ip = 192.0.2.5 :: 192.0.2.1:255.255.255.0 :: eth0:none ...


该答案与公认的答案相矛盾。这可能是由于接受的答案已过时。为了消除对哪个答案正确的疑问,最好是包含指向此信息源的链接。
kasperd 2015年

1
这可能是RedHat实现的事情的演变,迈克尔·汉普顿(Michael Hampton)的答案中提到了这一点。我在Debian Jessie中测试了它,但是没有用。我仍在寻找一种通用的Linux方法。
2015年

2

引导后,可以通过/ proc / cmdline使用所有引导参数。因此,您可以通过自定义mkinitcpio钩子设置所有需要的选项,该钩子将解析cmdline以搜索特定参数。您可以像ip = 1一样使用ipv6 =。


是的 我可以自己构建它,但这不是我想要的。仍然感谢您的想法。
2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.