Ключевые слова:grub, boot, init, disk, (найти похожие документы)
From: Дмитрий Прокопенко <diozan@inbox.ru.>
Date: Mon, 25 Sep 2006 14:31:37 +0000 (UTC)
Subject: Установка GRUB 0.97 на жеский диск.
Оригинал: http://www.diozan.chat.ru/txt/grub.txt
При установке нескольких операционных систем на один компьютер возникает
вопрос об обеспечении выбора их загрузки. В принципе все современные
операционные системы содержат такую возможность в своих загрузчиках,
которым можно поручить эту задачу. Но если, по каким либо причинам,
этого делать не хочется (FreeBSD boot manager, Windows ntldr и LILO или
выглядят слишком убого, или не очень-то гибки в настройке).
Для этого существует ряд программ, не имеющих отношения к какой-либо
конкретной операционной системе и выполняющие эту работу. GRUB является
одной из таких.
Итогом установки загрузчика GRUB является формирование симпатичной
системы выбора загружаемых операционных систем посредством меню и
обеспечение возможности легко редактировать его. В настоящее время GRUB
включен во многие Linux дистрибутивы, где он подменяет родной LILO.
При установке порта или паккаджа GRUB не производится никаких
манипуляций с загрузчиками компьтера. Просто ставится программа, которая
в дальнейшем позволит осуществлять такую манипуляцию.
Загрузочные образы, необходимые для установки GRUB устанавливаются в
каталог /usr/local/share/grub/i386-freebsd.
Возможности GRUB описаны в документации к программе очень подробно (см.
/usr/local/info/grub.info). Формат файла несколько не удобный, однако
можно из исходников извлечь тот же файл grub.texi и преобразовать в
привычный html формат при помощи утилиты texi2html.
Установку загручика я проводил при помощи специально создаваемой
загрузочной дискеты, или загрузочного компакт-диска, с которых и
производится перенос GRUB на жесткий диск.
Этапы работы.
1. Создаем загрузочную дискету или компакт-диск.
Форматируем дискету.
# fdformat /dev/fd0
Создаем файловую систему (fat12) на дискете. GRUB почему-то не хочет
распознавать ufs2 на дискете.
# newfs_msdos /dev/fd0
Монтируем дискету в каталог, например, /mnt.
# mount_msdosfs /dev/fd0 /mnt
Создаем каталоги /mnt/boot/grub. Копируем туда файлы загрузочных образов
из каталога /usr/local/share/grub/i386-freebsd.
Размонтируем дискету.
# umount /dev/fd0
Запускаем из консоли GRUB и вводим последовательно команды по
нижеприведенному топику.
# grub
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (fd0)
Filesystem type is fat, using whole disk
grub> setup (fd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/fat_stage1_5" exists... yes
Running "embed /boot/grub/fat_stage1_5 (fd0)"... failed (this is not fatal)
Running "embed /boot/grub/fat_stage1_5 (fd0)"... failed (this is not fatal)
Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded
Done.
grub> quit
После этого дискета готова к употреблению.
Создание загрузочного компакт-диска
Cоздаем каталог, например /usr/work/iso/boot/grub.
Копируем туда файлы загрузочных образов из каталога
/usr/local/share/grub/i386-freebsd.
Назначаем текущим каталог /usr/work.
# cd /usr/work
Создаем ISO9660 образ загрузочного компакт-диска командой
# mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o grub_cd.img iso
Полученный образ grub_cd.img записываем на CD-R(W) любой программой
записи (я пользуюсь k3b).
2. Установка на жесткий диск.
Данный пример иллюстритрует установку GRUB на мой жесткий диск. Разбивка
диска у меня выглядит следующим образом.
1-й раздел (ufs2) - FreeBSD-5.4, корневой каталог которой находится на
ad0s1a. Это основная для работы система, должна грузиться по умолчанию,
если в течении 30 секунд не сделан явный выбор.
2-й раздел (ntfs) - Windows XP
3-й раздел (fat32)- операционных систем не содержит, и в загрузке
участия не принимает.
4-й раздел (ufs2) - FreeBSD-6.0, корневой каталог которой находится на
ad0s4a. Тестируемая система.
Создаю каталог /boot/grub для хранения файла конфигурации menu.lst и
загрузочных образов.
Создю файл конфигурации menu.lst в любом текстовом редакторе. У меня он
выглядит так:
Файл menu.lst
# By default, boot the first entry.
color light-gray/blue black/light-gray
default 0
# Boot automatically after 30 secs.
timeout 30
# For booting FreeBSD-5.4
title FreeBSD-5.4
root (hd0,0,a)
kernel /boot/loader
boot
# For booting Windows
title Windows XP
root (hd0,1)
chainloader +1
boot
# For loading DOS if Windows NT is installed
# chainload /bootsect.dos
# For booting FreeBSD-6.0
title FreeBSD-6.0
root (hd0,3,a)
kernel /boot/loader
boot
# Reboot computer
title Reboot system
reboot
# Power off computer
title Shutdown system
halt
Копирую в /boot/grub образы из /usr/local/share/grub/i386-freebsd.
Загружаюсь с дискеты или компакт-диска.
Вводим команды в соответствии с нижеприведенным топиком:
grub> root (hd0,0,a)
Filesystem type is ufs2, portition type 0xa5
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/ufs2_stage1_5" exists... yes
Running "embed /boot/grub/ufs2stage1_5 (hd0)"... 15 sectors are embedded.
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0,a)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done
grub> reboot
Установка завершена. После перезагрузки получаю меню и возможность
выбирать нужную мне операционную систему.
HDD назвался ad12;
партиция с уcтановленным Win XP - as12s2;
партиция с уcтановленным FreeBSD - as12s2;
соответственно, в коде скрипта menu.lst вместо
root (hd0, 0, a) [для Freebsd] и
root (hd0, 1) [для Win XP]
пробовал написать:
root (hd1, 0, a) [для Freebsd] и
root (hd1, 1) [для Win XP]
и даже:
root (hd12, 0, a) [для Freebsd] и
root (hd12, 1) [для Win XP]
и даже:
root (hd2, 0, a) [для Freebsd] и
root (hd2, 1) [для Win XP]..
и чего я только не пробовал... не пашет...
пишет The file /boot/grub/stage1 not read correctly. подозреваю, что проблема всё-таки с неправильным файлом menu.lst
Фигня а не мануал, все команды пришлось подставлять самому, поскольку те что приведены выше не подходят, и файлы все лежат не там, и вообще статью надо было назвать не "установка grub на жесткий диск" а "установка grub для freebsd." Или уж если дерзнули писать мануал со столь обобщенным названием, так хотя бы постарались сделать пояснения с учетом пользователей linux.