Dubov 0 11 сентября, 2014 Опубликовано 11 сентября, 2014 · Жалоба получаю такой лог в загрузке ядра: ... mmci-pl18x mmci0: mmc0: MMCI rev 4 cfg 10 at 0x0000000040012c00 irq 49,-1 sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright(c) Pierre Ossman ARMv7-M VFP Extension supported VFS: Cannot open root device "mmcblk0p1" or unknown-block(0,0) Please append a correct "root=" boot option; here are the available partitions: Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) и всё. это Please append a correct "root=" boot option; here are the available partitions: , как я понимаю, говорит о том что ядро не видит разделов на mmc каковы могут быть причины такого поведения ядра? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 12 сентября, 2014 Опубликовано 12 сентября, 2014 · Жалоба А что видит загрузчик? Если остановить загрузку, то можно посмотреть если он видит mmc. mmcblk0p1 ето диск 0 раздел 1. Сколько у вас дисков? Как выглядит строка параметров для ядра? Используете u-Boot? Один раз у меня было подобное потому, что раздел монтировался как для чтения/ записи, но на карточке была установлена защита от записи. Но в вашем случае раздел недоступен как будто его не существует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 12 сентября, 2014 Опубликовано 12 сентября, 2014 (изменено) · Жалоба А что видит загрузчик? Если остановить загрузку, то можно посмотреть если он видит mmc. mmcblk0p1 ето диск 0 раздел 1. Сколько у вас дисков? Как выглядит строка параметров для ядра? Используете u-Boot? Один раз у меня было подобное потому, что раздел монтировался как для чтения/ записи, но на карточке была установлена защита от записи. Но в вашем случае раздел недоступен как будто его не существует. Спасибо за ответ! у меня на mmc карте раздел всего один и карта одна. Поэтому указываю mmcblk0p1 Использую u-boot, строка загрузки: bootargs=stm32_platform=stm32429-disco mem=31M console=ttyS0,115200n8 rootfstyp=ext2 consoleblank=0 root=/dev/mmcblk0p1 rootfstype=ext2 debug rw rdinit=/sbin/ когда включил опцию debug, увидел немного больше информации в консоли: mmci-pl18x mmci0: designer ID = 0x80 mmci-pl18x mmci0: revision = 0x4 mmci-pl18x mmci0: clocking block at 25000000 Hz mmc0: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0 mmci-pl18x mmci0: mmc0: MMCI rev 4 cfg 10 at 0x0000000040012c00 irq 49,-1 mmc0: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0 timing 0 sdhci: Secure Digital Host Controller Interface driver sdhci: Copyright© Pierre Ossman ARMv7-M VFP Extension supported mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 21 width 0 timing 0 VFS: Cannot open root device "mmcblk0p1" or unknown-block(0,0) Please append a correct "root=" boot option; here are the available partitions: Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) не могу понять, что не так Изменено 12 сентября, 2014 пользователем Dubov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 18 сентября, 2014 Опубликовано 18 сентября, 2014 · Жалоба У вас микро карточка или обычная? Если обычная, то может быть на ней ползунок стоит в положении запрета записи? У меня было так. Перешли с обычной карточки на микро, а провод детектирования защиты от записи оставили в воздухе. оно иногда монтировалось, а иногда нет. Я в таких случаях лезу в ядро, ставлю печатание параметров и ищу в чем дело. Можно попробовать смонтиривать на другом носителе или nfs, а потом попробовать смонтировать этот раздел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба удалось "подцепить" файловую систему из флешь. Теперь найти проблему должно быть проще. Вижу в логе загрузки ядра: VFS: Mounted root (romfs filesystem) readonly on device 31:0. Freeing init memory: 16K mmc0: host does not support reading read-only switch. assuming write-enable. mmc0: new SD card at address 0002 mmcblk0: mmc0:0002 00000 1.86 GiB mmcblk0: p1 mbcache: exports duplicate symbol mb_cache_entry_find_next (owned by kernel) kmem_cache_create: duplicate cache ext2_xattr полагаю, что карта определилась, вот только в /dev/ нет mmcblk0p1. Файловая система на внутренней влешке Read only file system. Возможно ли, что именно поэтому не появляестя карточка в /dev ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
miheyk 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба Создайте ноду устройств mmcblk0p1 в каталоге /dev, потому что если udev не поддерживается, то ноду автоматом вы там не увидите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 (изменено) · Жалоба можно немного раскрыть вопрос, что такое нода и как её создать? p.s. не стыдно не знать, стыдно не спрашивать :) Изменено 23 сентября, 2014 пользователем Dubov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
miheyk 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 (изменено) · Жалоба Учиться никогда не стыдно. Ссылка устройства, подробнее на вики тут и тут. Ссылки бывают двух типов: блочные и символьные. Дисковые устройства блочные. Каждый node содержит имя файла устройства и 2 номера (номер драйвера и номер порядковый устройства). О том какие номера указывать можете посмотреть в документации uClinux тут. Создать ноду можно утилитой mknod с правами root - mknod dev/mmcblk0 (ссылка) b(тип) 179(# драйвера) 0(#) -m644(права доступа по желанию). Еще в дистрибутиве поищите файл initramfs, он еще в General настройках ядра прописан. Там перечислены создаваемые автоматом при упаковке initramfs в ядро ноды устройств, папки, файлы и ссылки. Добавьте туда флешку. Можно еще на самой плате создать, если в busybox собран mknod, например как тут. Изменено 23 сентября, 2014 пользователем Mihey_K Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 (изменено) · Жалоба большое спасибо. всё получилось. Интересно, а если расположить файловую систему на mmc, как тогда система определит dev/mmcblk0p1, если сейчас последовательность такая: сначала инициализируется файловая система, а потом уже "цепляется" mmc и раздел. получается существует какой-то промежуточный механизм, который должен создать dev/mmcblk0p1 ещё до загрузки файловой системы. как это происходит? где об этом можно почитать? Изменено 23 сентября, 2014 пользователем Dubov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
miheyk 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба Называется это initramfs, временный виртуальный диск, монтируемый в ОЗУ. Только в вашем случае сейчас он остается корневой файловой системой и из него вы работаете, а например на рабочей станции initrd образ только подготавливает железо и запускает init для загрузки с диска. Поэтому в ядре надо отказаться от initramfs и включить initrd, при этом на флешке у вас должен быть уже подготовленный образ файловой системы (как для initramfs) с доступным для драйвера ядра типом ФС. Собрать образ можно утилитой mkfs, например mkfs.jffs2 для JFFS2. Еще в busybox можно собрать udev, включить его использование и поддержку динамического создания нодов в ядре и тогда ссылки сами будут создавать при обнаружении новых устройств, но это все влечет расход ресурсов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 (изменено) · Жалоба initramfs это файловая система в RAM. у меня сейчас файловая система на внутренней flash, с неё и работаю. а в busybox у меня mdev, вместо udev Изменено 23 сентября, 2014 пользователем Dubov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
miheyk 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба Так зачем вам тогда еще mmc, если все работает? mmc можно просто примонтировать в скрипте init напрямую или добавив в /etc/fstab, а fstab и опцию -a включить в busybox. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 25 сентября, 2014 Опубликовано 25 сентября, 2014 · Жалоба дабы не плодить темы решил спросить тут. Прогу посоветовать источник информации, где бы объяснялись принципы начальной загрузки системы. Например: 1) у меня есть файловая система (папки dev, sys, etc...), при этом в папке sys лежит один пустой файл "placeholder". Когда эту файловую систему собираю в бинарник через buildroot и прошиваю на контроллер, вижу, что в папке sys создано множество папок (dev, devices, platform...). Кто добавил новые папки? 2) в исходниках ядра есть ethernet драйвер eth_driver.c, в Makefile в папке драйвера есть: obj-$(CONFIG_ETH_DRIVER) += eth_driver.c CONFIG_ETH_DRIVER в конфиге ядра включён. Но в логах загрузки ядра о дрйвере нет упоминаний... и я дро весит одинаково, что с драйвером что без. Где в ядре происходит подключение драйвера (insmode, modpobe) ? 3) в buildroot включён mdev (аналог udev). Но у меня корневая файловая система только для чтения, соответственно автоматически нод не появится. Верно? Какие ноды надо сощдать для сетевого утсройства? Вопросов много, поэтому прошу отослать к... источнику инфомрации. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
miheyk 0 25 сентября, 2014 Опубликовано 25 сентября, 2014 · Жалоба в папке sys создано множество папок (dev, devices, platform...). Кто добавил новые папки? Они появляются при монтировании файловой системы sysfs, содержащей сведения о найденном оборудовании и драйверах. Монтирование через команду mount -t sysfs sysfs /sys, например в скрипте rcS в /etc или в /etc/init.d, или через строку none /sys sysfs defaults,noatime 0 0 в /etc/fstab с командой монтирования в том же скрипте rcS - mount -a. Ссылка. Просветиться рекомендую на ресурсе opennet.ru. 2. В menuconfig ядра есть специальный пункт Networking. Там все включили? Где в ядре происходит подключение драйвера (insmode, modpobe) ? У вас включена поддержка модулей или все монолитно? 3. Верно. В ядре кстати еще нужно указать путь до утилиты mdev, кажется в пункте General, точно не помню. Для mdev еще требуется в корне каталог proc, откуда mdev получает данные о событиях. Для fdisk также требуется proc. proc монтируется аналогично п.1. Для сетевых карт ноды не создаются, сет. интерфейс ищите в /sys/class/net Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dubov 0 25 сентября, 2014 Опубликовано 25 сентября, 2014 · Жалоба так как у меня рутовая толкьо для чтения, то в /sys/class/net я должен создать файлы сам. как это сделать и что именно нужно создать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться