Копирование ядра и загрузки в SDCard

У меня есть плата ARM Freescale I.MX, для которой я готовлю загрузчик, ядро ​​и корневую файловую систему на SD-карте. Я немного запутался в том порядке, в котором я делю и копирую свои файлы в SDCard. Допустим, у меня есть пустой SDCard размером 4 ГБ. Я использовал gparted, чтобы сначала разделить его на:

Первый раздел размером 400 МБ как система FAT32. это мой загрузочный раздел Второй раздел - это остальная часть карты как ext3. Это мой корневой раздел файловой системы.

Допустим, моя SD-карта находится в /dev/sdb.

Теперь я видел много документов, немного отличающихся по способу копирования загрузочных файлов.

Какой правильный путь?

Способ 1:

(без монтирования разделов sdb: sudo dd if=u-boot.bin of=/dev/sdb bs=512 seek=2 sudo dd if=uImage of=/dev/sdb bs=512 seek=2

Смонтируйте sdb2 для копирования rootfs: mount /dev/sdb2 /mnt/rootfs скопируйте rootfs: tar -xf tarfile /mnt/rootfs

Способ 2: Смонтируйте загрузочный раздел sdb1: mount /dev/sdb1 /mnt/ загрузочная копия uboot и ядро: cp u-boot.bin /mnt/boot/ cp uImage /mnt/boot/

Затем скопируйте rootfs как указано выше!

Какой правильный. Я пробовал два, но SDCard даже не загружается. Когда я попробовал способ 1, карта загружалась до тех пор, пока не говорилось, что rootfs не найден в разделе. Я вытащил карту и вставил и обнаружил, что первый толстый раздел 32 каким-то образом "уничтожен", так как он говорит "нераспределенный" в gparted.

Пожалуйста помоги.

3 ответа

Ниже приведен скрипт для прошивки бинарных файлов на SD-карту для моей платы Arndale OCTA. Вы можете увидеть размещение двоичных файлов загрузчика:

BL1

dd iflag = dsync oflag = dsync if = arndale_octa.bl1.bin of = / dev / sde bs = 512 seek = 1

НД2

dd iflag = dsync oflag = dsync if =.. / arndale_octa.bl2.bin of = / dev / sde bs = 512 seek = 31

UBoot

dd iflag = dsync oflag = dsync if = u-boot.bin of = / dev / sde bs = 512 seek = 63

ядро и программное обеспечение доверия, ....

Обратите внимание: 1) Таблица разделов имеет смещение SD card 0 (поиск 0), затем вы должны выполнить:fdisk /dev/sde и создать параметры, которые не перекрываются с блоками, открытыми ядром или программным обеспечением доверия. 2) добавьте опцию "dsync" в команду dd, чтобы гарантировать, что все записанные данные немедленно сбрасываются на SD-карту

Вы должны пометить первый раздел как загрузочный. Проверьте информацию о первом разделе в утилите gparted или disk.

Из дисковой утилиты вы можете пометить раздел как загрузочный. выбрав конкретный раздел и перейдя к опции "дополнительные действия" -> "изменить тип раздела".

В большинстве случаев для процессора imx требуется загрузчик со смещением 0x400. Поэтому, что бы вы ни делали для u-boot, это правильно, для этого вам нужно использовать команду dd.

sudo dd if=u-boot.bin of=/dev/sdb bs=512 seek=2

Разделяя SD-карту, убедитесь, что у вас достаточно места для образа загрузки. Итак, начните свой первый загрузочный раздел со смещения, скажем, 1 МБ.

Вы можете просто скопировать свои переменные uImage и окружения (uEnv.txt или boot.scr) через cp команда.

Также для rootfs вы можете выполнить те же действия, что и для ядра.

Другие вопросы по тегам