реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ядро не видит разделы и корневую файловую систему на mmc, куда копать?
Dubov
сообщение Sep 11 2014, 18:02
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



получаю такой лог в загрузке ядра:
Код
...
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)


и всё.

это
CODE
Please append a correct "root=" boot option; here are the available partitions:

, как я понимаю, говорит о том что ядро не видит разделов на mmc

каковы могут быть причины такого поведения ядра?
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 12 2014, 12:06
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



А что видит загрузчик?
Если остановить загрузку, то можно посмотреть если он видит mmc.
mmcblk0p1 ето диск 0 раздел 1.

Сколько у вас дисков?
Как выглядит строка параметров для ядра?
Используете u-Boot?

Один раз у меня было подобное потому, что раздел монтировался как для чтения/ записи, но на карточке была установлена защита от записи.
Но в вашем случае раздел недоступен как будто его не существует.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Sep 12 2014, 13:01
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Цитата(Tarbal @ Sep 12 2014, 16:06) *
А что видит загрузчик?
Если остановить загрузку, то можно посмотреть если он видит 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, увидел немного больше информации в консоли:

CODE
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)


не могу понять, что не так

Сообщение отредактировал Dubov - Sep 12 2014, 13:09
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Sep 18 2014, 20:39
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



У вас микро карточка или обычная?
Если обычная, то может быть на ней ползунок стоит в положении запрета записи?
У меня было так. Перешли с обычной карточки на микро, а провод детектирования защиты от записи оставили в воздухе. оно иногда монтировалось, а иногда нет.
Я в таких случаях лезу в ядро, ставлю печатание параметров и ищу в чем дело.
Можно попробовать смонтиривать на другом носителе или nfs, а потом попробовать смонтировать этот раздел.
Go to the top of the page
 
+Quote Post
Dubov
сообщение Sep 23 2014, 11:11
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



удалось "подцепить" файловую систему из флешь. Теперь найти проблему должно быть проще.
Вижу в логе загрузки ядра:

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 ?
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Sep 23 2014, 11:20
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Создайте ноду устройств mmcblk0p1 в каталоге /dev, потому что если udev не поддерживается, то ноду автоматом вы там не увидите.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
Dubov
сообщение Sep 23 2014, 11:24
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



можно немного раскрыть вопрос, что такое нода и как её создать?

p.s. не стыдно не знать, стыдно не спрашивать sm.gif

Сообщение отредактировал Dubov - Sep 23 2014, 11:31
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Sep 23 2014, 12:01
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Учиться никогда не стыдно. Ссылка устройства, подробнее на вики тут и тут. Ссылки бывают двух типов: блочные и символьные. Дисковые устройства блочные. Каждый node содержит имя файла устройства и 2 номера (номер драйвера и номер порядковый устройства). О том какие номера указывать можете посмотреть в документации uClinux тут. Создать ноду можно утилитой mknod с правами root - mknod dev/mmcblk0 (ссылка) b(тип) 179(# драйвера) 0(#) -m644(права доступа по желанию). Еще в дистрибутиве поищите файл initramfs, он еще в General настройках ядра прописан. Там перечислены создаваемые автоматом при упаковке initramfs в ядро ноды устройств, папки, файлы и ссылки. Добавьте туда флешку. Можно еще на самой плате создать, если в busybox собран mknod, например как тут.

Сообщение отредактировал Mihey_K - Sep 23 2014, 12:05


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
Dubov
сообщение Sep 23 2014, 12:30
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



большое спасибо. всё получилось.

Интересно, а если расположить файловую систему на mmc, как тогда система определит dev/mmcblk0p1, если сейчас последовательность такая: сначала инициализируется файловая система, а потом уже "цепляется" mmc и раздел.
получается существует какой-то промежуточный механизм, который должен создать dev/mmcblk0p1 ещё до загрузки файловой системы.

как это происходит? где об этом можно почитать?

Сообщение отредактировал Dubov - Sep 23 2014, 12:45
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Sep 23 2014, 13:58
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Называется это initramfs, временный виртуальный диск, монтируемый в ОЗУ. Только в вашем случае сейчас он остается корневой файловой системой и из него вы работаете, а например на рабочей станции initrd образ только подготавливает железо и запускает init для загрузки с диска. Поэтому в ядре надо отказаться от initramfs и включить initrd, при этом на флешке у вас должен быть уже подготовленный образ файловой системы (как для initramfs) с доступным для драйвера ядра типом ФС. Собрать образ можно утилитой mkfs, например mkfs.jffs2 для JFFS2.
Еще в busybox можно собрать udev, включить его использование и поддержку динамического создания нодов в ядре и тогда ссылки сами будут создавать при обнаружении новых устройств, но это все влечет расход ресурсов.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
Dubov
сообщение Sep 23 2014, 14:42
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



initramfs это файловая система в RAM. у меня сейчас файловая система на внутренней flash, с неё и работаю. а в busybox у меня mdev, вместо udev


Сообщение отредактировал Dubov - Sep 23 2014, 14:42
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Sep 23 2014, 15:00
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Так зачем вам тогда еще mmc, если все работает? mmc можно просто примонтировать в скрипте init напрямую или добавив в /etc/fstab, а fstab и опцию -a включить в busybox.


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
Dubov
сообщение Sep 25 2014, 08:04
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



дабы не плодить темы решил спросить тут.

Прогу посоветовать источник информации, где бы объяснялись принципы начальной загрузки системы. Например:

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). Но у меня корневая файловая система только для чтения, соответственно автоматически нод не появится. Верно? Какие ноды надо сощдать для сетевого утсройства?

Вопросов много, поэтому прошу отослать к... источнику инфомрации.

Спасибо.
Go to the top of the page
 
+Quote Post
Mihey_K
сообщение Sep 25 2014, 13:02
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 27-09-06
Из: Irkutsk
Пользователь №: 20 747



Цитата
в папке 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


--------------------
Блог о разработке на CC430, SIM900, GPS, ARM и не только...
Go to the top of the page
 
+Quote Post
Dubov
сообщение Sep 25 2014, 13:37
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



так как у меня рутовая толкьо для чтения, то в /sys/class/net я должен создать файлы сам. как это сделать и что именно нужно создать.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 23:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016