LINUX.ORG.RU

Консоль в Embedded Linux

 , ,


0

2

Помогите разобраться начинающему в линуксе. Есть три arm платы с линуксами.

  1. Khadas VIM3 - тут всё норм, после включения на экранчике появляется консоль с запросом логина и пароля. По сути стоит обычный server-образ debian.
  2. Что-то китайское с AllWinner T-507. Тут после включения запускается Qt gui демка прописанная в автостарте /etc/init.d/rcS . Стоит урезанная Ubuntu server 18.04. Есть менеджер пакетов, можно даже как-то с ним разгуляться.
  3. Ещё одна версия AllWinenr T-507. Тоже запускается своя qt gui демка. Но здесь нет считай ни-че-го. Ни apt, ни dpkg. Читай голое ядро 4.9 с busybox’ом.

Если с первой всё более-менее понятно, образы прошивок в открытом доступе от производителя, выбирай, шей да работай. Но вот AllWinner’овские китайцы довольно жадные на этот счёт. В открытом доступе у них ниего нет, предостваляют только «партнерам». Да и то что предоставляют, почему-то отказывается прошиватсья их же PhoenixSuit’ом.

Вопрос собственно по второй и третьей плате: как сделать, чтобы после включения запускалась консоль? Если просто убрать автозапуск демки из rcS, то просто черный экран. И можно ли это сделать не собирая свою прошивку с нуля?

На вторую плату пробовал ставить qterminal и его в автозапуск прописывать. Но это как-то неправильно. Да и mc выглядит в нём некрасиво, т.к. используется какой-то дефолтный Qt-шный (если я правильно понял) немоноширинный шрифт и поменять его нельзя.

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

Они getty из автозапуска убрали?

firkax ★★★★★
()

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

Что запускать при старте определяет файл /etc/inittab.
Если там стоит id:3:initdefault: то запускается консоль, если :5: то стартует Xorg. Это называется runlevel. Обычно в этом файле в комментариях все runlevel перечислены - что на каждом делается.
Переключить runlevel в командной строке можно командой telinit 3

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

У второго и третьего разная периферия. Соответственно, лучше даже не пытаться так прошивать. Да и не хочет PhoenixSuit их прошивать (несмотря на то, что как устройство он их видит)

MkktBkkt
() автор топика

консоль на embedded платах обычно в debug uart стартует.

Зачем она на дисплее, которого может и не быть.

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

Они getty из автозапуска убрали?

Вроде что-то есть

systemctl status getty@tty1.service

● getty@tty1.service - Getty on tty1
   Loaded: loaded (/lib/systemd/system/getty@.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2025-01-15 11:06:35 +03; 43min ago
     Docs: man:agetty(8)
           man:systemd-getty-generator(8)
           http://0pointer.de/blog/projects/serial-console.html
 Main PID: 2853 (agetty)
    Tasks: 1 (limit: 4685)
   CGroup: /system.slice/system-getty.slice/getty@tty1.service
           └─2853 /sbin/agetty -o -p -- \u --noclear tty1 linux

1月 15 11:06:35 HelperBox.t507 systemd[1]: Started Getty on tty1.
MkktBkkt
() автор топика
Ответ на: комментарий от zudwa

Да, в debug uart она стартует. Но сам uart физически не доступен. Поэтому надо как-то стартовать её ещё и на lvds дисплее.

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

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

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

у меня в Федоре с systemd так: содержимое файла /etc/inittab

# inittab is no longer used.
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 2)
Ответ на: комментарий от MkktBkkt

Ctrl-Alt-F1 не переключает на эту консоль?

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

Ну собственно это равносильно отсутствию файла inittab.

systemctl get-default показывает graphical.target


Ctrl-Alt-F1 не переключает на эту консоль?

нет

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

Ну собственно это равносильно отсутствию файла inittab.

Естественно - внутри файла так и написано! И тамже приведены команды, переключающие режим загрузки в systemd.

Тебе надо выполнить systemctl set-default multi-user.target

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

Смена graphical.target на multi-user.target ничего не даёт

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

При этом, на Khadas VIM3 тоже стоит default graphical.target и там загружается консоль.

MkktBkkt
() автор топика
Ответ на: комментарий от firkax
root      2923  0.0  0.0   7248  1488 tty1     Ss+  14:47   0:00 /sbin/agetty -o -p -- \u --noclear tty1 linux
root      2928  0.0  0.0   7024  1876 ttyS0    Ss+  14:47   0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttS0 vt220
root      4502  0.0  0.0   7424   636 pts/0    S+   15:26   0:00 grep --color=auto tty
MkktBkkt
() автор топика
Ответ на: комментарий от firkax

и вот так, если qterminal прописать в автозагрузку

root      2791  0.0  0.0   7024  1780 ttyS0    Ss+  15:33   0:00 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttS0 vt220
root      2798  0.0  0.0   6184  2908 tty1     Ss+  15:33   0:00 /bin/login -p --
root      4864  0.0  0.0   7424   668 pts/1    S+   15:34   0:00 grep --color=auto tty
MkktBkkt
() автор топика
Ответ на: комментарий от firkax

Если я правильно понял, то в Qt5 своя Windows system (QWS), а в Qt6 уже через какую-то QPA это делается

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

/var/log/messages посмотрите, может там будет сообщение, почему agetty не передает управление login

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

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

консоль на дисплее - это странный путь

Но таков путь. Внезапно возникло целых два сценария для такой штуковины:

  1. «игрушка» для RND
  2. есть один заказчик, которому проще носить с собой только одну клавиатуру, а не целый ноут с ssh
MkktBkkt
() автор топика
Ответ на: комментарий от zudwa

alternatives.log apt bootstrap.log btmp dpkg.log faillog fontconfig.log journal lastlog tallylog wtmp просмотрел все, на мой непрофессиональный взгляд ничего полезного в них нет

MkktBkkt
() автор топика

Забыл упомянуть, там же ещё есть ADB. И вот qterminal как раз и запускает adb shell.

MkktBkkt
() автор топика
17 февраля 2025 г.

В общем, всё стало понятно после вывода параметров ядра:

zcat /proc/config.gz | grep CONFIG_VT
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_VT_CONSOLE_SLEEP=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
zcat /proc/config.gz | grep CONFIG_FRAMEBUFFER_CONSOLE
# CONFIG_FRAMEBUFFER_CONSOLE is not set
MkktBkkt
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.