Как загружается ядро?

Я пытаюсь понять процесс загрузки Linux, и, прочитав довольно много документации, есть один момент, который я все еще не могу понять.

Итак, basicis – это BIOS -> Grub MBR -> Grub CONF -> Kernel …

с grub conf, который может выглядеть так

title CentOS (2.6.32-358.2.1.el6.i686) root (hd0,0) kernel /vmlinuz-2.6.32-358.2.1.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-358.2.1.el6.i686.img 

Поэтому, основываясь на моем понимании документации + почты, которую я прочитал, ядро ​​будет загружено + mount initramfs в качестве корневой файловой системы. Затем будет выполнен запуск init, который будет отвечать за создание множества вещей для запуска и запуска системы.

Мой вопрос: как загружается ядро?

Я имею в виду, что, поскольку ядро ​​находится в /boot/vmlinuz-2.6.32-358.2.1.el6.i686 моего устройства (hd0,0), файловая система должна быть смонтирована как-то сначала, чтобы ее можно было получить.

Если (что я подозреваю) Grub монтирует раздел hd0,0, он делает сначала pivot_root с initramfs, а затем другой pivot_root с фактическим значением root = fs, специфицированным как параметр ядра?

Любые объяснения / ссылки, которые могут помочь мне понять немного лучше, как это все работает вместе,

2 Solutions collect form web for “Как загружается ядро?”

У Grub есть свои драйверы файловой системы. Он не использует Linux. Grub загружает ядро ​​и initrd в память в соответствии с протоколом загрузки ядра Linux . Часть ядра загружается с предопределенным адресом, а Grub устанавливает некоторые параметры, чтобы ядро ​​знал, где найти остальные.

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

То, что grub делает для доступа /boot (достаточно для чтения, grub действительно не нуждается в полной обработке файловой системы здесь), и получает от него соответствующие файлы. Он загружает ядро ​​и initramfs в память, а руки контролируют только что загруженное ядро.

Затем загруженное ядро ​​запускает init в initramfs, который заканчивается, наконец, pivot_root в / .

  • Каковы два файла head.S в источнике Linux?
  • Попытка понять, как работают драйверы устройств
  • После удаления ошибки linux Grub
  • С чем связаны термины CC, LD и SHIPPED во время процесса компиляции ядра ядра?
  • Обновление ядра CentOS-5.11
  • Вариант LILO vga
  • Определение значений параметров ядра, связанных с sysctl.conf и sysctl.d
  • Какой тип файла / dev / core или / proc / kcore?
  • Ошибка ядра CentOS 2.6.32-431.el6.x86_64
  • Bluetooth через uart с помощью hciattach?
  • Проблемы с ncurses-devel в SuSE Linux Enterprise Desktop 11
  • Linux и Unix - лучшая ОС в мире.