LINUX.ORG.RU
ФорумTalks

Linux на X96 или какой же этот ваш ARM овно

 , ,


1

1

Подогрел мне кум неудачно прошитую андроид-приставку X96-mini. Он вообще любитель «обновляться» без нужды, вот и этот девайс окирпичил.

Беззащитная машинка умещается на ладошке, и содержит в себе с понтом четырехядерный Amlogic S905w, два гига ОЗУ, и 16 Г флешку.

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

Итак, начнем с того, что готового образа НЭД (уже молчу о том, что его сперва нужно создать). Нет, образы конечно есть. Только вот они под другие модификации. Образ под устройство с 1Гб отличается от образа под устройство с 2Гб. Они все отличаются от образа сделанного под устройство на базе памяти Samsung, а этот образ отличается от образа сделанного на базе памяти Hynix.

Визуально это видно как либо ОС не запускается вовсе, либо ядро падает в overflow и kernel panic, потому что не совпадают пару байтов откуда это ядро читать.

Ладно, готового образа нет, попробуем сделать свой. Но не тут-то было. Сначала нужно записать загрузчик. Но это загрузчик НЕ ПОД ARM, и даже не загрузчик под этот процессор. Это загрузчик под конкретное устройство.

Вот нагуглился аналогичный по процессору девайс Khadas VIM1. Вроде все красиво, u-boot стянулся, флешка стартонула. Но нет, это еще не все. Нужен DTB-файл. Это описание дерева устройств. У нас в X86 вроде такое тоже есть, но оно вшито производителем. Ладно, с горем пополам накопали в базе CoreElec такой вот DTB, переименовали в dtb.img, поскольку это имя файла захардкожено. И ничего. Потому что нужен еще файл с командами сраному u-boot'у. Мы не можем просто передать управление ядру под данную архитектуру (или хотя бы загрузчику который загрузит ядро), нет. Мы должны сначала определить откуда идет запуск, скопировать оттуда ядро в память по определенному адресу, а уже потом передать управление в начало этого адреса. Ладно. Так я и сделал.

Kernel panic, stack overflow. Сцука. И тут я присмотрелся: оказывается эта система считает себя Khadas VIM1 с одним гигом ОЗУ. Ну да, на месте ядра я бы тоже зафейлился, но на месте гребанной архитектуры, я бы разрешил ядру самому определить сколько в компьютере ОЗУ, а не основываться на каком-то левом файле.

Разумеется готовых u-boot в сети я не нашел, хотя нашел маны как конпельнуть. Жаль только в этом мане нету defconfig'а под это устройство, посему конпеляция увенчалась неуспехом. Более того, под Дебианом компилятор выдал какую-то ошибку шото типа duplicate или already defined, не помню. Поставил Арч. Скомпильнулось нормально, но не запустилось. Предсказуемо.

Нашел прошивку Андроида мало-мальски предназначенную под похожее устройство. Конечно же она тоже не завелась, но благодаря полутора утилитам, удалось с нее вытащить u-boot.

Но этот u-boot грузит по умолчанию recovery.img - андроидный рекавери. Окай, в порядке эксперимента качаю TWRP, переименовываю его в recovery.img, перезагружаюсь - вуаля, работает. При чем даже радиоклава с радиомышкой и видит подключенную USB-флешку. Хотя и изображение на мониторе раздваивается. Ну да ладно, напуркуа мне эти рекавери. Записываю файл с командами u-boot'а, который собственно копирует ядро в память и его оттуда запускает, записываю ядро (у меня их два, с armbian и с manjaro) - болт тебе. booti: command not found. И таки да, через UART удалось вызвать консоль сраного u-boot'a (чем-то напоминает наш grub, лал), там такой команды нет. Пояндексив, нагуглил что команда booti загружает линуксовое ядро, команда bootm андроидное, и эта команда у меня есть. Окей, поменял. Но нет, не тот формат ядра. Конечно нет, ведь Андроид это ж не Линукс.

Подменив ядра на CoreElec (видимо с андроидной базой) - CoreElec таки запустился. Ура.

- - -

Я бы оторвал руки изобретателям подобной архитектуры. Или производителю железки. Или хоть кому-нибудь.

Если уж хочется дроч с загрузчиками - почему не выделить в процессоре область ? Это ж гребанный SoC. Этот загрузчик занимает полмегабайта. И может быть readonly. Ну как на один и тот же процессор могут использоваться разные загрузчики, в зависимости от которых у вас либо стартонет система либо нет ? Вы хоть представляете себе установочный образ Винды заточенный на работу под 8Гб ОЗУ и вылетающий если стоит 16Гб ? Вот и я нет. А представляете чтобы вы в grub прописали шота типа «RAM=2G» и ваш Линукс думал что у вас 2 Гб ? Более того, стал вылетать если вы его запустили на 4 Гб ?

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

Короче ARM не светит на десктоп. И как мне кажется именно по причине прибитости гвоздями загрузчика к железу, железа к реализации в загрузчике. Если ваш девайс по каким-то причинам теряет свою ОС - он превращается в кирпич, по крайней мере пока вы не вкатите туда ОС с точно такого же девайса.

И да, если у кого-то есть дельные предложения по запуску Linux на этом девайсе - буду премного благодарен, пушо пока на нем работает только две ОС - CoreElec (андроид) и Khadas recovery (который хоть и Linux, но покоцанный дюже), впрочем видящий только гиг ОЗУ. X96 2G на Amlogic S905W.

★★★★★

Это же радость гентушнка. Поставил доп память - пересобирай ось.

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

В моем случае писалось про Wrong Image Format for bootm command ERROR: can’t get kernel image!

А ты там параметры правильно указывал? Читал help bootm?

Может надо указать адрес и ты указывал не тот или грузил не по тому адресу и ему не хватало оперативки. Или ядро предполагает конкретный оффсет, а ты грузил на другой?

Но ядро еще надо загрузить

Значит вначале надо узнать точную модель железа и собрать / найти для неё загрузчик.

Может даже получится собрать официальный u-boot из ванильных исходников.

Таких устройств УЖЕ несколько вариантов (и мой может быть очередной)

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

И вообще, ARM — это тебе не IBM PC с сороколетним Legacy. Впрочем ARM64 — это уже куда ближе к единой архитектуре. Например почти, все кроме M1 от ябла поддерживают UEFI

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 2)

Haiku на RISC-V плате Hifive Unmatched через UEFI загружается и таких проблем нет. Тот же образ запускается в QEMU с другим набором железа. Не знаю какой идиот придумал записывать таблицу устройств FDT на диск с ОС. Такие вещи обычно в ROM чип записывают при изготовлении и больше не трогают.

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

И вообще, ARM — это тебе не IBM PC с сороколетним Legacy.

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

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

В x86 есть чёткое разделение на прошивку железа и ОС, а в ARM этого нет и царит полный бардак. Ситуация постепенно улучшается с внедрением UEFI.

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

А device tree для кого придумали?

Это которое на диске с ОС находится? Не нужно.

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

А ты там параметры правильно указывал? Читал help bootm?

Дроч

Может надо указать адрес

Дроч

ядро предполагает конкретный оффсет

Дроч

собрать / найти для неё загрузчик.

Дроч

кстати, по нему можно нагуглить подходящую прошивку.

Целых много, и все не подходят. Да, именно под модель на плате. Но дело не в этом.

поддерживают UEFI

Возможно. Только вот когда потенциальный покупатель меня спросит какой ему ноут купить, я без зазрения совести посоветую ему на процессоре Intel Core i7-100500. И тот покупатель посоветует другому покупателю. И так рыночек порешает.

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

Такие вещи обычно в ROM чип записывают при изготовлении и больше не трогают.

100%. Я готов даже допустить что адресация памяти должна быть заранее сконфигурирована для корректной работы ОС. Но блин на девайсах со встроенной памятью допускать этот фейл …

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

Целых много, и все не подходят.

Поэтому первую вещь которую я сделал – это сделал дамп встроенного носителя и положил в бекапы на всякий случай.

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

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

Где ты видел ноутбуки на ARM? Не спорю, они существуют, но это ж экзотика. В обычных магазинах разве что макбуки начали появляться на M1 и всё.

посоветую ему на процессоре Intel Core i7-100500

А что не Rysen хотя бы тогда уж?

А вообще, если компы на ARM появятся в продаже… Точнее уже появились, если считать TV-приставки — то там уже будет изкоробки ОС и пользователю её обновлять/переустанавливать будет не нужно.

И потом, RPi4 с восемью гигами и корпусом можно купить за что-то около 10к рублей. А самый дешевый комп на интеловском или амдешном процессоре раза в полтора дороже будет. А если ещё надо не менее 8 гигабайт рамы, то и в три.


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

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

полазий по форуму на https://forum.libreelec.tv/ - мож найдёщ конкретно твою железку если кто собрал

Я уже запустил LibreElec. Только вот фишка в том, что он на андроидном ядре, а мне бы линуксячье. Линуксячье под тем u-boot’ом сегфолтится.

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

А что тебе мешает собрать ядро под формат образа как у андроида и грузить той же командой?

Xenius ★★★★★
()

Попробуйте взять обычный PC на x86, неправильно (например, взяв образ от другой, но похожей железки) зашить мультиконтроллер, микросхемы SPD на DIMM, SPI flash, загрузчик и ОС. Будут примерно такие же проблемы.

У рядового пользователя с X96 таких проблем не будет, потому что он не будет трогать то, что зашито производителем.

Разница лишь в том, что в PC/x86 есть куча прослоек, которые позволяют пользователю менять ОС и некоторое железо, не трогая прошивку. Когда до ARM массово доберётся EFI (что уже случилось с серверами), этой разницы не будет.

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

Попробуйте взять обычный PC на x86, неправильно (например, взяв образ от другой, но похожей железки) зашить мультиконтроллер, микросхемы SPD на DIMM, SPI flash, загрузчик и ОС. Будут примерно такие же проблемы.

В x86 прошивка и описание железа хранится отдельно от ОС в отличии от.

X512 ★★★★★
()

Короче ARM не светит на десктоп.

Усё зависит от пеара и бабла. Тот же апле своих построил? В очередной раз постоил. Та же ленова предложит ноуты на армах по ценам в разы дешевле - разве не взлетит? Взлетит и очереди будут. А у ноуты и сейчас по железу уже фиг чего доставишь и фиг чего заменишь, контролеры всего и вся блюдут.

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

Вообще-то, arm уже на десктопах в исполнении Apple и очень даже хорошо продаётся.

Оно «очень даже хорошо продаётся» только по причине того, что большинство пользаков этого железа дальше названия, типа macbook pro 2021, не читают, они просто не в курсе, что там под капотом.
А вот софт проблемы ложатся на плечи ТП софта и админов.
Предыдущий аналогичный переезд, был совсем не безболезненным.

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

Когда-то Apple доказало пригодность PowerPC, но и сами в итоге отказались (никогда не интересовался почему).

Все как обычно, бабло, только бабло. Само железо дороже x86. Железо дороже == менее распространено. Менее распространено == меньше софта.

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

Чтобы выпускать железо, нужно чтобы оно было востребованным.

Ну с востребованностью у ябла пока все в порядке. Плюс у них уже есть опыт смены архитектуры.

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

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

И это ещё хорошо когда этот мелкий шрифт вообще есть, некоторые чернила экономят шельмы. А особо продвинутые и в dmesg одинаково отображаются.
Кстати страдают такой ерундой не только производители wifi, с обычными сетевками точно такая же фигня. Каждый отличается по своему. Мне вот например «очень нравиться» идея добавления плюсика (символа + ) к названию модели. Это когда две карточки с одинаковым названием, отличаются только символом '+' ну и ради разнообразия всей начинкой. Или rev A,B,C,D...A1,G7... которую только в dmesg увидеть можно, а между собой эти A,B,C ниразу не одинаковые, несмотря на абсолютно одинаковую надпись на чипе.

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

Тот же апле своих построил

Апле - не совсем уместный пример. Апле не «перешел на ARM», а «чото там сделал в своей замкнутой экосистеме». Это как с консолями - тебе очень важно на каком процессоре у тебя играет Крузис в плейстейшене ? Мне например нет.

Та же ленова предложит ноуты на армах по ценам в разы дешевле - разве не взлетит?

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

А у ноуты и сейчас по железу уже фиг чего доставишь

Десктоп - это не только ноуты, и в этом прелесть X86: один и тот же образ системы работает на ЛЮБОМ девайсе, вот например у меня Центоська 7 работает на емебедедде apu1d4 со встроенным AMD T40E, она же работает на ноуте с Core i3, она же работает на компе с AMD Athlon 200GE, она же работает на MiniITX Cel 1037u. Еще и без переустановки. Под четырьмя процессорами, на устройствах разной конфигурации, выпущенных в разную эпоху.

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

Само железо дороже x86. Железо дороже == менее распространено. Менее распространено == меньше софта.

В принципе ты прав, но перспективы у non-x86 есть, их надо только разглядеть.

Ну с востребованностью у ябла пока все в порядке. Плюс у них уже есть опыт смены архитектуры.

У них своя инфраструктура, своя клиентская база, они могут себе это позволить.

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

Кем?

Ну энтузиастами наверное. Например bablbes150 вот собирает образы для плат и несколько лет аккуратно выкладывал их в открытый доступ. У него же есть подробные и хорошие описания как устанавливать. Кстати его ещё здесь на ЛОРе успели «повоспитывать». Там и про «Amlogic» чуть написано. Глянул сохранённые раннее ссылки, такая на сегодня доступна

Обычно, выше уже про это уже сказали, сначала восстанавливают на приставке родную. По полному названию ревизии этой злосчастной платки найти годную прошивку. Ну или попросить публично — кто может снять дамп с такой-же. А потом с неё поменять на Линукс систему.

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

Чтоб ты понимал о чем я:

https://archlinuxarm.org/platforms/armv8

13 образов «Арча под ARM», более того под ARMv8 - не работают. UART уже отпилил, поэтому причину не скажу. Просто не работают, даже видеовывода нет.

Чтобы ты понимал почему я скептически отношусь к ARM, аналогия:

Представь себе 13 процессоров Intel i3-6100, i3-7100, AMD Radeon, AMD Ryzen младших моделей, старших моделей, и тд итп, и образ Ubuntu 21.04, которая работает только под i3-7100, а под остальными даже не стартует.

Далее вопрос: Rockchip RK3399 - armv8? armv8. А Broadcom BCM2711 - armv8? armv8. Так с хера ли дистрибутив для Broadcom BCM2711 не запускается на Rockchip RK3399 ?

Объяснение простое. x86_64 - смогли в стандарт. Остальные - нет.

ARM не будет на десктопах до тех пор, пока они будут существовать по принципу ARM != ARM.

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

там ненужон никакой стандарт.

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

поэтому все прибито гвоздями.

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

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

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

ARM не будет на десктопах до тех пор, пока они будут существовать по принципу ARM != ARM.

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

не всем нужно 32жибабайта, pcie и прочая игровая параша для котлет.

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

Эко тебя несёт. Я про возможность запуска системы на приставке писал, а ты мне про отсутствие единого стандарта.
С x86_64 тоже не всё так безоблачно кстати. И уж в любом случае большое количество людей сегодня не получило бы от лидеров отрасли свои одноплатники по цене сравнимой с ценой на «ARM». Включая того, от кого к тебе попало устройство.

13 образов «Арча под ARM», более того под ARMv8 - не работают. UART уже отпилил, поэтому причину не скажу. Просто не работают, даже видеовывода нет.

Причина — неподходящий DTB файл или затёртый (неподходящий) начальный загрузчик. Но про это здесь уже писали. Раз — «UART отпилил», полагаю что четыре болта открутил. Полное название ревизии платки напишешь?

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

Во, всё правильно пишешь. Пару лет назад знакомый собирался заняться нетбуками на ARM в EC. Цена нового для покупателя выходила что-то около €100

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