Здравствуйте!
Столкнулся с забавной проблемой. Побороть не смог. Решил грузить корневой раздел с флешки. Для этого подготовил на ней primary partition с ext2.
Компилировал скриптом make_system, находится в каталоге /home/user/buildroot-2010.08
Скопировал полученную ФС на флешку. Ядро грузил u-boot'ом. Ядро стартует, но в самом конце неожиданно находит некое устройство /dev/spb (что-то связано с аудио) и говорит, что не может его открыть. На этом загрузка завершается.
Если компилировать ядро отдельным скриптом, который не трогает rootfs, то загрузка происходит нормально, вплоть до запроса пароля, и выдачи консоли.
К сожалению, не сохранил лог загрузки ядра... но может быть можно что-то и так сказать?
В чем может быть дело? Меняеются только параметры старта ядра. Больше ничего. Если строку переписать назад, чтобы ядро грузило ФС с nand, и загрузить его по сети u-boot'ом, все снова нормально.
Подозреваю, что при перекомпиляции всей системы, из-за изменений параметров загрузки ядра, что-то меняется в rootfs. Исчезает какой-либо скрипт, или появляется, что заставляет ядро искать этот злосчастный /dev/spb. Я пока еще новиче в линуксе, буду рад любым советам)
хм.. первый раз такое вижу.. а точно spb а не dsp или что-то подобное?
попробуйте вернуть всё "на исходную", пересобрать и прошить - так вы убедитесь что исходники правильные
далее проверьте, что в корне свежесгенеренной рутовой есть симлинк на /bin/busybox
и в строке параметров для ядра tty0 - это опечатка или так задумано? обычно там фигурирует ttyS0 - вывод диагностики в последовательный порт..
вместо rootdelay=N лучше писать rootwait
если еще раз будете пробовать, то сохраните 10-20 последних строк лога - так картина будет более наглядной..
Да, мог ошибиться. Вполне возможно, что /dev/dsp. Вполне возможно, что вместе tty0 ttyS0. Вывода в последовательный порт работает. Эти вещи я даже и не трогал.
В общем стоит заставить ядро грузиться из нанд, все ок. Стоит поменять строку загрузки на флешку, ядро виснет. Все остальное не меняется.
Попробую посмотреть, есть ли линк, но позже. Если проблема останется, уже выложу лог. Сейчас нет возможности это сделать.
вероятно ядро "не виснет" - то что нет приглашающего логина, еще не значит повисание, просто не прошел запуск программы которая выводит эти буковки..
если в рутовой разрешена работа сети и стандартный адрес 192.168.0.136, то можно попробовать попинговать этот адрес. откликнется - точно живая..
можно изучить содержимое /etc/inittab в этой рутовой в строке со словами getty ttyS0 (у вас 9g45 и ничего не меняли). если их нет, то счастья не будет..
Гм, а компиляция рутовой ФС может зависить от этой злополучной строки запуска ядра (параметров запуска)? Получается, что так. По крайней мере для этой платы...
чисто в теории, да, при условии, что есть некий скрипт, который анализирует изменения этой строки и "пакостит" в рутовой.. но это в теории..
на виртуалках к китам этого не замечалось..
впрочем, не исключается вариант, что билдрут, даже корректно просетапленный и настроенный высасывает из инета очередной кривонастроенный пакет, который может дать такой глюк..
для чистоты эксперимента надо еще раз установить виртуалку к киту, запретить ей хождение в инет и пересобрать два варианта - грузить с нанда и грузить с флешки/ отсюда делать выводы..
Прикладываю лог http://pastebin.com/zJCUspD6
Да, строка запуска ядра такая console=ttyS0,115200 rw rootwait mem=64M root=/dev/sda1
Если вернуть строку запуска назад на нанд, все ОК.
Более ничего не меняется. В инет не ходим. Компилирую вместе с rootfs при помощи скрипта make_system.
Вот другое дело :) строку загрузки которую получает ядро видно в логе (см строку 47 по ссылке). Проблема тут в буилдруте или в скрипте сборки, не знаю по какой причине файлы оказываются с правами юзера. Для начала включите поддержку ext3 в ядре и сделайте на флешке не ext2 а ext3 - она журналирумая и ее разрушить сложнее, когда скопируете корневую фс на флешку, сделайте владельцем /bin/busybox пользователя root, например если перейдете в каталог куда смонтирована флешка
#sudo chown root.root bin/busybox
Спасибо, уважаемый sasamy! Сейчас у меня на дворе ночь, днем попробую)
Интересно, если ядро может получть доступ к фалам root, то почему же оно не может получить доступ к файлам с правами user, он ведь ниже рангом?)