Загрузка системы на персональном компьютере
Категория: Запуск и останов системы | Автор: admin | 24-09-2009, 05:41 | Просмотров: 7548

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

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

Если вы не работаете на персональном компьютере, переходите непосредственно к параграфу 2.3.

 

Чем персональный компьютер отличается от фирменного оборудования

 

Когда компьютер загружается, начинает выполнятся код, записанный в ПЗУ. Точное его местоположение и структура зависят от типа оборудования. В компьютерах, созданных специально для UNIX, код «прошивается» разработчиком, который заранее задает алгоритм подключения устройств, базовой инициализации сети и распознавания локальных файловых систем. Это очень удобно для системного администратора. Ему достаточно ввести имя нового файла ядра, а код ПЗУ автоматически обнаружит и прочитает этот файл.

На персональных компьютерах код начальной загрузки представлен в виде базовой подсистемы ввода-вывода – BIOS (Basic Input/Output System), которая чрезвычайно упрощена в сравнении с фирменным кодом UNIX-машин. В действительности в BIOS существует несколько уровней кода: один для самого компьютера, другой для видеоплаты и еще один для SCSI-адаптера, если таковой имеется.

Встроенный код BIOS знает о некоторых устройствах, расположенных на материнской плате, в частности о контролере IDE (и жестких дисках), клавиатуре, последовательных и параллельных портах. А SCSI-адаптеры распознают только те устройства, которые подключены непосредственно к ним. Выявление конфликтов между различными уровнями BIOS может стать настоящим кошмаром. Сложнее всего понять то, как происходит выбор устройства, с которого должна быть произведена загрузка.

 

Процесс загрузки ПК

 

В современных компьютерах BIOS-программы «умнее», чем раньше. Они позволяют на этапе загрузки входить в режим конфигурирования, удерживая нажатой одну или две клавиши. Как правило, название этих клавиш отображаются на экране, чтобы их не нужно было искать в документации.

В режиме конфигурирования можно выбрать, с какого устройства требуется производить загрузку. Как правило, это дисковод для гибких дисков, первый IDE-дисковод CD-ROM или первый жесткий диск IDE. Нам бы хотелось объяснить вам, как все работает, но, к сожалению, это невозможно, так как данная стадия процесса загрузки находится под контролем производителей компьютеров и их многочисленных BIOS-программ. Они устанавливают свои собственные правила игры, которых приходится придерживаться.

Когда компьютер определил, с какого устройства следует загружаться, производится считывание первых 512-ти байтов с диска. Этот сегмент диска известен как главная загрузочная запись (ГЗЗ). В ней содержится программа, которая сообщает компьютеру о том, в каком разделе диска находится программа вторичной загрузки (загрузчик ОС). Дополнительная информация о разделах дисков на персональных компьютерах и главной загрузочной записи приводится в главе 8.

Стандартная программа ГЗЗ дает компьютеру указание извлечь загрузчика ОС из первого раздела диска. Linux и FreeBSD поддерживают более сложные программы, которые знают, как работать с несколькими операционными системами и ядрами.

Когда программа ГЗЗ находит раздел, с которого будет выполнена загрузка, она пытается запустить загрузочную программу, связанную с этим разделом. В случае успеха этой программе передаются полномочия по дальнейшей загрузке ядра.

 

LILO: загрузчик Linux

 

Загрузчик LILO невероятно сложен и в то же время ужасно бестолков. В нем поддерживается множество возможностей, отсутствующих у других загрузчиков, но нет некоторых элементарных свойств.

Загрузчик LILO входит в состав практически всех дистрибутивов Linux, включая Red Hat. При первой установке системы инсталляционные сценарии создают копию LILO со стандартными параметрами загрузки. Как-то повлиять на этот процесс нельзя. LILO не так уж необходим для загрузки Linux, но это часть системы. Придется научится ее любить…

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

 

Конфигурирование LILO

 

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

 

boot=/dev/hda # помещаем загрузчик в ГЗЗ

root=/dev/hda1 # задаем корневой раздел

install=/boot/boot.b

map=/boot/map

delay=20 # 2-секундная задержка, дающаяпользователю возможность вмешаться

 

image=/vmlinuz # загружаемое ядро

label=linux # метка ядра

read-only

image=/vmlinuz-backup # резервное ядро

read-only

 

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

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

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

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

 

# lilo

Added linux*

Added backup

 

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

 

LILO:

 

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

 

LILO: <Tab>

linux backup

LILO:

 

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

 

Загрузчик FreeBSD

 

Модуль загрузки во FreeBSD прост и эффективен. Он разделен на две части: одна находится в главной загрузочной записи, а вторая – в корневом разделе FreeBSD. Обе части инсталлируются раздельно.

Первичный загрузчик инсталлируется с помощью команды boot0cfg. Например, команда

# boot0cfgB /dev/wd0

 

помещает первую часть загрузчика в ГЗЗ первого IDE-диска системы. Здесь практически ничего не нужно менять (а чаще всего это сделать просто невозможно.) в процессе загрузки модуль просматривает список доступных дисков (извлекается из BIOS) и находит разделы, которые, по его мнению, являются загрузочными. Перечень разделов отображаются в виде небольшого меню:

 

F1 FreeBSD

F2 Windows

 

Default: F1

 

Дополнительную информацию о тонкой настройке первичного загрузчика можно получить на странице интерактивного руководства, посвященной программе boot0cfg.

Второй модуль непосредственно отвечает за загрузку FreeBSD и позволяет пользователю передать ядру дополнительные параметры. Инсталляция модуля осуществляется с помощью команды dicklabel –B. Программа dicklabel является достаточно мощной: она обладает множеством опций и поддерживает почти все дисковые накопители. Вот так она обычно вызывается:

# dicklabel –B /dev/wd0s1

 

Здесь вторичный загрузчик записывается в первый раздел первого IDE-диска.

Параметры конфигурации вторичный загрузчик извлекает из следующих файлов:

  • /boot/loader.conf

  • /boot/loader.conf.local

  • /boot/defaults/loader.conf

 

Последний файл содержит стандартные установки загрузчика и не должен никогда модифицироваться. Все эти установки можно переопределить с помощью файлов loader.conf и loader.conf.local, а также из командной строки на этапе загрузки системы. Информацию о параметрах загрузчика вы можете найти на страницах руководства boot(8) и loader(8).

 

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

 

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

В каждом разделе диска может располагаться собственный вторичный загрузчик, однако главная загрузочная запись только одна. Поэтому необходимо решить, какой из загрузчиков будет главным. Как правило, выбор диктуется особенностями имеющихся операционных систем. Если одной из них является Linux, то лучше всего в качестве главного загрузчика выбрать LILO. Исключение составляет случай, когда присутствует Windows NT/2000. загрузчик этой операционной системы всегда должен помещаться в ГЗЗ.

 

Проблемы при мультисистемной загрузке

 

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

Когда на компьютере с мультисистемной загрузкой планируется установить одну из клиентских версий Windows (95, 98 или Ме), это должно быть сделано до того, как будут инсталлированы остальные системы. Данные версии Windows слишком глупы и не предполагают, что на компьютере может быть установлена какая-нибудь другая ОС. Они всегда занимают первый раздел первого диска, перезаписывая в процессе инсталляции существующие программы загрузки.

Аналогичное правило применяется в отношении Windows NT/2000: Windows всегда инсталлируется первой. Причины этого могут быть разными, но результат всегда один. Загрузчик NT/2000 очень хочет инсталлировать себя в главную загрузочную запись и быть Самым Главным. Сопротивление бесполезно.

Чтобы заставить этого загрузчика распознавать разделы UNIX, необходимо предварительно инсталлировать UNIX и загрузится с дискеты или компакт-диска. Затем нужно прочитать первый 512 байтов раздела UNIX (загрузочный сектор раздела) и записать их в файл. Это можно сделать с помощью команды dd. Вот пример ее использования в Linux:

 

# dd if=/dev/hda2 of=linux.bin bs=512 count=1

 

Далее следует скопировать этот файл в раздел NT/2000 и добавить в файл конфигурации загрузчика NT запись о том, как загружаться с использованием данного файла. Все, что для этого требуется, - поместить в файл C:boot.ini строку с указанием пути к файлу и метки. В случае Linux эта строка будет выглядеть так:

 

C:linux.bin=”Linux”

 

Дополнительную информацию о структуре файла boot.ini можно получить в интерактивной базе знаний на Web-узле support.microsoft.com.

Если Linux и Windows NT/2000 существуют вместе, загрузчик LILO должен быть инсталлирован в раздел Linux, так как главная загрузочная запись уже занята. Для этого достаточно в файле lilo.conf поместить в параметр boot ссылку на раздел Linux. Например, если ОС Linux инсталлирована на втором разделе первого IDE-диска, строка будет иметь следующий вид:

boot=/dev/hda2

 

Это действие должно быть проделано до того, как вторичный загрузчик будет записан в файл и скопирован в раздел NT. По сути, весь процесс должен повторятся каждый раз, когда требуется повторный запуск программы lolo.

 

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

 

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

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

other = /dev/hda1

label = windows

table = /dev/had

 

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

boot = /dev/hda # помещаем загрузчик в ГЗЗ первого IDE-диска

delay = 20 # 2-секундная задержка, дающая пользователю возможность вмешатся

default = linux # по умолчанию загружается Linux из второго раздела

image = /boot/vmlinuz-2.3.41

root = /dev/hda2

label = linux

read-only

image = /dev/hda1 # загрузка Windows из первого раздела

label = windows

table /dev/had

image = /dev/hda3 # загрузка FreeBSD из третьего раздела

label = freebsd

table = /dev/had

 

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

 

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

 

Загрузчик FreeBSD всегда пытается обнаружить загрузочные разделы. Но можно самостоятельно сообщить ему о них, воспользовавшись опцией -m маска программы boot0cfg. Параметр маска содержит битовою маску разделов, из которых требуется загружаться. Первый раздел представляется двоичным кодом 0001 (шестнадцатеричный эквивалент - 0х1), второй раздел – кодом 0010 (эквивалент 0х2) и т.д. Например, команда

# boot0cfg –B –m 0x7

 

инсталлирует первичного загрузчика и сообщает ему о том, что разделы 1, 2 и 3 является загружаемым (0х7=0111). В процессе загрузки на экране отобразится меню с тремя элементами – по одному для каждого раздела.



 (голосов: 1)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page