Давняя проблема, решил наконец разобраться.
Стоит на сервере Ubuntu 9.04 (сервер в том числе вещает видео с тюнера в сеть с помощью VLC, необходимо новое ядро).
Из аппаратной начинки - плата на базе чипсета nvidia, встроенный SATA-контролер, в нем установлены 4 идентичных жестких диска Seagate 400Гб, в PCI-X порт установлен дополнительно контролер 2SATA/1 PATA JMicron, в нем - еще 2 точно таких же жестких диска. Разумеется, BIOS не видит JMicron и два диска, которые на нем сидят.
Загрузка происходит с первого SATA диска на встроенном контролере, грузится ядро, затем монтируется файловая система и все - тупик, init не найдет, /dev, /sys и т.п. - тоже. Помогает только отключение двух дисков на дополнительном контролере, загрузка и горячее включение - тогда все работает как часы.
Для исключения глюков GRUB'a решил попробовать lilo. Эффект тот же самый: грузится ядро, монтируется файловая система (как он думает - корневая) и те же самые проблемы.
С помощью простых манипуляций в Busybox удалось выяснить, что после загрузки неожиданно два устройства на дополнительном контролере неожиданно становятся первыми по алфавиту, а 4 на встроенном - последними, т.е.:
до загрузки ядра:
(sda sdb sdc sdd)
после загрузки:
sda sdb (sdc sde sdd sdf)
- где в скобках указаны устройства на встроенном контролере.
В итоге монтируется раздел на /dev/sda1 на дополнительном винте вместо нужного, который теперь /dev/sdc1. Мало того, разделы на sdc, sde, sdd, sdf вообще не видны из busybox, тупая смена имени корневого раздела в grub/lilo - не помогает (монтирование по UUID почему-то вообще не срабатывает - будто бы идентификаторы одинаковые).
Загрузка с liveCD gparted позволила выяснить, что четыре жестких диска на встроенном контролере хоть и видятся, но монтироваться ни в какую не хотят: Device busy, mount -vvv не дал ничего подозрительного, кроме этой фразы (два диска на дополнительном контролере при этом работают).
Ядро ubuntu - 2.6.28, gparted livecd кажется 2.6.29.
Как решить такую проблему не прибегая каждый раз к отключению двух жестких дисков на дополнительном контролере при перезагрузки (которая, к слову, и происходит-то редко (обновление ядра), но оставлять так тоже нельзя)?