LINUX.ORG.RU

Как запустить универсальное ARM ядро из дистрибутива на физическом одноплатнике?

 , , ,


1

2

Одноплатник Cubietruck:

https://github.com/maronai/cubieboard/wiki/3.1.-Compiling-mainline-kernel-for...

Если взять U-boot из Arch Linux:

https://archlinuxarm.org/platforms/armv7/allwinner/cubietruck

Если все делать по инструкции от Arch Linux для установки специализированного образа со специализированным ядром, то все нормально запускается и можно залогиниться рутом.

Самосборное специализированное ядро типа такого:

Почему при построении ядра modules_install извлекает не все модули обычные для Linux?

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

Вопросы:

1) Хотелось бы научиться для начала передавать управление из заведомо рабочего ядра Arch Linux в Devuan без kexec.

2) Проблемы с запуском универсального ядра. Используя универсальное ядро (неспециальное, НЕ для какой-то определенной модели одноплатника, а наверно для любого ARM) из дистрибутива, например, Devuan ARM или Libre ARM репозитария не получается перейти из состояния мигающего курсора на черном фоне к init и login screen.

Т.е. вероятно, ядро стартует (потому что у работающих специализированных ядер тоже моргает курсор аналогично, но всего 3-5 секунд и потом логин скрин), но потом что-то идет не так.

А можно вывести лог загрузки ядра на экран как на X86?

Какие-то переменные uboot определяются из конфигов непосредственно при компиляции. Соответственно, как там потом все срастется с boot.scr можно понять только все это проанализировав. Какое ядро грузить для uboot в принципе не имеет значения. Но тоже могут быть нюансы, например, инициализацию чего-нибудь могут перенести из uboot в ядро, или наоборот. dts должен быть от соответствующей версии ядра. Но в нем может от версии к версии ничего существенного и не меняться. Короче, однозначных ответов на вопросы нет.

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

Чем отличается универсальное ARM ядро из дистрибутива вообще (даже неспециализированного образа для такой-то платы), т.е. apt-get install linux-image*** например изнутри arm chroot от специализированного ядра, собранного, например, таким скриптом:

Почему при построении ядра modules_install извлекает не все модули обычные для Linux?

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

Почему при построении ядра modules_install извлекает не все модули обычные для Linux?

вот кстати, опять игра цифр (в номере ветки): 22 73 73, забавно ...

А сегодня раскладушку сотика открыл, на нем 12:12

вчера 14:14

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

Может быть, универсальное ядро надо стартовать дополнительным загрузчкиком типа GRUB2? А какие еще загрузчики бывают для таких ядер?

GRUB2 не может работать без EFI?

Понаворотили загрузчиков:

BROM -> SPL -> Full U-boot -> EFI -> GRUB2 -> Kernel

В EFI+GRUB2 поди еще закладки какие-нибудь есть.

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

Вы бы уж как-то решали проблемы последовательно. Универсальное ядро в данном случае это, видимо, ядро собранное под конкретную архитектуру ARM (v.7 или v.8) и для запуска на наборе конкретных моделей SoC.

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

Где у вас моргает курсор из сообщения не ясно. Следует подключить компьютер к отладочному порту одноплатника, если это еще не сделано. И тогда будет понятно, на каком этапе что пошло не так.

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

Ну вот, например, такое ядро:

deb mirror://linux-libre.fsfla.org/pub/linux-libre/freesh/mirrors.txt freesh main

ii linux-image-5.2.9-gnu 5.2.9-gnu-1.0 armhf GNU Linux-libre, version 5.2.9-gnu

или такое:

deb http://pkgmaster.devuan.org/merged/ ascii main contrib non-free
deb http://pkgmaster.devuan.org/merged/ ascii-backports main contrib non-free
deb http://pkgmaster.devuan.org/merged/ ascii-proposed-updates main contrib non-free
deb http://pkgmaster.devuan.org/merged/ ascii-security main contrib non-free
deb http://pkgmaster.devuan.org/merged/ ascii-updates main contrib non-free

i linux-image-4.19.0-0.bpo.5-rt-armmp 4.19.37-4~bpo9+1 armhf Linux 4.19 for ARMv7 multiplatform compatible SoCs, PREEMPT_RT

Как их запустить?

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

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

Где у вас моргает курсор из сообщения не ясно. Следует подключить компьютер к отладочному порту одноплатника, если это еще не сделано. И тогда будет понятно, на каком этапе что пошло не так.

У меня пока нет переходника для подключения, хотя может быть можно сделать из другого одноплатника типа BBB.

А почему если U-boot уже наладил вывод на экран и пишет, что мол запускает ядро, то ядро все еще не может показывать ничего на экране кроме моргающего курсора?

Если указать неправильный путь в boot.scr, то U-boot ругнется, что не может найти ядро, - это к тому, что u-boot у меня нормально стартует и экран проинициализировал.

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

boot.cmd:

setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10 ${extra}
load mmc 0:1 0x43000000 /boot/dtbs/${fdtfile}
load mmc 0:1 0x42000000 /boot/zImage
bootz 0x42000000 - 0x43000000

Может быть, надо поменять console=ttyS0,115200 на что-то другое? не разбирался еще с настройкой console.

Чтобы ядро выдавало сообщения на экран и если можно одновременно в последовательный порт тоже.

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

uboot и ядро мало зависимые сущности в данном случае. У ядра своя программная инфраструктура для работы со средствами вывода и отображения картинки. Поэтому не важно, что там uboot до этого проинициализировал, ядро все начнет с нуля (ну разве что кроме инициализации контроллера ddr-памяти). Так что может быть, что ядро не может проинициализировать устройства отображения (может оно вообще пытается не тот видеопорт инициализировать, что там есть у этого Кубитрака - я не помню). А может быть что-то еще раньше идет не так. Кстати, если одноплатник подсоединен к сети, то можно хотя бы попробовать посмотреть, действительно ли ядро просто консоль не может открыть на экране, или там что-то посерьезнее стопорится. Может на железку спокойно можно по ssh зайти.

zloy_starper ★★★ ()
Ответ на: комментарий от zloy_starper
setenv bootargs console=ttyS0,115200 console=tty0 root=/dev/mmcblk0p2 rw rootwait panic=10 ${extra}
load mmc 0:1 ${fdt_addr_r} /boot/dtbs/${fdtfile}
load mmc 0:1 ${kernel_addr_r} /boot/kernel
load mmc 0:1 ${ramdisk_addr_r} /boot/initrd
bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}

Большой прогресс (сам не похвалишь):

1) Процесс загрузки виден на экране

2) Грузится универсальное Libre ядро v5.2.9 GNU

3) В это ядре драйвер ahci отдельно, перезагрузил его с нужным параметром и о чудо, SSD увиделась даже через экстендер!

Но увы, скорость упала более, чем в 2 раза :(

При dd if=/dev/sdX отжирает почти 90% недопроцессора.

Может быть, жрет проц из-за полностью открытого Libre ядра?

Ведь хорошую скорость SATA порт одноплатника показывал на более новом Vanila ядре v5.2.14. Может быть в нем дрова какие-нибудь менее открытые? обфусцированные или типа того.

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

Пойду полежу, отдохну :)

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

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

А есть какие недорогие одноплатники со скоростными SATA портами, аналогично с поддержкой SATA мультиплексоров и чтобы побыстрее работали? И желательно 64 бита и чтобы не очень дорого.

Справится ли какой-нибудь современный 64битный одноплатник с обслуживанием нескольких ZFS пулов без шифрования и раздачей zvol через Ethernet iSCSI ?

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

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

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

загугли на алиэкспрессе по слову pfsense + сейчас в обычных магазинах продают x86 одноплатники формата mini-itx

А для кубитрака с арчем есть нормальная инструкция по установке, которая вроде использует обычное ядро: https://archlinuxarm.org/platforms/armv7/allwinner/cubietruck

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

Все не так :(

Включая блобы, которые общаются с блобами дисков по SATA интерфейсу :)

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