我目前正在阅读《 Linux的工作原理》一书,在第5章中将讨论Linux参数。奇怪的是,我开始看到启动时注意到了传递给已安装内核的参数是什么:
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64
我一直在网上搜索有关此参数的说明,但没有成功。谁能指出我的正确方向,从中我可以找到更多信息或解释这是什么意思BOOT_IMAGE
?需要注意的一件事是,我正在运行远程Debian服务器。我知道服务本身已虚拟化,可能是使用Xen。这与Xen以及它如何启动实例有关吗?
更新:所以在调查时,我注意到这vmlinuz-3.16.0-4-amd64
是内核映像。另外看man bootparam
它的内容是:
大多数排序在linux / init / main.c中进行。首先,内核检查参数是否为特殊参数'root =','nfsroot =','nfsaddrs =','ro','rw','debug'或'init'中的任何一个。这些特殊参数的含义如下所述。
如上所述,任何形式不可接受的“ foo = bar”形式的设置函数都将被解释为要设置的环境变量。一个(无用的?)示例将使用'TERM = vt100'作为aboot参数。
然后,所有未被内核吸收且未被解释为环境变量的剩余参数都将传递到进程1(通常是init程序)中。传递给init进程的最常见参数是“单”一词,它指示init以单用户模式启动计算机,而不启动所有常用的守护程序。在手册页上查看系统上安装的init版本,以了解它接受哪些参数。
运行systemctl show-environment
将显示如下内容:
[root@localhost ~]# systemctl show-environment
BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
LANG=en_US.UTF-8
因此,看起来我们正在传递要从中引导的Linux映像的位置作为参数。剩下的唯一问题是,哪个进程使用此环境变量,为什么?
根据http://homepage.smc.edu/morgan_david/cs40/lilo-readme.txt:
LILO always passes the string BOOT_IMAGE=<name> to the kernel, where
<name> is the name by which the kernel is identified (e.g. the label). This
variable can be used in /etc/rc to select a different behaviour, depending
on the kernel.
因此,这是(或在某些系统上仍然是)一种根据标签(或其他引导加载程序上的内核文件名)有选择地区分引导脚本行为的方法。init
可能将此变量传递给脚本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句