
Файл initrd.img – это временная файловая система, которая загружается в память одновременно с ядром Linux и используется до момента подключения основной корневой файловой системы. Он содержит минимальный набор инструментов, драйверов и сценариев, необходимых для подготовки окружения, в котором ядро сможет продолжить загрузку системы. Без initrd загрузка невозможна в конфигурациях, где корневой раздел зависит от дополнительных модулей ядра или нестандартных схем хранения данных.
Практическая необходимость initrd проявляется при использовании LVM, RAID, шифрования дисков (например, LUKS), сетевой загрузки или размещения корневого раздела на нестандартных носителях. Ядро на раннем этапе не располагает драйверами для работы с такими конфигурациями, поэтому initrd выступает промежуточным слоем, который загружает нужные модули, выполняет инициализацию устройств и только затем передаёт управление основной системе.
В реальных сценариях администрирования initrd напрямую влияет на стабильность загрузки. Несоответствие версии initrd и ядра, отсутствие нужного модуля или ошибка в скриптах инициализации приводят к остановке загрузки с сообщениями вроде cannot mount root fs. Поэтому при обновлении ядра, изменении схемы разделов или миграции системы рекомендуется пересобирать initrd с помощью штатных утилит дистрибутива и проверять его содержимое.
Понимание устройства initrd img позволяет точечно решать проблемы загрузки, настраивать кастомные образы для серверов и встроенных систем, а также осознанно управлять процессом старта Linux. Это особенно важно в средах, где доступ к системе после сбоя ограничен и каждая ошибка на раннем этапе приводит к простоям.
Какую роль initrd img играет на этапе загрузки ядра Linux
После передачи управления от загрузчика ядро Linux распаковывается в память и сразу сталкивается с ограничением: оно ещё не имеет доступа к драйверам, которые не были встроены при компиляции. В этот момент initrd.img монтируется как временная корневая файловая система и становится рабочей средой для начального этапа загрузки. Ядро запускает из неё первый пользовательский процесс, который отвечает за дальнейшую инициализацию.
Содержимое initrd включает модули ядра для контроллеров дисков, файловых систем и вспомогательных подсистем, без которых невозможно обнаружить и подключить реальный корневой раздел. Именно здесь загружаются драйверы SATA, NVMe, USB, а также поддержка ext4, xfs или btrfs, если они не встроены в ядро. При использовании шифрования или логических томов initrd выполняет расшифровку контейнеров и активацию томов до переключения на основную систему.
На практике initrd управляет логикой поиска корневого раздела: анализирует параметры командной строки ядра, ожидает появления нужных устройств в /dev, обрабатывает задержки и зависимости. Это особенно важно для систем с асинхронной инициализацией оборудования, где диск может стать доступным позже старта ядра. При нестандартных конфигурациях рекомендуется проверять, что нужные модули явно включены в образ initrd.
Завершив подготовку, initrd выполняет переключение корня с помощью pivot_root или switch_root и передаёт управление основной файловой системе. После этого его роль заканчивается, а дальнейшая загрузка продолжается стандартными механизмами init-системы. Любая ошибка на этом этапе указывает на проблему именно в initrd, поэтому диагностику сбоев загрузки следует начинать с анализа его состава и сценариев инициализации.
Какие задачи решает initrd img при монтировании корневой файловой системы

На этапе подключения корневой файловой системы initrd.img выполняет функции посредника между ядром и реальным хранилищем данных. Он подготавливает среду, в которой становятся доступны блочные устройства, необходимые для монтирования корня, включая инициализацию udev и ожидание появления устройств в /dev. Это позволяет избежать ошибок, связанных с тем, что диск ещё не обнаружен аппаратной подсистемой.
Одной из ключевых задач initrd является загрузка модулей ядра, обеспечивающих доступ к нужному типу файловой системы и контроллеру хранения. Если корневой раздел расположен на NVMe, USB-устройстве или виртуальном диске, соответствующие драйверы подключаются именно на этом этапе. При изменении типа носителя или файловой системы необходимо пересобрать initrd, иначе монтирование завершится сбоем.
В конфигурациях с логическими томами и массивами initrd выполняет сборку RAID, активацию LVM и проверку их состояния перед попыткой монтирования корня. Для зашифрованных разделов он обрабатывает ввод ключа, открывает контейнер и создаёт виртуальное блочное устройство, которое далее используется как корневая файловая система. Ошибки в этих сценариях чаще всего связаны с отсутствием утилит или модулей внутри initrd.
После подготовки хранилища initrd монтирует корневой раздел в временную точку, проверяет его доступность и целостность, а затем выполняет переключение корня на постоянную файловую систему. На этом этапе важно, чтобы параметры загрузки ядра точно соответствовали реальному расположению корня, иначе initrd не сможет завершить процедуру и загрузка будет остановлена.
Чем initrd img отличается от initramfs на практике
Это различие влияет на требования к ранней конфигурации ядра. Для initrd необходим драйвер файловой системы образа уже на старте, иначе загрузка прерывается. Initramfs не зависит от драйверов ФС на этом этапе, поэтому он устойчив при смене контроллеров хранения и чаще применяется в системах с частыми обновлениями ядра.
| Практический аспект | initrd img | initramfs |
| Форма поставки | Образ файловой системы | Архив cpio |
| Подключение при загрузке | Монтирование как корня | Распаковка в RAM |
| Зависимость от драйверов ФС | Критична на старте | Отсутствует |
| Практика использования | Редкие и устаревшие сценарии | Стандарт для современных дистрибутивов |
В администрировании важно учитывать, что имя файла initrd.img не отражает формат содержимого. В большинстве актуальных систем под этим именем находится initramfs, поэтому для анализа и правок следует использовать распаковку архива, а не попытку монтирования образа.
Из каких файлов и модулей состоит initrd img
Содержимое initrd img формируется как минимальная, но функциональная файловая иерархия, достаточная для обнаружения и подготовки корневого раздела. Состав напрямую зависит от конфигурации системы, типа носителей и способа хранения данных, поэтому при изменениях окружения initrd необходимо пересобирать.
В основе initrd всегда присутствует исполняемый файл начального процесса и базовая структура каталогов. Чаще всего используется скрипт или бинарник, запускаемый ядром в качестве первого пользовательского процесса, который управляет всей логикой инициализации.
- /init – основной исполняемый файл или сценарий, отвечающий за загрузку модулей, активацию устройств и переключение корня
- /bin, /sbin – минимальный набор утилит для работы с устройствами, томами и файловыми системами
- /lib и /lib/modules – модули ядра для контроллеров хранения, файловых систем и вспомогательных подсистем
- /etc – конфигурационные файлы, включая параметры udev, криптографии и логических томов
Отдельную роль в initrd играют модули ядра, которые загружаются динамически в зависимости от параметров загрузки и обнаруженного оборудования. Их отсутствие приводит к невозможности обнаружить корневой раздел.
- драйверы контроллеров SATA, NVMe, USB и виртуальных устройств
- модули файловых систем, используемых для корня
- подсистемы dm-crypt, LVM и сборки массивов
Для автоматического обнаружения устройств в initrd обычно присутствует udev и связанные с ним правила. В зашифрованных конфигурациях добавляются утилиты для ввода ключей и открытия контейнеров. При отладке загрузки рекомендуется распаковывать initrd и проверять наличие нужных модулей и бинарников, так как их отсутствие является частой причиной сбоев.
Как initrd img помогает загружаться системам с RAID, LVM и шифрованием
В системах, где корневая файловая система размещена на сложных уровнях абстракции, initrd img выполняет критическую роль посредника между ядром и реальным хранилищем. Ядро само по себе не способно собрать массив, активировать логические тома или открыть зашифрованный контейнер без дополнительных утилит и модулей, которые предоставляются именно initrd.
При использовании программного RAID initrd загружает модули управления массивами и выполняет сборку устройств до попытки монтирования корня. Он анализирует метаданные, объединяет диски в единое устройство и проверяет его доступность. Если RAID содержит корневой раздел, отсутствие нужных компонентов в initrd приводит к остановке загрузки ещё до запуска init-системы.
- загрузка модулей для работы с программными массивами
- сборка RAID-устройств на основе метаданных
- ожидание появления всех участников массива
Для конфигураций с LVM initrd активирует группы томов и логические разделы, которые физически не существуют до выполнения соответствующих команд. Он сканирует доступные устройства, поднимает volume group и делает доступным логический том, указанный как корневой. Любые изменения в структуре LVM требуют пересборки initrd, иначе корень не будет найден.
- инициализация подсистемы device-mapper
- сканирование физических томов
- активация логических томов до монтирования
В зашифрованных системах initrd отвечает за открытие контейнеров с помощью dm-crypt. Он обрабатывает ввод ключа, использует заданный метод расшифровки и создаёт виртуальное блочное устройство, которое затем используется как обычный раздел. При диагностике проблем загрузки важно убедиться, что initrd содержит утилиты шифрования и корректные конфигурационные файлы, иначе доступ к данным будет невозможен.
- поддержка ввода пароля или ключевого файла
- открытие зашифрованных контейнеров
- создание виртуальных устройств для дальнейшей загрузки
Как создаётся и обновляется initrd img в дистрибутивах Linux

Создание initrd img в дистрибутивах Linux выполняется автоматически на основе текущей конфигурации системы и версии ядра. Специальные утилиты анализируют установленное оборудование, используемые файловые системы, наличие LVM, RAID и шифрования, после чего формируют начальное окружение с нужными модулями и сценариями. Итоговый файл размещается в каталоге загрузчика и привязывается к конкретному ядру.
Обновление initrd обычно происходит при установке нового ядра или изменении параметров хранения данных. В этот момент система пересобирает образ, добавляя или удаляя модули ядра и вспомогательные утилиты. Если обновление ядра прошло корректно, но initrd не был пересобран, загрузка может завершиться ошибкой из-за несоответствия версий или отсутствия нужных драйверов.
В практической работе важно вручную пересобирать initrd после изменений, которые затрагивают путь к корневому разделу. Это относится к смене файловой системы, добавлению шифрования, переносу корня на другой диск или изменению структуры LVM. Перед пересборкой рекомендуется убедиться, что система корректно обнаруживает новое оборудование и что все необходимые модули доступны в установленном ядре.
После создания initrd его следует проверить на соответствие версии ядра и параметрам загрузки. Хранение нескольких образов для разных ядер позволяет быстро вернуться к рабочей конфигурации при сбоях. Такой подход снижает риск потери доступа к системе и упрощает восстановление после неудачных обновлений.
Какие проблемы загрузки связаны с initrd img и как их диагностировать
Частой причиной является несоответствие версии initrd и загруженного ядра. После обновления ядра может остаться старый образ, не содержащий нужных модулей. Это приводит к тому, что драйверы контроллеров хранения или файловых систем не загружаются. Диагностику следует начинать с проверки, какой initrd используется загрузчиком и к какому ядру он привязан.
Отдельную категорию проблем составляют ошибки в конфигурациях LVM, RAID и шифрования. Если initrd не содержит утилит для активации томов или открытия контейнеров, корневой раздел остаётся недоступным. В таких ситуациях полезно загрузиться в аварийную оболочку initrd и вручную проверить, обнаруживаются ли устройства и выполняются ли команды активации.
Для диагностики initrd рекомендуется распаковывать его содержимое и анализировать наличие критичных файлов: сценария /init, модулей ядра и конфигураций. Также следует внимательно изучать параметры командной строки ядра, так как некорректное указание UUID или имени устройства приводит к сбою даже при корректно собранном initrd. Понимание этих связей позволяет быстро локализовать источник проблемы и восстановить загрузку системы.
Вопрос-ответ:
Почему система не загружается без initrd img, хотя ядро установлено корректно?
Ядро Linux не содержит всех возможных драйверов и утилит внутри себя. Если корневая файловая система расположена на RAID, LVM, зашифрованном разделе или на носителе с отдельным драйвером, ядро физически не может получить к ней доступ без промежуточного окружения. Initrd img предоставляет модули ядра и инструменты, которые подготавливают устройства и делают корень доступным для монтирования.
Можно ли удалить initrd img, если система загружается с обычного ext4-раздела?
В редких случаях это возможно, если все нужные драйверы встроены прямо в ядро. На практике такие конфигурации почти не используются, так как любое обновление оборудования или ядра потребует пересборки. В стандартных дистрибутивах удаление initrd приведёт к ошибке загрузки, даже если корень расположен на простом разделе.
Почему файл называется initrd.img, если внутри находится initramfs?
Название файла сохраняется ради совместимости с загрузчиками и старыми сценариями. Внутренний формат при этом может быть архивом cpio, а не образом файловой системы. Перед анализом initrd всегда стоит проверить формат, иначе попытка смонтировать архив как диск закончится ошибкой.
Нужно ли пересобирать initrd после изменения UUID корневого раздела?
Да, если изменения затрагивают параметры загрузки или конфигурацию хранения. Initrd использует данные о расположении корня и может содержать жёстко заданные ссылки на устройства. После смены UUID или структуры томов пересборка помогает избежать ситуации, когда initrd ищет несуществующий раздел.
Как понять, что ошибка загрузки связана именно с initrd img?
Если ядро загружается, но система останавливается с сообщениями о невозможности найти корневую файловую систему, проблема почти всегда находится на уровне initrd. Дополнительным признаком служит переход в аварийную оболочку ранней загрузки. В таком режиме можно проверить наличие устройств, модулей и конфигураций, которые initrd должен был подготовить.
Что произойдёт, если initrd img повреждён или отсутствует в каталоге загрузчика?
В такой ситуации загрузчик передаст управление ядру, но дальше процесс остановится. Ядро не сможет обнаружить устройства хранения или смонтировать корневую файловую систему, что приведёт к ошибкам ранней загрузки и переходу в аварийный режим либо полной остановке. Восстановление обычно сводится к пересборке initrd для установленного ядра и обновлению конфигурации загрузчика.
Можно ли использовать один initrd img для нескольких версий ядра?
Обычно это не рекомендуется. Initrd содержит модули, собранные под конкретную версию ядра, и при несовпадении версий они не будут загружаться. В результате система может не увидеть диски или файловые системы. По этой причине дистрибутивы создают отдельный initrd для каждого установленного ядра и хранят их параллельно.
