|
файловая система на SD карте, ARM9 |
|
|
|
Jan 13 2012, 08:48
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
в своё время ставил Линукс на ARM9 пользуясь этой ссылкой http://dmilvdv.narod.ru/AT91SAM9260/index.html?linux.html файловая система стояла на Nandflash из файла аrch/arm/mach-at91/board-sam9260-ek.c: static struct mtd_partition __initdata ek_nand_partition[] = { { .name = "Bootstrap", .offset = 0, .size = SZ_4M, }, { .name = "rootfs", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, }; теперь нет NandFlash и файловая система будет стоять на SDкарточке (бутсрап будет на DataFlash) как задать расположение файловой системы на SDкарте?
|
|
|
|
|
 |
Ответов
(1 - 9)
|
Jan 15 2012, 16:22
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(mdmitry @ Jan 13 2012, 15:59)  Посмотрите, как сделано для платы siberia ( http://www.siberia-ge.com/). Рецепт, вроде, универсален. Можно всю файловую систему сделать под QEMU, а далее перенести на карту. (Именно так и делал для Debian). На форуме были ветки с обсуждением. Поиск поможет. Если честно не нашёл на сайте проекта Siberia ничего подходящего, так как ьам говорится о том что нужно собрать Linux, скинуть архив рутовой на SD карту и всё само заработает (Linux "подцепит" рутовую с SD карты). Я думаю как-то надо указать где "брать" rootfs при старте.
Сообщение отредактировал TigerSHARC - Jan 15 2012, 16:25
|
|
|
|
|
Jan 16 2012, 07:12
|
Участник

Группа: Свой
Сообщений: 72
Регистрация: 28-05-08
Из: Минск
Пользователь №: 37 873

|
с какого раздела брать рутфс во время init ядру указывается в опциях загрузки через параметр root=/dev/X, где X зависит от того, на каком устройстве рутфс находится, например mmcblk0 для первого раздела на SDcard, или mtdblock0 для 1го раздела NAND. Примеры загрузки U-Boot
|
|
|
|
|
Jan 16 2012, 09:58
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648

|
Цитата(TigerSHARC @ Jan 15 2012, 19:22)  Если честно не нашёл на сайте проекта Siberia ничего подходящего, так как ьам говорится о том что нужно собрать Linux, скинуть архив рутовой на SD карту и всё само заработает (Linux "подцепит" рутовую с SD карты). Я думаю как-то надо указать где "брать" rootfs при старте. Alesha Вам правильно указал. На сайте Siberia после регистрации были доступны подробные материалы о конфигурации и загрузки. Возможно, полезно посмотреть сайт starterkit'а
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Jan 16 2012, 12:56
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Стало быть, путь до rootfs указывается в Uboot? Тогда к чему это(взято с сайта http://dmilvdv.narod.ru/AT91SAM9260/index.html?linux.html):Задать расположение файловой системы и имена разделов.  /* * NAND flash */ static struct mtd_partition __initdata ek_nand_partition[] = { { .name = "Bootstrap", .offset = 0, .size = SZ_4M, }, { .name = "rootfs", .offset = MTDPART_OFS_NXTBLK, .size = MTDPART_SIZ_FULL, }, }; И вот ещё(из дискусии на starterkit.ru): ...находите, дописываете свой скрипт по автомаунту и автозапуску с флешки.. потом запускаете скрипт сборки системы, который состегнет старое ядро и новую рутовую, и этот бинарник прошиваете во флеш.. (ссылка http://starterkit.ru/html/index.php?name=f...w&id=14748) а вы пишете что просто через U-boot всё решается... или можно и так и так?
|
|
|
|
|
Jan 16 2012, 14:02
|
Участник

Группа: Свой
Сообщений: 72
Регистрация: 28-05-08
Из: Минск
Пользователь №: 37 873

|
По порядку. static struct mtd_partition это список разделов nand, который необходимо знать ядру. При загрузке с nand u-boot передает ядру параметр загрузки root= который указывает где располагается rootfs. Ядро в свою очередь перед тем как замонтировать rootfs производит инициализацию всех вкомпилированных в него драйверов, в момент загрузки ядра происходит регистрирование mtd устройства в системе, с этого момента ядро знает таблицу разделов c nand, как только начинается стадия init0 происходит монтирование раздела с rootfs, какой раздел монтировать как раз и передается через параметр root=. В случае загрузки с SDcard в ядро должна быть вкомпилирована поддержка sdcard, но в этом случае после инициализации драйвера sdcard система сама определить таблицу разделов на устройстве, и опять же на стадии init0 подцепит раздел, который передан через root=, а описание таблицы разделов nand уже необязательно.
То, что пишут на стартерките по-моему вообще отдельная песня, у меня сложилось впечатление что они через u-boot разворачивают рутфс в память а потом монтируют рутфс уже непосредственно из памяти (dev/ram0), и в их случае действительно надо после загрузки надо еще домонтировать sdcard (потому что предварительно смонтирован только раздел из памяти), и запускать уже из sdcard (хотя не понимаю что им мешало раздел подцепить в fstab)
Проще говоря, если надо рутфс с sdcard, то надо передать ядру параметр rootfs=/dev/mmcblockX (где X номер раздела, начиная с нуля)
|
|
|
|
|
Jan 18 2012, 20:00
|

Местный
  
Группа: Свой
Сообщений: 290
Регистрация: 17-08-08
Из: Чернигов
Пользователь №: 39 647

|
Вот рабочий пример для загрузки с SD/MMC карты: Код console=ttyS0,115200 root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=5 mem=64M
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|