LILO и GRUB - выбираем и настраиваем загрузчик Linux

Андрей Волков

Андрей Волков

Системное, сетевое администрирование +DBA. И немного программист!))  Профиль автора.

Загрузчики Linux LILO и GRUB: выбор, настройкаВ реальной жизни всегда есть выбор. Сегодня мы имеем возможность выбирать меж­ду двумя популярными загрузчиками: LILO и GRUB. LILO — это традиционный загруз­чик Linux, очень стабильный и снабженный хорошей документацией. Но в настоящее время он быстро вытесняется загрузчиком GRUB, который является используемым по умолчанию в системах Red Hat, SUSE и Fedora. Фактически дистрибутивы Red Hat и Fedora вообще не содержат LILO. С другой стороны Debian продолжает использовать LILO.



  

GRUB: универсальный загрузчик

Этот загрузчик может быть использован в любой Linux-системе и особенно популя­рен среди пользователей, которые устанавливают несколько операционных систем на одном компьютере. Им также пользуются разработчики ядра. Загрузчик GRUB полезен, когда конфигурация системы часто меняется. В отличие от загрузчика LILO, который при каждом изменении его конфигурации должен быть повторно записан в главную загрузочную запись (ГЗЗ) или в загрузочный сектор, GRUB читает свой конфигурационный файл в ходе начальной за­грузки, поэтому дополнительный этап не нужен.

GRUB инсталлируется на загрузочный диск с помощью команды grub-install, которая в качестве аргумента принимает имя загрузочного устройства. К сожалению, у загрузчика GRUB используются свои правила именования физических дисков, отли­чающиеся от стандартных соглашений, принятых в Linux (хотя GRUB может применять также и стандартные имена Linux). Имя устройства в загрузчике GRUB выглядит при­мерно так:

(hd0,0)

Первое числовое значение определяет номер физического диска (нумерация ведется с нуля), а второе — номер раздела (правила нумерации аналогичны). В данном примере за­пись (hd0,0) соответствует устройству /dev/hda1. Следовательно, если нужно инстал­лировать загрузчик GRUB на основной жесткий диск, воспользуйтесь такой командой:

# grub-install '(hd0,0)'

Кавычки необходимы, чтобы интерпретатор команд не пытался интерпретировать скобки по-своему.

По умолчанию GRUB читает параметры загрузки из файла /boot/grub/grub.conf. Вот его образец:

default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.6.9-5)
      root (hd0,0)
      kernel /boot/vmlinuz-2.6.9-5 ro root=/dev/hda1

В этом примере конфигурируется единственная операционная система, которая бу­дет загружена автоматически (default=0), если в течение 10 секунд с клавиатуры не по­ступят никакие данные (timeout=10).

Корневая файловая система для конфигурации Red Hat Linux находится в разделе (hd0,0). GRUB загрузит ядро из файла /boot/vmlinuz-2.6.9-5, а затем выведет начальный образ экрана, хранящийся в файле /boot/grub/splash.xpm.gz.

GRUB поддерживает мощный интерфейс командной строки и ряд функций, кото­рые позволяют редактировать записи файла конфигурации в ходе загрузки. Чтобы пе­рейти в режим командной строки, в окне загрузки GRUB необходимо ввести команду c. Из командной строки можно загружать операционные системы, не отраженные в файле grub.conf, выводить на экран информацию о системе и выполнять простейшую про­верку файловой системы. Загрузчик предоставляет также ряд функций, подобных функ­циям интерпретатора команд, в том числе — функции завершения не полностью введен­ных команд и перемещения курсора. Любые действия, которые могут быть выполнены с помощью файла grub.conf, могут быть выполнены и посредством командной строки загрузчика GRUB.

Нажатие клавиши <Tab> позволяет вывести на экран краткий список доступных ко­манд. Некоторые из наиболее полезных команд перечислены в табл. 1.

Таблица 1. Параметры командной строки GRUB

Команда Назначение
reboot Мягкая перезагрузка системы
find Поиск файла во всех смонтированных логических разделах
root Указание корневого устройства (логического раздела)
kernel Загрузка ядра с корневого устройства
help Вывод интерактивной справки по команде
boot Загрузка системы с указанного образа ядра

Для получения подробной информации о загрузчике GRUB и его параметрах ко­мандной строки обратитесь к официальному руководству:

 

LILO: традиционный загрузчик Linux

Конфигурирование и инсталляция загрузчика осуществляется с помощью команды lilo, которая извлекает параметры конфигурации из файла /etc/lilo.conf. Чтобы изменить настройки загрузчика, нужно отредактировать этот файл и повторно выпол­нить команду lilo. Эту процедуру необходимо проделывать всякий раз при изменении процесса загрузки — в частности, когда добавляется новый загрузочный раздел или соз­дается новое ядро.

Загрузчик LILO может быть установлен в главную загрузочную запись диска или в загрузочную запись корневого раздела Linux.

Ниже приведено содержимое файла lilo.conf для системы, в которой имеются ра­бочее и резервное ядра:

boot=/dev/hda # помещаем загрузчик в ГЗЗ
root=/dev/hda1 # задаем корневой раздел
install=/boot/boot.b
map=/boot/map
delay=20 # двухсекундная задержка, дающая пользователю возможность вмешаться
image=/vmlinuz # загружаемое ядро
   label=linux # метка ядра
   read-only
image=/vmlinuz-backup # резервное ядро
   label=backup
   read-only

Каждому возможному сценарию загрузки присваивается метка. Введя метку на этапе загрузки, можно сообщить программе LILO о том, какой из сценариев следует выбрать. Сценарий, который указан в файле lilo.conf первым, выбирается по умолчанию.

В стандартном сценарии (метка linux) загружается файл /vmlinuz. Флаг read-only указывает на то, что ядро монтирует свою корневую файловую систему в режиме только для чтения. Этот флаг должен всегда присутствовать. Сценарии запуска системы поза­ботятся о том, чтобы повторно смонтировать раздел в режиме чтения/записи, когда воз­
никнет такая необходимость. Система сконфигурирована таким образом, чтобы в случае сбоя загружалось резервное ядро (файл /vmlinuz-backup). Наличие подобной возмож­ности никогда не помешает.

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

Чтобы не попасть в подобную ситуацию, воспользуйтесь командой lilo -t, которая протестирует файл, не выполняя инсталляцию. Если ошибок не выявлено, переходите к процедуре инсталляции. Честно говоря, непонятно, почему команда lilo не делает такую проверку автоматически.

В случае показанного выше конфигурационного файла результаты работы команды будут такими:

# lilo
Added linux*
Added backup

При загрузке системы программа LILO выдаст следующее приглашение:

LILO:

После двухсекундной паузы (параметр delay, равный 1, соответствует десятой доле секунды, а в рассматриваемом файле lilo.conf он равен 20) будет загружено ядро /vmlinuz, а в качестве корневого будет смонтирован первый раздел первого IDE-диска. Список сценариев загрузки можно просмотреть, нажав клавишу <Tab>:

LILO: <Tab>
linux backup
LILO:

Чтобы загрузить нужное ядро, введите его метку в строке приглашения.

 

Параметры ядра

Программы загрузчиков LILO и GRUB позволяют передавать ядру параметры ко­мандной строки. Как правило, эти параметры изменяют значения параметров ядра, вынуждают его опросить конкретные устройства, указывают путь поиска демона init или назначают конкретное корневое устройство. Несколько примеров этих параметров приведены в табл. 2.

Таблица 2. Примеры параметров ядра времени выполнения 

Параметр

Назначение
init=/sbin/init Сообщает ядру путь к демону init
init=/bin/bash Заставляет ядро запускать только интерпретатор bash; используется при восстановлении системы в случае сбоев
root=/dev/foo Сообщает ядру о том, что корневым является устройство /dev/foo
single Задает режим однопользовательской загрузки

 

Мультисистемная загрузка на персональном компьютере

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

В каждом разделе диска может храниться собственный вторичный загрузчик, однако главная загрузочная запись только одна. Поэтому необходимо решить, какой из загруз­чиков будет “главным”. Как правило, выбор диктуется особенностями имеющихся опе­рационных систем. Если одной из них является Linux, то лучше всего в качестве глав­ного загрузчика выбрать LILO или GRUB. Заметим, что в данной конкретной ситуации загрузчик GRUB проявляет себя лучше, чем LILO.

 

Мультисистемное конфигурирование GRUB

Конфигурирование загрузчика GRUB для выполнения мультисистемой загрузки во многом аналогично конфигурированию загрузки только одной операционной системы. Прежде чем вносить изменения в файл /boot/grub/grub.conf, необходимо установить необходимые операционные системы.

Записанные в файле grub.conf параметры конфигурации для загрузки ОС Windows, отличаются от параметров для загрузки UNIX или Linux:

title Windows 10
   rootnoverify (hd0,0)
   chainloader +1

Параметр chainloader загружает утилиту начальной загрузки из указанного места (в данном случае из сектора 1 первого раздела первого IDE-диска). Параметр rootnoverify предотвращает попытки загрузчика GRUB выполнить монтирование указанного раздела. Он избавляет загрузчик GRUB от необходимости проверять непонятные для него разделы, такие как разделы NTFS или размещенные вне области, в которой GRUB может выполнять чтение.

Ниже приведен полный текст файла grub.conf для случая, когда Windows 10 загру­жается из первого раздела, Linux — из второго, а Fedora — из третьего:

default=0
timeout=5
splashimage=(hd0,2)/boot/grub/splash.xpm.gz
hiddenmenu
title Windows 10
         rootnoverify (hd0,0)
         chainloader +1
title Red Hat
         root (hd0,1)
         kernel /boot/vmlinuz
title Fedora
         root (hd0,2)
         kernel /boot/vmlinuz

 

Мультисистемное конфигурирование LILO

Если LILO является главным загрузчиком (например, на компьютере установлены Linux и Windows 10), начните со стандартного процесса конфигурирования LILO, опи­санного выше. Затем по мере необходимости можно добавлять записи для других опера­ционных систем в файл /etc/lilo.conf.

Вот как будет выглядеть запись, предназначенная для загрузки Windows из первого раздела первого IDE-диска:

other = /dev/hda1
label = windows
table = /dev/hda

Ниже приведен полный текст файла lilo.conf для случая, когда Windows загружа­ется из первого раздела, Linux — из второго, а FreeBSD — из третьего:

boot = /dev/hda  # помещаем загрузчик в ГЗЗ первого IDE-диска
delay = 20       # двухсекундная задержка, дающая пользователю возможность вмешаться
default = linux  # по умолчанию загружается Linux из второго раздела
image = /boot/vmlinuz-2.6.9
        root = /dev/hda2
        label = linux
        read-only
other = /dev/hda1 # загрузка из первого раздела
        label = windows
        table = /dev/hda
other = /dev/hda3 # загрузка из третьего раздела
        label = freebsd
        table = /dev/hda

После модификации файла lilo.conf нужно повторно ввести команду lilo. Не за­будьте предварительно выполнить ее в тестовом режиме с флагом -t

Поставщики (или добровольцы) часто распространяют пакеты исправления ошибок дистрибутивов Linux. Это же относится и к ядру. Устранение брешей в системе безо­пасности, исправление ошибок и добавление функций происходит регулярно. Однако, в отличие от других программных пакетов, пакеты исправления ошибок ядра не об­новляются, а устанавливаются наряду с существующим ядром. Этот подход позволяет администраторам отменять обновление, если пакет устранения ошибок ядра приводит к разрушению системы. Поэтому постепенно меню начальной загрузки LILO и GRUB заполняются различными версиями ядра. Как правило, можно выполнять загрузку той операционной системы, которая выбрана по умолчанию, но помните о существовании этого простого способа разрешения проблемы в случае невозможности загрузки после установки пакета исправлений.

 

Вас заинтересует / Intresting for you:

Linux: как инсталлировать прог...
Linux: как инсталлировать прог... 1479 просмотров Дэйзи ак-Макарова Sun, 11 Nov 2018, 11:54:59
Команда man Linux: чтение стра...
Команда man Linux: чтение стра... 1432 просмотров Дэйзи ак-Макарова Sun, 11 Nov 2018, 09:36:51
Основа операционной системы Li...
Основа операционной системы Li... 3031 просмотров Андрей Волков Wed, 09 Jan 2019, 05:36:45
Файловая система /proc в Linux
Файловая система /proc в Linux 1625 просмотров Fortan Fri, 22 Feb 2019, 06:05:18
Войдите чтобы комментировать