
М
инистерство
цифрового развития, Связи и Массовых
Коммуникаций Российской Федерации
Ордена Трудового Красного Знамени
федеральное государственное бюджетное образовательное
учреждение высшего образования
«Московский Технический Университет Связи и Информатики» (МТУСИ)
Кафедра «Сетевые информационные технологии и сервисы»
Реферат
по дисциплине: Распределенные операционные системы
«Досистемная загрузка: загрузчики lilo и grub»
Выполнил:
Студент 4 курса
группы БСТ2154
Архангельский Максим Вячеславович
Студенческий билет № ЗБСТ21001
Проверил:
Павлов С.В.
Москва 2024
Содержание
ВВЕДЕНИЕ 3
1. История и эволюция загрузчиков 4
2. Подсистема загрузки LILO 4
3. Подсистема загрузки GRUB 8
4. GRUB 2 и GRUB Legacy 10
5. Различия LILO и GRUB 13
ЗАКЛЮЧЕНИЕ 16
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 17
Введение
Загрузчики операционных систем играют ключевую роль в процессе запуска компьютера, обеспечивая начальную загрузку ядра операционной системы и передачу ей управления. Среди множества загрузчиков, используемых в системах на базе Linux, особое место занимают LILO (Linux Loader) и GRUB (GRand Unified Bootloader). Эти два загрузчика широко применялись и продолжают использоваться в различных дистрибутивах Linux, предоставляя пользователям гибкость в управлении загрузкой нескольких операционных систем и конфигураций. В данном реферате будут рассмотрены основные принципы работы LILO и GRUB, их особенности, различия и преимущества, а также их роль в современных системах.
История и эволюция загрузчиков
LILO (LInux LOader) был разработан Вером Альмесбергером в начале 1990-х годов. Это один из первых загрузчиков для Linux, созданный для загрузки операционной системы с жесткого диска. LILO стал популярным благодаря своей простоте и возможности загружать разные операционные системы.
GRUB (GRand Unified Bootloader) был разработан в конце 1990 годов в рамках проекта GNU Изначально он был для поддержки операционной системы GNU Hurd, но быстро стал универсальным загрузчиком для различных ОС, включая Linux.
GRUB появился как ответ на ограничения LILO, такие как необходимость перезаписывания загрузочного сектора при изменении конфигурации. GRUB предложил более гибкую систему с поддержкой интерактивного меню, работы с большими дисками и современных файловых систем. Со временем GRUB развивался, и 2009 году был выпущен GRUB 2, который стал основным стандартом для большинства дистрибутивов Linux.
2. Подсистема загрузки lilo
Подсистема загрузки LILO использует и для первичного, и для вторичного загрузчика схему с картой размещения. Это делает работу с LILO занятием, требующем повышенной аккуратности, так как изменение процедуры загрузки не атомарно: сначала пользователь изменяет ядро или его модули, потом — редактирует файл /etc/lilo.conf, в котором содержатся сведения обо всех вариантах загрузки компьютера, а затем — запускает команду lilo, которая собирает таблицы размещения для всех указанных ядер и вторичного загрузчика и записывает первичный и вторичный загрузчик вместе с картами в указанное место диска. Первичный загрузчик LILO (он называется LI) можно записывать и в MBR, и в начало раздела Linux.
Простейшая настройка LILO определяет ровно один вариант загрузки: первичный загрузчик записывается в начало первого жёсткого диска (строчка boot=/dev/hda), карту размещения утилита lilo записывает в файл /boot/map, ядро добывается из файла /boot/vmlinuz-up, а запись root=/dev/hda1 указывает ядру, что корневая файловая система находится на первом разделе первого диска. Предусмотрено два варианта загрузки Linux, сторонней операционной системы (не основанной на ядре Linux), и ещё один — любой операционной системы с дискеты. Каждый вариант загрузки помечен строкой label=вариант. При старте LILO выводит простейшее окошко, в котором перечислены все метки. Пользователь с помощью «стрелочек» выбирает нужный ему вариант и нажимает Enter. При необходимости пользователь может вручную дописать несколько параметров, они передадутся ядру системы. Если пользователь ничего не трогает, по истечении тайм-аута выбирается метка, указанная в поле default.
Ещё несколько пояснений. Метки linux-up и failsafe в примере используют одно и то же ядро (vmlinuz-up), но во втором случае перенастраивается режим графической карты и добавляются параметры, отключающие поддержку необязательных для загрузки аппаратных расширений (многопроцессорность, автоматическое управление электропитанием и т. п.). Строчку, стоящую после append= пользователь мог бы ввести и самостоятельно, это и есть параметры ядра. Поле initrd= указывает, в каком файле находится стартовый виртуальный диск, а внушающая некоторые опасения надпись «unsafe» (для метки floppy) означает всего лишь, что дискета — съёмное устройство, поэтому бессмысленно во время запуска lilo проверять правильность её загрузочного сектора и составлять карту.
Наконец, записи вида other=устройство говорят о том, что LILO неизвестен тип операционной системы, находящейся на этом устройстве, а значит, загрузить ядро невозможно. Зато ожидается, что в первом секторе устройства будет обнаружен ещё один первичный загрузчик, LILO загрузит его и передаст управление по цепочке.
Процесс загрузки происходит в две стадии. Начальная стадия загрузки первого сектора осуществляется или средствами BIOS, или загрузчиком, который находится в MBR. В дальнейшем программный код (содержащийся в этом секторе) уже сам выполняет загрузку ограниченного количества секторов загрузчика для второй стадии. Когда первая стадия загрузки LILO получает управление, на мониторе появляется первая буква "L". Затем он считывает сектора и настраивает их для передачи управления второй стадии загрузки. Здесь появляется буква "I". Если обнаруживается какой-нибудь сбой, например, ошибка чтения диска, будет выдан шестнадцатеричный код ошибки и предпринята попытка повторить операцию. Все шестнадцатеричные коды ошибок являются значениями, которые возвращает BIOS. Ошибки обнаруживаемые и связанные с lilo это - 40, 99 и 9A. Ниже приведена часть списка с некоторыми кодами ошибок:
00 ошибок нет
01 неверная дисковая команда
0A признак "битого" сектора
0B признак "битой" дорожки
20 ошибка контроллера устройства
40 сбой позиционирования головки диска (BIOS)
40 номер цилиндра >1023 (LILO)
99 недопустимый индексный сектора на второй стадии загрузки (LILO
9A не обнаружена загружаемая сигнатура на второй стадии загрузки (LILO)
AA невозможно прочитать устройство
FF заданное действие завершилось с ошибкой
Ошибку с кодом 40 генерирует BIOS или LILO в процессе преобразования линейных (24-битовых) адресов дискового пространства в геометрические (C:H:S) адреса. Эта ошибка также может появится на старых системах, которые не поддерживают адресацию lba32 (32-битные адреса). Ошибки 99 и 9A обычно означают невозможность чтения файла карты (map-file, -m или map=), обычно из-за того, что LILO не был перезапущен после некоторых изменений в системе или из-за несогласованности в параметрах геометрии устройства, которые использует LILO (см. вывод команды lilo -v3) с реально установленными в BIOS (для устранения этой проблемы вам, возможно, понадобится один из дисков диагностики lilo, распространяемых с исходным кодом lilo).
Когда происходит передача управления от первой стадии загрузки второй, это сопровождается появлением на мониторе второй буквы "L". Последующая инициализация второй стадии, включая проверку "Таблицы Дескрипторов" - списка ядер или других загружаемых компонентов - сопровождается появлением завершающей буквы "O", в форме целого слова "LILO", которое состоит только из заглавных букв.
В течении всей второй стадии загрузки, сообщения об ошибках выводятся на английском языке, с помощью которых более или менее точно можно попытаться найти источник их появления.
Немного затронем несовместимости. LILO имеет проблемы с файловой системой reiserfs представленной в ядрах серии 2.2.x в том случае, когда файловая система монтируется без опции 'notail'. Эта несовместимость устранена в файловых системах reiserfs начиная с версии 3.6.18 и lilo версии 21.6.
Начиная с версии 22.0, устройства RAID массивов записывают загрузочную запись в таблицу разделов RAID. Во время записи MBR может возникнуть необходимость оставить RAID загружаемым при последующем восстановлении, однако, все предпринятые по умолчанию действия могут быть изменены. В такой ситуации, для создания архива совместимого с предыдущими версиями, используйте опцию `-x mbr-only'.