Дистрибутив ASPLinux: использование boot-менеджеров (часть 1)

Аватар пользователя rjaan

Дистрибутив ASPLinux: использование boot-менеджеров


Часть 1. Введение в процесс загрузки операционных систем. Обзор boot-менеджеров.


Версия 0.0.1
Автор: Ржавсков Андрей


Оглавление

1. Авторские права и товарные знаки
1.1. Авторские права
1.2. Товарные знаки
2. Введение
3. О дистрибутиве ASPLinux
4. Обзор Bootstrapping
5. Одношаговый boot-загрузчик
6. Двух шаговый boot-загрузчик
7. LILO
8. GNU GRUB
9. ASPLoader


1. Авторские права и товарные знаки
1.1. Авторские права

Авторские права принадлежат Ржавскову Андрею Юрьевичу © 2005.
Этот документ может распространяться и изменяться в соответствии с требованиями GNU General Public License (Общественной публичной лицензий), редакций 1,2. Копия GPL доступна по адресу http://www.gnu.org/licenses/gpl.html .За лицензиями на упомянутые в статье продукты и товарные марки обращаться к авторам или их владельцам.


1.2. Товарные знаки

GNU/Linux является зарегистрированной торговой маркой Линуса Торвальдса.
UNIX является зарегистрированной торговой маркой фирмы The Open Group.
ASPLinux является зарегистрированной торговой маркой фирмы SWsoft Pte. Ltd
Red Hat является зарегистрированной торговой маркой Red Hat, Inc.
Windows и MS-DOS являются зарегистрированными торговыми марками Microsoft Corp.


2. Введение

Эта первая статья из серии “Дистрибутив ASPLinux: помощь в освоении”.
Идея написание этих статей стало желания автора помочь пользователям в не легком труде – освоении дистрибутива ASPLinux. Как показала практика, наиболее частыми задаваемыми вопросами, на форумах http://asplinux.net и http://community.asplinux.ru/forum , стали по настройке. Результатом этих обращений являются недостатки при использовании SERVICECONF(Поражён или их отсутствие, и что надо сделать после обновление дистрибутива YUM(Поражён .
Данная статья первая:
Дистрибутив ASPLinux: Использование boot-загрузчиков.
Статья, по просьбе Клуба любителей ASPLinux была разделена на две части.
В первой части дается небольшой экскурс в теорию загрузки IBM PC/IA32 совместимых вычислительных машин, краткий обзор известных boot-менеджеров: Lilo и GNU GRUB, ASPLoader .
В второй части дается практическое применение штатного boot-менеджера ASPLoader(Поражён и устранение последствий после обновления YUM(Поражён.


3. О дистрибутиве ASPLinux

Дистрибутив ASPLinux создает коллектив одноименной компании, на базе операционной системы GNU/Linux , для архитектуры IBM PC/IA32 совместимых вычислительных машин .
Дистрибутив ASPLinux является fork-проектом Fedora Core компании Red Hat Inc. , которая ставит цель привлечения к работе над проектом независимых разработчиков и пользователей Сообщества Открытые Исходники (Open Sources Community). ASPLinux является одним из лучших русифицированных дистрибутивов, распространяемых на территории России и СНГ.
Операционная система GNU/Linux развивается под руководством Группы Лабораторий разработки открытых исходников ( The Open Source Development Lab (OSDL) ) под лицензией GNU GPL .


4. Обзор Bootstrapping

Процесс загрузки IBM PC/IA32 совместимых вычислительных машин от включения питания до завершения инициализации операционной системы является многоступенчатым процессом и называется bootstarpping(“Самозагрузка”, произошла от boot strap – “тянуть за ушки сапога(ботинка)”). Каждая ступень отрабатывает свою задачу и передает управление на другую.
Процесс загрузки IBM PC/IA32 совместимых вычислительных машин, при включении питания, начинается c установки аппаратного сброса, что ведет к выполнению инструкции процессором , по переходу на адрес 0xfffffff0, для выполнения процедуры POST(Power On Self Test) BIOS. Физические адреса 0xfffffff0 – 0xffffffff памяти резервируются для отображения образа BIOS(Base Input Output System) .
Процедура POST осуществляет проверку оперативной памяти, проверку системной шины, периферийных устройств, подсистем ввода/вывода , производит необходимую инициализацию системных компонентов. Завершением работы POST будет выполнением BIOS -инструкцией INT 0x19, которая производит чтение первых 512 байт носителя(MBR – Master Boot Record ), установленного загрузочным устройством в Setup BIOS .
C старых времен начало загрузки происходит в реальном режиме, при котором возможна работа с BIOS системами MS-DOS, PC-DOS, ранними версиями MS-Windows.
Загрузка образа ядра GNU/Linux, далее по тексту ядро, производится в защищенном режиме, поэтому, на первый взгляд, достаточно было использовать одно шаговый загрузчик, который производит декомпрессию ядра и его инициализацию за один шаг. Однако, потребовалось совмещать вместе с ОС GNU/Linux загрузку нескольких не совместимых с ней операционных систем. Поэтому были введены boot-менеджеры, которые осуществляют загрузку в два шага почему? Об этом будет рассказываться далее.


5. Одношаговый boot-загрузчик

В образе ядра, первые 512 байт занимает boot-загрузчик Bootsect(arch/i386/boot/bootsect.S), который может находится в нулевой дорожке на съемном накопителе(Гибкий диск, Zip-диск, Магнитно-оптический, СD-R(RW)).
Bootsect инициализирует таблицу параметров диска для управления драйвером BIOS. Затем загружает в память процедуру Setup()[b], которая находится с смещением 512 байт от начало образа ядра(нулевой дорожки). Начальный загрузчик загружает оставшуюся часть ядра в память и передает управления процедуре [b]Setup().
Процедура Setup(arch/i386/boot/setup.S) производит низкоуровневую инициализацию аппаратной части для работы ядра, завершается с переводом защищенный режим процессора. Затем передает управление процедуре Startup_32(arch/i386/boot/compressed/head.S, misc.c), которая производит начальную инициализацию сегментных регистров и временного стека, заполняет нулями неиспользуемые структуры ядра , производит декомпрессию образа ядра . После передает управление одноименной процедуре Startup_32(arch/i386/kernal/head.S, misc.c), которая производит завершение процесса декомпрессии, установку значений сегментных регистров, которая заключается в

Создании и настройка стека режима ядра для процесса 0.
Выполнении функции setup_idt(), которая заполняет таблицу дескрипторов прерываний (IDT, Interrupt Descriptor Table) нулевыми дескрипторами обработчиков прерываний.
Чтение параметров системы из BIOS и перемещения их в первую страницу [first page frame].
Определение характеристик процессора.
Загружает адреса GDT и IDT в регистры gdtr и idtr.
И, наконец, совершает безусловный переход на код функции start_kernel().

Процедура start_kernel(arch/i386/kernel/head.S) завершает инициализацию ядра Linux. В ходе ее выполнения инициализируются все жизненно необходимые компоненты ядра, что является последним этапом процесса bootstrapping.


6. Двух шаговый boot-загрузчик

Первым шаг является чтение и инициализация boot-загрузчика из MBR, который произведет инициализацию таблиц загрузочного устройства накопителя и чтение boot-менеджера и передает ему управление.
Вторым шагом является выбор boot-менеджером операционной системы: самим пользователем или автоматически по тайм ауту. После чего, производится чтение сектора диска, где находится загрузчик другой операционной системы. Если была выбрана загрузка ядра, то boot-менеджер производит чтение части образа, где находится процедура Setup. Завершается, освобождает стек, сегменты памяти и передает управление этой процедуре. Далее производятся выполнение других процедур, описанных ранее.
Таким образом, одношаговый загрузчик состоит только из boot-загрузчика, который производит инициализацию загрузки ядра. Двух шаговой загрузчик состоит из boot-загрузчика и boot-менеджера, что приводит к выполнению двух операций инициализация boot-менеджера, а затем уже инициализацию загрузки ядра. Преимущество двух шаговых загрузчиков заключается в возможности использовать на одной IBM PC/IA32 совместимой вычислительной машин несколько операционных систем или других версий ядер GNU/Linux .
Двух шаговые загрузчики не входят в состав GNU/Linux ядра и поставляются отдельно в составе дистрибутивов, так же их можно установить отдельно.
Областью применения этих загрузчиков, в основном, носители на магнитных жестких дисков(МНЖД), исключением являются карты и чипы флеш памяти, на которых возможно создать структуру хранения данных , как на МНЖД. Для их загрузки используются модифицированные двух-шаговые загрузчики уже существующих проектов.
К двух шаговым загрузчикам относятся: LILO, GRUB, ASPLoader.


7. LILO

Один из первых и самый известный boot-манеджер ядра, который грузит его с магнитных носителей сменных дисков(МНСД) или МНЖД. Обеспечивает возможность загрузки ядра, если его образ находится на МНЖД выше 1024 цилиндров и BIOS поддерживает расширения EDD packet call с INT13.
Данный boot-манеджер поддерживает инициализацию других операционных систем, включая DOS, Windows(все версии), OS/2 и различные варианты BSD.
Разработку и сопровождение LILO осуществляет Джон Коффман (John Coffman). Последнюю версию и документацию по проекту можно получить по следующим адресам:
Адрес домашней страницы:
http://freshmeat.net/redir/lilo/5784/url_homepage/lilo.go.dyndns.org
Исходный текст Tar/GZ:
http://lilo.go.dyndns.org/pub/linux/lilo/
Список изменений:
http://freshmeat.net/redir/lilo/5784/url_changelog/changes.txt
Зеркала:
http://freshmeat.net/redir/lilo/5784/url_mirror/lilo
Информацию по инсталляции и использовании LILO можно почерпнуть из следующих документов:
Lilo mini-Howto
Краткое руководство по совмещению Win95 + WinNT + Linux с использованием LILO.
Large-Disk-HOWTO


8. GNU GRUB

Проект GRUB основан в 1995 году, когда Эрих Болейн(Erich Boleyn) в результате опыта по разделения загрузки GNU Hurd с ядром Mach 4 университета Юты. В 1999 году Gordon Matzigkeit и Yoshinori K. Okuji адаптировали GRUB к требованиям проекта GNU и сделали открытый доступ к его разработке.
GNU GRUB осуществляет мульти-загрузку операционных систем с обратной совместимостью FreeBSD, NetBSD, OpenBSD, and GNU/Linux. Загрузка проприетарных операционных систем (DOS, Windows NT, and OS/2)поддерживается через функцией цепочечной загрузки .
boot-манеджер GNU GRUB осуществляет поддержку:

Распознавания многочисленных форматов выполнения бинарных файлов.
Производит загрузку различных 32-х разрядных ядер, которые не имеют согласованную мултизагрузку( FreeBSD, NetBSD, OpenBSD и Linux).
Имеет конфигурационный файл с весьма легкой семантикой записи команд загрузки.
Обеспечивает интуитивный интерфейс в виде графического меню и списка, отображающее команды загрузки, тайм аут времени через которое произойдет автоматическая загрузка по одной из команд.
Поддерживает различные типы файловых систем.
Производит автоматическую декомпрессию.
Обеспечивает доступ к любым накопителям на гибких дисках, жестких дисках и RAM устройствах .
Поддерживает загрузку по сети и имеет удаленный интерфейс.

Домашняя страница проекта : http://www.gnu.org/software/grub/ .
Загрузить последнюю версию можно здесь: ftp://alpha.gnu.org/gnu/grub/ .
Документацию загрузить по адресу: http://www.gnu.org/software/grub/manual
Почитать на русском языке:
Мультизагрузка с GRUB Mini-HOWTO .
FAQ по установки ASPLinux, в пункте 2 “Проблемы при загрузки” .

GNU GRUB и LILO в дистрибутиве ASPLinux можно установить при его инсталляции, но штатным и рекомендуемым разработчиками дистрибутива является boot-менеджером ASPLoader о котором пойдет речь ниже.


9. ASPLoader

Дистрибутив ASPLinux комплектуется штатным графическим boot-менеджером загрузки ASPLDR(Поражён. По своим характеристикам этот проект нисколько не уступает тому же GNU GRUB. Разработку и развитие проекта осуществляет компанией ASPLinux совместно с компанией Acronis .
ASPLDR(Поражён позволяет производить загрузку ядра GNU/Linux , свободно распространяемых операционных систем с открытым кодом(FreeBSD, NetBSD, OpenBSD и других мало известных) , проприетарных операционных систем(MS-DOS, MS-Windows(все клоны), OS/2). Данный boot-менеджер может быть легко сконфигурирован и установлен, как до так и после установки дистрибутива ASPLinux. Новая конфигурация и порядок загрузки операционных систем легко вносится пользователем в MBR(Хотя , это утверждение не много не верно. Если Вы помните, ASPLoader является двух шаговым загрузчиком. В первых 512 байтах(MBR) находится загрузчик boot-менаджера, который на втором шаге загрузится с обновленным порядком загрузки операционных систем, но суть не в этом). Для этого, используется файл конфигурации, который имеет не сложную семантику записи команд загрузки. Что еще приятно ASPLDR(Поражён производит автоматическую проверку правильности написания команд, что практически исключает неправильную запись boot-менеджера.
ASPLDR(Поражён имеет поддержку загрузки с носителей на сменных магнитных накопителях , выключения питания компьютера(начиная с ATX ), отображение времени, поддержки мыши и встроенную защиту от boot-вирусов. Графический интерфейс достаточен интуитивен и лишен избыточности. В данном boot-менеджере реализована интернационализация интерфейса с поддержкой, европейских, некоторой части стран Азии, включая Россию, Украину, Болгарию и других.
Последнюю версия 2.0.6 в бинарном виде можно скачатьRPM пакет .
Последнюю версия 2.0.6 в исходных кодах SPRM пакет .


Библиография
Файл README , установочный диск 1 ASPLinux 10.
Bootstrapping, или как Linux сам себя ставит на ноги

Москва, Октябрь-Ноябрь 2005 года

No votes yet
RSS-материал