Как и сказал Jury093, создаю отдельную тему под этот вопрос...
Итак, нужно ядро и корневую ФС записать на юсб-флешку (первый раздел - под ядро, второй - под ФС, оба ext2), и загружаться с нее.
Что я сделал:
Сначала нужно включить поддержку ext2 в У-буте. В файле /home/user/src/u-boot-2010.09/include/configs/at91sam9m10g45ek.h раскомментировал строчку #define CONFIG_CMD_EXT2 1.
Далее запустил в папке /home/user/src/u-boot-2010.09/ запустил скрипт make_config, а затем make_bin.
Обновил У-бут на плате по тфтп.
Далее прерываю загрузку платы, захожу в У-бут.
(ядро лежит в первом разделе флешки, которая видится как USB device 0 при вводе команды usb dev).
В У-буте ввожу usb reset; ext2load usb 0:1 70400000 zlinux; bootm 70400000.
И пошло-поехало… Ядро грузится:
Loading file "zlinux" from usb device 0:1 (usbda1)
В конце концов, ядро загружается, распаковывается, цепляет корневуху на втором разделе флешки и все нормально работает.
Что меня смутило? То, что на строчке Loading file "zlinux" from usb device 0:1 (usbda1) У-бут «висит» достаточно долго (загрузка НАМНОГО дольше, чем если грузить ядро из нанда). При этом флешка отчаянно мигает. Весьма странно… Файл-то всего занимает 2 Мб. Нормальна ли колоссальная задержка при чтении? Чем она может быть вызвана?
З.Ы. Скорей всего, все дело в медленной работе самого У-бута с ext2... Если я прав, то можно ли как-то грузить ядро с юсб-флешки, не привязываясь к какой-либо ФС?
с чем и поздравляю, все гуд.
осталось потестировать юсб-накопители на совместимость для загрузки. у меня были преценденты: некоторые накопители отваливаются по тайм-ауту (речь о юбуте для 9260). с 9g45 может быть похожая ситуация..
видимо попробовать задействовать команду usbboot
с утра порылся в сорцах, пробежался по инету - как-то очень туманно.. связано с неким словом raw, но как это сделать, пока не придумал..
на сайте юбута есть невнятный тред тыц
более вероятно, что затык при работе с USB. видимо используется какой-то режим, предположим трансфер мелкими пакетами..
повторил все написанное в первом сообщение - ядро грузилось секунд 20 (2.4МБ) с саташного винчестера..
У меня как-то все не так безоблачно: с ext2 раздела ядро грузится где-то 1 мин 5 с... С fat32 раздела уже гораздо быстрее (~ 7 с). Но есть одно "но"
В общем, с fat'ом у меня облом на ВМ с Дебианом. Через GParted нельзя отформатировать под fat. Через командную строку mkfs.vfat /dev/sda1 ругается (mkfs.vfat: command not found). При этом mkfs.ext2 /dev/sda1 все делает нормально.
Решил флешку поэтому отформатировать в Виндовс (задал фат32), потом распаковал корневую ФС, залил в папку /boot флешки файл ядра.
Добавил в У-бут поддержку fat, подкрутил bootargs, ядро с флешки загрузилось, но вот... Процесс загрузки всей системы обрывается в конце на этом :
Перекомпилировал ядро с опцией MSDOS fs support (хотя должно работать и без этого, т.к. раньше система читала/писала на фат32 флешку, отформатированную в Виндовс, правда, эта флешка монтировалась к корневой ФС).
У-бут взял ядро с флешки, но процесс запуска всей системы опять оборвался в конце, выдав те же самые сообщения.
Тут дело в том, что отформатированный через Виндовс под фат32 раздел в принципе не возьмется ядром при старте... Или же причина в ином?
хм.. очень много букоф.. поделим интеграл на части..
1. первое простейшее, что приходит в голову - под линуксом пилите флешку посредством fdisk на два primary, первый раздел под размер ядра или больше, второй все остальное, у первого меняете тем же fdisk тип партиции (я ставил кажется 0x0e). Выход с сохранением. потом форматируете второй раздел под Ext2/Ext3. Потом суете флешку в Уындовз и форматируете первый раздел в FAT16.. результатом хлопот будет пиленная на два раздела флешечка:
sda1 (vfat) туда складываете ядро
sda2 (ext2) сюда распаковываете свою рутовую
2. вариант сложнее - выясните в каком пакете вашего дистрибутива линукса водится mkfs.vfat (для дебьяна это тыц
) и поставьте его, тогда не надо будет напрягать уындовз
и кстати:
проконтролируйте командой mount как монтируется этот раздел..
3. раскладывать рутовую под раздел FAT/FAT32 плохая идея, сим-линки и права пойдут по женской линии..
hint штатными средствами Windows нельзя распилить флешку, только единый том..
зы в вышеприведенном логе не хватает цитирования строки загрузки
извините что встреваю с неумным вопросом: а почему такая скорость высокая скорость загрузки (5-7 сек)? потому что там USB-HiSpeed который в отличие от USB1.0 (в платах с 9260 и XE512) быстрее даже чем NAND? а скорость загрузки с SD-карты на этой плате тоже будет такой высокой?
это высокая?! да оно тупит по-черному.. в юбуте слоеный пирог выдранных кусков из линукса и усеченных драйверов работы с железом. зачастую по принципу - заработало и достаточно..
вот как юбут видит железяку:
это не High это Full speed режим, Hi включается в линухе..
не забываем что речь о 9g45 а это 400МГц против 9260/хе512 с 200..
о скорости загрузки с SD могут сказать Саша или Павел, мне пока неведомо..
наверно здесь уместно написать:
попробовал проверить скорость чтения с U-Boot из SD карточки - субъективно одинаково получилось
что с первого раздела (vfat)
что со второго раздела (ext2)
бинарник считался одинаково шустро
т.о. пока осталась невыясненной аномально низкая скорость USB-EXT2..