[SOLVED] Установка Gentoo на аппаратный Raid

Здравствуйте! Прошу помощи!
Озадачился я не так давно установкой Gentoo в качестве сервера для важной файлопомойки. В качестве решения для хранилища данных выбрал массив raid1 из двух дисков на аппаратном контроллере HighPoint Rocketraid 620.
Первый этап: попытка загрузиться с livecd и "увидеть" массив посредством способа, описанного здесь, ни к чему не привела.
Второй этап: подключение жесткого диска к sata-контроллеру на материнской плате и сборка на нем "промежуточной" системы, для того чтобы увидеть массив. Получилось. Дальше сборка системы на массиве:

0. В BIOS контроллера указал, что массив должен быть загрузочным;

1. Таблицу разделов делал gpt для исключения разделения на основные и дополнительные разделы (когда все разделы одного типа, смотрится красивше);

2. Под GRUB2 определен раздел с типом ef02 (BIOS Boot Partition), всё строго по хэндбуку;

3. Собрал ядро (make menuconfig; make && make modules_install && make install; genkernel --install initramfs), систему, естественно, и прикрутил контроллер так, как написано здесь;

4. Попытка загрузки с массива показала "индейскую народную избу", то бишь "фигвам". "Фигвам" такого плана:

4.1 Загрузка GRUB -- отлично;
4.2 Загрузка initramfs -- отлично;
4.3 А дальше -- cannot find root device with UUID=чего-то_там.

Поначалу считал, что причина в отключенном диске с собранной "промежуточной" Gentoo, с которой выполнял сборку на массиве, то есть, меняется порядок перечисления загрузочных устройств, и, соответственно, их UUID. Потом понял, что это бред, почитав мануалы и попытавшись загрузиться с массива при подключенном hdd с "промежуточной" Gentoo. Результат тот же. Потом вспомнил, что в хэндбуке, ещё в старом (не знаю, как в новом) говорилось, что поддержка файловой системы, с которой будет выполняться загрузка ядра, должна быть собрана непосредственно "в ядро", а не модулем, иначе система не загрузится. Думаю, что аналогично касается и устройств, с которых производится загрузка. Косвенно такую мысль подтверждает переход в Shell после пункта 4.3 и просмотр /dev -- там нет ни одного блочного устройства типа /dev/sd* (в "промежуточной" Gentoo мой массив был виден, как /dev/sdb). Отсюда вытекают следующие вопросы:

1. Прав я или нет в том, что поддержка raid-контроллера должна быть собрана "в ядро", а не модульно?

2. Если прав, как можно собрать "в ядро"?

3. Если неправ, какие тогда могут вообще причины незагрузоспособности системы?

РЕШЕНО

Решено таким образом: пошёл сюда -- http://man7.org/linux/man-pages/man5/dracut.conf.5.html, тут прочитал про параметр

force_drivers+=" list of kernel modules "

после этого добавил в /etc/dracut.conf искомый параметр (можно было и файл создать в /etc/dracut.conf.d/ -- не стал заморачиваться), проследил, чтобы после
# dracut --host-only
появился вывод консоли

Stored kernel commandline:
rd.driver.pre=rr62x

после этого ребут, и всё в шоколаде.

force_drivers+= взят вместо add_drivers+= или drivers+=вот по этой причине:

See add_drivers above. But in this case it is ensured that the drivers are tried to be loaded early via modprobe.

Тема закрыта.

http://wiki.gentoo.org/wiki/E

http://wiki.gentoo.org/wiki/EFI_stub_kernel
В этой-же статье указано как и где прописать UUID=
UUID= можно узнать по из blkid или как там сказано - через gdisk..
raid-контроллер должен бить собран в ядре.

Значит, прав. Вопрос, как это

Значит, прав. Вопрос, как это сделать, то есть, собрать в ядро? Здесь по этой ссылке показано, что сборка выполняется только модулем. Можно хотя бы носом ткнуть в мануал, как собрать в ядро?

ссылка выше, там описано как

ссылка выше, там описано как собрать цельное ядро с загрузкой EFI, добавляешь твой манувл, только вместо буквы "M", в ядре, ставишь "*" - это описано даже в Handbook... тогда оно будет собератся не как модуль а встраиватся в ядро ;-)

Встречный вопрос: зачем используешь grub? Материнка без UEFI?

Grub использую, потому что

Grub использую, потому что привык действовать по конкретному сценарию. В этом случае он не сработал. Материнская плата с поддержкой UEFI.

Извини, может, чего-то не

Извини, может, чего-то не понимаю, но всё-таки:

По ссылке https://wiki.gentoo.org/wiki/HighPoint_RocketRAID указано, как собрать модуль. По ссылке http://wiki.gentoo.org/wiki/EFI_stub_kernel написано, как собрать ядро с поддержкой EFI. Как тогда можно добавить свой мануал (т.е. https://wiki.gentoo.org/wiki/HighPoint_RocketRAID ), чтобы собрать драйвер контроллера монолитно с ядром? Что я здесь могу упускать? Если я собираю ядро через menuconfig, то поддержка устройств Highpoint Rocketraid на ядерном, не модульном, уровне, реализована только для контроллеров моделей 3ххх и 4ххх. Остальное -- модули.

Пора в ЧаВо?

Rossa написал(а):
Значит, прав. Вопрос, как это сделать, то есть, собрать в ядро? Здесь по этой ссылке показано, что сборка выполняется только модулем. Можно хотя бы носом ткнуть в мануал, как собрать в ядро?

А самому подумать не?… ☺

Ядро собирать как обычно.
Причины не исследую, но если некоторая функция идёт модулем из отдельного пакета, то засунуть её в монолит скорее всего нельзя.
По крайней мере нормально, за генеральную выборку извращений не впишусь.

Далее… Вангую, что корень у тебя живёт на том же контроллере.
И Сокровенное Знание из Изначальной Эпохи:
До монтирования корневого раздела ядро должно знать устройство (и файловую систему, но то другая история), на котором расположен [как минимум] корневой раздел.
Что можно обеспечить двумя способами:
Во-первых, тупо включив необходимое (но не более того) в монолитную часть ядра.
Во-вторых, в модульном ядре, посредством использования initramfs, включающей загрузку необходимых модулей.
Ты initramfs собирал правильно (т.е. после установки пакета с нужным модулем и с включением оного модуля в initramfs)?

:wq
--
Live free or die

О корне на контроллере можно

О корне на контроллере можно было не ванговать, стоило лишь внимательнее почитать начало темы.

1. Тупо включить необходимое в монолитную часть ядра можно в том случае, когда оно есть в menuconfig. Или это можно оспорить?
2. Алгоритм моих действий с initramfs: сначала сборка ядра ((make menuconfig; make && make modules_install && make install), затем установка драйвера контроллера, затем modprobe rr62x и добавление модуля в /etc/conf.d/modules, затем genkernel --install initramfs. Что Я здесь Делаю Не Так?

genkernel --install

genkernel --install initramfs. Что Я здесь Делаю Не Так?

Не доказано:
а) что генкернел читает /etc/conf.d/modules ( у него свой конфиг )
б) что без doscsi модуль будет грузится.
в) Что контроллеру не нужна firmware

П.С генкернел последний раз юзал 5 лет назад.
П.П.С если ты можешь собрать ядро и модуля руками, а от генкернела нужен только инитрамфс - юзай дракут

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

За подсказку с Dracut

За подсказку с Dracut благодарю, буду пробовать. Что получится, отпишу.

Реки пива тебе, чувак, и горы

Реки пива тебе, чувак, и горы вяленой рыбы. Курганы фисташек и стоги чипсов.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".