GRUB on fake BIOS (onboard) RAID

Материал из AlexNook
Перейти к навигацииПерейти к поиску

Многие материнские платы уже давным давно оснащаются контроллерами raid, либо встроенными в южный мост (например, ICHxR), либо находящиеся на отдельных микросхемах материнской платы. Потому создание раида посредством контроллеров материнской платы стало очень простым и распространённым делом (лично я уже более 3х лет сижу на raid0).

Note: Замечу, что раид, собранный с использованием отдельного оборудования, например платы PCI/PCI-E, называется hardware raid, раид, собранный посредством программ операционной системы, например, в linux это можно легко организовать, называется software raid, а раид, собранный на контроллере, встроенном в мать, как правило называется ложным раидом или fake raid.

Данная статья посвящена тому, как установить грамотно grub на примере RAID0. При этом на компьютере уже стоят операционные системы от M$, linux.

Введение

Тут я опишу входные параметры системы, на которой и производилась установка grub.

  • Система собрана на основе intel ICHxR, но думаю это не играет важной роли
  • Имеется 2 диска в raid0, которые разбиты на несколько разделов (около 10)
  • На первых трёх разделах стоят winXP1, winXP2, Win7
  • далее на одном из последующих разделов установлена sabayon 4.2 linux (gentoo based)
  • остальные разделы выделены под файлы подкачки, swap, хранение данных и т.д.

Замечания по поводу установки Win

Важно отметить, что для поддержки раида в дистрибутивы winxp были вшиты драйверы от intel с использованием nlite. Так же сперва на первые два раздела по очереди, начиная с первого (диск c:\ в нумерации винды) были установлены winxXP, затем на третий раздел была установлена win7. При этом никаких сложностей с загрузкой не должно возникнуть. winXP подхватывает себе подобных и прописывает в ntloader, а win7 имеет тот же механизм загрузки, что и vista, потому она прописала себя в mbr, указав там ссылку на свой загрузчик, который уже в состоянии загрузить как win7, так и имеет ссылку на ntloader, который уже в свою очередь позволяет выбирать между разными версиями winxp.

Note: чтобы не путать две одинаковые winXP, следует отредактировать c:\boot.ini, где дать названия ОС

Замечания по поводу установки Sabayon

После того, как мы убедились, что винда пашет и грузятся все её версии, устанавливаем Sabayon linux. Вставляем live dvd с ОС, грузимся с н его и запускаем графическую установку. Настраиваем всё как нам требуется и подходим к установке GRUB.

Note: Не забываем указать ручную разбивку харда и выбор раздела установки руками, не соглашаясь с предложением ОС автоматом это сделать за нас.

В меню настройки установки GRUB можно настроить названия загружаемых ОС, указать, какая будет грузится по дефлоту, а так же настроить куда установитсмя груб. В принципе эти настройки все не имеют под собой никакой силы. После их проведения нам полезен будет тока шаблон, сгенерированного установщиком grub.conf, который мы позже поправим под себя.

Note: Даже при указании установить груб в MBR нашего раидного диска, реально туда он не попадёт, так что не волнуемся по этому поводу. Туда мы его запихнём позже.

Установка и настройка GRUB

Грузимся в live CD Sabayon. Выбираем Start Sabayon 4.2 и нажимая, F5 вводим в самый конец параметров загрузки ОС (до символов --) "dodmraid ". Должно получится примерно следующее:

param1 param2 dodmraid --

Это позволяет нам загрузиться с диска в ОС Sabayon с поддержкой RAID. То есть теперь мы сможем видеть наш том RAID в папке /dev/mapper/ Пока грузится ОС насладжаемся музыкой, которая играет в этот момент в наших наушниках. (Слушайте я такого даже не ожидал, музыка при загрузки ОС с LiveDVD - это мощно сделали парни!)

Предварительная подготовка

Перед тем, как приступать к работе с нашим загрузчиком, нам надо сменить "корень" (среду) с liveDVD на ту, что мы установили. Для этого выполняем код:

mkdir /mnt/root mount /dev/mapper/isw_ciieicii_My_RAID07 /mnt/root chown root:root /mnt/root chroot /mnt/root
Note: Важно помнить, что выполнять команды надо от root, поэтому предварительно надо залогинится рутом, дл чего ввести в консоли su а затем пароль root
Warning: У каждого том, куда установлена ОС sabayon может называться по разному!! Здесь и далее обратите внимание на то, что /dev/mapper/isw_ciieicii_My_RAID07 надо заменить на ВАШ раздел с установленной ОС sabayon

Так же в дальнейшем нам понадобится информация о геометрии нашего диска. Для этого вводим в консоль:

cfdisk /dev/mapper/isw_ciieicii_My_RAID0

При этом мы должны получить вывод типа этого:

File: вывод команды cfdisk /dev/mapper/isw_ciieicii_My_RAID0

                                                           cfdisk (util-linux-ng 2.14.1)

                                              Дисковый накопитель: /dev/mapper/isw_ciieicii_My_RAID0
                                                                  Размер: 640145424384 байт, 640.1 ГБ
                                             Головок: 255   Секторов на дорожку: 63   Цилиндров: 77826

Имя                        Флаги         Тип раздела    Тип ФС                [Метка]       Размер (МБ)
-------------------------------------------------------------------------------------------------------
isw_ciieicii_My_RAID0p1    Загрузочный    Основной      NTFS                    [^C]   26213,97
isw_ciieicii_My_RAID0p5                   Логический    NTFS                    [^A]   15726,74
isw_ciieicii_My_RAID0p6                   Логический    NTFS                    [^C]   26213,97
isw_ciieicii_My_RAID0p7                   Логический    Linux ReiserFS                 26213,97
isw_ciieicii_My_RAID0p8                   Логический    NTFS                           2623,87
isw_ciieicii_My_RAID0p9                   Логический    NTFS                           2623,87
isw_ciieicii_My_RAID0p10                  Логический    NTFS                           2623,87
isw_ciieicii_My_RAID0p11                  Логический    Linux своп / Solaris           526,42
isw_ciieicii_My_RAID0p12                  Логический    NTFS                    [^E]   44038,15
isw_ciieicii_My_RAID0p13                  Логический     NTFS                   [9]    493327,62
                           Осн/Лог               Свободное пространство                8,23

Нам из всех этих данных надо получить Головок: 255 Секторов на дорожку: 63 Цилиндров: 77826 (или на английском Heaads: 255 Sectors: 63 Cylinders: 77826).

Запоминаем эти данные в формате: C/H/S -> 77826/255/63

Запись grub в mbr

Для этого запускаем

grub --device-map=/dev/null

мы попали в командную строку grub. далее указываем грубу на наш диск, с которым мы работаем.

device (hd0) /dev/mapper/isw_ciieicii_My_RAID0
Warning: Тут указывается именно весь диск целиком, а не его раздел. То есть как пример, sda а не sda1, что будет уже разделом диска sda.

Теперь необходимо указать грубу геометрию нашего диска.

geometry (hd0) C H S

где вместо C H S вводим наши данные, полученные выше. Теперь груб знает что за диск мы ему указали, его геометрию и сможет верно прописаться в его mbr.

Теперь укажем корень для груба:

root (hd0,

далее не нажимая enter жмём tab и груб нам подсказывает какие разделы существуют. Мы должны указать тот, на котором у нас стоит /boot. У меня это был 6.

Note: строка выглядит примерно так: num 6 reiserfs type 0x83

То есть для меня команда выглядела как:

root (hd0,6

При этом полезно обратить внимание, на каких разделах находится винда, где находится её загрузчик (у меня это num 0 0х7, т.к. win7 именно туда запихал свой загрузчик, потеснив ntloader). Это понадобится при редактировании grub.conf.

Теперь сохраняем все изменения и выходим:

setup (hd0)
quit

Насйтрока grub.conf

Теперь начнём редактирование grub.conf. Если вы сделали всё при установке sabayon linux всё правильно, то графический установщик автоматом сгенерирует практически верный файл конфига. Немного отредактируем его.

nano /boot/grub/grub.conf

Вот пример моего конфига:

File: /boot/grub/grub.conf
# grub.conf generated by the Sabayon Linux Installer
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,6)
#          kernel /boot/kernel-genkernel real_root=/dev/mapper/isw_ciieicii_My_RAID07
#          initrd /boot/initramfs-genkernel
### AUTOMAGIC BOOT DEVICE DETECTION -- DO NOT REMOVE ###
#boot=mapper/isw_ciieicii_My_RAID
### AUTOMAGIC BOOT DEVICE DETECTION END ###
default=0
timeout=5
splashimage=(hd0,6)/boot/grub/splash.xpm.gz


title Sabayon Linux x86_64-2.6.29
        root (hd0,6)
        kernel /boot/kernel-genkernel-x86_64-2.6.29-sabayon  root=/dev/ram0 ramdisk=8192 dodmraid udev 
real_root=/dev/mapper/isw_ciieicii_My_RAID07 dolvm init=/linuxrc splash=silent,theme:sabayon vga=791 
CONSOLE=/dev/tty1 quiet resume=swap:/dev/mapper/isw_ciieicii_My_RAID011 real_resume=swap:/dev/mapper/isw_ciieicii_My_RAID011
        initrd /boot/initramfs-genkernel-x86_64-2.6.29-sabayon
        savedefault


title Sabayon Linux x86_64-2.6.29 (safe mode)
        root (hd0,6)
        kernel /boot/kernel-genkernel-x86_64-2.6.29-sabayon root=/dev/ram0 ramdisk=8192 dodmraid udev 
real_root=/dev/mapper/isw_ciieicii_My_RAID07 dolvm init=/linuxrc CONSOLE=/dev/tty1 
resume=swap:/dev/mapper/isw_ciieicii_My_RAID011 real_resume=swap:/dev/mapper/isw_ciieicii_My_RAID011 nox acpi=off ide=nodma vga=normal
        initrd /boot/initramfs-genkernel-x86_64-2.6.29-sabayon
        savedefault


title Microsoft Windows
        rootnoverify (hd0,0)
        chainloader +1
        savedefault
Warning: Выжно отметить, что ради нормального отображения на этом вики, строка kernel /boot/kernel-ge... разбита на 3 строчки! При редактировании конфига этого не доолжно быть! Вся строка идёт до конца!
Note: можно попробовать экранировать переносы строк с помощью \

А теперь важный момент, что конкретно изменил я от дефолта.

  1. Параметры title указал на свой вкус title Sabayon Linux x86_64-2.6.29
  2. В каждую строчку kernel /boot/kernel-genkernel-x... добавил по 2 дополнительных параметра, которые передадуться ядру при загрузке: dodmraid udev
  3. Отредактировал rootnoverify (hd0,0) в соответствии с теми данными, которые мы получили выше. Строка 0 0х7 если забыли.

Окончание

На этом настройка мультизагрузки нескольких ОС закончена. Получилось возможно не супер (сперва грузится груб, который может либо загрузить линукс либо вызвать загрузчик win7, который в свою очередь либо может загрузить win7 либо вызвать загрузчик winxp - ntloader, который позволяет вбирать между двумя версиями xp), однако работает и вроде не очень сложно было настраивать. За небольшую подсказку по поводу возможностей grub спасибо swappp'у.

Ссылки

В статье своей я использовал материалы двух сайтов: