Qual é o parâmetro BOOT_IMAGE em / proc / cmdline

5

Atualmente estou lendo o livro Como funciona o Linux e no capítulo 5 ele fala sobre os parâmetros do Linux. Curioso eu comecei a ver quais eram os parâmetros passados para o meu kernel instalado quando ele inicializava e percebi:

BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64

Eu tenho pesquisado on-line para obter uma explicação para esse parâmetro, mas não obtive êxito. Alguém poderia me apontar para a direção certa, onde eu poderia encontrar mais informações ou explicar o que é isso BOOT_IMAGE sobre? Uma coisa a notar é que estou executando um servidor Debian remoto. Eu sei que o serviço em si é virtualizado, provavelmente com o Xen. Isso tem a ver com o Xen e como ele inicializa instâncias?

ATUALIZAÇÃO: Então, enquanto investigava, notei que vmlinuz-3.16.0-4-amd64 é a imagem do kernel. Veja também man bootparam :

Most of the sorting goes on in linux/init/main.c. First, the kernel checks to see if the argument is any of the special arguments ’root=’, ’nfsroot=’, ’nfsaddrs=’, ’ro’, ’rw’, ’debug’ or ’init’. The meaning of these special arguments is described below.

Anything of the form ’foo=bar’ that is not accepted as a setup function as described above is then interpreted as an environment variable to be set. A (useless?) example would be to use ’TERM=vt100’ as aboot argument.

Any remaining arguments that were not picked up by the kernel and were not interpreted as environment variables are then passed onto process one, which is usually the init program. The most common argument that is passed to the init process is the word ’single’ which instructs init to boot the computer in single user mode, and not launch all the usual daemons. Check the manual page for the version of init installed on your system to see what arguments it accepts.

A execução de systemctl show-environment exibirá algo como:

[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

Então parece que estamos passando como argumento a localização da imagem do Linux que estamos inicializando. As únicas perguntas restantes são quais processos usam essa variável de ambiente e por quê?

    
por Kunashu 11.12.2015 / 18:48

1 resposta

1

De acordo com o link :

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.

Portanto, era (ou permanece em alguns sistemas) uma maneira de diferenciar seletivamente o comportamento dos scripts de inicialização, dependendo do rótulo (ou nome do arquivo de kernel em outros gerenciadores de inicialização). init provavelmente passa essa variável para os scripts.

    
por 12.12.2015 / 15:20