Найти в Дзене

Загрузка Linux. Включение. Системные прошивки.

Оглавление

Под загрузкой системы, обычно, понимают запуск компьютера от нажатия кнопки включения до приведения ПК в рабочее состояние. А что происходит в момент загрузки компьютера, давайте заглянем под так сказать под капот.

Включение

-2

Что же происходит в ПК, когда мы его включаем. На самом деле, если питание к компу подключено, то он находится в режиме ожидания сигнала на включение. Этот сигнал может прийти откуда угодно. Первый, самый распространенный вариант - это кнопка включения на корпусе ПК. Второй - это кнопка на клавиатуре, которая посылает сигнал через USB-порт. Третий - сигнал на включение может прилететь по сети. Так что, если ничего не работает, то это еще не значит, что все выключено.

На этом этапе проблем обычно много не возникают и связаны они в основном с отсутствием электропитания, либо неработоспособностью блок питания.

Итак, мы нажали кнопку и что происходит дальше. А дальше процессор выполняет загрузочный код хранящийся в ПЗУ (постоянное запоминающее устройство). ПЗУ расположен на материнской плате и в большинстве случаев изменить информацию внутри него стандартными средствами не получится.

В загрузочном коде, как правило, хранятся данные обо всех устройствах, которые подключены к материнской плате, такие как контроллеры, сетевые интерфейсы и датчики. В зависимости от настройки, прошивка на материнской плате, либо сообщает об этих устройствах операционной системе, либо отключает их и скрывает.

На различном оборудовании, так же имеются свои прошивки, которые могут предоставлять свой пользовательский интерфейс. Для работы с прошивкой при включении компьютера необходимо зажать определенную клавишу. А вот какую, не скажу, так как у разных производителей они разные, надо смотреть документацию. В основном это клавиши <DEL>, <CTRL>, <F6>, <F8>, <F10> или другие. На виртуальных машинах, например, в VMware, можно установить цель загрузки в настройках. И тогда при включении, вы автоматически попадете в загрузочную прошивку, без использования специальных клавиш.

Во время загрузки система прошивки проверяет аппаратное обеспечение и диски, запускает тесты работоспособности. В интерфейсе прошивки можно назначить приоритет загрузочного устройства. При запуске система перебирает загрузочные устройства по приоритету, пока "не наткнется" на загрузочную запись ОС, после чего управление загрузкой передается специальным загрузчикам, о которых мы поговорим в следующей статье.

BIOS или UEFI

-3

Как мы выяснили раньше, после подачи сигнала о включении на ПК, загрузка передается системной прошивке. В данный момент существует две основных прошивки, BIOS и UEFI, а иногда присутствует и обе из них.

BIOS

В прошлом обычная прошивка для ПК называлась BIOS (Basic Input/Output System). Обыкновенный BIOS предполагает, что загрузочное устройство начинается с записи MBR (Master Boot Record). Именно его ищет BIOS, перебирая загрузочные устройства. Размер этой записи очень мал (менее 512 байт), и поэтому MBR ничего не может, кроме загрузки и запуска вторичного загрузчика. При этом из-за малого размера ни MBR, ни BIOS не могут обрабатывать записи любой стандартной файловой системы, поэтому прошивки должны точно знать , где находится вторичный загрузчик.

Вторичный загрузчик обычно располагается в зоне, которая идентифицирована в разделе диска, помеченного как "активный". В качестве альтернативы вторичный загрузчик может находиться в "мертвой зоне", которая расположена между MBR и началом первого раздела диска. Исторически так сложилось, что первый раздел начинается с 64-го сектора диска. Эта зона небольшая, но достаточна для хранения драйверов файловой системы.

Для успешной загрузки все необходимые компоненты должны быть правильно установлены и совместимы друг с другом.BIOS ничего не знает об установленной системе, он только ищет того, кто может знать. MBR ничего не знает об ОС, но знает где находится вторичный загрузчик. Вторичный загрузчик хорошо осведомлен об установленных ОС и файловых системах. Он может даже поддерживать одновременно несколько ОС и файловых систем и обычно имеет собственные параметры конфигурации.

UEFI

Спецификация UEFI пришла на смену BIOS. UEFI в отличии от старого BIOS поддерживает диски большего размера, имеет графический интерфейс и даже поддерживает управление мышью. Она включает в себя современную схему разделения дисков GPT. (Подробно о разбиении дисков поговорим позже, сейчас главное понять, как все работает.). Вместо использования MBR, UEFI запускает исполняемые микропрограммы EFI. И это не совсем замена BIOS. UEFI - это миниОС, которая работает над прошивкой ПК и поэтому ее хранить можно, где угодно на материнской плате, на жестком диске или загружать ее по сети.

Фактически при использовании UEFI никакой загрузчик не требуется. Целью загрузки может быть ядро UNIX или LINUX. На практике, конечно, большинство систем до сих пор использует загрузчик, так как пока по прежнему необходима совместимость с BIOS.

UEFI можно управлять из под ОС. Интерфейс этой программы, по умолчанию, находится /efi/boot/bootx64.efi. Благодаря этому можно проверять и изменять переменные UEFI. Например, команда
efibootmgr -v показывает следующюю информацию:

$efibootmgr -v
BootCurrent: 0004
BootOrder: 0000, 0001, 0002, 0004, 0003
Boot0000* EFI DVD/CDROM PciRoot (0x0)/Pci (0x1f, 0x2)/Sata (1,0,0)
Boot0001* EFI Hard Drive PciRoot (0x0)/Pci (0x1f, 0x2)/Sata (0,0,0)
Boot0002* EFI Network PciRoot(0x0)/Pci (0x5, 0x0)/MAC (001c42fb5baf, 0)
Boot0003* EFI Internal Shell MemoryMapped (11, 0x7ed5d000, 0x7f0dcfff)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)
Boot0004* ubuntu HD(1,GPT, 020c8d3e-fd8c-4880-9b61-ef4cffc3d76c, 0x800, 0x100000) /File (\EFI\ubuntu\shimx64.efi

Из этого вывода можно узнать порядок загрузки и в целом ее конфигурацию. Эта команда так же позволяет изменить порядок загрузки, или даже создать или уничтожить загрузочные записи. Например, такой вызов:

$ sudo efibootmgr -0 0004, 0002

меняет порядок загрузки, сначала обращаться к системному диску, а потом - к сети.

У такой возможности изменять конфигурации из пользовательского интерфейса есть плюсы и минусы. Из плюсов - удобно, из минусов можно снести загрузчик, после чего загрузить систему возможности не будет.

Ну, пожалуй, на этом пока все. Чтобы на пропустить новые статьи подписывайтесь на телегу https://t.me/crazy_linuxoid/