Предыстория
Достался мне контроллер LSI 8208XLP. А вместе с ним — задача заставить эту чудо-железку работать под Linux. Никаких встроенных RAID-функций от него не требовалось, достаточно было просто увидеть подключённые к нему диски. Далее в дело вступил бы горячо любимый мной mdadm или чуть менее любимый lvm. Казалось бы, чего проще? Поткнул контроллер, подключил диски — и вперёд. Железка довольно старая, Debian уже не первый год существует, и уж наверное имеет в комплекте нужный драйвер.
Ну, почти.
Проблемы
Начнём с того, что 8208XLP — это софт-рейд. То есть массив средствами имеющегося на нём BIOS собирается, но работать может только после установки драйверов. Однако, в отличие от того же softraid в чипсетах intel, где объёдинённые в массив диски без драйвера отображаются как обычные, в данном случае диски не отображаются вообще. То есть использовать его как «просто ещё 8 SATA-портов» просто так не получится. Даже для того, чтобы увидеть одиночный подключённый диск, без драйвера никак.
И тут возникает проблема №2: на официальном сайте LSI драйвера есть под Windows-системы, под Red Hat 4, 5 и SLES с 9 по 11. Более того, пакет с драйверами использует DKMS, и согласно приложенной инструкции не ставится. Вероятно, помимо бинарников собвственно DKMS, драйвера и исходников текущего ядра для сборки требуется ещё и исходник драйвера. Утверждать это не буду — это предположение основывается на копании в древних ветках различных форумах и сообщениях об ошибках при установке. В инструкции про это ни слова, переписка на эту тему с саппортом LSI всё ещё в процессе.
Что было сделано, но не помогло
Коротко опишу пройденный путь:
Попытка «просто поставить Debian» и увидеть диски, как я уже говорил, провалилась. Установщик дисков не видит, после установки системы на отдельный носитель они, разумеется, волшебным образом появляться отказались.
ls -la /dev/sd* выводил ожидаемый системный хард и более ничего.
Попытка поставить CentOS 6.5 — та же история. Плюс к этому — драйвер с сайта не поставился.
Попытка заставить эту (уже проклинаемую) железку работать на SLES11 SP3 также провалилась. Загрузчик драйвер на флешке не увидел, без него дисков установщик не видит, после установки на отдельный хард — дисков нет, драйвер не ставится, та же история с DKMS и исходниками.
Единственный успешный момент — попытка установки CentOS 5.4. Её установщик скушал драйвер с флешки (megasr-13.15.1218.2009-1-rhel50-u4-all.img) и диски нашёл. Однако оставаться на столь древнем ядре желания особого не было. Одно порадовало — проблема технически решаема, устройство рабочее, решил копать дальше.
Что в итоге помогло
В процессе раскопок не раз встречал упоминание о волшебно собранном megasr драйвере под Debian, но годы, прошедшие с момента обсуждения, ссылка успела умереть, и в том репозитории ничего подобного мне найти уже не удалось.
В процессе наткнулся на вот этот любопытный коммент в багтрекере hwraid: hwraid.le-vert.net/ticket/4#no2
Получается, что аналогичная карта (8208ELP) работает под драйвером mptsas, который есть в Debian. Осталось понять две вещи — «как это дело заставить работать» и «какой PCI ID у моего контроллера»?
Ответ на первый вопрос был найден в комментах вот тут: weeclemans.livejournal.com/12086.html?thread=310
Фактически достаточно добавить mptsas в /etc/modules и строку вида
echo "0x1000 0x????" >/sys/bus/pci/drivers/mptsas/new_id
в /etc/rc.local
Устанавливать ОС на диски, подключённые к этому контроллеру, я не планировал изначально, так что если они определятся уже после запуска системы — этот вариант меня вполне устроит.
Теперь осталось только найти PCI ID для моей карты. К сожалению, lspci такой информации не выдал, поэтому нужные значения были взяты отсюда: mirror.szepe.net/siv/pcidevs.txt
Для 8208XLP подошёл вариант 0x1000 0x0055.
После перезагрузки диски, подключённые к контроллеру, корректно определились, даже их SMART доступен.
Автор: antiBILLotic