Linux
, установленный на жёстком диске, загружается при включении компьютера при помощи специальной программы —
загрузчика. Программа-загрузчик исполняется при загрузке системы с
жёсткого диска и загружает ядро ОС Linux
, расположенное также на
жёстком диске.
Загрузчики Linux
можно также использовать для загрузки
нескольких операционных систем, поскольку они позволяют выбирать
при включении компьютера, какую систему нужно загрузить в этот
раз. Если есть выбор из нескольких вариантов загрузки, то после
некоторого времени ожидания будет загружена та система, которая
выбрана по умолчанию: это не обязательно должен быть Linux
, а
может быть другая операционная система или специальный режим
загрузки (например, восстановительный).
Например, при стандартной установке в начальном меню
загрузчика доступны две
альтернативы: Linux
, который по тем или иным причинам
невозможно загрузить прямо с жёсткого диска.
В нижней части экрана начального меню загрузчика располагается строка «Параметры». В этой строке можно указать параметры,
которые будут переданы ядру Linux
при загрузке.
Прежде всего следует отметить, что ОС Linux
может быть загружена с любого жёсткого диска системы и любого типа раздела — и
основного (primary), и дополнительного
(secondary), с различных типов файловых систем (например
Ext2
,
Ext3
,
ReiserFS
). При этом раздел,
содержащий корневую файловую систему, не обязательно должен быть
активным (иметь статус A
в таблице разделов). Более
того, вы можете использовать любой загрузчик,
при условии, что он в состоянии передать управление на загрузочный сектор
любого раздела (при этом несущественно, с какой операционной
системой поставляется данный загрузчик). При наличии
какого-либо стороннего загрузчика, загрузчик Linux
следует устанавливать
не в MBR первого жёсткого диска системы, а в
загрузочный сектор корневого раздела Linux
, на который впоследствии
необходимо передать управление со стороны стороннего загрузчика.
Подавляющее большинство UNIX
-подобных систем не чувствительны к месту их размещения — главное, чтобы был способ
передать управление на их программу начальной загрузки[1].
При использовании поставляемого с дистрибутивом загрузчика LILO передача управления на загрузочный сектор любого раздела, физически доступного в момент загрузки, не вызывает проблем. В то же время специфика архитектуры некоторых нестандартных операционных систем накладывает ряд ограничений на размещение этих систем на диске. Возможна, что такая система может загружаться только с активного основного (primary) раздела на первом жёстком диске системы, в противном случае возможны самые неожиданные проблемы с загрузкой. В такой ситуации лучше полностью сохранить статус загрузочного раздела этой операционной системы.
Первое решение, которое нужно принять — где расположить
загрузчик. Программа установки предлагает на выбор несколько
позиций, где может быть размещён загрузчик. Общее правило: если устройство указано как
«полный» жёсткий диск (без указания номера раздела — например, /dev/hda
), то загрузчик будет
поставлен в MBR указанного диска; если
устройство указано как раздел диска (в конце номер раздела), то
загрузчик будет установлен в загрузочный сектор соответствующего
раздела. Можно переместить загрузчик и после установки, исправив
соответствующим образом конфигурационные файлы и дав команду
lilo (см. ниже).
Если для загрузки всех операционных систем
предполагается использовать загрузчик Linux
(LILO), то в
качестве загрузочного устройства необходимо выбрать первый диск
системы; обычно это /dev/hda
или /dev/sda
. При таком выборе
загрузчик первым получит управление от BIOS. Чтобы
загрузчик Linux
мог загружать другие операционные системы, ему
нужно сообщить об их существовании. Программа установки
умеет делать это автоматически. Однако если вам нужна более тонкая
настройка, или что-то изменилось уже после установки Linux
, то
можно отредактировать конфигурационные файлы загрузчика
самостоятельно.
Это делается следующим образом: в файле
/etc/lilo.conf
для каждой операционной
системы, которую потребуется загружать, нужно добавить новый раздел
по аналогии со следующей записью:
other=/dev/hda1 label=other table=/dev/hda
Данная запись сообщает LILO о том,
что на раздел /dev/hda1
установлена неизвестная ОС; в меню её надо отобразить под именем
«other»; если пользователь выберет этот пункт меню — передать управление на загрузочный сектор
/dev/hda1
.
После сохранения данного файла конфигурации необходимо дать команду lilo, чтобы изменения вступили в силу.
Наоборот, если общим для всех OC будет загрузчик другой
операционной системы, то LILO необходимо установить на
корневой раздел Linux
(точка монтирования — /
). После этого необходимо сообщить
общему загрузчику всех ОС о том, как передавать управление на
раздел Linux
. Как это сделать — смотрите в документации к
используемому вами программному обеспечению.
Загрузка Linux
может быть нарушена, если загрузчик
Linux
окажется по каким-то причинам повреждён
или заменён другой программой. Последнее может произойти,
например, в процессе установки другой ОС, если загрузчик был
установлен в загрузочный сектор диска (MBR), содержание которого
будет перезаписано и заменено загрузчиком другой ОС.
В этой и подобных ситуациях необходимо восстановить загрузчик
Linux
, и возможно, изменить его размещение на диске.
Восстановить загрузчик в той же конфигурации, в которой он был до повреждения, несложно, для этого достаточно:
любым способом загрузиться в Linux
;
смонтировать тот раздел жёсткого диска,
на котором находится корневая файловая система Linux
(выполнить mount раздел
/mnt, где раздел
— это
имя соответствующего файла устройства, например,
/dev/hda1
);
объявить раздел со смонтированной корневой файловой системой корневым (выполнить chroot /mnt);
выполнить команду lilo.
В случае, если потребуется изменить конфигурацию загрузчика,
например, переместить его на другой диск или раздел, перед
выполнением lilo нужно будет соответствующим
образом исправить конфигурационный файл /etc/lilo.conf
.
[1] Для очень старых BIOS действует правило 1024-го циллиндра: загрузка невозможна, если раздел, с которого загружается система, будет расположен на диске далее 1024-го циллиндра. В случае Linux — это раздел, содержащий корневую файловую систему
или /boot
, если он выделен на
отдельный раздел.