LINUX.ORG.RU

Возможно ли во скомпиленном U-boot поменять переменные окружения по дефолту?

 ,


0

1

Здравия! Возможно ли в уже скомпилированном U-boot поменять переменные? Кто компилил забыл «saveenv», можно ли добраться до переменных и изменить их?

★★★★★

Встроенные нет. Через saveenv можно менять только те, которые лежат отдельно в ПЗУ.

Встроенные только через пересборку.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от burato

А. Понял суть вопроса.

Зависит от того, где эти загружаемые убутом переменные лежат. Если вшиты в сам образ убута, то будет достаточно сложно.

Если где-то отдельно в ПЗУ (в SPI Flash, в секторе eMMC, в файловой системе eMMC), то можно попробовать их оттуда скачать, отредактировать и записать обратно.

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

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz

Встроенные только через пересборку.

Какой же этот u-boot убогий. Без пересборки с ним ничего не сделаешь. До сих пор даже меню загрузки не сделали, надо каждый раз строчить:

pci enum
usb start # для каждой шины команды разные видимо чтобы запомнить было труднее
run bootcmd_usb0
X512 ★★★★★
()
Ответ на: комментарий от X512

Переменные можно редактировать, если они лежат в ПЗУ отдельно.

надо каждый раз строчить

А скрипт bootcmd не судьба написать?

apt_install_lrzsz ★★★
()
Ответ на: комментарий от X512

До сих пор даже меню загрузки не сделали

Потому что подавляющее большинство устройств, которые убут используют, не только дисплея и клавиатуры, но и портов для их подключения не имеет. Это не ПКшный grub.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz
U-Boot 2021.04-00056-g13ac02db31-dirty (Apr 28 2021 - 22:41:09 +0800) beelink                                                                     
                              
Model: Beelink GT-King
SoC:   Amlogic Meson G12B (S922X) Revision 29:a (40:2)                   
DRAM:  3.8 GiB                                              
MMC:   sd@ffe03000: 0, sd@ffe05000: 1, mmc@ffe07000: 2                   
Loading Environment from nowhere... OK                                   
In:    serial  
Out:   serial                                                                                                           
Err:   serial           
Net:   eth0: ethernet@ff3f0000
Hit any key to stop autoboot:  0   

Howhere...

burato ★★★★★
() автор топика
Ответ на: комментарий от apt_install_lrzsz

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

Загрузочное меню Haiku без проблем по UART работает.

X512 ★★★★★
()
Ответ на: комментарий от burato

Информативно. Видимо, этот убут libastral использует.

Предположу, что окружение всё же вкомпилено в сам убут. Это нехорошо.

А загрузка происходит с eMMC или карты SD?

apt_install_lrzsz ★★★
()
Ответ на: комментарий от X512

Убутовский bootmenu тоже с этим не имеет проблем.

Я говорю о том, что данный загрузчик предназначен преимущественно для эмбедщины, которую один раз прошил и убрал далеко на полку (чердак, глухой лес). Поэтому наличие такого меню там именно возможная опция, а не повседневность.

Утрированно, в 99% устройств это не нужно вообще никогда.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от burato

Значит можно подключить SD в комп, скопировать оттуда образ убута и в HEX-редакторе найти и поправить окружение. Важно: скорее всего нельзя будет сделать строку переменной окружения длиннее. Только укоротить или оставить такой же, просто поменяв одни символы на другие. Ещё при этом побьётся контрольная сумма образа. Не знаю, как bootrom (или SPL, если он есть) на это отреагирует.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz

Что тогда эта ерунда на смартфонах делает? Это вполне себе ПК общего назначения, а не embedded железка которую можно один раз прошить и больше не трогать.

X512 ★★★★★
()
Ответ на: комментарий от burato

про бутменю, он, конечно же, не слышал

Это которое от ОС? Чтобы показалось это меню, оно само должно сначала загрузиться, а с этим могут быть проблемы. Оно может быть установлено на диске, отличающимся от диске загрузки по умолчанию указанным во время компиляции.

X512 ★★★★★
()
Ответ на: комментарий от apt_install_lrzsz

так у меня бинарный файл убута есть, который я на флешку записал.

Можно про редактирование HEX-редактором подробнее?

burato ★★★★★
() автор топика
Ответ на: комментарий от X512

Что тогда эта ерунда на смартфонах делает?

Грузит ОС. Что и должна делать. А в чём проблема?

Это вполне себе ПК общего назначения, а не embedded железка которую можно один раз прошить и больше не трогать.

С точки зрения возможностей ОС - да. А с точки зрения железа - типичная эмбедщина.

А вот почему производители смартфонов вшивают вполне обычные для этого загрузчики, а не загрузчик Haiku, лишая пользователя возможности выбора Select safe mode, это не ко мне вопрос. Я смартфоны не делаю.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от burato

Ну, в hex-редакторах обычно есть поле, отображающее ASCII символы, полученные из двоичного представления.

Открываешь редактором образ. Например:

xxd uboot.bin

И в этом текстовом поле ищешь то, что похоже на текст переменных окружения. Если найдёшь, то можешь попробовать подменить там буквы на другие.

Пример сейчас привести не могу - не у компа уже.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz

Грузит ОС. Что и должна делать. А в чём проблема?

А если я хочу дуалбут на смартфоне сделать? Грузиться с SD карты или USB?

А с точки зрения железа - типичная эмбедщина.

И в этом проблема. Урезают возможности довольно мощного железа. Благо постепенно везде приходит UEFI в том числе в u-boot.

X512 ★★★★★
()
Ответ на: комментарий от X512

А если я хочу дуалбут на смартфоне сделать? Грузиться с SD карты или USB?

Производитель смартфона за тебя уже решил, что тебе это не нужно. Но опять же, это не вина убута. В убуте при помощи скриптов окружения можно задать хоть чтобы ядро грузилось с emmc, DTB с SD, логотип с USB-накопителя, а initramfs вообще с TFTP и ещё кинцо тебе оттуда же скачало. Да и вариантов скриптов можно насоздавать кучу, пока памяти хватает. И докучи это bootmenu обернуть.

Я из твоих постов понял, что претензии к убуту у тебя именно оттого, что ты с его скриптованием не знаком совсем. Без этого да, такие загрузчики были бы не нужны в общем случае.

И в этом проблема. Урезают возможности довольно мощного железа. Благо постепенно везде приходит UEFI в том числе в u-boot.

В каком именно плане урезают? Накопители поддерживаются достаточно разных типов.

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

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz

Но опять же, это не вина убута.

Это вина u-boot потому что BIOS и UEFI при запуске сканируют диски, автоматически распознают с каких можно загрузиться и выдают список для выбора. И никаких скриптов. Скрипты – признак кривых рук.

Можно без проблем выводить список ОС на экран смартфона и выбирать тач скрином или кнопками регулирования громкостью.

В убуте при помощи скриптов окружения можно задать хоть чтобы ядро грузилось с emmc, DTB с SD, логотип с USB-накопителя, а initramfs вообще с TFTP и ещё кинцо тебе оттуда же скачало.

Никому не нужные извращения.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от X512

Убут - не аналог BIOS и UEFI. Это загрузчик операционной системы. Ты вообще красное с солёным сравниваешь.

Если проще с аналогами будет, то с т. з. процесса загрузки BIOS в ПК - это BootROM, который используется обычно в soc. Bootrom тоже при старте сканирует источники загрузки.

Grub и загрузчик haiku - это uboot во встройке. Grub а ПК сканирует диски? А загрузчик haiku на ходу увидит свежеподключенную флешку без действий со стороны пользователя?

И никаких скриптов. Скрипты – признак кривых рук.

И каким же образом написание скриптов говорит о чьей-то криворукости? Сдаётся мне, что ты уже пишешь просто спора ради и о существовании компов, отличных от IBM PC вообще представления не имеешь.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz

Убут - не аналог BIOS и UEFI.

Функционально это аналог. Только убогий.

о существовании компов, отличных от IBM PC вообще представления не имеешь.

Really? Я там кстати пытаюсь придерживаться ПК экспириенса. Никаких FDT на диске с ОС. Один и тот же образ ОС запускается на разном железе, разных дисках и разных эмуляторах (TinyEMU, QEMU).

X512 ★★★★★
()
Ответ на: комментарий от apt_install_lrzsz

Да-да. О чём и догадывался.

Сложное поведение можно реализовать в виде UEFI приложения, написанного на полноценном языке программирования, а не убогие урезанные скрипты. Скрипты в загрузчике не нужны. Вообще.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Really? Я там кстати пытаюсь придерживаться ПК экспириенса

Сложное поведение можно реализовать в виде UEFI

а не убогие урезанные скрипты.

Ок, верю. Это всё очень круто, конечно. Но что именно ты такое пытался при помощи него сделать, что теперь так негодуешь?

Если цель отличается от «по-быстрому настроить периферию, найти и загрузить ОС», то понятно, что загрузчик ОС для встройки может не подойти.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz

Но что именно ты такое пытался при помощи него сделать, что теперь так негодуешь?

Сделать чтобы грузилось с USB если вставлено. У NVMe почему-то приоритет выше и походу без перекомпиляции это не меняется.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

А. Я с NVMe не работал, но для SD делал так:

bootcmd=run usb_boot; run mmc_boot
mmc_boot=mmc dev 0;mmc rescan && fatload ...
usb_boot=usb reset && fatload ...

Просто мышью понатыкать приоритеты, как в UEFI нельзя. И скорее всего никогда не будет можно.

Для автопоиска устройства USB тоже придётся скриптом все шины перебирать. Так что да, тут ты прав. Убут - убогая поделка индусов, которая не нужна.

А вот интереса ради, UEFI в ходу для RISC-V? Нагуглилось такое:

Но я не разбираюсь в UEFI. Оно применимо в системах без ACPI?

apt_install_lrzsz ★★★
()
Ответ на: комментарий от X512

Загрузочное меню Haiku без проблем по UART работает.

какой же ты убогий - ты её загрузи сначала без u-boot, а потом верещи что у тебя работает. И да - доки посмотри на u-boot

https://source.denx.de/u-boot/u-boot/-/blob/master/doc/usage/bootmenu.rst

anonymous
()

Это null терминированные строки - берешь редактор и редактируешь бинарник.

anonymous
()
Ответ на: комментарий от X512

Скажем так это не совсем так, иначе это было бы дополнительной дыркой в безопасности. Как админ парка компов какой-либо организации ты скорее всего не захочешь чтобы пользователь смог загрузится с флэшки, подмонтировал ntfs встроенного диска и получил доступ к файлам, к которым обычно он не должен иметь доступа. Но можно и так как ты говоришь, да. И если ты давно с пк, то возможно вспомнишь, что в нулевые биос не был так функционален и после подключения диска нужно было зайти в биос и «определить» его на нужном канале ide и в нужном режиме (master/slave)

cobold ★★★★★
()
Ответ на: комментарий от burato

С вероятностью 99% могу утверждать, что не проходит проверка контрольной суммы.

Как это исправить, точно не скажу. В обычной ситуации можно было бы пересоздать заголовок образа (mkimage). Но это может не прокатить, если убут имеет ещё какие-то другие заголовки (как прим., DCD в i.MX).

Хорошо бы иметь документацию (Datasheet, Reference Manual) на этот SoC. Ты не пытался его найти?

apt_install_lrzsz ★★★
()
Ответ на: комментарий от burato

Пытался. Производитель лучше пытается скрыть)

какой процессор и плата ? исходники убута дают даже отмороженые китайцы.

anonymous
()
Ответ на: комментарий от burato

Китайцы как всегда: «А зачем вам документация? Заплатите - мы всё вам сами сделаем!»

Ты в предыдущей теме говорил, что у тебя есть ветка убута для amlogic, но ты не понял, как собрать. А на чём именно застрял?

apt_install_lrzsz ★★★
()
Ответ на: комментарий от apt_install_lrzsz

Там драйвера с ошибками, он не собирается

burato ★★★★★
() автор топика
Ответ на: комментарий от apt_install_lrzsz

А вот интереса ради, UEFI в ходу для RISC-V? Нагуглилось такое:

Там UEFI реализовано в u-boot. EDK2 до конца не портирован.

Оно применимо в системах без ACPI?

Да. В RISC-V UEFI предоставляет FDT по GUID {B1B621D5-F19C-41A5-830B-D9152C69AAE0}. С собой FDT тащить не надо.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от anonymous

какой же ты убогий - ты её загрузи сначала без u-boot, а потом верещи что у тебя работает.

У меня есть ещё загрузчик Haiku для голого железа haiku_loader.riscv. Но он пока только в виртуальной машине работает и является основным загрузчиком для виртуальной машины. Для реального железа в него надо линковать (или делать модули) код низкоуровневой инициализации железа и драйверов дисков.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от burato

Смотри в исходниках в конфиге для твоей платы. Должно быть в include/configs/<board.h>. Грепай подстроку ENV.

anonymous
()
Ответ на: комментарий от anonymous

в тех исходниках апстрима, где удаётся собрать не работает emmc. Это уже бинарный бутлоадер, найденный на просторах.

burato ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Создать образ environment можешь с помощью утилиты mkenvimage (есть в репах Debian/Ubuntu), залить с помощью dd seek=.

anonymous
()
Ответ на: комментарий от apt_install_lrzsz

Я и говорю, можно с помощью strings найти, где они лежат на носителе, они хранятся открытым текстом. Надо только сделать saveenv перед этим.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.