Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Флаг активного загрузочного раздела



Начальный цилиндр/головка/сектор загрузочного раздела

Тип раздела (Linux использует 0x83, РРС PReP использует 0x41)

Конечный цилиндр/головка/сектор загрузочного раздела

Номер начального сектора раздела

Длина раздела (в секторах)


В конце самотестирования и идентификации аппаратуры код инициализации систе­мы (Firmware или BIOS) получает доступ к контроллеру жесткого диска для чтения MBR. После того как тип загрузочного устройства определен, код инициализации системы по­лучает через задокументированный интерфейс (например, для диска ШЕ) доступ к голов­ке 0, цилиндру 0 и сектору 0.

После обнаружения устройства загрузки MBR копируется в память по адресу 0х7с00 и выполняется. Маленькая программа в голове MBR распаковывается и ищет в таблице разделов активный загрузочный раздел. Далее MBR копирует код с активного загрузочно­го раздела в адрес 0х7с00 и начинает его выполнение. Начиная с этой точки DOS обычно загружает систему х86. Тем не менее активный загрузочный раздел может иметь за­грузчик, который, в свою очередь, загружает операционную систему. Теперь мы обсудим несколько наиболее распространенных загрузчиков, используемых Linux. Рис. 8.2 демон­стрирует то, как выглядит память во время загрузки.


Загрузчики



 

   
    сжатый образ   копия MBR   сектор инициализации раздел загрузки    
У 037с00 \. 039000 039020
        А  
    код Таблица разделов А 5 5  
        + 031bd +031fe  
                         

Рис. 8.2. Вид памяти во время загрузки

GRUB

Grand Unified Bootloader (GRUB)1 - это х86-загрузчик, используемый для загрузки Linux. GRUB 2 на момент написания книги находился в процессе портирования на РРС. Соответствующая документация, включающая его историю и особенности дизайна, на­ходится на www.gnu.org/software/grub. GRUB распознает файловые системы на загрузочных дисках, а ядро может быть загружено из указанного файла, диска и раздела, где оно расположено. GRUB является двухэтапным загрузчиком (two-stage bootloader2). Этап 1 инсталлируется в MBR и вызывается из BIOS. Этап 2 вначале загружает этап 1, а по его завершении загружается из файловой системы. Остановки и события, возни­кающие на каждом из этих этапов, перечислены далее.

Этап 1

Инициализация.

Определение загрузочного диска.

Загрузка первого сектора этапа 2.

Переход на этап 2.

*• Великий унифицированный загрузчик. Примеч. пер.

2 Иногда GRUB использует этап 1.5, но мы рассмотрим только два обыкновенных этапа.



Глава 8 • Загрузка ядра


Этап 2

1. Загрузка остатка этапа 2.

2. Переход в загруженный код.

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

/boot/menu.1st

title Kernel 2.6.7, test kernel

root (hd0, 0)

kernel /boot/bzImage-2.6.7-mytestkernel root=/dev/hdal ro

Пункт title хранит метку для настройки; root устанавливает текущее корневое устройство в hdO, раздел 0; kernel загружает первичный загрузочный образ ядра из ука­занного файла. Оставшаяся информация о записях ядра передается в качестве параметров во время загрузки ядра.

Некоторые аспекты загрузки, такие, как месторасположение загружаемого и распако­вываемого образа ядра, конфигурируется в аппаратно-зависимом разделе кода ядра Linux. Давайте рассмотрим arch/ i3 8 б /boot /setup. S, где хранятся такие настройки для х86.

arch/i836/boot/setup.S

61 INITSEG = DEF_INITSEG # 0x9000, перемещаем загрузчик сюда с дороги

62 SYSSEG = DEF_SYSSEG # 0x1000, система загружается из 0x10000 (65536).

63 SETUPSEG = DEF_SETUPSEG # 0x9020, это текущий сегмент1

Эта конфигурация указывает, какой образ Linux загружать в линейный адрес 0x9000, и переходит по адресу 0x9020. В этой точке распакованная часть ядра Linux распаковыва­ет запакованную часть по адресу 0x10000 и начинает инициализацию ядра.

GRUB основан на Многозагрузочной спецификации(МиШЪоо1 Specification). На мо­мент написания книги Linux еще не обладал всеми структурами, необходимыми для мно­гозагрузочной компиляции, но обсудить многозагрузочные требования все-таки стоит.

к Ядро воспринимает спецификацию во время загрузки через командную строку ядра. Это строка, описывающая список параметров, хранящих информацию об аппаратной специфике, значениях по умолчанию и т. д. Более подробную информацию о загрузочной строке Linux можно найти по адресу www.tldp.org/HOWTO/ BootPrompt-HOWTO.html.


Загрузчики



Многозагрузочная спецификация

Многозагрузочная спецификация описывает интерфейс между любым потенциальным загрузчиком и любой потенциальной операционной системой. Многозагрузочная специ­фикация не указывает, как должен работать загрузчик, а только указывает интерфейс для работы с загружаемой операционной системой. Текущая цель - это архитектура х86 и свободные 32-битовые операционные системы, для которых предусматривается стандарт передачи конфигурационной информации из загрузчика в операционную систему. Образ ОС может быть любого типа (ELF или специального), но должен содержать многозагру­зочный заголовок (multiboot header) в первых 8 Кб образа вместе с магическим числом 0xlBADB002. Многозагрузочный загрузчик должен предоставлять и метод для вспомо­гательных загрузочных модулей или драйверов, используемых некоторыми ОС во время загрузки, так как эти ОС не загружают все необходимое для работы в загрузочный образ ядра. Обычно так поступают модульные загрузочные ядра, для того чтобы размер загру­зочного ядра не выходил за разумные пределы.

Многозагрузочная спецификация диктует, что, когда загрузчик вызывает ОС, систе­ма должна находиться в специальном 32-битовом реальном режиме, для того чтобы ОС могла выполнять обратные вызовы из BIOS. И наконец, загрузчик должен предоставить ОС структуры данных, заполненные основными машинными данными. Далее мы рас­смотрим структуры данных с многозагрузочной информацией.

typedef struct multiboot__info

{

ulong flags; // описывает следующие поля

ulong mem_lower; // если flags[0], количество памяти < 1М

ulong mem_upper; // если flags[0], количество памяти > 1M

ulong boot_device; // если flags[l], диск, parti, 2, 3

ulong cmdline; // если flags[2], адрес командной строки

ulong mods_count; // если flags[3], # загрузочного модуля

ulong mods_addr; // если flags[3], адрес первого загрузочного модуля

union

{

aout_symbol__table_t aout_sym; // если flags[4], таблица символов

//из a.out образа ядра elf_section_header_table_telf_sec; //еслиflags [5], заголовок

//из ELF ядра } и;

ulong mmap_length; // если flags[б], BIOS длина отображения в память ulong mmap_addr; // если flags[б], адрес отображения BIOS ulong drives_length; // если flags[7], информационная структура

// диска BIOS ulong drives_length; // если flags[7], первая информационная

// структура BIOS.



Глава 8 • Загрузка ядра


ulong config_table // если flags[8], настроечная таблица ROM

ulong boot_loader_name // если flags[9], адрес строки

ulong apm_table // если flags[10], адрес информационной таблицы АРМ

ulong vbe_control_infо // если flags[11], настройка видеорежима

ulong vbe_mode_infо

ulong vbe_mode

ulong vbe_interface_seg

ulong vbe_interface_off

ulong vbe_interface__len

};

Указатель на эту структуру передается в ЕВХ, когда управление передается ОС. Первое поле, flags указывает, какие из следующих полей верны. Неиспользуемые поля должны иметь значение 0. Вы можете подробнее изучить Многозагрузочную специфика­цию по адресу www.gnu.org/software/grub/manual/multiboot/multi-boot.html.

LILO

Linux Loader (LILO)1 используется в качестве х86-загрузчика Linux уже много лет. Это одна из простейших программ загрузки, доступная для настройки и загрузки ядра Linux. LILO похож на GRUB в плане того, что он тоже работает в два этапа. LILO использует файл конфигурации и не имеет интерфейса командной строки.

Мы снова начнем с инициализации BIOS системы и загрузки MBR (этап 1) в память и передачу в него управления. Остановки и события, возникающие на каждом из этапов LILO, описаны ниже.

Этап1

1. Начало выполнения и отображение «L».

2. Распознание геометрии диска и отображения «I».

3. Загрузка кода этапа 2. Этап 2

 

1. Начало выполнения и отображение «L».

2. Нахождение данных загрузчика и ОС, отображение «О».

3. Определение, какую ОС загружать, и переход в нее.

Фрагмент из конфигурационного файла LILO выглядит следующим образом:

1 Загрузчик Linux. Примеч. пер.


Загрузчики



/etc/lilo.conf

image=/boot/bzImage-2.б.7-mytestkernel

label=Kernel 2.6.7, my test kernel

root=/dev/hda6

read-only

Параметрами являются image, указывающий путь к ядру; label 1, описывающий строку конфигурации; root, описывающий раздел, где находится корень файловой сис­темы, и read-only, описывающий варианты корневых разделов при загрузке.

Далее приведен список различий между GRUB и LILO.

• LILO хранит конфигурационную информацию в MBR. Если производятся какие-то изменения, для обновления MBR необходимо вызвать /sbin/lilo.

• LILO не может читать различные файловые системы.

• LILO не имеет интерфейса командной строки.

Давайте рассмотрим, что происходит, когда LILO устанавливается в качестве загрузчика. Сначала MBR (содержащий LILO) копируется в 0х7с00 и начинает свое вы­полнение. LILO начинает с копирования образа ядра, указанного в /etc/lilo.conf, с жесткого диска. Этот образ, созданный с помощью build, с, подготавливается из сек­тора init (загружаемого в 0x90000), настроечного сектора (загружаемого в 0x90200) и сжатого образа (загружаемого в 0x10000). Далее LILO переходит по метке start_of_setup по адресу 0x90200.

PowerPC и Yaboot

Yaboot - это основанный на OpenFirmware (OF) загрузчик машин PowerPC New World. Аналогично LILO и GRUB, Yaboot использует конфигурационный файл и утилиты напо­добие ybin и ybootconf ig для установки загрузочного раздела, содержащего Yaboot. Аналогично BIOS x86, OF позволяет настройку загрузочного диска. Однако в случае OF он различается от системы к системе. Настройки OF обычно можно узнать, введя «Сот-mand+Option/Alt+o+f.? ».

Yaboot использует следующие шаги загрузки:

1. Yaboot вызывается OF.

2. Ищет загрузочные устройства, загрузочные пути и открытые загрузочные разделы.

3. Открывает /etc/yaboot. conf или командную оболочку.

4. Загружает образ ядра и initrd.

5. Выполняет образ.



Глава 8 • Загрузка ядра


Как вы можете видеть, фрагмент загрузочной информации для Yaboot аналогичен LELO и GRUB:

yaboot.conf label=Linux root=/dev/hdall sysmap=/boot/System.map read-only

Как и в случае LILO, ybin устанавливает Yaboot в загрузочный раздел. Любые об­новления-изменения в конфигурацию Yaboot требуют запуска ybin.

Документацию на Yaboot можно найти на www. penguinppc. org.


Поделиться:



Популярное:

  1. Вопрос: Форсайт как инструмент активного исследования и формирования будущего
  2. Дискуссии о возрастном цензе активного избирательного права
  3. Интенсивная сыворотка-корректор — концентрированное средство активного действия. Помогает сделать ежедневный уход за кожей по-настоящему эффективным. Обеспечивает быстрый видимый результат.
  4. Лексика современного русского языка с точки зрения происхождения, активного и пассивного запаса.
  5. Лечение последствий радиоактивного облучения.
  6. Процессы изменения и развития лексики современного русского языка. Лексика активного и пассивного запаса.
  7. Распределение экономически активного населения по сферам деятельности
  8. Система Интерактивного Тестирования Знаний «СИнТеЗ»»
  9. Укажите на выражение активного суммарного давления
  10. Чтобы скопировать изображение активного окна в буфер обмена необходимо нажать клавишу


Последнее изменение этой страницы: 2016-03-25; Просмотров: 1047; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.035 с.)
Главная | Случайная страница | Обратная связь