Как обновить настройки загрузчика U-Boot на bananapi через SSH?
Как обновить настройки загрузчика U-Boot на bananapi через SSH?
Есть плата bananapi m1 32-bit, но это не важно даже, любая другая плата, главное что ARM 32 бита, где нет унифицированной загрузки. Linux Armbian (дистрибутив Debian 8). Хотел поигратся с I/O планировщиком, а для этого надо менять параметры загрузки ядра, которые задаются в загрузчике.
Там даже есть утилита armbian-config, которая позволяет менять их, но она меняет их где-то в своем конфиге, сам загрузчик не обновляется: смотрю параметры, с которыми прошла текущая загрузка (после ребута, само собой) - все по старому (есть там и образы загрузчика, дата изменения старая, у своих конфигов новая).
В интернете есть статьи как это делать при работе напрямую, т. е. когда моник, клава или через сериал, надо попасть в консоль загрузчика и там команды setenv saveenv - все просто (в теории).
Но я сроду не имел такого подключения, всю жизнь через ssh. Есть что-то типа update-grub для u-boot?
Можно конечно напрячься, примостится куда-то к телеку с hdmi, клаву отобрать у кого-нибудь, или освоить сериал (он у меня даже есть, но возможно не подходит, в свое время не получилось, но вроде в armbian консоль по дефолту не активна, надо включать) - но хочется легко и комфортно)))
Спасибо! Походу то, но не работает: fw_printenv вначале выдает Bad CRC, using default environment.
Как понял, это значит, что сектор, куда писать параметры указан неправильно в файле fw_env.config.
После fw_setenv fw_printenv выдает конфиг уже с моим параметром, но ядро все равно грузится без него.
jcmvbkbc, понятно, но блин, как это сделать?
Сейчас рылся час в интернете, единственное, что толковое нашел:
залезть в исходники u-boot в папку include/configs и искать там заголовочный для своего девайса и в нем CONFIG_ENV_OFFSET и CONFIG_ENV_SIZE. Нашел там для alwinner a20 (на котором моя bananapi m1) файл, там ничего нет, идет инклюдом общий sunxi конфиг, там.. что-то есть.. упоминается CONFIG_ENV_OFFSET, но в комментах, ничего похожего, что можно было бы взять не нашел.
nrv, нужно для начала понять, где у тебя стоит U-Boot и откуда он берёт свою конфигурацию.
Поверхностный поиск в интернетах показывает вот это, U-Boot стоит на mmc/sd. В этом случае когфиг находится в обычном текстовом файле, как написано здесь.
jcmvbkbc, и пчелы и мед, не меняется конфиг, ядра по крайней мере.
То что на sd я знал, там ничего нет больше.
Я ошибочно думал, что offset и size неправильно указаны. А они правильно, на гитхабе u-boot а была указана разметка sd карты, загрузчик это первый килобайт (или мегабайт), и там в блоках по килобайту указано, где начинается какой сектор (сам загрузчик, env) и какой размер. То что у меня в fw_config - правильно, если менять на что-то другое, уже даже ничего не выдает fw_printenv.
Освоил serial (тяжко быть нубом: tx, ..мае, надо к rx подключать), в загрузчике сделал setenv bootargs bla-bla-bla , saveenv- ядро загружено без этих параметров. fw_printenv их не показывает. Потом ребутнусь опять в загрузчик, посмотрю что даст printenv bootargs. Подозреваю, скажет нету переменной такой.
Нормальным способом является использование armbian-config, если система armbian.
Я сам же писал, что она не работает, но она работает на свежем armbian который debian 9. Там у меня стоял 8, может и я что-то испортил. Еще u-boot бывает legacy (там все через её, да) и mainline, может он обновился. Утилиты fw_printenv/fw_setenv там не работают из коробки, понятно, что можно задать offset и все такое (где находится секция u-boot с параметрами на загрузочном устройстве), но у меня не получилось - их надо вычислить, не совсем понятно, как, формулы из интернета давали результат, который и так был в конфиге этих самых утилит. Вообще, конечно, странно что не работают, сложно что-ли было в конфиг правильные значения написать?