Установка Linux Gentoo на Intel® RAID Controller SASMF8I

Skip to end of metadata
Go to start of metadata

Установка Linux Gentoo на Intel® RAID Controller SASMF8I

Желание написать данный howto возникло после потраченных 6-ти часов на запуск сего чуда под Linux Gentoo.

Описание проблемы

Описание контроллера можно найти на http://www.intel.com/Products/Server/RAID-controllers/SASMF8I/SASMF8I-overview.htm сайте Intel* Первая проблема заключается в том, что драйвер к контроллеру не является частью ядра, а распространяется в бинарном виде, и в списке поддерживаемых систем gentoo не наблюдается.

  • Вторая проблема лежит в идентификации контроллера, которая капитально сбивает с толку: lspci идентифицирует его как
    02:00.0 RAID bus controller: LSI Logic / Symbios Logic [MegaRAID] SAS 8208ELP/8208ELP (rev 08)

    Но на сайте LSI нужного драйвера к свежему ядру найти не получится....
    == Описание решения ==
    Не буду описывать все предпринятые действия, опишу сразу правильные шаги по установке Linux Gentoo на данный RAID контроллер. Вместо того, чтобы искать драйвер по выводу lspci, обратите внимание на то, что написано на коробке В моем случае это было Intel® RAID Controller SASMF8I. Это и есть отправная точка.

  • Идем на сайт Intel, и качаем свежую версию: http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&ProdId=2972&DwnldID=18038&lang=eng Intel® ESRT-​​2 SATA & SAS Software RAID Driver for Linux от 8/28/2009.
  • В полученном архиве с названием ESRT2_Linux_v.13.10.0708.2009.zip находятся бинарные драйверы для !RedHat & [CentOS]. На к превеликому счастью, там есть и окружение для сборки драйвера под любой Linux.
  • Далее привожу шаги с комментариями по сборке драйвера.
    #!sh
    asteriskware tmp #
    asteriskware tmp # ls
    ESRT2_Linux_v.13.10.0708.2009.zip
    asteriskware tmp # mkdir sas
    asteriskware tmp # mv ESRT2_Linux_v.13.10.0708.2009.zip sas
    asteriskware tmp # cd sas/
    asteriskware sas # unzip ESRT2_Linux_v.13.10.0708.2009.zip
     

    Далее идем в папку с исходниками для !RedHat/!CentOs:

    #!sh
    asteriskware sas # cd shim/library/rhel5-32/
    asteriskware rhel5-32 #
     

    Выполняем команду make -C /usr/src/linux M=$PWD

    #!sh
    asteriskware rhel5-32 # make -C /usr/src/linux M=$PWD
    make: Entering directory `/usr/src/linux-2.6.29-gentoo-r5'
      LD      /tmp/sas/shim/library/rhel5-32/built-in.o
      CC [M]  /tmp/sas/shim/library/rhel5-32/../../open_source/oss/lin/lin_oss.o
      CC [M]  /tmp/sas/shim/library/rhel5-32/../../open_source/osl/lin/osl_char.o
      CC [M]  /tmp/sas/shim/library/rhel5-32/../../open_source/osl/lin/linux_osl.o
    /tmp/sas/shim/library/rhel5-32/../../open_source/osl/lin/linux_osl.c: In function ‘setup_sglist_each_sg’:
    /tmp/sas/shim/library/rhel5-32/../../open_source/osl/lin/linux_osl.c:2031: warning: comparison is always false due to limited range of data type
      LD [M]  /tmp/sas/shim/library/rhel5-32/megasr.o
      Building modules, stage 2.
      MODPOST 1 modules
      CC      /tmp/sas/shim/library/rhel5-32/megasr.mod.o
      LD [M]  /tmp/sas/shim/library/rhel5-32/megasr.ko
    make: Leaving directory `/usr/src/linux-2.6.29-gentoo-r5'
    asteriskware rhel5-32 #
     

    О чудо! Драйвер собрался (до этого был скачан похожий файл с сайта LSI, но только попытка сборки по Linux asteriskware 2.6.29-gentoo-!r5 окончилась неудачно).

  • Файл megasr.ko - это как раз то, чего нам не хватает для обретения чувства душевного покоя.
  • К слову сказать, сборка megasr.ko производилась в уже развернутой копии !AsteriskWare на другой машине, а так как архитектура была идентична, мы просто скопировали нужный файл в устанавливаемую систему. Чтобы сделать это прямо в процессе установки, надо распаковать ядро в RAM, поэтому ее понадобится минимум 4G. Поэтому если Вы ставите AsteriskWare на машину с контроллером SASMF8I, не поленитесь, установите систему также под VMWare или другой системой, это очень облегчит задачу, так как можно будет просто скопировать нужный файл.
  • После того, как в устанавливаемой AsteriskWare появился бинарник megasr.ko, его надо прописать в образ модулей, подгружаемых до загрузки Системы. Делается это при помощи простого трюка:
    #!sh
    cd /tmp/
    mkdir myinitramfs && cd myinitramfs
    cp /boot/initramfs* .
    mv initramfs* initramfs.gz
    gunzip initramfs.gz
    cpio -i < initramfs
    cp /root/library/rhel5-64/megasr.ko lib/modules/*/kernel/drivers/scsi
    vi etc/modules/scsi
     

    Далее нужно сверху добавить строку: megasr, ну и запаковать все обратно:

    #!sh
    find . | cpio -H newc -o | gzip -9 > /boot/initramfs*
    

    Вот и все. Reboot.

P.S. Вроде все просто, но весь интернет полон противоречивых сведений о том, как это сделать, и все потому, что lspci идентифицирует контроллер как LSI [MegaRAID] SAS 8208ELP

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.