Linux, установленный на жёстком диске, загружается при включении компьютера при помощи специальной программы — загрузчика. В ALT Linux 2.3 Junior доступны на выбор два стандартных загрузчика Linux LILO и GRUB. Программа-загрузчик исполняется при загрузке системы с жёсткого диска и загружает ядро ОС Linux, расположенное также на жёстком диске.
LILO также может быть использован на первой стадии загрузки нескольких операционных систем, что позволяет выбирать ту систему (например, Windows или Linux), которую нужно в этот раз загружать. Загрузчик LILO автоматически загружает ту операционную систему, которая указана как загружаемая по умолчанию. Помимо различных операционных систем возможны также и различные способы загрузки Linux.
Например, при стандартной установке в начальном меню загрузчика ALT Linux 2.3 Junior доступны три альтернативы:
, (загрузка с минимальным количеством драйверов, что может оказаться необходимым в случае неполадок), (загрузка с дискеты). Если у вас есть установочный CD Junior, вы также можете загрузиться с него: помимо установки новой системы можно загрузить уже установленный на жёстком диске Linux, который по тем или иным причинам невозможно загрузить прямо с жёсткого диска.В нижней части экрана начального меню загрузчика ALT Linux 2.3 располагается окно boot options. В этой строке можно указать параметры, которые будут переданы ядру Linux при загрузке. Подробнее о возможных параметрах см. bootparam(7).
Непосредственно после того, как система Linux загружается и её ядро монтирует корневую файловую систему, она выполняет первую программу — init. Эта программа отвечает за запуск системных стартовых сценариев (скриптов) и за изменение состояния системы с загрузочного на обычное многопользовательское, а также устанавливает другие стартовые и заключительные процедуры.
Кратко говоря, программа init последовательно проходит уровни выполнения (run levels). На уровне номер 1 программа оказывается сразу после загрузки системы, уровни 2 и 3 — это обычные многопользовательские режимы работы системы, уровень 4 запускает X Window System посредством диспетчера монитора (X display manager) xdm, а уровень номер 6 перезагружает систему. Каждому уровню соответствует каталог /etc/rc.d/rcN.d, где N — номер уровня работы. В этих каталогах содержатся символические ссылки, указывающие на те стартовые сценарии, которые должны быть выполнены при переходе на соответствующий уровень. Стартовые сценарии предназначены для запуска, остановки или перезапуска системных служб (сервисов). Реально все сценарии располагаются в каталоге /etc/init.d.
Любую службу, вписавшую в /etc/init.d/ свой стартовый сценарий, можно запускать и останавливать вручную, вызвав этот сценарий с параметром start и stop соответственно. Для проверки состояния службы (работает — остановлена — сбоит) тот же сценарий можно запускать с параметром status. То же самое делает и команда service: она вызывает сценарий (имя которого передаётся ей первым параметром) из /etc/init.d/ и запускает его. То есть, чтобы перезапустить службу httpd можно использовать любую из команд: /etc/init.d/httpd restart или service httpd restart.
Схожим образом обстоит дело и регистрацией стартовых сценариев на уровнях выполнения. Если мы хотим, чтобы при при переходе на третий (сетевой) уровень запускалась служба httpd, нам необходимо организовать символьную ссылку на /etc/rc.d/httpd в каталоге /etc/rc3.d/. Ссылка эта должна иметь имя S<номер>httpd, дабы быть запущенной в подходящее время. Если мы не хотим, чтобы httpd запускался на этом уровне, ссылка должна иметь имя K<номер>httpd. Созданием и удалением таких ссылок, равно как и показом их текущего состояния, занимается команда chkconfig. Самые важные её ключи — --list (просмотреть список зарегистрированных служб), on (добавить запуск службы) и off (запретить запуск службы).
Загрузка системы заканчивается тем, что программа init запускает копии программы getty, которая вызовет приглашение login: для всех виртуальных консолей.
После запуска программа init уходит в фоновый режим, следя за режимом работы системы и по необходимости изменяя его. Функции программы init определяются в файле /etc/inittab.
Прежде всего следует отметить, что ОС Linux может быть загружена с любого жёсткого диска системы и любого типа раздела — и первичного (primary), и логического (logical), с различных файловых систем (например Ext2, Ext3, ReiserFS). При этом раздел, содержащий корневую файловую систему, не обязательно должен быть активным (иметь статус A в таблице разделов). Более того, вы можете использовать тот загрузчик, который используете и сейчас, при условии, что он в состоянии передать управление на загрузочный сектор любого раздела (например, OS/2 Boot Manager, System Commander, WinNT Boot Loader). В случае наличия какого-либо другого загрузчика, загрузчик Linux следует устанавливать не в MBR первого жёсткого диска системы, а в загрузочный сектор корневого раздела Linux, на который в последствии необходимо передать управление со стороны внешнего загрузчика. Подавляющее большинство UNIX-подобных систем, а также OS/2 не чувствительны к месту их размещения — главное, чтобы был способ передать управление на их программу начальной загрузки.
При использовании поставляемого с дистрибутивом загрузчика LILO передача управления на загрузочный сектор любого раздела, физически доступного в момент загрузки, не вызывает проблем. В то же время специфика архитектуры большинства основанных на DOS систем Microsoft Windows такова, что, даже будучи размещёнными на различных дисках и разделах, они все загружаются с одного раздела (C:), причём этот раздел должен быть активным primary-разделом на первом жёстком диске системы. В противном случае возможны самые неожиданные проблемы с загрузкой Microsoft Windows. При установке Microsoft Windows именно такая конфигурация разделов и производится автоматически, поэтому мы не рекомендуем менять данное положение вещей насильственным образом. Лучше полностью сохранить статус загрузочного раздела Microsoft Windows.
При установке Junior у вас есть возможность менять размеры существующих разделов без потери данных (см. раздел Разбиение диска и выбор точек монтирования главы 2. «Разбиение диска и выбор точек монтирования» в главе «Установка системы»). В частности, очень полезным свойством является возможность изменения разделов FAT16 и FAT32 без потери данных. Однако, необходимо помнить, что процедура изменения размеров раздела потенциально опасна в смысле потери данных: скачок напряжения в сети электропитания или ошибки на файловой системе, не устранённые заранее, могут привести к полной потере данных на разделе!
Настоятельно рекомендуется перед проведением этой процедуры проверить средствами Microsoft Windows целостность файловых систем, устранить все ошибки на файловых системах, провести полную дефрагментацию файловых систем и произвести резервное копирование ценных данных.
Изменение размера разделов NTFS и HPFS возможно только с потерей всех данных на этих разделах!
Если вы выбрали класс установки «Рекомендуется» происходит следующее.
При переходе к этапу «Настройка файловых систем» программа установки автоматически проанализирует содержимое доступных жёстких дисков и в зависимости от результата предложит следующие альтернативы.
Если весь объём жёсткого диска уже занят разделами других операционных систем, но имеющиеся файловые системы пригодны для установки Linux (FAT16, FAT32), то программа установки предложит:
Все разделы будут удалены, на их месте автоматически будут размечены и отформатированы разделы для Linux.
Будет предложено изменить размер раздела Microsoft Windows за счёт имеющегося свободного места; можно непосредственно указать, какого размера раздел оставить для использования Microsoft Windows. После изменения размера раздела программа установки автоматически разметит и отформатирует разделы, необходимые для Linux.
Программа установки предоставит «Интерфейс для прямого управления разделами жёстких дисков».
Если на жёстком диске будут найдены разделы различных ОС, в том числе и Linux, то возможен выбор из следующего набора предложений:
Будет предложено отформатировать уже имеющийся на диске раздел Linux; в случае согласия программа установки перейдёт к выбору пакетов для установки, а в случае отказа предоставит «Интерфейс для прямого управления разделами жёстких дисков».
Все разделы будут удалены, на их месте автоматически будут размечены и отформатированы разделы для Linux.
Будет предложено изменить размер раздела Microsoft Windows за счёт имеющегося свободного места, можно непосредственно указать какого размера раздел оставить для использования Microsoft Windows. После изменения размера раздела программа установки автоматически разметит и отформатирует разделы, необходимые для Linux.
Программа установки предоставит «Интерфейс для прямого управления разделами жёстких дисков».
Если же всё дисковое пространство уже занято разделами, на которые Linux установить невозможно, как невозможно и изменить их размер без потери данных (например, разделы NTFS, принадлежащие Windows NT/ 2000/ XP), то в таком случае будет предложено две альтернативы:
Все разделы будут удалены, на их месте автоматически будут размечены и отформатированы разделы для Linux.
Программа установки предоставит «Интерфейс для прямого управления разделами жёстких дисков».
В случае выбора класса инсталляции «Эксперт» происходит следующее.
В этом режиме программа установки не будет анализировать жёсткие диски и сразу предоставит «Интерфейс для прямого управления разделами жёстких дисков» (см. раздел Разбиение диска и выбор точек монтирования главы 2).
Прежде всего, независимо от того, используете ли вы GRUB или LILO, необходимо чётко определиться с тем, где именно разместить загрузчик.
Если для загрузки всех операционных систем предполагается использовать один из предлагаемых инсталлятором загрузчиков, то в поле Загрузочное устройство необходимо выбрать первый диск системы; обычно это /dev/hda или /dev/sda. При таком выборе загрузчик будет размещён в MBR жёсткого диска и первым получит управление от BIOS. Для загрузки различных ОС информацию о их существовании следует просто прописать в файлах конфигурации загрузчика. При установке Linux рядом с уже существующими системами Microsoft Windows программа установки автоматически ищет их загрузочные разделы и прописывает их в конфигурацию загрузчика.
Впоследствии, если появятся дополнительные разделы с новыми ОС, то их можно легко включить в конфигурацию загрузчика вручную. Например, для LILO необходимо сделать следующее: в файле /etc/lilo.conf добавить новый раздел описания ОС по аналогии со следующей записью:
other=/dev/hda1 label=windows table=/dev/hda
Данная запись сообщает LILO о том, что на раздел /dev/hda1 установлена неизвестная ОС; в меню её надо отобразить под именем «windows»; в случае выбора пользователем этого пункта меню передать управление на загрузочный сектор /dev/hda1.
После сохранения данного файла конфигурации необходимо дать команду:
# lilo
для того, чтобы изменения вступили в силу.
Добавление новых записей в GRUB отличается от LILO. Например, для аналогичного добавления в конфигурационный файл GRUB (/boot/grub/menu.lst) необходимо добавить следующую запись:
title Windows rootnoverify (hd0,0) chainloader +1
Если для загрузки ОС используется какое-либо другое программное обеспечение, то загрузчик Linux необходимо установить в загрузочный сектор корневого раздела, на который ОС Linux только что была установлена. Например, если корневой раздел (смонтированный как /) был размещён на /dev/hdb8, то и в поле Загрузочное устройство необходимо написать /dev/hdb8. Общее правило: если устройство указано как «полный» жёсткий диск (без указания номера раздела — например, /dev/hda), то загрузчик будет поставлен в MBR указанного диска; если устройство указано как раздел диска (в конце номер раздела), то загрузчик будет установлен в загрузочный сектор соответствующего раздела. После того, как загрузчик Linux размещён, необходимо сообщить общему загрузчику всех ОС о существовании нового раздела и необходимости передачи ему управления. Как это сделать — смотрите в документации к используемому вами программному обеспечению.
В принципе, на одной машине можно иметь 6 и более операционных систем. Например, Windows 98, NT4, две OS/2 и две — Linux — отлично уживаются при условии, что каждой операционной системе выделено минимум по одному разделу на жёстком диске. Весь вопрос в допустимом количестве разделов на одном жёстком диске и объёме этого диска (который может быть недостаточным для размещения всех ОС).
Если Linux устанавливается поверх или рядом с уже существующими системами Microsoft Windows, то обычно всё проходит без проблем, и сразу после инсталляции есть возможность загрузить по выбору любую из имеющихся ОС. Однако если сначала установить Linux (зарезервировав место для разделов Windows и, как положено, поместив загрузчик в MBR), а уже позднее установить какую либо версию Windows, то более чем возможны проблемы с последующей загрузкой Linux. Дело в том, что большинство версий Windows при инсталляции без единого слова переписывают содержимое MBR загрузочного жёсткого диска, выкидывая прежнее содержимое и вставляя свой загрузчик, который о Linux и других не-Windows ничего знать не желает. К счастью, решить эту проблему достаточно просто: перед установкой Windows необходимо изготовить загрузочную дискету в Linux командой
# mkbootdisk `uname -r`
Обратите внимание, здесь использованы «обратные» апострофы — backtick. А также можно воспользоваться спасательной дискетой, созданной при установке Linux. Установив или переустановив Windows, после чего загрузка в Linux станет невозможна, необходимо загрузить компьютер с загрузочной дискеты Linux, сообщить загрузчику о появлении новой ОС, как показано выше, и восстановить загрузчик Linux командой:
# lilo
Для того, чтобы иметь установленными и работающими две и более ОС Linux на одном компьютере, желательно следовать следующим рекомендациям:
Иметь один общий swap-раздел на всех — ведь пользоваться им будут по очереди. Это может сэкономить некоторое место на диске.
Использовать либо общий независимый загрузчик, а загрузчики каждой копии Linux установить в начальные секторы корневых разделов, либо иметь общий выделенный раздел /boot, монтируемый в корневые разделы, и один общий загрузчик, размещённый в MBR. Размер этого раздела может быть небольшим, порядка 20-30 МБ; обычно под него отводят один цилиндр жёсткого диска. При таких условиях не возникает проблем с обновлением ядра обеих копий Linux и с гибкостью конфигурации общесистемного загрузчика.