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-шный (если я правильно понял) немоноширинный шрифт и поменять его нельзя.

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

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

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

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

MkktBkkt
() автор топика
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от 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

https://www.tecmint.com/change-runlevels-targets-in-systemd/

а так консоль задается в параметрах ядра

https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html

console=/dev/ttyS0,115200

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

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

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

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

sigurd ★★★★★
()
Ответ на: комментарий от MkktBkkt
ps axuww | grep tty

сделай. Там где-то будет гуи - увидишь на какой он консоли. Надо туда getty подсунуть будет.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от MkktBkkt

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

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

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

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

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

  1. «игрушка» для RND
  2. есть один заказчик, которому проще носить с собой только одну клавиатуру, а не целый ноут с ssh
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
() автор топика