Как запустить Ubuntu под руку через U-boot? [закрыто]

Как запустить Ubuntu под руку через U-boot? У меня прошивка поддерживает только U-boot.

1
задан 5 June 2019 в 10:37

1 ответ

Универсального руководства по установке ARM и U-boot не существует, поскольку производители оборудования в целом хотят держать свое оборудование закрытым. То, насколько трудным он становится, полностью зависит от оборудования и производителя этого оборудования.

См. раздел официальной документации 5.1 имеет универсальный метод для определения и настройки параметров, когда вам нужно использовать u-boot, но также прочтите раздел 3.7:

1-я часть 3.7:

3.7.1. Системы с микропрограммой U-Boot

Как уже упоминалось ранее, к сожалению, не существует стандарта для системной прошивки в системах ARM. Даже поведение разных систем, которые номинально используют одну и ту же прошивку, может быть совершенно разным. Это объясняется тем, что большая часть устройств, использующих архитектуру ARM, представляет собой встроенные системы, для которых производители обычно создают сильно настроенные версии встроенного программного обеспечения и включают патчи для конкретных устройств. К сожалению, производители часто не отправляют свои изменения и расширения разработчикам основного программного обеспечения, поэтому их изменения не интегрированы в более новые версии оригинального программного обеспечения.

В результате даже в недавно проданных системах часто используется микропрограмма, основанная на многовековой версии микропрограммы, модифицированной производителем, базовая кодовая база которой значительно расширилась, и в то же время предлагает дополнительные функции или демонстрирует другое поведение в определенных аспекты. Кроме того, наименования встроенных устройств не согласованы между различными модифицированными производителем версиями одной и той же прошивки, поэтому практически невозможно предоставить пригодные для использования независимые от продукта инструкции для систем на базе ARM.

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

5.1.3.1. TFTP-загрузка в U-Boot

Сетевая загрузка в системах, использующих прошивку U-Boot, состоит из трех этапов:

  • a) настройка сети,
  • b ) загрузка изображений (kernel / initial ramdisk / dtb) в память
  • c) фактическое выполнение ранее загруженного кода.

Сначала необходимо настроить сеть либо автоматически через DHCP, запустив

setenv autoload no
dhcp

, либо вручную, установив несколько переменных среды

setenv ipaddr <ip address of the client>
setenv netmask <netmask>
setenv serverip <ip address of the tftp server>
setenv dnsip <ip address of the nameserver>
setenv gatewayip <ip address of the default gateway>

При желании вы можете сделать эти настройки постоянными, запустив

saveenv

После этого вам нужно загрузить изображения (kernel / initial ramdisk / dtb) в объем памяти. Это делается с помощью команды tftpboot, которой должен быть предоставлен адрес, по которому изображение должно храниться в памяти. К сожалению, карта памяти может варьироваться от системы к системе, поэтому нет общего правила, какие адреса могут быть использованы для этого.

В некоторых системах U-Boot предопределяет набор переменных среды с подходящими адресами загрузки: kernel_addr_r, ramdisk_addr_r и fdt_addr_r. Вы можете проверить, определены ли они, запустив

printenv kernel_addr_r ramdisk_addr_r fdt_addr_r

. Если они не определены, вы должны проверить документацию вашей системы на предмет соответствующих значений и установить их вручную. Для систем, основанных на SOC Allwinner SunXi (например, Allwinner A10, имя архитектуры «sun4i» или Allwinner A20, имя архитектуры

“sun7i”), you can e.g. use the follwing values:

setenv kernel_addr_r 0x46000000
setenv fdt_addr_r 0x47000000
setenv ramdisk_addr_r 0x48000000

). Когда определены адреса загрузки, вы можете загрузить образы в память с ранее определенного tftp-сервера с

tftpboot ${kernel_addr_r} <filename of the kernel image>
tftpboot ${fdt_addr_r} <filename of the dtb>
tftpboot ${ramdisk_addr_r} <filename of the initial ramdisk image>

Третья часть - установка командной строки ядра и фактическое выполнение загруженного кода. U-Boot передает содержимое « переменная среды bootargs »в качестве командной строки для ядра, поэтому любые параметры для ядра и установщика - такие как консольное устройство (см. раздел 5.3.1,« Загрузочная консоль ») или параметры предварительного заполнения (см. раздел 5.3.2,« Установщик Ubuntu »). Параметры »и Приложение B,« Автоматизация установки с использованием предварительного заполнения »- можно задать с помощью команды, подобной

setenv bootargs console=ttyS0,115200 rootwait panic=10

Точная команда для выполнения ранее загруженного кода зависит от используемого формата изображения С uImage / uInitrd команда имеет вид

bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}

и с na Это образы Linux

bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}

Примечание: при загрузке стандартных образов linux важно загрузить исходный образ виртуального диска после ядра и dtb, так как U-Boot устанавливает размер файла переменная к размеру последнего загруженного файла, и команда bootz требует, чтобы размер образа виртуального диска работал правильно. В случае загрузки ядра, специфичного для платформы, то есть ядра без дерева устройств, просто пропустите параметр $ {fdt_addr_r}.

2
ответ дан 5 June 2019 в 10:37

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

Похожие вопросы: