.\" -*- coding: UTF-8 -*- .\" This man-page is Copyright (C) 1997 John S. Kallal .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" If the you wish to distribute versions of this work under other .\" conditions than the above, please contact the author(s) at the following .\" for permission: .\" .\" John S. Kallal - .\" email: .\" mail: 518 Kerfoot Farm RD, Wilmington, DE 19803-2444, USA .\" phone: (302)654-5478 .\" .\" $Id: initrd.4,v 0.9 1997/11/07 05:05:32 kallal Exp kallal $ .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH initrd 4 "5 февраля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ initrd \- RAM\-диск, инициализируемый загрузчиком .SH НАСТРОЙКА Устройство \fI/dev/initrd\fP — это блочное устройство, доступное только для чтения, имеющее старший номер 1 и младший номер 250. Обычно, \fI/dev/initrd\fP принадлежит root:disk с правами 0400 (читать может только root). Если \fI/dev/initrd\fP ещё не создано, то это можно сделать с помощью команд: .PP .in +4n .EX mknod \-m 400 /dev/initrd b 1 250 chown root:disk /dev/initrd .EE .in .PP .\" .\" .\" Для использования \fI/dev/initrd\fP с поддержкой «диска в RAM» и «начального диска в RAM» ядро Linux должно быть собрано с параметрами \fBCONFIG_BLK_DEV_RAM=y\fP и \fBCONFIG_BLK_DEV_INITRD=y\fP. При использовании \fI/dev/initrd\fP драйвер диска в RAM не может загружаться как модуль. .SH ОПИСАНИЕ Специальный файл \fI/dev/initrd\fP \(em блочное устройство, доступное только для чтения. Данное устройство представляет собой диск, расположенный в оперативной памяти, который инициализируется (т.е. загружается) системным загрузчиком до запуска ядра. Затем ядро может использовать содержимое блочного устройства \fI/dev/initrd\fP для двухфазовой загрузки системы. .PP .\" .\" .\" Во время первой фазы ядро запускается и монтирует начальную корневую файловую систему из содержимого \fI/dev/initrd\fP (например, RAM\-диска, инициализированного системным загрузчиком). Во время второй фазы из начального содержимого корневого устройства загружаются дополнительные драйверы и модули. После загрузки дополнительных модулей с другого устройства монтируется новая корневая файловая система (т.е., нормальная корневая файловая система). .SS "Выполнение загрузки" При загрузке с \fBinitrd\fP система загружается следующим образом: .IP (1) 5 Загрузчик загружает файл ядра и содержимое \fI/dev/initrd\fP в память. .IP (2) При запуске ядра, оно разархивирует и копирует содержимое устройства \fI/dev/initrd\fP на устройство \fI/dev/ram0\fP, а затем освобождает память, занятую \fI/dev/initrd\fP. .IP (3) Затем ядро монтирует устройство \fI/dev/ram0\fP для чтения и записи в качестве начальной корневой файловой системы. .IP (4) Если заданная нормальная корневая файловая система также является начальной корневой файловой системой (например, \fI/dev/ram0\fP), то ядро переходит к последнему пункту для нормальной загрузки. .IP (5) Если в начальной корневой файловой системе находится исполняемый файл \fI/linuxrc\fP, то он исполняется с UID 0. Файл \fI/linuxrc\fP должен иметь разрешения на исполнение. Файл \fI/linuxrc\fP может быть любым допустимым исполняемым файлом, даже файлом сценария. .IP (6) Если \fI/linuxrc\fP не выполняется или когда \fI/linuxrc\fP заканчивает выполнение, монтируется нормальная корневая файловая система. Если \fI/linuxrc\fP завершается и имеется какая\-либо файловая система, примонтированная к начальной корневой файловой системе, то поведение ядра \fBНЕ ОПРЕДЕЛЕНО\fP. Смотрите подробности о поведении текущей версии ядра в разделе ЗАМЕЧАНИЯ. .IP (7) Если в нормальной корневой файловой системе есть каталог \fI/initrd\fP, то устройство \fI/dev/ram0\fP перемещается из \fI/\fP в \fI/initrd\fP. Иначе, если каталог \fI/initrd\fP не существует, то устройство \fI/dev/ram0\fP размонтируется. При перемещении из \fI/\fP в \fI/initrd\fP устройство \fI/dev/ram0\fP не размонтируется, и потому процессы, запущенные с \fI/dev/ram0\fP, продолжают выполняться. Если каталог \fI/initrd\fP не существует в нормальной корневой файловой системе и какие\-либо процессы с \fI/dev/ram0\fP продолжают выполняться после завершения \fI/linuxrc\fP, то поведение ядра \fBНЕ ОПРЕДЕЛЕНО\fP. Смотрите подробности о поведении текущей версии ядра в разделе ЗАМЕЧАНИЯ. .IP (8) .\" .\" .\" Выполняется обычная процедура загрузки (например, вызов \fI/sbin/init\fP) с нормальной корневой файловой системой. .SS Параметры При использовании \fBinitrd\fP на загрузку ядра влияют следующие параметры системного загрузчика: .TP \fBinitrd=\fP\fIимя_файла\fP Определяет файл, который нужно загрузить в качестве содержимого \fI/dev/initrd\fP. Для \fBLOADLIN\fP это параметр командной строки. Для \fBLILO\fP вы должны использовать эту команду в файле настройки \fBLILO\fP \(em \fI/etc/lilo.config\fP. Имя файла, определяемое этим параметром, обычно является образом файловой системы, сжатым программой gzip. .TP \fBnoinitrd\fP Этот загрузочный параметр отменяет двухфазную процедуру загрузки. Ядро выполняет обычную процедуру загрузки так, если бы устройство \fI/dev/initrd\fP не было инициализировано. С этим параметром всё содержимое \fI/dev/initrd\fP, загруженное в память системным загрузчиком, сохраняется. Этот параметр разрешает устройству \fI/dev/initrd\fP содержать любые данные, не ограничиваясь образом файловой системы. Однако, устройство \fI/dev/initrd\fP доступно только для чтения и может быть прочитано только один раз после запуска системы. .TP \fBroot=\fP\fIимя_устройства\fP .\" .\" .\" Определяет устройство, которое должно быть использовано в качестве нормальной корневой файловой системы. Для \fBLOADLIN\fP это параметр командной строки Для \fBLILO\fP этот параметр определяется во время загрузки или строкой в файле настройки \fBLILO\fP — \fI/etc/lilo.config\fP. Устройство, определяемое этим параметром, должно быть монтируемым устройством, имеющим подходящую корневую файловую систему. .SS "Смена нормальной корневой файловой системы" .\" commit dc7a08166f3a5f23e79e839a8a88849bd3397c32 По умолчанию, для определения нормальной корневой файловой системы используются настройки ядра (например, установленные в файле ядра с помощью \fBrdev\fP(8) или на этапе сборки ядра) или параметр системного загрузчика. При монтировании нормальной корневой файловой системы по NFS для задания настроек NFS нужно использовать загрузочные параметры \fBnfs_root_name\fP и \fBnfs_root_addrs\fP. Дополнительную информацию об этом можно найти в файле документации к ядру \fIDocumentation/filesystems/nfs/nfsroot.txt\fP (или \fIDocumentation/filesystems/nfsroot.txt\fP в Linux 2.6.33). Также дополнительная информация по настройкам корневой файловой системы содержится в документации к \fBLILO\fP и \fBLOADLIN\fP. .PP Также сменить нормальное корневое устройство можно из \fI/linuxrc\fP. Для этого должен быть смонтирован каталог \fI/proc\fP. После монтирования \fI/proc\fP, сменить нормальное корневое устройство из \fI/linuxrc\fP можно записав настройки в proc\-файлы \fI/proc/sys/kernel/real\-root\-dev\fP, \fI/proc/sys/kernel/nfs\-root\-name\fP и \fI/proc/sys/kernel/nfs\-root\-addrs\fP. Для смены физического корневого устройства из \fI/linuxrc\fP нужно записать номер нового устройства корневой файловой системы в \fI/proc/sys/kernel/real\-root\-dev\fP. Для смены корневой файловой системы NFS из \fI/linuxrc\fP нужно записать настройки NFS в файлы \fI/proc/sys/kernel/nfs\-root\-name\fP и \fI/proc/sys/kernel/nfs\-root\-addrs\fP, а затем записать 0xff (номер псевдо\-NFS\-устройства) в файл \fI/proc/sys/kernel/real\-root\-dev\fP. Так, например, следующие команды изменят нормальное корневое устройство на \fI/dev/hdb1\fP: .PP .in +4n .EX echo 0x365 >/proc/sys/kernel/real\-root\-dev .EE .in .PP В качестве примера c NFS, следующие команды изменят нормальное корневое устройство на каталог NFS \fI/var/nfsroot\fP на NFS\-сервере локальной сети с IP\-адресом 193.8.232.7 для системы с IP\-адресом 193.8.232.2 и именем \&'idefix': .PP .in +4n .EX echo /var/nfsroot >/proc/sys/kernel/nfs\-root\-name echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \e >/proc/sys/kernel/nfs\-root\-addrs echo 255 >/proc/sys/kernel/real\-root\-dev .EE .in .PP .\" commit 9d85025b0418163fae079c9ba8f8445212de8568 .\" FIXME . Should this manual page describe the pivot_root mechanism? .\" .\" .\" \fBЗамечание\fP: Файл \fI/proc/sys/kernel/real\-root\-dev\fP для смены корневой файловой системы больше не применяется. Современный метод смены корневой файловой системы описан в файле кода ядра Linux \fIDocumentation/admin\-guide/initrd.rst\fP (или \fIDocumentation/initrd.txt\fP до Linux 4.10), а также в \fBpivot_root\fP(2) и \fBpivot_root\fP(8). .SS Использование Основной причиной реализации \fBinitrd\fP стала потребность в настройках модулей ядра во время установки системы. .PP Возможный сценарий установки системы: .IP (1) 5 Программа\-загрузчик стартует с дискеты или другого носителя с минимальным ядром (например, включающим поддержку \fI/dev/ram\fP, \fI/dev/initrd\fP и файловой системы ext2) и загружает в \fI/dev/initrd\fP начальную файловую систему, сжатую программой gzip. .IP (2) Исполняемый файл \fI/linuxrc\fP определяет: (1) что необходимо, чтобы смонтировать нормальную корневую файловую систему (т.е., тип устройства, драйверы, файловую систему) и (2) носитель распространения (например, CD\-ROM, сеть, лента, …). Для этого может быть задан вопрос пользователю, запущена автоматического определения или использован гибридный подход. .IP (3) Исполняемый файл \fI/linuxrc\fP загружает необходимые модули из начальной корневой файловой системы. .IP (4) Исполняемый файл \fI/linuxrc\fP создаёт и заполняет корневую файловую систему (на этой стадии нормальная корневая файловая система ещё не является законченной системой). .IP (5) Исполняемый файл \fI/linuxrc\fP устанавливает \fI/proc/sys/kernel/real\-root\-dev\fP, размонтирует \fI/proc\fP, нормальную корневую файловую систему и все другие файловые системы, которые он монтировал, а затем завершает работу. .IP (6) Затем ядро монтирует нормальную корневую файловую систему. .IP (7) Теперь, поскольку файловая система доступна и полноценна, может быть установлен системный загрузчик. .IP (8) Системный загрузчик настраивается так, чтобы загружать в \fI/dev/initrd\fP файловую систему с набором модулей, которые были использованы для запуска системы в первый раз (например, устройство \fI/dev/ram0\fP может быть изменено, затем размонтировано и, наконец, образ записывается из \fI/dev/ram0\fP в файл). .IP (9) Система теперь может загружаться, и можно выполнять дополнительные действия по установке. .PP Ключевая роль \fI/dev/initrd\fP в вышеописанном механизме \(em в повторном использовании данных настройки во время нормальных действий системы без необходимости начального выбора ядра, загрузки ядра большего размера или пересборки ядра. .PP Второй вариант, где пригодится \fBinitrd\fP \(em установка Linux на системы с различными наборами оборудования в одной обслуживаемой сети. В таких случаях может быть желательно использовать лишь небольшой набор ядер (в идеале \(em одно) и поддерживать как можно меньше по объему специфических изменений под конкретные системы. В этом случае создайте общий файл со всеми необходимыми модулями. После этого будет разным только файл \fI/linuxrc\fP или файл, запускаемый \fI/linuxrc\fP. .PP Третий вариант — более удобные диски восстановления системы. Поскольку информация, например расположение раздела корневой файловой системы, не нужна во время начальной загрузки, загруженная с \fI/dev/initrd\fP система может использовать диалоговый режим и/или автоматическое определение с последующей, возможно, проверкой правильности. .PP .\" .\" .\" И наконец, дистрибутивы Linux на CD\-ROM могут использовать \fBinitrd\fP для упрощения установки с CD\-ROM. Дистрибутив может использовать \fBLOADLIN\fP для непосредственной загрузки \fI/dev/initrd\fP с CD\-ROM без необходимости в дискетах. Дистрибутив также может использовать загрузочную дискету \fBLILO\fP и затем запускаться с помощью \fI/dev/initrd\fP с большего RAM\-диска, находящегося на CD\-ROM. .SH ФАЙЛЫ \fI/dev/initrd\fP .br \fI/dev/ram0\fP .br \fI/linuxrc\fP .br .\" .\" .\" \fI/initrd\fP .SH ЗАМЕЧАНИЯ .IP \[bu] 3 В текущем ядре все файловые системы, которые остаются смонтированными, когда \fI/dev/ram0\fP перемещается из \fI/\fP в \fI/initrd\fP, остаются доступными. Между тем, элементы \fI/proc/mounts\fP не обновляются. .IP \[bu] В текущем ядре, если каталог \fI/initrd\fP не существует, то \fI/dev/ram0\fP \fBНЕ\fP будет полностью размонтирован, если \fI/dev/ram0\fP используется какими\-либо процессами или на нём смонтирована какая\-либо файловая система. Если \fI/dev/ram0\fP \fBНЕ\fP размонтирован полностью, то \fI/dev/ram0\fP остаётся в памяти. .IP \[bu] .\" .\" .\" .\" .SH AUTHORS .\" The kernel code for device .\" .BR initrd .\" was written by Werner Almesberger and .\" Hans Lermen . .\" The code for .\" .BR initrd .\" was added to the baseline Linux kernel in development version 1.3.73. При использовании \fI/dev/initrd\fP не нужно полагаться на поведение, описанное ранее. Поведение ядра Linux может измениться в будущих версиях. .SH "СМ. ТАКЖЕ" \fBchown\fP(1), \fBmknod\fP(1), \fBram\fP(4), \fBfreeramdisk\fP(8), \fBrdev\fP(8) .PP .\" commit 9d85025b0418163fae079c9ba8f8445212de8568 Файл \fIDocumentation/admin\-guide/initrd.rst\fP (или \fIDocumentation/initrd.txt\fP до Linux 4.10) из дерева исходного кода ядра Linux, документация к LILO, документация к LOADLIN, документация к SYSLINUX. .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitriy S. Seregin , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .