Мне интересно узнать, как Linux работает с отдельными загрузочными разделами. Я не заинтересован в том, чтобы делать это на самом деле, но я хотел бы знать, как это работает под капотом.
Рассмотрим жесткий диск sda
, который имеет два раздела sda1
и sda2
. Допустим, sda2
это root
раздел, /
который содержит ОС Linux.
Насколько я понимаю, что загрузчик GRUB2
, смонтирован на /boot
. Однако когда каталог /boot
находится в отдельном разделе sda2
, как это может произойти до того, как он /
будет смонтирован?
Как /boot
в этом случае успешно происходит взаимодействие между BIOS, основной загрузочной записью и GRUB (или файлами )? Неужели данные на /boot
самом деле не подключены к /
файловой системе на этом раннем этапе?
Примечание: этот вопрос касается монтирования корневого раздела, но не обсуждает отдельный загрузочный раздел.
/boot
не относится к каталогу, смонтированному в корневом разделе?run-init
который удаляет все файлы в initramfs, а затем загружает в корневую файловую систему.UEFI
становится все более популярным ;-) @strugeeЯ не думаю, что вы понимаете, это прямо здесь. Со страницы Википедии GNU GRUB :
выдержка
В GRUB версии 2 происходит следующее:
выдержка
ПРИМЕЧАНИЕ. Когда вы видите типичное меню GRUB2, в котором вы выбираете, какую ОС / ядро загружать, вы ссылаетесь на системный
/boot/grub
каталог в этой точке.Ссылки
источник
Linux (ядро) не волнует, сколько у вас загрузочных разделов. Загрузка ядра с диска является работой загрузчика (например
grub
,grub2
,lilo
) и эти средства также не заботятся о количестве мест ядро может быть расположены. Они заботятся только о конкретном месте.Например, мой загрузочный раздел -
/dev/md1
зеркало RAID mdadm, поддерживаемое физическими разделами/dev/sde1
и/dev/sdf1
. Я могу смонтировать их по отдельности, если захочу, и, таким образом, это технически считается наличием двух загрузочных разделов, хотя они должны содержать одинаковые данные.Наличие двух разделов для / boot для меня - проблема доступности, но они могут быть разными / boot-разделами. Следующий шаг - откуда загрузчик узнает? Вот как:
Это выдержка из
grub2
конфигурации , и вы заметите , что единственные различияroot=hd0,1
иroot=hd1,1
которые устанавливают , какие загрузочный раздел , что ссылки входа.Теперь, чтобы пройтись через ботинок, вы сможете понять, что здесь происходит.
grub2
) настроен на то, чтобы знать, какое устройство и раздел содержит ваше ядро. Grub2 напрямую обращается к этому разделу и загружает ваше ядро в память.Загрузчик не заботится о том, сколько у вас загрузочных разделов, он заботится только о том, где они находятся, и вы должны сообщить ему эту информацию.
Ядру не важно, сколько загрузочных разделов у вас есть, потому что оно никогда не должно их видеть (вам нужно иметь его только для добавления новых ядер, например).
источник