Во-первых, вы уверены, что у Вас корень это /dev/hda1 ? Во-вторых, вы с какими опциями собирали ядро? Поддержка файловой системы /dev/hda1 скомпилирована в ядро, модулем или вообще про нее забыли? Если сделали модулем, то создали ли initrd?
В общем как всегда подземный стук, а в единственном на весь форум телепатическом шлеме сели батарейки.
Действительно, как выяснилось, корень был на /dev/hda2. Но это не помогло, увы...
Для ядра 2.6.11 пробовал разные варианты : и как модуль и в ядре. Тоже не помогло.
Проблема решилась сама-собой, когда перешел на 2.6.15.
При более тщательном анализе выяснилось, что 2.6.11 неправильно распознавал диск, подключенный через SATA, а в более поздней версии ядра эта проблема была устранена.
После выяснения причин попробовал вернуться к 2.6.11 и задать поддержку SCSI в ядре.
Загрузка прошла нормально. Но уже решил оставить 2.6.15.
Короче, в 2.6. по сравнениею с 2.4. полностью переработан модуль init. Вот в нем, по всей вероятности (в первых версиях) и содержался не совсем корректный код.
Про "подземный стук" конечно правильно, но ведь когда становится ясна причина, тогда и решение уже найти не сложно... :-)