Установка Slackware Linux на hardware RAID (fakeraid, BIOS RAID)

Источник: slackware-raid

Предупреждение

Данная статья рассчитана на знакомого с системой Linux пользователя и опускает подробности выполнения некоторых стандартных операций. Автор не несёт ответственности за любой ущерб, вызванный ошибками пользователя и/или данной статьи, а также не гарантирует успешной работоспособности во всех вариантах.

Краткое описание

В этой статье описывается процесс установки Slackware linux на hardware RAID, также известном как fakeraid. К сожалению, Slackware не поддерживает установку на данные RAID-массивы "из коробки", но, я надеюсь, эта статья поможет быстро и корректно исправить это. 

Вкратце, для установки требуется получить доступ к RAID, разбить диск, установить slackware, и подключить образ initrd для доступа к RAID при старте системы. Для доступа к RAID используется утилита dmraid (версии 1.0.0.rc14). Теоретически, данный метод можно использовать на любом железе, поддерживаемом dmraid. 
При создании статьи использовались RAID контроллер nvidia (на nforce 590) и два SATA жёстких диска Hitachi в конфигурации RAID-0 (striping).

Требования к установке

Для установки потребуются:

  • RAID массив, корректно настроенный в BIOS.
  • установочный CD/DVD диск Slackware версии 12.0 либо 12.1. Другие версии, в том числе и более поздние, могут как работать, так и не работать с данной процедурой.
  • загрузчик GRUB на внешнем носителе (flash, floppy, cd). Убедитесь в его работоспособности и в том, что он "видит" RAID.
  • образ initrd на внешнем носителе, загруженный с этого сайта.

Установка 

1. Загрузитесь с Slackware CD/DVD

2. Подключите внешний носитель, содержащий образ initrd. К примеру, образ сохранен на flash диске sdc1:

    • /dev/makedevs.sh
    • mkdir /flash
    • mount -t fvat /dev/sdc1 /flash

    3. Скопируйте образ на диск и подключите его:

    • mkdir /tmpfs
    • cp /flash/initrd.gz /tmpfs
    • umount /flash
    • cd /tmpfs
    • gzip -d initrd.gz
    • mkdir loop
    • mount -o loop initrd loop

    4. Проверьте, что ваш RAID контроллер поддерживается. Для этого выполните:

    • ./loop/bin/dmraid -s

        Если dmraid не определил ваш массив, то данная статья ничем вам не поможет.
        Запомните или запишите имя найденного RAID-массива. Далее в примерах вам потребуется изменить мое устройство nvidia_eeajfich на ваше, возвращённое dmraid -s.

    5. Подключите RAID-массив. В /dev/mapper/ должны появиться файлы блочных устройств для целого массива и каждого раздела:

    • ./loop/bin/dmraid -ay
    • ls -l /dev/mapper/

    6. Теперь Slackware имеет доступ к диску и можно начать процедуру установки. Разбейте диск требуемым образом:

    • fdisk /dev/mapper/nvidia_eeajfich

        Чтобы быть в полной безопасности, перезагрузитесь после изменения структуры диска и повторите шаги 2-5.

    7. Далее нужно исправить баг fdisk, который усекает имена блочных устройств и препятствует корректной установке. Для этого нужно подправить скрипт /sbin/probe, используемый инсталлятором:

    • cp /sbin/probe /sbin/probe.bak
    • vi /sbin/probe

        Измените строку fdisk -l >> $TMP/SeTfdisk в конце файла на fdisk -l /dev/mapper/nvidia_eeajfich >> $TMP/SeTfdisk, указав имя своего RAID-массива. Если вы хотите, чтобы инсталлятор получил доступ к другим жестким  дискам/RAID-массивам, подключенным к системе, добавьте аналогичные команды fdisk друг за другом с именами устройств (например, fdisk -l /dev/hda >> $TMP/SeTfdisk).

    8. Можно приступить к установке. Выполните дополнительные подготовительные процедуры, если требуется.

    • setup

        В процессе установки рекоммендуется не устанавливать LILO совсем, а использовать позднее GRUB.
        По окончании установки, НЕ перезагружайтесь!

    9. Скопируйте образ initrd на RAID-массив (в данный момент корень новой системы смонтирован в /mnt):

    • umount /tmpfs/loop
    • gzip -9 /tmpfs/initrd
    • cp /tmpfs/initrd.gz /mnt/boot

    10. Перезагрузитесь.

    Загрузка

    1. Загрузите GRUB с внешнего носителя.

    2. Перейдите в командный режим ('c').

    3. Укажите ядро для загрузки и обязательные параметры root, init

    • root (hd0,0)
    • kernel /vmlinuz root=/dev/ram0 init=/sbin/init nvidia_eeajfich5

        Замените (hd0,0) на раздел, где находится ядро и initrd.
        Здесь nvidia_eeajfich5 - параметр init, имя устройства, где находится корневая (root) файловая система. Измените её на значение, выбранное при установке в качестве root fs.

    4. Подключите образ initrd:

    • initrd /initrd.gz

    5. Счастливого старта!

    • boot

    Примечания

    1. Образ initrd создан на основе пакетов из дистрибутива Slackware Linux 12.0 + dmraid и является образом блочного устройства с файловой системой ext2.

    2. Скрипт /sbin/init:

    #!/bin/ash
    # VERSION 0.3 13.07.2008

    # partition device name is required as a parameter. (this is dev name detected by dmraid)
    if [ $# -lt 1 ]; then
        echo "INITRD: Please specify kernel option init=/sbin/init \$ROOT_DEV "
        exit;
    fi

    # remount initrd image read-write to be safe
    mount -n -t ext2 -o remount,rw /dev/ram0 /

    # default slackware kernel have support for this fs
    mount /proc
    mount /sys

    # Connect to the system all detected raid arrays
    dmraid -ay

    # Mount real root as /new-root
    mount /dev/mapper/"$1" /new-root
    cd /new-root
    mkdir -p initrd

    # create symlinks in real root fs
    # this is only required then udev is not used
    for i in `find /dev/mapper/* -type b`; {
        if [ `basename $i` != control ]; then
        ln -s -f /initrd/dev/mapper/`basename $i` /new-root/dev/mapper/`basename $i`;
        fi
        }

    # clean for real init
    mount -o remount,ro /new-root
    umount /sys
    umount /proc

    # start real init
    pivot_root . initrd
    exec chroot . /sbin/init <dev/console >dev/console 2>&1 

    3. Для корректной работы с udev (которая используется по-умолчанию) требуется наличие установленного пакета a/device-mapper. Убедитесь, что он устанавливается при выборе пакетов.

    4. Записать GRUB на внешний носитель можно самостоятельно, либо найти готовые решения, например здесь.

    Ссылки

    Образ initrd, требуемый для установки: версия 0.3    13-07-2008    initrd.gz    1.2 MB MD5: a609d25f4c5a642b3752036b7d5f3429


    Страница сайта http://test.interface.ru
    Оригинал находится по адресу http://test.interface.ru/home.asp?artId=16935