[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ххх. Остальное -- модули.
Пора в ЧаВо?
А самому подумать не?… ☺
Ядро собирать как обычно.
Причины не исследую, но если некоторая функция идёт модулем из отдельного пакета, то засунуть её в монолит скорее всего нельзя.
По крайней мере нормально, за генеральную выборку извращений не впишусь.
Далее… Вангую, что корень у тебя живёт на том же контроллере.
И Сокровенное Знание из Изначальной Эпохи:
До монтирования корневого раздела ядро должно знать устройство (и файловую систему, но то другая история), на котором расположен [как минимум] корневой раздел.
Что можно обеспечить двумя способами:
Во-первых, тупо включив необходимое (но не более того) в монолитную часть ядра.
Во-вторых, в модульном ядре, посредством использования
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 благодарю, буду пробовать. Что получится, отпишу.
Реки пива тебе, чувак, и горы
Реки пива тебе, чувак, и горы вяленой рыбы. Курганы фисташек и стоги чипсов.