LINUX.ORG.RU
ФорумAdmin

Передача параметров процессу INIT


0

0

из kernel-parameters.txt Ясно что можно менять прородителя всех процессов в OS LinuxOS по средствам параметра ядра init
init= [KNL]
Format: <full_path>
Run specified binary instead of /sbin/init as init
process.
А на скока валидно передовать параметры для запуска этого процесса и какие правила Для этого??
то есть интересует валидность записи init=/sbin/init 3

★★

> А на скока валидно передовать параметры для запуска этого процесса и какие правила Для этого??

Из man 7 bootparam:

The Argument List
The kernel command line is parsed into a list of strings (boot arguments) separated by spaces. Most of the boot args take the form
of:

name[=value_1][,value_2]...[,value_10]

where 'name' is a unique keyword that is used to identify what part of the kernel the associated values (if any) are to be given to.
Note the limit of 10 is real, as the present code only handles 10 comma separated parameters per keyword. (However, you can re-use
the same keyword with up to an additional 10 parameters in unusually complicated situations, assuming the setup function supports it.)

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.

Then it walks a list of setup functions (contained in the bootsetups array) to see if the specified argument string (such as 'foo')
has been associated with a setup function ('foo_setup()') for a particular device or part of the kernel. If you passed the kernel the
line foo=3,4,5,6 then the kernel would search the bootsetups array to see if 'foo' was registered. If it was, then it would call the
setup function associated with 'foo' (foo_setup()) and hand it the arguments 3, 4, 5 and 6 as given on the kernel command line.

Anything of the form 'foo=bar' that is not accepted as a setup function as described above is then interpreted as an environment vari‐
able to be set. A (useless?) example would be to use 'TERM=vt100' as a boot 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.

Т.е. ядро когда разбирает каждый параметр, сначала пытается интерпретировать его само (например это параметр какого-нибудь драйвера). Затем, если параметр форме X=Y, оно интерпретирует это его как переменную среды, в которой будет запущен процесс init. Все остальные параметры просто передаются init'у.

> то есть интересует валидность записи init=/sbin/init 3


man 8 init

Это стандартный способ передачи init'у параметра с номером уровня загрузки. Только ядро считает "init=/sbin/init" и "3" разными параметрами, первый обрабатывает само, а второй не знает как обрабатывать и толкает init'у в список параметров.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.