RE: Grub
15. Загрузчик Grub.
Уважаемые подписчики! Этот выпуск опять задержался. У вас есть возможность
помочь рассылке. Кликните
<http://www.iloto.net/partners/click/?531870260044> по баннеру внизу и
перейдите по ссылке в появившемся окне. Таким образов, вы, потратив 20
секунд своего времени, реально поможете рассылке и следующие выпуски будут
выходить вовремя.
Я сам использую Grub, как основной загрузчик, поэтому могу предложить вам
детальное описание со своими комментариями.
Что такое GRUB?
GRUB - это очень мощный менеджер загрузки, который может загружать множество
операционных систем, таких как Windows, DOS, Linux, GNU Hurd, *BSD и т.д.
GRUB - синоним слова гибкость. Его последний релиз, 0.5.96.1, поддерживает
ext2 ( файловую систему, используемую Линукс), FAT16 и FAT32 (используемые
Win9x и ME), FFS (Fast File System (Быстрая файловая система) используемую
*BSD UNIX), ReiserFS (новую журналируемую файловую систему, разработанную
для Линукс и интегрированную в ядро Линукс 2.4.1), и minix (старую файловую
систему, разработанную для ОС MINIX, также используемую ранними версиями
Линукс). С GRUB, вы можете "заглянуть" внутрь этих файловых систем, даже не
загружая операционной системы. Например, если вы хотите увидеть дату и
время, сохранённые в текстовом файле, и у вас нет времени на загрузку всей
операционной системы, вы можете использовать командную оболочку GRUB (строка
с подсказкой "grub>") ,введите:
Вы увидете всё содержимое текстового файла, включая даты и время.
Лучшее свойство GRUB - то, что вы можете загрузить любое ядро на любом
разделе, прямо в ходе начальной загрузки. Например, если вы забыли добавить
только что скомпилированное ядро в список, вам скорее всего потребуется
загрузиться, добавить его в список и затем перезагрузиться, чтобы
использовать его. Но с GRUB, вы можете просто использовать командную
оболочку и загрузить при помощи её желаемое изображение ядра.
Теперь я опишу три основных шага, которые необходимо выполнить, чтобы начать
использовать GRUB: компиляция, установка и конфигурирование.
ШАГ ПЕРВЫЙ: Компиляция и установка GRUB
Загрузите исходные коды GRUB с ftp://alpha.gnu.org/pub/gnu/grub
<ftp://alpha.gnu.org/pub/gnu/grub> .
Извлеките содержимое сжатого архива следующей командой "tar -xvzf
имя_файла.tar.gz" В моём случая имя файла выглядело как
grub-0.5.96.1.tar.gz, поэтому я ввёл:
# tar -xvzf grub-0.5.96.1.tar.gz
Эта команда извлекла множество файлов и директорий в директорию, названную
grub-0.5.96.1
Теперь сделайте следующее:
[root@heaven ~/grub-0.5.96.1 ]# ./configure
Если вы хотите сконфигурировать GRUB, чтобы включить поддержку конкретной
файловой системы и поддержку сетевых карт, или убрать поддержку сетевых
карт, если вы не нуждаетесь в ней, запустите:
[root@heaven ~/grub-0.5.96.1 ]# ./configure --help
Эта команда покажет вам все возможные опции. Теперь используйте префиксы
--enable и --disable, чтобы добавить или убрать поддержку некоторых карт.
(ПРИМЕЧАНИЕ: GRUB поддерживает загрузку через сеть.)
Чтобы запустить процесс компиляции, введите:
[root@heaven ~/grub-0.5.96.1 ]# make
Чтобы установить все файлы в нужные места, введите:
[root@heaven ~/grub-0.5.96.1 ]# make install
Теперь вы готовы к установке GRUB.
Неплохо хранить все файлы GRUB, относящиеся к загрузке, в отдельной
директории, такой так /boot/grub. Чтобы сделать это, проделайте следующие
нехитрые манипуляции:
1. По умолчанию, все файлы GRUB устанавливаются в /usr/share/grub/i386-pc
или /usr/local/share/grub/i386-pc, в зависимости от того, как установлены
ваши переменные окружения.
2. Создайте новую директорию -- /boot/grub. Затем скопируйте следующие файлы
в эту директорию.
stage1
stage2
*_stage1_5
Я объясню назначение этих файлов позднее. Также скопируйте исполняемый файл
GRUB ( который может находится в /usr/sbin или /usr/local/sbin) в директорию
/boot/grub.
Перед установкой GRUB, вам нужно знать, как GRUB понимает ваш жесткий диск и
информацию о разделах. Прежде всего, счет начинается с 0, а не с 1. В
Линукс, ваш первый жесткий диск, присоединённый к primary master
контроллеру, называется "hda". В GRUB, он станет "hd0". Подобно этому, ваш
первый привод для гибких дисков в GRUB носит имя "fd0". Таким образом
первый, второй и третий раздел первого жесткого диска (hda1, hda2 и hda3),
станут "hd0,0","hd0,1" и "hd0,2" в GRUB. ПРИМЕЧАНИЕ: запятая это
неотъемлемая часть номенклатуры названий разделов в GRUB.
Чтобы объединить два поля (номер диска и номер раздела) в одно при помощи
запятой, используйте круглые скобки. Например: (hd0,0) (hd0,1) (hd0,2) и так
далее. (hd0,0) это первый раздел первого жесткого диска. Аналогично, (hd1,5)
это шестой раздел на втором жестком диске и (hd2,0) это первый раздел на
третьем жестком диске.
ШАГ ВТОРОЙ: Установка GRUB
Установку GRUB, можно разделить на три основных части:
1. Установка "stage1" в MBR.
2. Установка адреса или местоположения, "stage2".
3. Настройка загрузочного меню или набора опций, чтобы выбрать, какую
операционную систему загружать.
Начните установку GRUB со следующей команды:
[root@heaven /boot/grub ]# ./grub
Эта команда проверяет устройства, пытаясь угадать диски BIOS и выдать
выходное сообщение. Это может занять много времени.
end_request: I/O error, dev 02:00 (floppy), sector 0
GRUB version 0.5.96.1 (640K lower / 3072K upper memory)
ПРИМЕЧАНИЕ: Хотя это может показаться удивительным, но GRUB поддерживает
минимальное редактирование строки в стиле Bash. Для первого слова TAB выдаёт
все возможные варианты завершения команды. В любом другом месте TAB выдаёт
все возможные варианты завершения имени устройства/файла. Возможно вы будете
удивлены такой возможностью.
Затем появляется нечто вроде этого:
Я подразумеваю, что вы установили ваш Линукс дистрибутив в первый
расширенный раздел первого диска или /dev/hda5. Помните соглашение о
наименованиях в GRUB и переименуйте приведенное выше в (hd0,4). Введите
следующую команду:
(hd0,4)/boot/grub/menu.conf
Теперь давайте рассмотрим эту команду более детально:
install
встроенная команда, которая приказывает GRUB установить
(hd0,4)/boot/grub/stage1 на (hd0), в MBR.
(hd0,4)/boot/grub/stage2
говорит GRUB, где располагается изображение stage2.
p с последующими опциями: (hd0,4)/boot/grub/menu.conf
Устанавливает файл конфигурации для отображения красивых меню. Позднее мы
обсудим структуру конфигурационного файла.
Мы также может обобщить синтаксис этой команды:
1. install
2. местонахождение_stage1
3. куда_установить_install
4. местонахождения_stage2
5. p местонахождения файла конфигурации
Всё. Вы завершили основную установку на жесткий диск.
Установка на дискету:
Чтобы установить GRUB на дискету, вы должны знать команду 'dd' и как она
работает. Для создания загрузочной дискеты с GRUB, вы должны разместить
файлы stage1 и stage2 в начальных секторах дискеты.
Установка stage1 на дискету
Вставьте форматированую дискету в дисковод и введите:
[root@heaven /boot/grub ]# dd if=stage1 of=/dev/fd0 bs=512 count=1
И опять, рассмотрим команду в деталях:
if=входной файл
т.е., stage1
of=выходной файл
т.е., привод для гибких дисков (эта строка может отличаться для вашего
компьютера)
bs=количество байт для чтения и записи
В нашем случае 512 байт.
count=сколько раз произвести эту операцию
Каждая новая итерация копирует следующие bs байт в место назначения.
Установка stage2 на дискету
[root@heaven /boot/grub ]# dd if=stage2 of=/dev/fd0 bs=512 seek=1
Всё аналогично команде для установки stage1, исключая новый ключ seek. Seek
пропускает 1 блок из "bs" байт. Например в приведённой выше команде bs =
512, поэтому seek=1 пропустит первые 512 байт дискового пространства и
продолжит с 513го байта. Это сохранит результат выполнения первой операции,
т.е. первые 512 байт занятые stage1 не будут перезаписаны.
Всё, вы завершили основную установку на дискету.
ШАГ ТРЕТИЙ: настройка GRUB
Вы этой секции мы увидим, как загружать различные операционные системы и
создать файл menu.conf.
Давайте начнём с процедур загрузки, поддерживаемых GRUB. Загрузку можно
производить двумя способами.
* A. Обычная загрузка путём вызова ядра.
* B. Загрузка по цепочке или передача контроля другому менеджеру
загрузки.
Процедура загрузки используя метод A:
1. Установите корневое устройство или укажите GRUB вашу корневую
файловую систему.
2. Укажите GRUB, где находится образ вашего ядра и передайте ядру
параметры.
3. Перезагрузитесь и проверьте его.
Для загрузки Линукс, я храню своё ядро в /boot/ под именем bzImage, а моя
корневая файловая система расположена на /dev/hda5, или (hd0,4) в GRUB.
Поэтому моя процедура загрузки выглядит следующим образом:
1. root (hd0,4) [Это устанавливает корневой раздел]
2. kernel /boot/bzImage root=/dev/hda5 [Это устанавливает ядро]
3. boot [Это запускает загрузку Линукс]
Процедура загрузки используя метод B (этот метод подразумевает, что у вас
есть другой менеджер загрузки, например LILO или NTLDR, установленный в
разделе.)
1. Установите корневой раздел, но не монтируйте его.
2. Активируйте этот раздел.
3. Установите первый сектор устройства, которому будет передано
контроль в случае загрузки по цепочке.
4. Перезагрузитесь и проверьте его.
Давайте рассмотрим другую ситуацию, с Windows, установленным на /dev/hda1
или (hd0,0). Процедура загрузки Windows будет выглядеть следующим образом:
1. rootnoverify (hd0,0)
2. makeactive
3. chainloader +1 [+1 устанавливает первый сектор текущего корневого
раздела]
4. boot [передаёт управление и покидает GRUB]
Файл menu.conf, используется для загрузки нескольких операционных систем и
построения меню. Написание menu.conf не представляет из себя особой
сложности. Как вы сможете убедиться в этой секции, он использует чистый
английский язык ;).
Все пункты меню начинаются с "title TITLENAME" (название ИМЯ) без запятых.
Вы можете заменить TITLENAME на то что вам хочется.
Чтобы сделать меню для загрузки Линукс:
1. Установите название (title).
2. Установите корневой раздел.
3. Установите ядро с правильными параметрами.
4. Команда загрузки (boot).
Чтобы создать работающее меню:
title Red Hat Linux (2.4.18-14)
root (hd0,8)
kernel /vmlinuz-2.4.18-14 ro root=LABEL=/ hdc=ide-scsi
initrd /initrd-2.4.18-14.img
#(Хэш (#) в начале строки, означает комментарий.)
Чтобы сделать меню для Windows или DOS:
title Windows
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
#Что если вы хотите иметь две установленных версии Windows. Например, одну
для себя и другую для вашей семьи, но вторая версия не хочет
устанавливаться, сообщив вам, что Windows уже установлен ?
Существует простой способ установки обоих версий, путем сокрытия одного из
разделов во время загрузки и использования другого. Вы даже можете защитить
вашу опцию, так, что никто не сможет по ошибке загрузить ваш раздел. Ниже
описано, как создать две установки Windows, на hda1 и hda2 или (hd0,0) и
(hd0,1), используя команды lock,password,hide и unhide.
Для Windows "My Entry (Мой Вход)":
title My Entry
lock
unhide (hd0,0)
hide (hd0,1)
rootnoverify (hd0,0)
makeactive
chainloader +1
boot
#! Стоит быть аккуратным с коммандой hide. Её действие не отменяется
перезагрузкой. Вы можете случайно скрыть загрузочный раздел Linux или
Extended раздел, в котором находится загрузочный раздел Linux. Тогда после
перезагрузки будет выдан аварийный вариант Grub'а.
Чтобы эффективно использовать команду lock, вам нужно использовать команду
password (пароль) в начале конфигурационного файла. У команды password
следующий синтаксис: password secret ( secret - это пароль). В любое время
вы сможете ввести пароль нажав p.
Для Windows "Family Entry (Вход для семьи)"
title Family Entry
unhide (hd0,1)
hide (hd0,0)
rootnoverify (hd0,1)
makeactive
chainloader +1
boot
#Любой сможет загрузить этот пункт, так как для него не требуется пароль.
Вот другая интересная уловка с использованием команды password. Чтобы скрыть
пункты в меню по умолчанию или конфигурационном файле, вы можете загрузить
персональный список при помощи следующей команды:
password secret
/boot/grub/secret-list.conf В этой команде, "secret" это пароль и
/boot/grub/secret-list.conf это файл соответвующий паролю. Перед тем как
сделать это, вам нужно указать корневой раздел или задать полный путь.
Например:
password secret (hd0,4)/boot/grub/secret-list.conf
Одна из важнейших команд - это команда "map", которую вы можете
использовать, когда у вас есть два жестких диска и операционная система,
такая как Windows, которая не хочет грузиться с второго жесткого диска.
Например: вы можете подменить hd0 на hd1 и hd1 на hd0. Другими словами, вы
можете виртуально поменять местами два жестких диска и загрузить выбранную
операционную систему. Ниже приведены необходимые команды:
Для загрузки FreeBSD:
title FreeBSD 4.0
root (hd0,4,a)
kernel /boot/loader
boot
#Здесь мы вызываем загрузчик FreeBSD. Вы можете видеть, что корневой раздел
(hd0,4,a), имеет три аргумента, так как FreeBSD позволяет виртуальное
разбиение одного раздела. Мы называем корневой раздел "a". Если FreeBSD
полностью занимает второй жесткий диск на вашей системе, это будет корневой
раздел (hd0,a). Вместо того чтобы вызывать ядро, мы вызывает загрузчик
FreeBSD, с которым удобнее общаться чем с ядром.
(ПРИМЕЧАНИЕ: Я рекомендую, перед тем как испытывать OpenBSD и GNU/Hurd,
потренироваться в осуществлении загрузки по цепочке)
Для загрузки с дискеты:
chainloader (fd0)+1
boot
#Вы завершили компиляцию, установку и конфигурирование GRUB. Но чем больше вы
будете узнавать о GRUB, тем больше вы будете осознавать, какой простой и
мощный способ контроля загрузки предоставляет GRUB.
Некоторые дополнительные команды GRUB:
default xx
где xx это пункт для загрузки по умолчанию.
timeout yy
где yy это время (в секундах) после которого будет загружен пункт по
умолчанию.
fallback zz
где zz это пункт, который будет загружен после таймаута, если первый пункт
не может быть загружен.
color
Эта команда используется для раскрашивания меню. Синтаксис таков: color
обычный текущий_выбор. Оба поля могут иметь два значения в формате
цвет_переднего_плана/цвет_фона. Например:
color green/black или light-gray/blue
Вы также можете использовать соответвующие номера.
ПОМНИТЕ: все значения начинаются с 0, поэтому 0 это первый вход.
В нескольких следующих выпусках я продолжу описание загрузки Linux.
Следующий номер нашей рассылки будет посвящён теме "Grub и Lilo.
Сравнение.".
Ведущий рассылки: Root. Обратный адрес: linux.conf***@m*****.ru
<mailto:linux.conf***@m*****.ru>
<http://subscribe.ru/> http://subscribe.ru/
E-mail: <mailto:ask@subscribe.ru> ask@subscribe.ru
<http://subscribe.ru/member/unsub?grp=comp.soft.linux.aboutlinux&email=amlap
shin@d*****.ru> Отписаться
<http://link.subscribe.ru/noad> Убрать рекламу
astrolac
-----Original MessageFrom: Alexandr [ mailto:tarabanovs***@k*****.ua
<mailto:tarabanovs***@k*****.ua> ]
Sent: Friday, August 22, 2003 10:38 PM
To: Лапшин Алексей Михайлович
Подскажите, пожалуйста, как конфигурировать Grub и как
записывать его в MBR. Если у кого нибудь есть русскоязычная
дока по этому, вышлите мне пожалуйста. У меня сейчас нет
инета, есть только мыло (.
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.discuss&email=
http://subscribe.ru/ mailto:ask@subscribe.ru
Господа!
Кто будет слать сюда всякую туфту будет немедленно отписан!
Модератор здесь только один и это я :о)
25 Август 2003 02:20, Лапшин Алексей Михайлович написал:
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: http://subscribe.ru/member/unsub?grp=comp.soft.linux.discuss&email=
http://subscribe.ru/ mailto:ask@subscribe.ru