Загружено ли все ядро ​​в память при загрузке?

Я прочитал этот популярный документ IBM (я вижу, что он довольно часто упоминается в Интернете), объясняя функцию исходного RAM-диска.

Я ударил стену в концептуализации того, как это работает.

В документе говорится:

Загрузочный загрузчик, такой как GRUB, идентифицирует ядро, которое должно быть загружено, и копирует этот образ ядра и любой связанный initrd в память

Я уже смущен: копирует ли это все ядро ​​в память или только часть его? Если все ядро ​​находится в памяти, то зачем нам даже нужен начальный RAM-диск?

Я думал, что цель initrd – иметь небольшой обобщенный образ ядра, а initrd будет устанавливать в нем правильные модули до загрузки образа ядра. Но если все ядро ​​уже в памяти, зачем нам нужно initrd?

Это также вызывает другое, что меня смущает – где модули, которые загружаются в ядро? Все модули ядра хранятся внутри initrd?

  • Как настроить grub для загрузки Linux-ядра с жесткого диска USB?
  • Команда, чтобы знать активные запущенные пакеты ядра
  • Что такое «структуры данных ядра»?
  • Учитывая vmlinuz и initrd.gz, как узнать, откуда ядро ​​загружается / (корневая) файловая система?
  • Нужны ли мне права root (admin) для запуска пользовательского пространства? (первичные события включены в ядре Linux)
  • Показать скрытый модуль в ядре linux
  • Ядро APT-Pinning
  • В: Как сообщить ядру Linux игнорировать устройства MULTIPLE ata?
  • 3 Solutions collect form web for “Загружено ли все ядро ​​в память при загрузке?”

    Все ядро ​​загружается в память при загрузке, как правило, вместе с initramfs настоящее время. (По-прежнему можно настроить систему для загрузки без initramfs но это необычно на настольных компьютерах и серверах.)

    initramfs заключается в предоставлении функциональности, необходимой для монтирования «реальных» файловых систем и продолжения загрузки системы. Это включает в себя модули ядра, а также различные двоичные файлы: вам нужно как минимум udev , возможно, некоторые сети и kmod которые загружают модули.

    Модули могут быть загружены в ядро ​​позже, чем просто загрузка, поэтому нет никакой специальной подготовки ядра initramfs . Они могут храниться где угодно: initramfs , /lib/modules в реальной файловой системе, в дереве разработки, если вы разрабатываете модуль … В initramfs должны быть только модули, необходимые для монтирования корневой файловой системы (которая содержит остальные).

    Все ядро ​​(но не его модули) будет загружено в память. Если есть модули, которые нужны ядру до того, как будут доступны какие-либо файловые системы (это обычно означает драйверы для файловых систем и их устройств), тогда эти модули будут в initramfs (в памяти), и ядро ​​загрузит их оттуда. Другие модули могут быть загружены позже из файловой системы.

    Ядро в современных установках Linux в значительной степени основано на модуле, т. Е. Собственно ядро ​​(загруженное при загрузке в ОЗУ) включает в себя только минимальную функциональность, все остальное скомпилировано как модули (загружаемые во время выполнения). Чтобы сделать эту работу, даже если, например, устройства или файловые системы, необходимые для загрузки, являются модулями, initramfs загружается с ядром (как следует из названия, это область RAM с простой файловой системой, установленной при загрузке). Эта временная файловая система монтируется в / , и содержит программы запуска и необходимые модули. Как только initramfs , Linux выполняет pivot_root(8) , создавая реальное / и бросая содержимое initramfs .

    Дело в том, что, например, дистрибутив может скомпилировать одно ядро (минимальное ядро ​​и полный набор модулей), а при установке ядра создать initramfs учетом аппаратного обеспечения и настройки целевой машины. Все это требуется из-за дикого разнообразия устройств и конфигураций «Персональных компьютеров».

    Interesting Posts

    Изменит ли пароль пароль какого-либо пользователя и пароль sudo?

    настройка kvm на беспроводном интерфейсе на ноутбуке

    После печати предыдущей строки, где файл содержит один токен, теперь нужно пройти через результат, чтобы соответствовать требованию

    Почему файловые системы * nix поддерживают имена файлов с символами новой строки?

    Доступ к USB-устройству из контейнера systemd-nspawn

    Не удалось заблокировать сайты с помощью OpenVPN

    Непоследовательное поведение разделителя полей пространства в awk

    Как найти пакеты Debian, которые освободят пространство

    Сколько времени занимает установка Linux Mint?

    Название подпапки RPM

    Centos: сценарий Adduser / Passwd / Sudoer

    Могу ли я заставить Tmux сказать Vim, когда его панель теряет фокус?

    ошибки ловушки в сценариях bash

    Сценарий оболочки для удаления нескольких файлов

    Малина Pi, последовательная консоль, миникомпьютер и гном-терминал

    Linux и Unix - лучшая ОС в мире.