- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF126:Grub
Материал из Linuxformat.
- Grub Осваиваем Великий Универсальный Загрузчик с мультизагрузкой
Содержание |
Grub: Вникаем в загрузку
- Карл Флетчер вводит курс мультизагрузки в верное русло.
Множеству погибших систем можно вернуть жизнь при наличии минимальных знаний о Grub – загрузчике Linux; но трудности его освоения отпугивают новичков. Испортив файл настройки графического приложения, вы всегда откатитесь назад и исправите его, а вот поломка Grub оставит вас с незагружающейся машиной. Однако ответ найдется: это виртуализация. Воспользуемся магией VirtualBox, чтобы продвигаться по закоулкам Grub мелкими шажками, без риска повредить вашу систему, и по мере возможности постараемся обойтись без жутких письмен в командной строке. Займемся мы мультизагрузкой Vista/Windows 7 вместе с Linux, но принципы работы будут применимы независимо от используемой вами ОС.
Благодаря использованию VirtualBox можно делать сколько угодно ошибок, затем все сносить и начинать заново, если что-то пойдет не так. Как вы понимаете, применение метода проб и ошибок значительно более приятно, если вы уверены, что даже серьезные просчеты не будут иметь далеко идущих последствий. Все, что мы здесь проделаем, будет выполняться в виртуальной машине на хосте Linux, но применимо и в вашей реальной Linux-машине. (Данный урок предполагает умение работать с VirtualBox.)
На нашем уроке мы также разберем самую популярную версию Grub, известную как Grub legacy. Некоторые новые дистрибутивы – к примеру, Ubuntu 9.10 – уже идут со следующей версией Grub, именуемой Grub 2; его мы столь же детально осветим в следующем выпуске.
Виртуальные разделы
Создайте в VirtualBox фиксированный диск как минимум на 20 ГБ. Чтобы двигаться дальше запишите ISO-образ PartedMagic на CD-R (с http://partedmagic.com), выберите наш диск и создайте два раздела. Первый – hda1 – должен быть разделом FAT32 объемом 660 МБ, а второй – занимать оставшееся место и иметь тип NTFS. Подготовив почву для установки Windows, вы можете заметить отсутствие под рукой подходящего диска. Ничего страшного – создайте разделы и оставьте их пустыми, или попрактикуйтесь с мультизагрузкой двух дистрибутивов Linux. Мы пытаемся эмулировать реальное окружение, и нельзя не признать, что компьютеры с предустановленной Windows продаются чаще, чем без нее; так зачем бы ее удалять? На этом уроке установкой Windows я воссоздаю вполне типовую конфигурацию, и вы можете делать так же, если захотите. В нашем случае я использовал XP, но Vista или Windows 7 тоже подойдут. В зависимости от раздела, куда установлена Windows, вы отметите только одно маленькое отличие – флаг boot. Помните о нем: это важно.
Обратим также внимание на то, как Linux называет разделы. В нашем случае он обозначит их hda плюс номер, но иногда это бывает sda. Чтобы не отклоняться от темы, просто скажем, чторазделы разбивают ваш жесткий диск на части, как если бы было множество маленьких жестких дисков вместо одного.
На экранном снимке вверху видно, что Recovery D: расположен перед XP Local Disk C: в таблице разделов, хотя и обозначен буквой, которая стоит в алфавите дальше. Если вы пользователь Windows, перестаньте думать о ваших разделах «виндовато» – использование букв дисков очень неинформативно и может вызвать проблемы в процессе установки Linux, который нумерует разделы числами и по порядку: sda1, sda2 или hda1, hda2.
Итак, наши цели ясны: мы хотим установить дистрибутив Linux и использовать Grub для управления загрузкой и Linux, и Windows. Ради доступа к богатым возможностям настройки, я выбрал OpenSUSE, которая высказывает свои соображения по инсталляции в виде, представленном на рисунке.
Процесс установки
Используйте в VirtualBox ISO-образы: это снимает необходимость прожига CD/DVD и увеличивает производительность.
Заметьте, что в позиции Booting приглашения к установке, Grub помещен в sda3 (расширенный раздел). Благодаря этому загрузчик Windows остается неизменным. Однако вы сразу же и заметите, что флаг загрузки, на который мы обращали внимание ранее, переместился с sda2 на sda3. Иногда инсталлятор с этим не вполне справляется. Но в ходе тестовых испытаний при написании этой статьи установщик правильнo поместил Grub в sda3, а также успешно включил опцию Windows в загрузочном меню. (Большинство дистрибутивов делают то же самое, хотя можно записать Grub в Master Boot Record – первую часть жесткого диска, где хранится информация о загрузке. Тогда флаг загрузки должен быть помещен в корневой раздел OpenSUSE, sda6). На рисунке показан порядок разделов после окончания установки дистрибутива. Отметим что флаг загрузки теперь установлен на hda3, а весь объем hda3 и содержащихся в нем логических разделов получен урезанием раздела hda2. Да, расширенный раздел – это, по сути, всего лишь контейнер для логических разделов, которыми являются hda5 и hda6. Расширенные разделы помогают обойти исторический лимит в четыре основных раздела. Не лишним будет напомнить, что перед любой установкой Linux вы должны сделать резервную копию данных и выполнить дефрагментацию Windows.
Как уже говорилось, в этом примере Grub расположен на hda3 и установщик переключил флаг boot с hda2 на hda3. Поэтому при загрузке компьютер смотрит на hda3, и затем появляется меню Grub. Теперь, если вы загрузите Parted Magic и переведете флаг boot назад на hda2, при перезагрузке машина будет запускать Windows без меню Grub. Linux, конечно, никуда не денется: вы увидите его разделы в Управлении компьютером Windows. Однако возврат флага boot снова на hda3 не восстановит Grub; этого не произойдет и после переустановки Windows. Чтобы вернуть Grub, нужно выполнить его восстановление вручную – давайте попробуем сделать это сейчас.
Восстановим Grub
Parted Magic показывает разделы как hda, но OpenSUSE называет их sda.
Дистрибутивный диск OpenSUSE можно применить для восстановления Grub через интерфейс инсталлятора. Я решил показать вам другой подход, с помощью командной строки. Если у вас есть LiveCD OpenSUSE (а он у вас есть – и это LXFDVD!), загрузитесь с него, затем откройте окно консоли и введите su – вы попадете в командную строку с правами root и будете готовы к действиям.
Попав в командную строку root, ищите раздел, содержащий загрузчик OpenSUSE. Затем переустановите Grub со ссылкой на этот раздел. Сперва найдем установку OpenSUSE:
grub
Компьютер вернет приглашение grub>, показав вам, что вы находитесь в командной строке Grub. Теперь введите
find /boot/grub/menu.lst
– и компьютер должен вернуть (hd0,4).
Здесь (hd0,4) – это указатель Grub на мою установку SUSE. При следовании нашему уроку ваш указатель должен быть похожим, но в реальной ситуации может отличаться, поэтому при необходимости замените его на ваше правильное значение. Теперь, имея указатель, продолжите так:
root (hd0,4) Filesystem type is ext2fs, partition type 0x83 setup (hd0) Checking if /boot/grub/stage1 exists ... yes:
Ваш компьютер должен в итоге вернуть вот что:
Succeeded.......Done quit reboot
Компьютер должен перегрузиться и предстать пред вами с загрузочным меню Grub, из которого вы можете попасть в OpenSUSE. Приведенные здесь команды будут такими же и в других дистрибутивах Linux.
О Grub и нескольких дисках
Это наиболее вероятный сценарий для настольных ПК, где не редкость наличие двух внутренних жестких дисков. Вообщето более идеального стечения обстоятельств и быть не может, поскольку это позволяет выделить основную загрузочную запись (MBR) одного из дисков для Grub. Если у вас два жестких диска и вы намерены использовать Windows, отведите под Windows один из них. Windows установит свой загрузчик в MBR этого диска. Если у вас Windows-машина, в которую вы добавляете новый жесткий диск, выгоднее будет оставить исходный диск в покое, а все новое установить на второй диск. Ключ к этому – в вашем BIOS. Вы должны настроить его так, чтобы новый диск был первым при загрузке.
В случае установки на один жесткий диск возможна загрузка Vista или Windows 7 через Grub. Но сервисные пакеты Windows Vista и Windows7 могут не установиться (как произошло при моих экспериментах). Вы можете обойти эту проблему, временно возвратив загрузчик Windows и флаг boot перед обновлением Windows, а затем восстановив Grub. Если Linux и Windows 7 установлены на разных дисках, лучшим решением будет оставить MBR на жестком диске Windows нетронутым и установить Grub на другой жесткий диск, с записью ‘chainloader’ в Grub, передающей управление загрузчику Windows.
Рекомендуем выполнять установку вручную, не полагаясь на параметры по умолчанию, и самостоятельно разбить новый диск, установить точки монтирования для диска с Windows и разместить Grub в MBR нового жесткого диска. Возможно, что установщик Linux добавит неверный код ссылки на загрузчик Windows в меню Grub. Паниковать тут нечего – вы все еще можете загрузиться в Windows, если надо, временно изменив настройки BIOS и снова установив жесткий диск Windows первым, как загрузочный. Но мы пойдем другим путем – мы хотим использовать Grub, и поэтому должны поправить файл menu.lst, расположенный обычно в /boot/grub/menu.lst. Если у вас два жестких диска, menu.lst может выглядеть примерно как здесь, где Win XP расположена на первом разделе второго жесткого диска. Файл включает map, функцию отображения Grub, которая исправляет ситуацию для
boot.ini 2000/XP. title WIN XP map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,0) chainloader +1 или title WIN XP map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,0) chainloader (hd1,0)+1
Объясним причину использования здесь функции map. Фрагмент rdisk(0)partition(1) означает раздел 1 диска 0. Но сделанные изменения привели к тому, что раздел стал 1 на диске 1. Поэтому мы используем функцию map для трюка с ОС, чтобы видеть физический диск 1 как фиктивный диск 0 и только при загрузке XP.
Теперь фишка вот в чем. Vista использует другой загрузчик, не содержащий фрагмент rdisk(x)partiton(y), и ей не нужна функция map. Она ее игнорирует, загружается и прекрасно работает без нее, потому что изменение расположения не влияет на новый загрузчик в Vista.
Если вы хотите гарантированно узнать, где загрузочный раздел, поищите тот, на котором содержатся файлы загрузчика: в Windows 2000/XP это ntldr, ntdetect.com и boot.ini. В Vista и Windows 7 видимый файл загрузчика – bootmgr и директория boot. Windows Vista и Windows 7 не нуждаются в функции map.
Это означает, что Vista будет на первом жестком диске (HD1), и в первом разделе будет такой код:
title Vista rootnoverify (hd0,0) chainloader (hd0,0)+1
А для Vista на втором жестком диске и первом разделе – такой:
title Vista rootnoverify (hd1,0) chainloader +1
Более подробную информацию вы найдете, набрав info grub или man grub в терминале или посетив http://www.gnu.org/software/grub/manual/grub.html. Не помешает также заглянуть на сайт http://www.supergrubdisk.org.
Взгляд на установку Windows 7
Наконец, пройдемся по установке Windows 7. Снова, как и ранее, можете скопировать этот пример в VirtualBox.
Загрузившись с LiveCD OpenSUSE KDE 4 и запустив инсталлятор, вы увидите предложение урезать раздел Windows и создать расширенный раздел и три логических: подкачки, корневой и домашний.
В части Booting приглашения к установке инсталлятор предложит установить Grub в расширенный раздел sda2 и включит Windows-строку в меню. Позже мы увидим, что в результате установки флаг boot переключен на sda2. Так как Windows-раздел был урезан, запустится проверка CHKDSK. Это займет около 20 минут, в зависимости от размера раздела и доступного свободного места. Grub поместит в /boot/grub/menu.lst следующий код:
title Windows rootnoverify (hd0,0) chainloader +1
Зачем все эти Windows?
Вы можете подумать, что мы слишком много носимся с Windows, но это голый прагматизм: большая часть вопросов, встречавшихся мне на форумах OpenSUSE, касалась мультизагрузки и проблем с ней при использовании Linux и Windows. Это обычно основной сценарий проблем Grub, потому мы и уделили ему столько внимания. Очень часто начинающие пользователи в этом пункте попадают в беду. Им иногда кажется, что все потеряно и их машина окончательно погибла! Но такое, хоть и бывает, обычно очень маловероятно. На этих четырех страницах мы управляли Grub и чинили его, разбивали жесткий диск, устанавливали ОС, переключали флаги загрузки и близко познакомились с требованиями загрузки Windows. Конечно, не забывайте, что все это было в VirtualBox.
Наконец, экстремалы в дополнение могут попробовать устроить себе «встряску». Если у вас установлены и работают Windows и Linux, как на данном уроке, загрузите Parted Magic, смотрируйте раздел Windows и удалите файлы загрузчика (ntldr и bootmgr). Затем попытайтесь загрузить Windows из Grub – естественно, будет сбой. Теперь попрактикуйтесь в исправлении загрузки Windows, а когда закончите – переустановите Grub.
Наводим порядок
Закончив, можете освободить 20 ГБ простым щелчком на Удалить в VirtualBox. Красота тестирования ваших задумок в VirtualBox в том, что вы можете превзойти свой обычный уровень компетенции. Это великолепный способ повышения квалификации. Можно было бы, наверное, сравнить это с авиатренажером – он очень реалистичен, но если вы войдете в штопор, то это не смертельно. Свершив такие подвиги, можете заслуженно похлопать себя по спинке!