Загрузка Linux
В этой статье описаны основные этапы загрузки операционной системы Linux. Эта тема которую неплохо бы было знать любому ИТ-специалисту.
Основные этапы загрузки хоста с ОС Linux:
- BIOS/UEFI -> MBR/GPT
- MBR/GPT -> Boot loader (GRUB2)
- Boot loader (GRUB2) -> Инициализация ядра (Kernel)
- Инициализация ядра (Kernel) -> Init (Systemd)
В этой статье описываются GRUB2 и Systemd, поскольку они являются основными для большинства основных дистрибутивов, но на практике еще можно найти другие.
BIOS
Первый шаг процесса загрузки не имеет ничего общего с Linux. Это аппаратная часть процесса загрузки, которая является одинаковой для любой операционной системы. При включении питания запускается BIOS (basic input/output system базовая система ввода-вывода), которая запускает POST (Power-On Self-Test — «самотестирование при включении»), который является частью BIOS. В случае сбоя BIOS POST, компьютер нельзя будет использовать, поэтому процесс загрузки не продолжится.
BIOS POST проверяет базовую работоспособность оборудования, а затем BIOS определяет местонахождение главных загрузочных записей (MBR) на всех подключенных загрузочных устройствах. Первый обнаруженный загрузочный сектор, содержащий действительную загрузочную запись, загружается в ОЗУ, а затем управление передается коду (GRUB2), который был загружен из загрузочного сектора.
GRUB2
В большинстве современных дистрибутивов используются загрузчик GRUB2 (можно также встретить GRUB и LILO). GRUB2 (GRand Unified Bootloader, version 2) — это программа, которая делает компьютер достаточно умным, чтобы найти ядро операционной системы (Kernel) и загрузить его в память.
GRUB2 позволяет загружать многие версии Linux и другие бесплатные операционные системы; он также может загружать по цепочке загрузочную запись проприетарных операционных систем. А также, может позволить пользователю выбрать загрузку из нескольких различных ядер для любого данного дистрибутива Linux. Это дает возможность загрузить предыдущую версию ядра, если обновленная версия даст сбой или будет несовместима с важной частью программного обеспечения. GRUB2 можно настроить с помощью файла /boot/grub/grub.conf.
Функция GRUB2 состоит в том, чтобы найти и загрузить ядро Linux в оперативную память и передать управление компьютером ядру. Ядро и связанные с ним файлы находятся в каталоге /boot. Файлы ядра можно идентифицировать, так как все они имеют имена, начинающиеся с vmlinuz. Вы можете посмотреть содержимое каталога /boot, чтобы увидеть установленные в настоящее время ядра в вашей системе. По умолчанию GRUB2 предоставляет предзагрузочное меню установленных ядер, включая опцию rescue и, если настроено, опцию recovery.
GRUB2 загружает выбранное ядро в память и передает управление компьютером ядру.
Kernel (ядро)
Все ядра находятся в каталоге /boot, в самораспаковывающемся сжатом формате для экономии места на диске. После того, как выбранное ядро загружено в память и начинает выполняться, оно сначала извлекает себя из сжатой версии файла, прежде чем сможет выполнять какую-либо полезную работу.
Так как файловые системы еще не смонтированы, ядро при запуске использует временную файловую систему из файла initrd.img, для того чтобы загрузиться полностью. После извлечения оно загружает инициализацию операционной системы — Systemd (PID 1) и передает ей управление.
Systemd
Systemd является основным родителем для всех процессов, имеет первый номер процесса (PID 1) и отвечает за доведение хоста Linux до состояния, в котором можно выполнять работу.
Systemd монтирует файловые системы, как определено в файле /etc/fstab, включая любые файлы подкачки или разделы. На этом этапе он уже может получить доступ к файлам конфигурации, расположенным в /etc, включая свои конфигурационные файлы. Он использует свой файл конфигурации, чтобы определить, в каком состоянии должен загрузить хост.
Загрузка linux с UEFI
Новые компьютеры используют UEFI (Unified Extensible Firmware Interface) вместо BIOS. UEFI содержит множество преимуществ перед BIOS, одна из которых — поддержка GPT, который позволяет использовать большие диски и помещать загрузчик на специальный раздел, а также позволяет создавать много разделов.
Раньше диски разбивались на разделы с помощью MBR, но было ограничение — диск не мог быть больше 2 TB, а разделов не могло быть больше четырёх. При этом таблица разделов и первичный загрузчик помещались на первый сектор диска в MBR. Диск разбитый с помощью GPT в первом секторе продолжает хранить MBR запись, для того, чтобы старые системы с BIOS могли использовать диски с таблицей разделов GPT.
UEFI не использует загрузчик MBR, вместо этого используется загрузчик со специального раздела на диске, который отформатирован в FAT32 и называется ESP или EFI. Обычно это файл /efi/boot/bootx64.efi. Дальше процесс такой же как и загрузкой с помощью BIOS.
GRUB консоль. Запускаем Linux
Иногда после установки Linux GRUB загрузчик показывает консоль вместо списка операционных систем. В статье расскажу как попросить grub начать загрузку системы через консоль.
Запускаем Linux через консоль GRUB
Если при загрузке компьютера появилась консоль grub, то не отчаивайтесь:
Для начала надо определить на каком диске находится система. В этом поможет команда:
Введите её и появится список всех дисков и разделов:
Теперь надо пройтись по всем дискам и разделам, чтобы найти два файла. Эти файлы начинаются на vmlinuz и initrd.img. В поиске этих файлов поможет та же команда ls. Скорее всего файлы будут лежать в корневой директории раздела ‘/’. Начинаем перебирать все диски и разделы:
Перебираем до тех пор, пока не найдём фалы vmlinuz и initrd.img. Верный результат будет выглядеть примерно так:
Запускаем Linux
Теперь надо запустить Linux. К сожалению, придётся минимум один раз наступить на грабли, но о них чуть позже.
Для загрузки Linux необходимо ввести следующие команды:
set root=(hd1,gpt2)
linux /vmlinuz-4.4.0-53-generic root=/dev/sda1
initrd /initrd.img-4.4.0-53-generic
boot
В приведённом примере необходимо заменить все пути и названия файлов на свои.
Чтобы облегчить задачу по набору всех значков в именах файлов, можно время от времени нажимать TAB на клавиатуре. Консоль сама будет завершать названия файлов. К примеру, набрали из второй строки «linux /vm», затем нажали TAB, строчка сама дописалась до «linux /vmlinuz-4.4.0-53-generic».
Если при вводе вышеуказанных команд консоль не вернула никаких сообщений, то всё сделано правильно и начнётся загрузка после ввода «boot».
ALERT! /dev/sda1 does not exist Dropping to shell!
При загрузке система монтируется на определенный раздел, в который её устанавливали. К примеру, если установка происходила в /dev/sda1 надо смонтировать систему туда. Но если система была установлена не в /dev/sda1, то во время запуска система выдаст ошибку:
ALERT! /dev/sda1 does not exist. Dropping to shell!
Это и есть грабли, о которых говорил ранее. На второй строчке примера было указано root=/dev/sda1:
linux /vmlinuz-4.4.0-53-generic root=/dev/sda1
Необходимо задать правильный раздел, потому что /dev/sda1 не подходит. Для этого вводим команду:
Появится список всех смонтированных разделов и их адреса:
Находим что-то похожее на root. В моём примере это
Перезапускаем систему и заново вводим в консоль grub все известные команды, но уже с правильным разделом для root:
set root=(hd1,gpt2)
linux /vmlinuz-4.4.0-53-generic root=/dev/mapper/mint—vg-root
initrd /initrd.img-4.4.0-53-generic
boot
В статье описан один способов запуска linux через grub консоль. Есть и другие методы запуска. Читайте о них в следующих статьях.
Публикации из этого раздела:
- Linux. Переподключить все USB устройства — Иногда на компьютерах происходит беда с USB устройствами. К примеру, во время загрузки операционной .
- Антивирус для Linux? — Если устройство с цифровым интерфейсом подключено к интернету, то его можно сломать или заразить вир.
- Как посмотреть DNS записи домена — Чтобы посмотреть DNS записи домена введите в командной строке Linux следующую команду: dig alexgur.r.
- Как удалить SNAP. Вообще всё — Однажды после свежей установки kubuntu мне потребовался обычный калькулятор. Мой любимый — это gnome.
- Учитесь программировать — В истории человечества было несколько промышленных революций. Всегда с печальными последствиям для р.
- Ubuntu. Стартовая настройка — Уже больше 10 лет пользуюсь дистрибутивами на основе Ubuntu. Поэтому привык к набору программ, кото.
- Debian. Минимальная установка KDE — Для минимальной установки Debian+KDE использую следующую команду.
- Шифрование папки — На всех переносимых устройствах (ноутбуках) использую полное шифрование диска (с шифрованием swap ра.
4 комментариев к “ GRUB консоль. Запускаем Linux ”
Привет, а как сделать так, чтобы каждый раз не вводить при загрзке:
set root=(hd1,gpt2) linux /vmlinuz-4.4.0-53-generic root=/dev/sda1 initrd /initrd.img-4.4.0-53-generic boot
Привет. Ох, если бы я только знал!:)
Если найду — обязательно поделюсь. Но пока не нашёл. Поэтому пришлось забросить ультрабук prestigio, из-за которого и начал писать эту статью.
Привет. Помоги, пожалуйста, с установкой Linux. При выборе загрузочной флэшки появляется такое окно. Оставь контакты, как с тобой можно связаться? Спасибо.