LINUX.ORG.RU
ФорумTalks

не знаю, что выбрать, загрузка barebox

 barebox, ,


0

1

В общем, есть 3 варианта:

    1. создать переменную first_boot со значением 1, при первой загрузке прошивать barebox, изменять значение first_boot на 2, перегружаться, прошивать device_tree, zImage, rootfs, изменять first_boot на 0, перегружать железку и этим же скриптом, который проверяет значение first_boot, грузить железку в дальнейшем.

минусы: если что-то случится со скриптом или переменной, то загрузка станет невозможной

плюсы: защите от дурака при прошивке, вообще ничего писать не надо в консоле, все прошивается в автоматическом режиме

    1. создать переменную first_boot и при прошивке входить в меню barebox, монтировать tftp, запускать скрипт /mnt/tftp/boot.sh, который проверяет переменную first_boot и в зависимости от нее или прошивает barebox или device_tree, zImage, rootfs.

минусы: более сложная схема прошивки устройства

плюсы: загрузка не зависит от каких-то там переменных и происходит в той последовательности, которую придумал разработчик barebox

    1. сделать 2 скрипта, один прошивает barebox, другой device_tree, zImage, rootfs

минусы: максимально сложная схема прошивки устройства, нужно 2 раза входить в меню barebox и в нужном порядке вызывать скрипты

плюсы: максимально kiss

прошивка устройства состоит из 2-х этапов, сперва прошивается barebox, потом перезагрузка, потом прошивается zImage и т.д., это если я правильно понял документацию

что выбрать? решил делать первй вариант, а там как пойдет

ps, нет тега barebox, так что тег u-boot

★★★

Последнее исправление: IvanR (всего исправлений: 4)

а где хранится эта переменная-то?

например, обновление серверов Hewlett Packard состоит так же из нескольких этапов, обновление SPP — Service Pack for ProLiant, затем обновление Intelligent Provisioning, а затем ещё ряд кастомных этапов обновления включающих в себя предустановку пароля администратора, установку лицензии, установки даты/времени в конце концов...

всё это так же делается между перезагрузками сервера.

https://github.com/spfng/hpeconf/blob/master/hpeconf.in#L51-L67

и такой переменной я использую поле Server Name у самого сервера в iLO, т.е. загружается дистрибутив, смотрит какой Server Name и в зависимости от неё монтирует нужный ISO и выполняет перезагрузку.

эта «переменная» хранится как настройка BIOS, и слетит только если умрёт батарейка-таблетка на самой материнской плате.

а твоя переменная где будет храниться и какая на неё гарантия?

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

а где хранится эта переменная-то?

я толком не разобрался, но создается файл в файловой системе barebox (/env/nv/first_boot), что из себя представляет эта файловая система, я не знаю, при первой загрузке переменная находится в образе barebox, при следующих загрузках она храниться в специальном разделе nand памяти, считай, на hdd платы, если кто-то изменит разметку этого nand или изменит или сотрет раздел, где храниться эта переменная, то загрузка станет невозможной, если же выбрать варианты 2 или 3 и кто-то изменит этот раздел, то загрузка останется возможной

гарантия

если никто не будет лазить в загрузчик, то все норм, ну или если нанд не побъется, но если он побъется, то тут уж и без этой переменной ничего работать не будет

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

ух ты, помогло, u-boot оставил, так как barebox это его клон

IvanR ★★★
() автор топика

прошивка устройства состоит из 2-х этапов, сперва прошивается barebox, потом перезагрузка, потом прошивается zImage и т.д., это если я правильно понял документацию

Что за железка такая интересная? Чем barebox заливается?

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

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

n_play
()

Железка с каких адресов пытается загрузиться?

Вариант 4:

Сделать barebox bring-up, у которого в автозапуске стоит возможность примонтировать tftp и залить нормальный barebox, ядро и всё остальное на нужные разделы, если монтирование удалось.

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

адреса прописал в конфиге barebox, tftp монтируется, все нужные образы качаются, весь вопрос в том, как грузиться, на основе моей переменной или стандартными стредствами, но «стандартными средствами» усложняется процесс прошивки, в общем уже делаю первый вариант, аналог вашего 4-го

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

Что значит стандартными средствами? У каждого som’a свои «стандартные средства». Кстати, передай привет тому, кто для нового проекта решил использовать nand.

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

Есть, но я ей практически не пользовался. Как потом обвляться планируешь после изначальной загрузки?

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

Bad blocks, нет нормальной фс, медленная, вот это вот всё =)

Мы на одном проекте использовали, хлебнули, теперь eMMC only.

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

Что значит стандартными средствами?

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

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

вот так:

#!/bin/sh

if [ "${nv.first_boot}" = "1" ] ; then
    cp -v /mnt/tftp/barebox.bin .
    if [ "$?" = "0" ] ; then
        echo "Update barebox..."
        barebox_update -t nand barebox.bin
        erase /dev/nand0.barebox-environment.bb
        nv.first_boot=2
        nv -s first_boot=2
        reset
    else
        echo "Failed to load barebox.bin, rebooting..."
        reset
    fi
fi
if [ "${nv.first_boot}" = "2" ] ; then
    ubiformat /dev/nand0.root
    ubiattach /dev/nand0.root
    ubimkvol -t static /dev/nand0.root.ubi kernel 8M
    ubimkvol -t static /dev/nand0.root.ubi oftree 1M
    ubimkvol -t dynamic /dev/nand0.root.ubi root 0
    cp -v /mnt/tftp/zImage .
    if [ "$?" = "0" ] ; then
        echo "Update zImage..."
        ubiupdatevol /dev/nand0.root.ubi.kernel zImage
    else
        echo "Failed to load zImage, rebooting..."
        reset
    fi
    cp -v /mnt/tftp/oftree .
    if [ "$?" = "0" ] ; then
        echo "Update oftreee..."
        ubiupdatevol /dev/nand0.root.ubi.oftree oftree
    else
        echo "Failed to load oftree, rebooting..."
        reset
    fi
    echo "Update rootfs..."
    cp -v /mnt/tftp/root.ubifs /dev/nand0.root.ubi.root
    if [ "$?" = "0" ] ; then
        echo "flashing complited, rebooting..."
        nv.first_boot=0
        nv -s first_boot=0
        reset
    else
        echo "Failed to load root.ubifs, rebooting..."
        reset
    fi
fi

[ -e /env/config-expansions ] && /env/config-expansions

[ ! -e /dev/nand0.root.ubi ] && ubiattach /dev/nand0.root

global.bootm.image="/dev/nand0.root.ubi.kernel"
global.bootm.oftree="/dev/nand0.root.ubi.oftree"
global.linux.bootargs.dyn.root="root=ubi0:root ubi.mtd=root rootfstype=ubifs"
IvanR ★★★
() автор топика
Ответ на: комментарий от IvanR

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

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

Погоди, это как ты изначально всё заливаешь. Я имел ввиду дальше как планируешь обновлять это всё.

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

Не знаю, железка будет у заказчика и физического доступа к ней не будет, не уверен, что она вообще будет обновляться

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

Ну, Вообще-то, плата разрабатывается в нашей компании, только я не до конца понимаю, что значит разрабатывается, берётся маленькая плата imx6ul и припаевается к нашей большой плате, что это значит для меня, как для сборщика ОС для этой платы, я не понимаю, скорее всего, ничего, а если что-то значит, то в этом я вряд ли разберусь, так как схемы читать вообще не умею

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

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

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

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

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

а откуда вы? я в М.О. и покидать насиженное место не собираюсь))) с yocto работаю несколько месяцев, вначале бесило, теперь кажется, что поудобнее, чем buildroot

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

я в М.О. и покидать насиженное место не собираюсь)))

Сильное заявление.

а откуда вы?

Германия

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

понятно, тогда наверно только удаленка, так как ни нормального английского, ни, тем более, немецкого у меня нет

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

просто ради интереса, сколько бы получал человек в германии способный собрать yocto|buildroot, подредактировать программу на c или питоне или написать скрипт на шелле в 2000 строк или на си в 5000 строк? без знания плюсов или питона

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

просто ради интереса, сколько бы получал человек в германии способный собрать yocto|buildroot, подредактировать программу на c или питоне

От 70к евро в год (до налогов, ессно)

написать скрипт на шелле в 2000 строк или на си в 5000 строк

до 60к в год, ибо есть вопрос в адекватности человека, запихивающего в один скрипт/программу 2000/5000 строк )

UVV ★★★★★
()
Ответ на: комментарий от UVV
echo "60000*87/12"|bc -l
435000.

охринеть, а сколько налогов?, жизнь небось очень дорогая в евросоюзе, раз такие зарплаты, ну на си я бы запихнул 5000 строк в много файлов, а посчитал бы так: посчитать количество строк в файлах

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

можно у вас пару месяцев удаленно поработать за половину ценника?

Если конкретно на меня, то если честно, я обдумываю эту мысль уже несколько месяцев… Если на фирму, где я на постоянку работаю, то фрилансеры вроде как нужны, но если они вне ЕС, то с формлением морока будет, поэтому обычно внутри страны только нанимают, а вот на постоянку нужны люди =)

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

охринеть, а сколько налогов?,

Зависит от многих факторов. Можешь попробовать вот тут поиграться, если получится https://www.brutto-netto-rechner.info/

Если женат и без детей, то 12 зарплат от 70к в год будут в районе 3900 в месяц на руки, если холост и без детей, то примерно 3500. С детьми на руки будет больше денег.

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

Соболезную =)

закралась мысль поговорить с начальством об обновлении, чисто с практической точки зрения, чего дает обновлние? я так понимаю, что в устаревшем по становятся известны дыры, эти дыры, естественным образом, публикуются производителем софта и появляются в общем доступе, естественно злоумышленник может их самым простым образом использовать, тем более, что, чем старее дыра, тем больше на нее изготавливают всяких эксплойтов, какие еще могут быть отрицательные стороны у устаревшенго по? ведь если все работает сейчас, то будет работать и через 10 лет

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

какие еще могут быть отрицательные стороны у устаревшенго по? ведь если все работает сейчас, то будет работать и через 10 лет

Ну безопасность и дыры на первом месте, да, это если мы говорим о ядре и загрузчике. А по поводу основного ПО, вы фичи добавлять не планируете чтоль?

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

прошлая железка работат с 18-го года и ничего там нового нет, это управление городским освещением, там мало что нового, протоколам десятки лет

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