Как стать автором
Обновить

Комментарии 20

Про ядро совсем мало, а по заголовку думается, что сейчас распишут и процессы его загрузки.
Не systemd единым живёт мир Linux. (p.s. да… да… Знаю его тычут всюду, но всё же).
Ну и MBR сейчас отходит в мир иной. Я сейчас как-то предпочитаю выбор операционки для загрузки оставлять на откуп EFI. Плюс на EFI все таки grub+systemd грузится чуть медленней чем EFIstub+systemd.
Как всегда каменты полезней статьи.
Спасибо за отсылку к EFIstub, достаточно интересная тема как минимум для общего развития. :)

Efistub к сожалению не даст гибкости, которую дает полноценный загрузчик. Не прописывать же все варианты загрузки в nvram. С другой стороны, grub — сложный монстр. Есть отличный загрузчик refind, который из себя представляет бинарь + опционально драйверы ФС + конфиги от пустых до любой сложности. Его невозможно сломать, в отличие от grub.

Как только извлечение произошло, оно загружает systemd, который является заменой старой программе SysV init, и передает ему контроль.


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

Почему ни слова про инициализацию драйверов и подсистем ядра, зато системд уделено столько места?

Это конец процесса загрузки ядра. К этому моменту, ядро Linux и systemd запущены, но не могут выполнять какие-либо полезные задачи для конечного пользователя, так как выполнять еще нечего.


Что это было?
У GRUB(2) спектр задач намного шире, чем загрузить ядро Linux.
Проблемы

Недавно мне пришлось поменять дефолтное загрузочное ядро на компьютере Linux, который использовал GRUB2. Я обнаружил, что некоторые команды перестали работать корректно, или же я пользовался ими как-то некорректно. До сих пор не знаю, в чем была проблема, потребуется больше времени на ее исследование.

«Дорогая редакция! У меня который год в подполе происходит подземный стук».

Проблема у него, итить его в качель коромыслом… Вот когда grub2 после штатного обновления ядра перестает грузить вообще все — вот это проблема так проблема.

Сценарий:
— обновляем ядро штатным обновлятором Ubuntu. Заодно обновляется и grub.
— все прекрасно, ядро обновилось, grub переконфигурировался, дело за малым — перезагрузиться в новое ядро.
— перезагружаемся и видим страшное: вместо красивой рамочки вокруг меню grub — псевдографика из знаков вопроса, а при выборе любого пункта меню (включая memtest86+) grub пишет что-то невнятное про ненайденную команду '[' и попытку чтения-записи за пределами диска hd0.

После расследования выясняется следующее:
— grub не на всех материнках умеет адресовать сектора диска за пределами первых 8 Гб.
— Ubuntu по умолчанию ставится на один большой раздел, куда кладет как /boot, так и все остальные папки.
— после очередного обновления образ ядра и модули grub (который тоже обновился) попали за пределы первых 8 гигов. Grub их прочитать не может, и как следствие — не может ничего загрузить.

Вот это — проблема. А у автора — так, подземный стук.

Про UEFI где? 2018 а не 2008 сейчас.
"INT 13H, которое находит секторы загрузки ядра"
Секторы загрузки ядра, это кто такие вообще?
Почему выкинули целый этап initrd/initramfs?

Не везде используеться GRUB, в системах на ARM

LILO еще забыли
Вы годом ошиблись. Вам нужно подготовить статью для музея ВТ про загрузку линукс через биос, int 13h, mbr.

Времена нынче про UEFI/GPT и конфиг бута храниться не в файле а в nvram как бутопшн.
wiki.debian.org/EFIStub

Зашел почитать про initrd, как именно ядро самораспаковывается, в какой момент где и как ищет-грузит модули, куда передаются параметры...

Systemd к загрузке именно ядра не имеет никакого отношения.
Про DTB ни слова, а это важный и не всем понятный момент.

Systemd к загрузке именно ядра не имеет никакого отношения.

Это пока, судя по всему скоро системд таки запихнут в ядро. :)
А сколько времени я провел играясь с LILO
Система управления пакетами Red Hat поддерживает сохранение нескольких версий ядра, чтобы можно было загрузить старую версию ядра в случае возникновения проблем с самой новой.


Интересно, как это реализовано в Рэд Хэте? Лет 10 назад это весьма криво было реализовано в Убунте. Все старые ядра были видны на экране выбора ОС. После пяти обновлений ядра при мультиОСном использовании ПК было крайне не удобно.

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

В Debian Stable если пользоваться aptitude с настройками по умолчанию то остаётся текущее, предыдущее и первоначальное(при установке/upgrade-е которое было). Это в случае использования ядер из backports, в убунту вроде также (точно не помню), но это всё в случае если вы поставили только верхнеуровневый пакет на ядро(виртуальный), если чтото ставилось руками то оно остаётся до ручного удаления.
p.s. несколько лет назад в Debian появилось предупреждение при попытке удаления пакета ядра, на котором в текущий момент загружена система.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий