HOWTO Мультизагрузка с использованием загрузчика Windows (NTLDR)
Материал из Gentoo Linux Wiki
- Вернуться в раздел руководства
Содержание |
[править] Введение
Одним из лучших путей изучения Linux является Gentoo, но, стоит заметить, не самый легкий. Вполне логично, если вы захотите оставить Microsoft Windows XP на тот случай, если всё пойдет не так, или просто потому, что считаете XP более удобной на данный момент. Мультизагрузка, в этом случае, будет являться идеальным решением, обеспечивающим вам спокойствие и возможность изучения Gentoo. Существует два основных подхода к мультизагрузке:
- Разместить XP и Gentoo на одном физическом жёстком диске
- Использовать раздельные жёсткие диски для XP и Gentoo, возможны различные комбинации SATA и IDE дисков
Что бы вы не выбрали, обеспечение сохранности XP и возможность вернуться к ней, в случае, если Linux окажется не для вас, остается весьма важным вопросом. К счастью существует большое количество информации на эту тему, но, к сожалению, она не носит систематический характер. Будем надеяться, что это руководство исправит ситуацию.
[править] NTLDR - Что это и с чем его едят?
Возможно, вы уже слышали о GRUB, LILO и NTLDR. Их объединяет то, что все они являются загрузчиками; т.е. они инициализируют вашу систему и помещают вашу операционную систему в память для дальнейшего использования. NTLDR (или NT Loader) является загрузчиком Microsoft для операционных систем семейства NT, к которому относятся 2000 и XP. Он располагает тремя ключевыми файлами:
- boot.ini – содержит настройки загрузочного меню
- NTDETECT.com – определяет оборудование вашей системы
- NTLDR – сам загрузчик
Загрузчики обычно располагаются в главной загрузочной записи (Master Boot Record - MBR) жёсткого диска. MBR является загрузочным сектором диска размером 512 байт и содержит последовательность команд, запускающих операционную систему. По умолчанию, XP использует NTLDR, поэтому имеет смысл также использовать его и для загрузки других операционных систем. Не только потому, что MBR перепишет GRUB или LILO и могут возникнуть проблемы с потерей разделов и загрузкой операционной системы, а скорее для возможности избавиться от Gentoo (если уж на то ваша воля) с минимальной головной болью. Ну что ж, приступим. Я предполагаю, что на этом этапе вы освоили руководство Gentoo Handbook до раздела “Настройка начального загрузчика”.
[править] GRLDR - Простой подход
grldr можно найти в дистрибутиве grub4dos, и он является изменённой версией обычного grub. grldr может использоваться в ntldr, что спасёт нас от необходимости возиться с dd, загрузочными секторами и т.д. grldr поддерживает как fat, так и ntfs, и использует обычный, в стиле grub, 'menu.lst'. Это весьма удобно, если вы хотите загружать ядро linux из раздела Windows, но может быть полезным и в других случаях. Например, если вы хотите установить Linux на машину с Windows, но не имеете usb/floppy/cdrom. Для использования grldr, поместите grldr и menu.lst в корень вашего windows раздела. Затем добавьте: C:\grldr="Start Linux Loader (GRUB)" в boot.ini. Вот и всё. Не забываем изменить menu.lst. Обратитесь к документации grub (или Gentoo Handbook) для уточнения синтаксиса menu.lst. (menu.lst по сути то же, что и grub.conf, но grldr обращается именно к menu.lst.)
Стоит также заметить, что всё проделанное выше, не освобождает вас от установки grub, во время инсталяции gentoo (не забудьте выбрать опцию do not install to MBR. прим.: имеется в виду графическая установка gentoo). Это установит grub в /boot/grub/, и оттуда вы сможете использовать grub.conf для добавления правильных записей в ваш C:\menu.lst.
[править] Установка на один диск
План действий: XP и Gentoo устанавливаются на один жёсткий диск; XP в первом разделе, а Gentoo в последующих.
(Внимание - немотря на то, что сказано в handbook'е, при создании разделов, вы не должны делать раздел /boot загрузочным ("bootable"). Вы можете сделать только один раздел загрузочным - т.е. это должен быть раздел Windows. Если сделаете более чем один раздел загрузочным, ваша таблица разделов станет неработоспособной и вы не сможете запустить систему. Если это всё же случиться, вы всегда сможете загрузиться с livecd и, используя fdisk, решить эту проблему).
В рассматриваемой ситуации я сосредоточился на GRUB, но ничего не мешает использовать, как альтернативу, LILO; обратите внимание на раздел об установке на разные диски и посмотрите, как настраивать LILO, с поправкой на то, что сейчас у нас случай установки на один диск.
[править] Настройка GRUB
Для начала установите grub, а затем создайте файл настроек, используя редактор, в моём случае я использую nano:
# emerge grub # nano -w /boot/grub/grub.conf
Используя Gentoo Handbook или следующий пример, ваш файл настроек должен выглядеть примерно так:
| Файл: /boot/grub/grub.conf |
default 0 # Операционная система, загружаемая по-умолчанию: первая запись timeout 5 # Время ожидания, перед загрузкой по-умолчанию: 5 секунд title=Gentoo Linux # Название ОС: Gentoo Linux root (hd0,1) # Расположение образа ядра: второй раздел на первом диске # Говорим GRUB, где располагается образ ядра до смены корня на ваш корневой раздел: # третий раздел (теперь используется нотация Linux) kernel /boot/kernel-2.6.16-gentoo-r5 root=/dev/hda3 |
Не забывайте, что в GRUB первый раздел вашего жёсткого диска представляется как hd0,0, а не hd0,1. GRUB обращается к дискам SATA в той же нотации, т.е. hd0,1. Если вы не уверены в каком разделе располагаются boot и root, используйте “fdisk –l” для для вывода таблицы разделов, и, чтобы до конца развеять сомнения, “df –h”, для отображения ваших разделов и точек их монтирования.
[править] Установка GRUB
Если вы еще этого не сделали, создайте /etc/mtab, который содержит все примонтированные файловые системы.
# grep -v rootfs /proc/mounts > /etc/mtab
Теперь нужно установить GRUB в загрузочный сектор раздела /boot, а не в MBR вашего диска, для сохранения MBR. Загрузочный сектор раздела похож на MBR тем, что в нём также 512 байт, но загрузочные сектора разделов могут загружаться только с помощью загрузчика, расположенного в MBR. Для установки GRUB выполните следующие команды:
# grub grub> root (hd0,1) (Определяем расположение вашего раздела /boot) grub> setup (hd0,1) (Установка GRUB в загрузочный сектор /boot) grub> quit (Выход из GRUB в командную оболочку)
не забывайте следить за нумерацией разделов.
[править] Настройка Windows
Для начала, убедитесь в возможности передачи небольшого файла из Gentoo в Windows, например, с помощью дискеты (с файловой системой FAT) или раздела, читаемого из Windows и записываемого из Gentoo. Теперь сделаем копию загрузочного сектора раздела boot, содержащего GRUB:
# mount /dev/fd0 /mnt/floppy (монтируем вашу дискету, если требуется) # dd if=/dev/hda2 of=grub.mbr bs=512 count=1 (создаём копию загрузочного сектора раздела boot) # cp grub.mbr /mnt/floppy (копируем grub.mbr на вашу дискету) # umount /dev/fd0 (отключаем дискету, если требуется)
Теперь перезагружаемся в Windows и копируем файл grub.mbr в c:\, само собой, если там располагается Windows. Переносим свой взгляд на boot.ini...мы должны добавить запись для загрузки Gentoo, но для начала надо сделать этот файл читаемым, записываемым и видимым. Из командной строки (пуск > выполнить, “cmd”) введите:
attrib -s -h -r c:\boot.ini
Добавляем следущую строку в конец: c:\grub.mbr="Gentoo Linux". Должно выглядеть как в этом примере:
| Файл: c:\boot.ini |
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect C:\grub.mbr="Gentoo Linux" |
Последняя добавленная строчка обращается к файлу grub.mbr, который мы получили ранее. Сохраняем файл. Перезагружаем компьютер. Если всё прошло удачно, то вы увидите список, вторым элементом которого будет “Gentoo Linux”, при выборе которого будет загружено приветствие GRUB.
[править] Установка на разные диски
План действий: XP и Gentoo устанавливаются на раздельные жёсткие диски; XP располагается в первом разделе вашего первого жёсткого диска, а Gentoo в разделах второго диска. Этот способ размещения наиболее выгоден при использовании нескольких операционных систем на одном компьютере, поскольку каждый из дисков будет содержать самостоятельно загружаемую ОС, что повысит "живучесть" вашей машины. К тому же, если вы выделите по 30Гб (в зависимости от ваших потребностей) разделу FAT32 на каждом диске, то одна ОС может использовать раздел другой ОС в качестве диска для резервных копий, что сведёт вероятность выхода из строя систем к нулю).
Но всё же существуют некоторые, часто возникающие, проблемы и при загрузке с раздельных дисков. К примеру, Windows располагается на Secondary диске. LILO может исправить ситуацию и заставить думать Windows, что она располагается на IDE Primary, с помощью перехвата запросов ввода/вывода диска к BIOS. Но это может повредить работе некоторых приложений. Так что запомните - Windows не любит загружаться с Secondary диска.
К счастью, это руководство рассматривает загрузку Gentoo с Secondary диска, оставляя XP на Primary диске. Я буду использовать LILO, поскольку он обладает лучшей поддержкой разделов Windows. Вы можете попробовать использовать GRUB, но, к сожалению, мне не удалось его заставить работать должным образом.
[править] Настройка LILO
Для начала сделаем раздел boot активным, с помощью этих команд:
# fdisk /dev/hdb # Command (m for help): <введите ‘a’> # Partition number (1-4): <введите номер раздела /boot> # Command (m for help): <введите ‘p’ и убедитесь, что раздел /boot отмечен звёздочкой. # Command (m for help): w (сохранение)
Если вы не уверены в каком разделе располагается boot, используйте “fdisk –l” для вывода таблицы разделов, и, чтобы до конца развеять сомнения, “df –h”, для отображения ваших разделов и точек их монтирования. Обратите внимание на расположение root, поскольку в дальнейшем оно нам понадобится.
Далее, соберите lilo и создайте файл настроек с помощью редактора:
# emerge lilo # nano -w /etc/lilo.conf
Используя Gentoo Handbook или следующий пример, у вас должно получится следующее:
| Файл: /etc/lilo.conf |
# Global LILO settings boot=/dev/hdb1 # Install LILO in the /boot partition prompt # Give the user the chance to select another section timeout=50 # Wait 5 (five) seconds before booting the default section default=Gentoo Linux # When the timeout has passed, boot the "Gentoo Linux" section # Kernel specific LILO settings image=/boot/kernel-2.6.14-gentoo-r5 # Location of your kernel image label= Gentoo Linux # Name of this section read-only # Start with a read-only root. Do not alter! root=/dev/hdb3 # Location of the root filesystem |
Не забудьте изменить расположение root, boot и image, опираясь на ваши настройки. Обращаться к SATA дискам следует через sda (для первого SATA диска).
Важное замечание: в файле настроек, упоминаемом выше, устанавливается место записи LILO. Нам необходимо установить LILO в загрузочный сектор раздела boot (/dev/hdb1), а не в MBR вашего диска (/dev/hdb). Загрузочный сектор раздела похож на MBR тем, что в нём также 512 байт, но загрузочные сектора разделов могут загружаться только с помощью загрузчика, расположенного в MBR. Так что установите “boot=/dev/hdb1”, опираясь на расположение раздела boot.
Если раздел boot является частью уже используемой Linux-системы, не беспокойтесь о сохранности ваших данных. Загрузочный сектор любого раздела не предназначен для хранения обычных файлов. Он является обязательным и зарезервированным местом на любом разделе, вне зависимости от его назначения.
[править] Установка LILO
LILO может сделать резервную копию существующего загрузочного сектора, перед его записью. Из Раздела 3 руководства LILO (версия 21): "При обновлении загрузочного сектора, его предыдущая версия копируется в /boot/boot.number, где number является шестандцатиричным номером устройства. Если файл уже существует, резервная копия не делается." Так что следует просмотреть каталог /boot и переименовать соответствующие файлы. Т.е. при возникновении каких-либо ошибок, просто введите команду “lilo -u device-name”, которая восстановит прежний загрузочный сектор. Установите LILO:
# /sbin/lilo
Заметим, что LILO пишет в загрузочное устройство, указанное в файле настроек (или в опции -b командной строки). А другую критическую информацию LILO получает из текущей точки монтирования root. Т.е. при восстановлении жесткого диска с загрузочной дискеты LILO (или иного загрузочного носителя - например liveCD) вам придется для начала выполнить chroot на ваш жёсткий диск. Запомните, что в и из должны быть одинаковыми при установке.
[править] Настройка Windows
Для начала, убедитесь в возможности передачи небольшого файла из Gentoo в Windows, например, с помощью дискеты (с файловой системой FAT) или раздела, читаемого из Windows и записываемого из Gentoo. Я подразумеваю, что Gentoo располагается на hdb, так что не забывайте, при необходимости, вносить соответствующие изменения.
Хоть LILO сделает всё за нас (смотрите выдержку из руководства, посвящённую резервному копированию загрузочного сектора), мы должны быть абсолютно уверены в создании резервной копии MBR диска, на котором установлена Gentoo:
# dd if=/dev/hdb of=mbr.save bs=512 count=1
перед установкой LILO в MBR диска Gentoo (hdb) используйте специальную команду LILO:
# lilo -M /dev/hdb
Снимаем копию новой MBR:
# dd if=/dev/hdb of=lilo.mbr bs=512 count=1
и восстанавливаем прежнюю mbr:
# dd if=mbr.save of=/dev/hdb bs=512
Следующим шагом будет перенос lilo.mbr на ваш диск Windows, в нашем случае, с использованием дискеты:
# mount /dev/fd0 /mnt/floppy (монтируем вашу дискету, если требуется) # cp lilo.mbr /mnt/floppy (копируем lilo.mbr на вашу дискету) # umount /dev/fd0 (отключаем дискету, если требуется)
Теперь перезагружаемся в Windows и копируем lilo.mbr в c:\, само собой, если там располагается Windows. Переносим свой взгляд на boot.ini...мы должны добавить запись для загрузки Gentoo, но для начала надо сделать этот файл читаемым, записываемым и видимым. Из командной строки (пуск > выполнить, “cmd”) введите:
attrib -s -h -r c:\boot.ini
Добавляем в этот файл следующую строку: c:\lilo.mbr="Gentoo Linux"
Вот как это должно выглядеть:
| Файл: c:\boot.ini |
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect C:\lilo.mbr="Gentoo Linux" |
Последняя добавленная строчка обращается к файлу lilo.mbr, который мы получили ранее. Сохраните файл и верните прежние аттрибуты boot.ini:
attrib +s +h +r c:\boot.ini
в командной строке. Перезагружаем компьютер. Если всё прошло удачно, то вы увидите список, вторым элементом которого будет “Gentoo Linux”, при выборе которого будет загружено приветствие LILO.
[править] Возвращение в Windows
Если вы решили вернуть всё как было, то сделать это очень просто. Нужно просто отредактировать boot.ini и удалить разделы Linux. Вы можете удалить все разделы Linux с помощью linux fdisk или оснастки Disk Management из "Control Panel -> Administration -> Computer Management -> Disk Management". Если вы выбрали linux fdisk, то можете использовать Gentoo LiveCD с которого устанавливали Gentoo, или с любого другого LiveCD, содержащего Linux.
# fdisk <device e.g. /dev/hdb> # Command (m for help): <enter ‘d’> # Partition number (1-4): <enter partition number> # Command (m for help): w (Save the new schema)
Повторите шаги 2 и 3 пока не удалите все разделы Linux. Само собой это уничтожит все данные на этих разделах.
Теперь удалим строку из файла boot.ini, расположенного на вашем диске c:\:
c:\grub.mbr="Gentoo Linux" или c:\lilo.mbr="Gentoo Linux"
в зависимости от ваших изменений. Вы также можете удалить файл *.mbr.
[править] Решение проблем с загрузочным сектором и MBR
При работе с загрузочным сектором и MBR могут произойти ошибки, поэтому сопровождайте все свои действия резервным копированием. Если ваш раздел Windows перестал загружаться, вы можете восстановить MBR и/или загрузочный сектор раздела с помощью установочного диска XP. Просто загрузитесь с установочного диска, нажмите 'R' для восстановления текущей установки, войдите в Консоль Восстановления и наберите:
fixmbr <device> and/or fixboot <drive> (это сотрёт загрузочный сектор)
В зависимости от тяжести ошибок вы можете потерять данные на вашем диске.
Но данные можно всегда попытаться восстановить с помощью программы Active Partition Recovery[1], по крайней мере, меня она всегда спасала.
[править] Определения
- NTLDR – NT Loader
- GRUB – GNU GRUB
- LILO – LInux LOader
- MBR – Master Boot Record
- Boot sector
- fixmbr
- fixboot
[править] Смотрите также
[править] Внешние ссылки
- Домашняя страница GNU GRUB [2]
- Домашняя страница LILO [3]
- Подробное описание файла boot.ini и его различных конфигураций [4]
- Подробное руководство по использованию GRUB в режиме мультизагрузки Linux и Windows [5]
- Руководство по мультизагрузке Linux и Windows с одного диска [6]
- Использование GRUB для загрузки Linux с отдельного диска [7]
- Использование LILO для загрузки Linux с отдельного диска [8]
- Восстановление MBR [9]
