Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: файловая система на SD карте
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
TigerSHARC
в своё время ставил Линукс на 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карте?
mdmitry
Посмотрите, как сделано для платы siberia (http://www.siberia-ge.com/). Рецепт, вроде, универсален. Можно всю файловую систему сделать под QEMU, а далее перенести на карту. (Именно так и делал для Debian). На форуме были ветки с обсуждением. Поиск поможет.
TigerSHARC
Цитата(mdmitry @ Jan 13 2012, 15:59) *
Посмотрите, как сделано для платы siberia (http://www.siberia-ge.com/). Рецепт, вроде, универсален. Можно всю файловую систему сделать под QEMU, а далее перенести на карту. (Именно так и делал для Debian). На форуме были ветки с обсуждением. Поиск поможет.


Если честно не нашёл на сайте проекта Siberia ничего подходящего, так как ьам говорится о том что нужно собрать Linux, скинуть архив рутовой на SD карту и всё само заработает (Linux "подцепит" рутовую с SD карты).
Я думаю как-то надо указать где "брать" rootfs при старте.
Alesha
с какого раздела брать рутфс во время init ядру указывается в опциях загрузки через параметр root=/dev/X, где X зависит от того, на каком устройстве рутфс находится, например mmcblk0 для первого раздела на SDcard, или mtdblock0 для 1го раздела NAND. Примеры загрузки U-Boot
mdmitry
Цитата(TigerSHARC @ Jan 15 2012, 19:22) *
Если честно не нашёл на сайте проекта Siberia ничего подходящего, так как ьам говорится о том что нужно собрать Linux, скинуть архив рутовой на SD карту и всё само заработает (Linux "подцепит" рутовую с SD карты).
Я думаю как-то надо указать где "брать" rootfs при старте.

Alesha Вам правильно указал.
На сайте Siberia после регистрации были доступны подробные материалы о конфигурации и загрузки.
Возможно, полезно посмотреть сайт starterkit'а
TigerSHARC
Стало быть, путь до rootfs указывается в Uboot?
Тогда к чему это(взято с сайта http://dmilvdv.narod.ru/AT91SAM9260/index.html?linux.html):

Задать расположение файловой системы и имена разделов.

laughing.gif/*

* 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 всё решается... laughing.gif
или можно и так и так?

mdmitry
Цитата(TigerSHARC @ Jan 16 2012, 15:56) *
Стало быть, путь до rootfs указывается в Uboot?

Да, один из возможных вариантов. Вы в окружении запуска ядра в U-boot указываете параметры запуска. Из командной строки U-boot эти параметры легко редактируются.
На плате ATMEL sam9260-ek у меня ядро было во flash, а ФС на SD карте. Можете U-boot и linux kernel держать в dataflash (nandflash), а ФС на SD.
Alesha
По порядку.
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 номер раздела, начиная с нуля)
mdmitry
Цитата(Alesha @ Jan 16 2012, 17:02) *
Проще говоря, если надо рутфс с sdcard, то надо передать ядру параметр rootfs=/dev/mmcblockX (где X номер раздела, начиная с нуля)

Да и не забыть вставить команду ожидания монтирования rootfs. В ядре должна быть включена поддержка sdcard (mtd устройства).
xor.kruger
Вот рабочий пример для загрузки с SD/MMC карты:

Код
console=ttyS0,115200 root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=5 mem=64M
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.