[devel] root on software raid1: +/- (was: installer-20070214.iso)

Michael Shigorin mike на osdn.org.ua
Чт Фев 15 20:58:47 MSK 2007


Executive summary: в принципе установить 20070214 на
программно-зеркальный корень возможно, но непрактично.
Проблемы пока идентифицированы в lilo, ядре, mkinitrd;
если их удастся порешать, то может понадобиться доработка
alterator-vm с тем, чтобы для md partitions выставлять тип
раздела 0xfd (иначе md autorun их не поднимает).


On Wed, Feb 14, 2007 at 10:55:08PM +0300, Alexey Gladkov wrote:
> installer-i586-20070214.iso

При установке на AHA2940 и двумя SCSI (попытался сделать RAID1 /
на оба, что само по себе удалось) -- базовую систему влили,
дальше вылез errorbox:

LILO CHECK: Fatal: Linux experimental device 0xfd00 needs to be defined
Check "man lilo.conf" under "disk=" and "max-partitions="

<lioka> gvy: knownbug, lilo чинить есть желающие ?

Сделал chroot /mnt/destination /bin/bash и там lilo -C /tmp/lilo.conf
-- получил то же самое (без LILO CHECK: , разумеется).

А вообще при / на raid1 было бы здорово делать boot=/dev/mdX
(возможно, irrelevant) и raid-extra-boot=mbr-only.  Попытался
всунуть такое руками в /tmp/lilo.conf, получил:

Fatal: is_primary: Not a valid device  0xFD00

(это же вылезло при включении галки "Show partitions"
и выборе добавившегося md/md1)

В итоге удалось с пинком в initramfs shell загрузить систему,
которая установлена на софтовое зеркало на sda и sdb :-)

Ниже приведён slightly pruned irc log.

<gvy> lioka, а как думаешь -- тип разделов без отношения к лиле?
<gvy> там 0x83
<vsu> gvy: там не в этом дело
<lioka> gvy: пофигу
<vsu> gvy: evms собирает md из устройств dm
<gvy> vsu, а lilo не в курсе?
<gvy> ёмаё, три года назад работало (именно evms+lilo)...
<gvy> в AW, правда
<vsu> gvy: минимально в курсе, но не под md
<gvy> и именно в MD :)
<vsu> gvy: а, в aw...
<vsu> gvy: там какой-то патч на использование libevms вроде был
<gvy> vsu, ну патчи-то у меня есть, но они ж древние
<vsu> gvy: а сейчас там патч на LCF_DEVMAPPER
<vsu> gvy: тупооой...
<lioka> тогда на lilo лежал только один слой подпорок :)
<thresh> lucifer devmapper
<gvy> lioka, о как
<lioka> gvy: рэйд на дисках должен прокатить
<thresh> gvy: я делал на пердыдущем такое: raid1-md0 на /boot, и md1 на /, потом raid1 еще один с lvm и с них раздавал разделы
<thresh> до загрузки ввпрочем не дошел :)
<gvy> thresh, а lilo становилось?
<thresh> вот до туда не дошел, пугали что не будет работать, а была уже пятница и я хотел домой
<gvy> lioka, ага, на md0=sda+sdb встало
<gvy> lioka, vsu: lilo встало, загрузилось, дальше пока заканчивается таким:
<gvy> Begin: Starting udevd ...
<gvy> Done.
<gvy> Begin: Mounting root filesystem ...
<gvy> Begin: Waiting for root filesystem ...
<vsu> gvy: а диски нашлись?
<vsu> gvy: или md не поднялся?
<gvy> vsu, диски нашлись, а вот md и впрямь не видел
<vsu> а, точно, он же там не определится...
<gvy> о, дождадись
<vsu> если mkinitrd --with-raid не сказали
<vsu> надо что-то гвоздями прибить
<gvy> ALERT! /dev/disk/by-uuid/*&^*&^*&^*&^ does not exist.  Dropping to a shell!
<vsu> gvy: и ничего ты там не сделаешь, поскольку, скорее всего, там ни md, ни raid1 нет
<vsu> кстати, а почему /usr/sbin/mdadm лежит в /usr ????
<gvy> vsu, похоже, что там только драйверы железок -- зато всех: ide-generic, sata_nv, sata_sil24, aic7xxx :)
<thresh> vsu: там есть /sbin/mdassemble
<gvy> vsu, ни ext3, ни raid1 пока не на'echo *'ил :)
<vsu> thresh: который до недавнего времени умел только падать
<thresh> ага :)
<vsu> gvy: да modprobe его
<vsu> gvy: можно -v
<gvy> vsu, точно
<gvy> ext3 есть, raid1 нет
<vsu> thresh: причём даже если он не падает, всё равно им ничего не сделаешь, если что-то развалилось
<gvy> отсутствует
<thresh> vsu: ну да, только собирал
<vsu> thresh: вообще этому mdassemble место скорее в /lib/mkinitdd
<gvy> vsu, чёт ещё с тем md0 root делать или я пошёл с lvm заигрывать? :)
<vsu> gvy: ну если как-то загрузиться и выполнить mkinitrd --with-raid, оно должно бы потом и заработать
<gvy> vsu, ну загрузиться-то дело нехитрое -- сейчас попробую, вдруг действительно там ещё дальше грабли есть
<gvy> vsu, --with-raid достаточно или надо конкретно --with raid1?
<vsu> gvy: а посмотри с -v, что оно туда положит
<vsu> gvy: при поднятом должно положить raid1
<vsu> gvy: оно теперь в вывод mdadm смотреть научилось
<gvy> а, чуть хитрее -- в инсталере mdadm нет
<thresh> а туда уже lvm2 положили? ;-)
<vsu> gvy: главное, чтобы в rescue не забыли
<gvy> vsu, бутнулся с ide -- угу, при собранном зеркале raid1.ko mkinitrd --with-raid положил
<gvy> (при смонтированных /proc и /sys)
<gvy> vsu, не-а -- смонтированы
<vsu> gvy: под каким ядром mkinitrd пускал?
<gvy> vsu, тем же
<gvy> 2.6.18-std-smp-alt3
<vsu> gvy: хотя смотря с чего грузился и что оно там загрузили
<vsu> gvy: в принципе могло и на ide-generic что-то сесть
<gvy> scsi подняло, raid1 воткнуло, autorun done, пока ждём корня
<gvy> vsu, грузился с ide как раз
<vsu> gvy: странно - ждать уже не должно было
<gvy> с initrd, в котором точно есть ide-generic
<vsu> gvy: там uuid-то хоть правильный?
<gvy> vsu, вывалились
<gvy> а как проверить?
<vsu> gvy: cat /dev/.udev/db/block на md0
<vsu> gvy: или где там /
<vsu> gvy: и cat /proc/cmdline
<gvy> vsu, эээ... я в initramfs shell :)
<gvy> а, .udev/db есть
<vsu> gvy: ну номер md какой создавал?
<gvy> md0
<vsu> gvy: S:disk/by-uuid/... там есть?
<vsu> gvy: совпадает с root=UUID=... ?
<gvy> vsu, сек...
<gvy> ой.
<vsu> gvy: что там? в root= гадость?
<gvy> echo dev/.udev/db/block на md* его показывает, а вот cat dev/.udev/db/block на md0 говорит, что нет такого файла oO
<vsu> gvy: мда... значит, это симлинк
<vsu> gvy: попробуй echo add >/sys/block/md0/uevent
<vsu> gvy: и ещё раз посмотри cat /dev/.udev/db/block на md0
<gvy> vsu, счас...
<gvy> btw там есть cd, что очень радует
<gvy> vsu, всё равно no such
<gvy> в /proc/modules raid1 наблюдается
<vsu> gvy: а по сообщениям ядра raid поднимался?
<vsu> gvy: ещё /lib/udev/vol_id /dev/md0 можно глянуть
<gvy> vsu, во!
<gvy> судя по /proc/mdstat, md0 не собран
<vsu> gvy: а, так ты тип 0xfd поставил?
<gvy> vsu, autorun done проскакивало, но обычной простыни по
этому поводу не было
<gvy> vsu, не, тип 0x83 -- тормозил ещё, что ж забыл...
<gvy> поставить, так?
<vsu> ну у нас же инсталлер на evms - ему типа это не надо :)
<gvy> vsu, :]
<vsu> а md_run надо...
<gvy> ok
<vsu> с другой стороны, если использовать evms, тип 0xfd как раз мешает
<gvy> vsu, LOL
<gvy> "какие разделы, моя прелесть"
<gvy> raid же на дисках :))
<vsu> gvy: так у тебя что там - ФС прямо на таком md?
<gvy> vsu, ext3 на md0
<gvy> vsu, я собсно подумал lvm туда засунуть, но решил для начала "попроще" :)
<vsu> gvy: тогда грузись с md=0,/dev/sda,/dev/sdb
<gvy> k
<vsu> gvy: или где там оно живёт
<gvy> vsu, грузюсь...
<vsu> gvy: с lvm пока рано - такому mkinitrd ещё не обучен
<gvy> vsu, md0 подняло
<vsu> gvy: root нашло или опять waiting?
<gvy> waiting
<vsu> gvy: ну rootdelay=5 пиши, чтобы waiting поменьше было
<gvy> vsu, значтак.
<gvy> сразу block на md0 не cat'ался
<gvy> vsu, при этом md0 был собран
<gvy> vsu, после echo add >/sys/block/md0/uevent и кататься стал, и uuid там тот же, что в ALERT, и в /dev/disk/by-uuid появилось искомое
<gvy> бишь не хватало только этого события
<vsu> gvy: ну после этого exit должен был пойти грузиться дальше
<vsu> gvy: понятно, где там race... надо ещё ядро обновить немножко :)
<gvy> vsu, да, погрузилось :)
<vsu> gvy: только райдер меня опять сегодня загрузил своим любимым bootsplash :-\
<vsu> gvy: в результате я обнаружил команду, надёжно вешающую ядро с этим кривым bootsplash
<gvy> vsu, "обновить немножко" -- это alt4 или 2.6.20? :)
<vsu> gvy: ну если vanilla, то 2.6.19... а так alt4 :)
<gvy> vsu, ну bugsplash тоже, конечно, нонче must have :(  но в общем и в целом корень на зеркало из коробки всё-таки важнее для не-бучного imo
<vsu> gvy: там просто добавляется событие при запуске md
<vsu> gvy: ага, именно bugsplash
<vsu> gvy: полюбовался на всякие usplash и splashy
<gvy> vsu, только ты ведь правда и так про это знал и собирался сделать, или хоть какая-то польза от пробежки вышла? :)
<vsu> gvy: изврат ужасный
<vsu> gvy: в принципе знал :)
<vsu> gvy: просто оно иногда и так делало вид, что работало

-- 
 ---- WBR, Michael Shigorin <mike на altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


Подробная информация о списке рассылки Devel