По порядку. 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 номер раздела, начиная с нуля)
|