Странное ограничение в 4.5 мб файловой системы не позволяет использовать все вкусности.
На сколько я понял, флеш память разбита на 2 куска: 30 мб и 200 мб. По умолчанию грузится с первого. Если образ больше какого-то размера, то при загрузке ядро валится в краш:
такие сообщения валятся постоянно.
Возникло желание перевести корневую ФС в NAND.
Скопировал файлы в /mnt/nand, однако как подсказать uboot, откуда грузить систему?
Где про это можно прочитать, применительно к SK-iMX233?
U-boot здесь не причем, его вобще нет в штатной системе.
Копируйте корневуху в NAND да меняйте аргументы запуска ядра, примеры конфигов в корне ядра лежат.
по моим представлением загрузка происходит на x86 обычно так:
bios -> extlinux|grub|lilo -> initrd+vmlinuz -> rootfs
при этом биос знает где искать extlinux, который в свою очередь имеет параметры, по которым он знает куда лезть за initrd
в случае платы, вероятно, все обстоит аналогично:
CPU -> uboot -> linux.sb
как я полагаю, uboot должен получить параметры, с какого носителя загрузиться. Или я не прав?
настоятельно рекомендую - почитайте форум, покопайтесь в каталоге сорцов на прилагаемом диске..
и абстрагируйтесь от больших компов - в случае эмбеддед систем все немного специфичнее. нет понятия БИОС, нет ЛИЛО, нет ГРУБа
есть стартовые загрузчики, возможны промежуточные
в вашем случае видимо для загрузки рутфс с нанда, надо поднять поддержку нанда в ядре, поддержку ФС в нанде, прописать параметры запуска ядра, прошить в нанд свой образ ФС и пробовать грузиться
по мере возникновения проблем их анализировать, в случае затыка вполне можно выкладывать сюда куски лога и вопросы..
часть ваших вопросов уходит из области iMX233 в общие вопросы по работе эмбеддед линукс. можно подчерпнуть некие знания на этом форуме и транспонировать на свои задачи.
и тыпы..
Последовательность загрузки очень условная вещь и u-boot, как правило, уже вторичный загрузчик, наличие которого дело комфорта.
U-boot текущей версии не имеет поддержки NAND (да и сеть у меня глючила, у sasamy работала), поэтому он может только грузить по TFTP и поэтому отсутствует в системе.
Первичный загрузчик интегрируется в ядро на этапе сборки, от чего и название linux.sb
Источник носителя загрузки определяют джампера, а вот откуда для ядра корневую ФС монтировать , определяют аргументы запуска ядра.
Спасибо за ответы!
на сколько я понимаю, nand разделена на два раздела, в одном из них по-умолчанию содержится прошивка, тот самый linux.sb. Процедура nand_tftp_update, собственно, и записывает ее туда.
но если положить во второй раздел, ведь все поменяется? или загрузчик смотрит в первый раздел, если не нашел - во второй?
Пока нет возможности проверить, потому и спрашиваю...
Загрузчик, интегрированный в ядро, вобще никуда не смотрит, просто копирует из NAND (в механику адресообразования и пропуска бедблоков не вдавался) ядро и стартует его.
Ядро уже само должно знать-решать, где у него будет корневуха, и тут возможна туча вариантов, начиная с initramfs и до netfs ...
В вашем случае, как я уже говорил, нужно создать или скопировать корневую во втором разделе NAND (в загруженой системе фигурирует только один раздел UBIFS, потому как первый без ФС), а потом изменить аргументы ядра на монтирование UBIFS раздела как корневой ФС.
Аргументы ядра лучше не копировать (путем подмены всего конфига), а переписать в ручную через menuconfig и не забудьте отключить initramfs, иначе больше памяти от манипуляции переноса корневухи не станет .
вот теперь до меня доперло.
буду пробовать, спасибо!
Жаль initramfs нельзя делать больше 5 мб, все-таки такой подход надежнее. Я в своих VoIP серверах подобного подхода придерживаюсь...