LinuxForum.Fans
Тема

Что такое stage1 и stage2 в Grub?

Автор: Termo 27 сообщений 7843 просмотров
#36216

и чем они отличаются?

#36286

Termo,
stage1 - при установке с него всё качается из инета, ВСЁ компилируется из исходников еще на стадии установки системы, отсюда следует, что достигается максимальная оптимизация под конкретное железо и пожелания пользователя (если потрудиться, и выразить свои пожелания на понятном системе языке), но также сопряжено с большим расходом времени, в зависимости от мощности компьютера, конечно (если компилять всю систему (десктоп на KDE, например), то займет часов 50-60 на современной средней машине); Едем дальше.

stage2 - частично собранная система (сильно частично), если я ничего не путаю, собран только base layot (за орфографию не ручаюсь :-)), остальное собирается из исходников на стадии установки системы, все тянет из инета. Отсюда: меньше затраты времени (незначительная экономия, часов 5), менее оптимизированная система, в общем ни то ни сё;

Полное описание тут: [url= сцилка]http://www.gentoo.ru/content/chem-otlichayutsya-stage1-stage2-i-stage3[/url]

#36287

Termo, вопрос по Gentoo Linux? Или по grub? Или по чему-то ещё?
Телепаты в отпуске просто... как бы.

#36293

про GRUB
/boot/grub stage1 & stage 2

еще спрошу
однажды я сделал вот так:
dd if=/dev/sda of=~/bootsect.bin bs=512 count=1
и прописал этот файл в boot.ini
расскажите, а где собственно храниться загрузчик GRUB, установленный по дефолту?
в MBR?



получается, что загрузчик и есть первые 446 байт любого винта...

#36371

первые 446 байт - это загрузчик, остальные 66 байт - таблица разделов

#36372

загрузчик - это груб и он сидит внутри mbr?

я не могу сообразить что из них куда соотносится.
если груб сидит в мбр, то почему там нет boot.ini, когда венда - единственная ось на винте.
или он тоже туда прописывается?

#36381

1. Загрузчик 1-й фазы (stage1) считывается BIOS из MBR (главной загрузочной записи).
2. Он загружает оставшуюся часть загрузчика (2-ю фазу, stage2). Если вторая фаза находится на большом диске, иногда загружается промежуточная фаза 1,5, которая содержит дополнительный код, позволяющий считывать цилиндры с номерами более 1024 (диски LBA). Загрузчик фазы 1,5 хранится (если это необходимо) в MBR или в загрузочном разделе.
3. Выполняется вторая фаза загрузчика (stage2) и отображает меню запуска GRUB.

Termo написал:

если груб сидит в мбр, то почему там нет boot.ini, когда венда - единственная ось на винте.

Груб не целиком сидит в MBR, см. выше.
Загрузчик винды называется NTLDR (по крайней мере начиная с winNT вплоть до XP, если не ошибаюсь в viste и дальше используется другой загрузчик) и на каком-то этапе читает этот самый файл boot.ini.

#36384

подведем итог:
после прохождения процедуры POST, BIOS проверяет наличие MBR на первом жестком диске (SATA1) и передает управление загрузчику,
в данном случае, GRUB'у, инициализация которого условно разделена на две (или три) промежуточные части.
первая фаза (Stage1) проверяет таблицу разделов и ищет тот, который с меткой 80h (активный).
если таковой радел найден, то управление передается второй фазе (Stage2), которая отображает меню GRUB,а для пользователя
и загружает в память ядро операционной системы, расположенное на активном разделе жесткого диска.
так?

ПС а меню и параметры загрузки GRUB,а отображаются из файла menu.lst
аналогично и в венде, где boot.ini - это всего-лишь черный экран с белыми буквами выбора версий форточек для загрузки (если их больше, чем одна)


ППС тогда возникает резонный вопрос, почему загрузчик не уходит в бесконечный цикл, когда обнаруживает активных разделов больше одного?
как он определяет какому разделу винта отдать управление?
или он отдает право выбора раздела пользователю?

#36391

В grub.conf пишется.
root(hd0,0) указывает где лежит ядро (/boot)
kernel ... root=/dev/sda5 - корневая файловая система (/)

#36402

а это то здесь каким боком?

#36404

Опа. Извиняюсь, я тебя не правильно понял.

Termo написал:
подведем итог:
... проверяет таблицу разделов и ищет тот, который с меткой 80h (активный)...
...ППС тогда возникает резонный вопрос, почему загрузчик не уходит в бесконечный цикл, когда обнаруживает активных разделов больше одного?...

Именно так и происходит. Выдается сообщение "Invalid partition table" и бесконечный цикл. Но кто же в здравом уме будет помечать два раздела как активные? Это делается в fdisk, например, жмется "буковка а" и номер раздела.

P.S. Ходил курить и пришла такая мысль в голову. Тот же fdisk скорее всего не даст пометить два раздела как "активные". Как минимум это было бы логично с его стороны. И я думаю, что создатели этой программы включили такую возможность в код.

#36419
mycetophylax написал:
fdisk

Получите wink

[console]$ sudo fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

Команда (m для справки): p

Диск /dev/sda: 32.0 ГБ, 32017047552 байт
255 heads, 63 sectors/track, 3892 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x94f41c96

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 1946 15631213+ 7 HPFS/NTFS
/dev/sda2 1947 3892 15631245 83 Linux

Команда (m для справки): a
Номер раздела (1-4): 2

Команда (m для справки): p

Диск /dev/sda: 32.0 ГБ, 32017047552 байт
255 heads, 63 sectors/track, 3892 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x94f41c96

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 1946 15631213+ 7 HPFS/NTFS
/dev/sda2 * 1947 3892 15631245 83 Linux
[/console]

#36437

:O ! А почему бы не запретить это делать в коде fdisk? Или такой прием где-то используется? Я бы и сам проверил, но я знаю как поставить метку, а как снять, к сожалению, нет, wink разве что "убиванием" раздела. А этого очень бы не хотелось.

#36444

Ну я изменения-то на диск не писал, так что может и нельзя это сделать.

#36447
Nightwolf_ng написал:
Ну я изменения-то на диск не писал, так что может и нельзя это сделать.

:D :D :D Чувствовал же что, где-то подвох. А такой простой мысли в голову не пришло. Сейчас попробую, отпишусь.

Попробовал. Можно! :D Зачем интересно так?
Зато теперь знаю как отменить "назначение" диска "активным/загрузочным". Точно так же - "а".

#36583

что происходит после передачи управления от БИОСа ГРУБу и до момента загрузки я дра операционной системы?

#36781

нет, там пробелы. хотелось бы ясности...
итак, БИОС передал управление загрузчику, который занимает первые 446 байт дискового пространства.
загрузчик просмотрел таблицу разделов, нашел активный и...?
дальше что?

#36809

Загрузчик stage1 ищет активный раздел и просматривает остальные разделы, убеждаясь, что больше активных нет (что происходит, когда он находит их больше одного мы уже обсудили выше :cool: ). Как выяснилось позже - это нифига не так, см. дальше.
Потом он загружает stage1.5. Этот загрузчик "понимает" определенную файловую систему. Находится он также в цилиндре 0, но уже не в MBR. Посмотри в /boot/grub/ лежат e2fs_stage1_5, fat_stage1_5, reiserfs_stage1_5. А дальше уже из файловой системы загружается stage2.

#36964

stage2 расположен в загрузочном секторе активного раздела
или также лежит в MBR?

Войдите или зарегистрируйтесь, чтобы ответить.