IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> О загрузчиках
Поделиться
ИВК
сообщение 10.1.2010, 13:01
Сообщение #1


Профессионал
*******

Группа: Глоб. Модератор
Сообщений: 9985
Регистрация: 22.6.2009
Вставить ник
Цитата
Из: Онега
Пользователь №: 1352
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 30


Чтобы пользоваться компьютером, нужно сначала загрузить в оперативную память операционную систему (ОС). Этим занимается программа-загрузчик.

Примечание. Не рассматриваю тут экзотику, как то : загрузка с "живого диска", с флэшки, по сети, наличие нескольких загрузочных винчестеров и т. п. Здесь речь о типичном варианте : на компьютере один загрузочный жёсткий диск, на нём - загрузчик и ОС. Также не касаюсь тонкостей, связанных с Master Boot Sector (MBS) и Master Boot Record (MBR) - они больше запутывают дело, чем проясняют. Просто принимаю, что MBR = первый сектор загрузочного жёсткого диска. Также не углубляюсь в множество иных деталей. Вообще, это краткий обзор, цель которого - дать начинающему общее представление о работе загрузчиков ОС. Что касается подробной информации по ним (кроме GRUB-2 - ввиду его новизны), то её в Интернете очень много.
О разметке винчестера сказано здесь.


После включения питания компьютера запускается BIOS. Она должна найти первичный загрузчик. Это не так сложно, поскольку он всегда находится в MBR, занимая его первые 446 байт (а последние 2 байта MBR должны быть 0x55AA - знак, по которому BIOS определяет, что винчестер - загрузочный).
Итак, первичный загрузчик - тот, который в MBR = тот, который получает управление от BIOS. Он может быть разным - в зависимости от того, кому он, в свою очередь, должен передать управление. Кому именно? Рассмотрим загрузчики, с которыми часто приходится сталкиваться при использовании (чаще - при установке) Линукса.

1. Виндовая цепочка загрузчиков - обычно применяется на компьютерах, где есть только Windows. Первичный загрузчик (стандартный) просматривает таблицу разделов, находит в ней раздел, который помечен как "активный", и передаёт управление находящемуся в его первых секторах внесистемному загрузчику Windows. Он тоже бывает разным, в зависимости от файловой системы активного раздела (впрочем, сейчас это почти всегда NTFS). Он должен найти в корневом каталоге системный загрузчик (NT Loader), который, в отличие от предыдущих, уже является файлом - под названием ntldr, загрузить его в память и передать ему управление. Тот находит в том же корневом каталоге свой конфиг - файл boot.ini примерно такого содержания :

Код
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows-1" /FASTDETECT
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows-2" /FASTDETECT


Коротко говоря, это означает, что в первом разделе винчестера (в каталоге WINDOWS) установлена Windows-1 (название произвольное, можно менять), во втором - Windows-2, и у юзера есть 10 секунд на выбор между ними, иначе загрузится та, что по умолчанию - в данном случае Windows-1.
Чтобы увидеть boot.ini, надо включить показ скрытых и системных файлов, а чтобы редактировать его - также снять с него атрибут "только чтение". Впрочем, из Линукса с ним можно делать что угодно и без этого.
Можно запускать и Линукс, скопировав первый сектор его раздела в файл, положив его в тот же корневой каталог и добавив в boot.ini нечто типа C:\Linux-boot="Linux". Но вообще, если взялись за Линукс, то лучше использовать в качестве основного один из его родных загрузчиков.

2. LILO (LInux LOader). Перезаписывает стандартный первичный загрузчик своим, который умеет (по встроенной в него карте размещения - то есть прямо по номерам секторов, в обход файловой системы) находить основной загрузчик, а тот (также при помощи своей карты размещения) запускает ОС по выбору пользователя. Управление - через конфиг /etc/lilo.conf. Он выглядит примерно так :

Код
timeout="100"
default="Linux"

image="/boot/vmlinuz
label="Linux"
root="/dev/sda1"
    
other="/dev/sda2"
table="/dev/sda"
label="Windows"


Это означает, что у пользователя 10 секунд (таймаут - в десятых долях секунды) на выбор, иначе автоматически загрузится Linux, а именно файл его ядра - /boot/vmlinuz, а корневая файловая система находится в разделе sda1. Выбор пункта "Windows" означает передачу управления внесистемному загрузчику Windows - предполагается, что он в первых секторах раздела sda2. Что делать дальше - он сам знает.

После правки файла /etc/lilo.conf необходимо запустить команду lilo, которая переустановит загрузчик, обновив упомянутые карты размещения.

3. GRUB-1 ( GRand Unified Boot loader; ранее именовался - и часто до сих пор именуется - просто GRUB, а сейчас некоторые его называют GRUB Legacy; я использую термин GRUB-1 как единственный, не вносящий неопределённости).
Также перезаписывает в MBR стандартный первичный загрузчик своим собственным, который умеет (по своей карте размещения) находить полуторный загрузчик, обычно записываемый прямо в сектора, следующие сразу за MBR. Полуторный умеет работать с файловой системой загрузочного раздела, где и находит вторичный (основной) загрузчик - файл stage2. Тот выводит стартовое меню (обычно с красивой картинкой), глядя на свой конфиг menu.lst (или grub.conf), который приблизительно таков :

Код
timeout 30
default 0

title Linux
kernel (hd0,0)/boot/vmlinuz
root=/dev/sda1

title Windows
root (hd0,1)
makeactive
chainloader +1


В данном случае у юзера 30 секунд на выбор, после чего запускается ОС по умолчанию; "default 0" означает первую (в этом списке) ОС, в данном случае Linux (счёт ОСей идёт с нуля). "kernel (hd0,0)" означает, что ядро ОС - в файле /boot/vmlinuz, а тот - в первом разделе первого диска (hd0,0 - в терминологии BIOS, которую использует GRUB; нумерация тоже с нуля); корневая файловая система - в sda1 (то есть в том же разделе - что, кстати, необязательно).
При выборе пункта "Windows" управление передаётся первому сектору (директива "chainloader +1") второго раздела (hd0,1), где должен находиться внесистемный загрузчик Windows.
Поскольку основной загрузчик GRUB ищет ядра операционных систем по именам файлов, а не по номерам секторов, то он использует свой конфиг напрямую, и после правки последнего изменения вступают в силу автоматически.

Установка GRUB-1 в MBR (не путайте с установкой самой программы GRUB-1 в Linux - она производится так же, как инсталляция любой другой программы; тут предполагается, что она уже выполнена) происходит так (из консоли с правами root) :

Код
grub # запуск консоли GRUB.
root (hdO,0) # выбор раздела, в котором уже находится вторичный загрузчик (здесь : sda1 или hda1).
setup (hd0) # выбор жёсткого диска, в начало которого надо записать первичный и полуторный загрузчики (здесь : sda или hda).


4. GRUB-2 (некоторые поспешили переименовать его в просто GRUB, чем добились, по-моему, только путаницы : GRUB-1 хоронить рано) - новая программа, а не новая версия GRUB-1, хотя преемственность очевидна. Имеет много дополнительных возможностей (например, поддерживает кириллицу в стартовом меню).
Работает примерно так же, как GRUB-1, но его конфиг grub.cfg рекомендуется править не напрямую, а с помощью нескольких скриптов. Не буду тут вдаваться в подробности, об этом новом загрузчике вообще надо говорить отдельно, здесь он упомянут для полноты картины.

Когда я создал первую свою мультисистему, состоявшую из Windows 2000 и Windows XP, то схема загрузки была, естественно, виндовая. Как только начал экспериментировать с Линуксом, перешёл на GRUB-1. В последнее время, по причине пристрастия альтовцев к LILO, стал использовать и его, но, в основном, лишь на чужих компьютерах. Недавно начал экспериментировать с GRUB-2; работает хорошо, но почему-то не получается фоновая картинка; научусь её делать - перейду на этот загрузчик.
Сейчас у меня установлены все эти загрузчики. GRUB-1 - основной, GRUB-2 - на другом винчестере (то есть задействуется переключением порядка проверки винчестеров в BIOS); LILO - в разделе одного из Альтов (поставлен для ознакомления, можно обойтись без него); внесистемный и системный загрузчики Windows - в разделе, служащем для запуска ещё оставшихся у меня виндух. Все загрузчики работают надёжно.
А вообще, учитывая ориентацию нашего форума на Альт, LILO может оказаться для нас наиболее важным загрузчиком.







--------------------
Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ИВК
сообщение 7.11.2014, 18:37
Сообщение #2


Профессионал
*******

Группа: Глоб. Модератор
Сообщений: 9985
Регистрация: 22.6.2009
Вставить ник
Цитата
Из: Онега
Пользователь №: 1352
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 30


Выделил отсюда тему "Восстановление убитого установкой винды загрузчика"



--------------------
Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
( Гостей: 1 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 28.3.2024, 17:25