LINUX.ORG.RU

Странно ведёт себя console-setup в свежеустановленной Ubuntu (systemd)

 , ,


0

2

Ubuntu 14.10 (минимальная установка), systemd. Загружаюсь, вместо русского квадратики и alt+shift не пашет

systemctl enable console-setup

systemctl start console-setup

всё заработало, как надо. Перезагрузка, русский есть, но alt+shift не работает. systemctl status console-setup.service говорит: active (exited) и логи, говорящие, что всё выполнилось. systemctl start console-setup - нет реакции. systemctl restart console-setup - и всё работает. Что за лажа и как лечить? При полной установке с LiveDVD (по-прежнему с systemd) всё работает, как надо.

★★

Ответ на: комментарий от ilipnitsky

Ты ошибаешься. Там по дефолту и Upstart, и systemd. Лёгким движением apt-get remove upstart upstart отправляется туда, где ему и должно быть, системой инициализации становится systemd.

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

Ой точно, не сисвинит, а апстарт. Но там все равно сейчас не полностью systemd...

ilipnitsky ★★★ ()

Дело (скорее всего) в том, что console-setup запускается раньше, чем подгружается драйвер фреймбуфера (что сбрасывает все настройки VT). Эту зависимость, насколько мне известно, нельзя адекватно выразить в терминах udev+systemd, т. к. нет чётко заданного события, возникающего при смене драйвера фреймбуфера.

(В апстриме сейчас по этому поводу запилили какой-то хак, который заставляет меня терять веру в человечество — вообще не знаю, куда глядели ревьюеры. Они тупо повторно запускают бинарник в обход systemd.)

Варианты следующие:

  • подгружать модуль видеоадаптера (i915, radeon, nouveau) в initramfs
  • подгружать модуль видеоадаптера через /etc/modules-load.d и добавить в юнит console-setup зависимость типа After=systemd-modules-load.service
intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от funeralismatic

Поясни, что значит «облажался». Облажались те, кто проектировал VT, причём интенсивно и неоднократно. Но это простительно, ибо легаси и тогда ничего из этого (ни каких-то особых фреймбуферов, ни подгрузки шрифтов и так далее) не было нужно.

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

поясняю: он облажался тем, что consoled до сих пор в заднице. да, оно ещё сырое, но оно уже лучше VT.

systemd-consoled хочу, кинь в меня ссылкой, как его вкрутить, а то я что-то делаю не так.

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

Самому интересно. Если я не ошибаюсь, в настоящий момент оно в состоянии development preview, и для его запуска нужно шаманить с сессиями (бинарник, который это делает, собирается только вместе с юнит-тестами и не входит в make install).

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

development preview

в 217 обещали привинтить.

не входит в make install

у меня в генте оно должно было появиться с юзом terminal, юз есть, но consoled нет. )=

шаманить с сессиями

меня это не останавливает.

бинарник, который это делает, собирается только вместе с юнит-тестами

можно как-то подробнее и/или понятнее?

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

в 217 обещали привинтить.

Вот именно, что не совсем: «Currently, it is a preview, and will so far open a single terminal on each session of the user marked as Desktop=systemd-console.»

можно как-то подробнее и/или понятнее?

Видимо, уже выпилили — не нашёл его в дереве исходников.

В общем: чтобы заиметь консольку, нужно с помощью PAM создать сессию, добавив к ней в переменные XDG_SESSION_DESKTOP=systemd-console, и эту сессию активировать (допустим, присвоить ей VT и на этот VT перейти). Это я описал с точки зрения разработчика. А как это сделать по факту — зависит от дисплейного менеджера.

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

Чего я не понимаю: в установленной с LiveDVD Кубунте (готовой) таких проблем нет (после выпила Upstart). Всё работает само. Заглянул в initramfs - дров не нашёл (Nvidia). В modules-load.d ничего нет примечательного.

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

Это рейс, т. е. всё может «как-то» работать.

А может быть и так, что моё предположение неверно и у тебя проблема в другом =)

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

Значит, я просто не шарю, что там у вас в дебиане происходит. В арче (т. е. в ванили) описанная мной проблема наблюдается — мне пришлось запихивать i915 в initcpio, чтобы заиметь в консоли нормальный шрифт.

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

мне пришлось запихивать i915 в initcpio, чтобы заиметь в консоли нормальный шрифт

аналогичная проблема в генте.

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

У меня получилось, но дисклеймер — это КОСТЫЛЬ.

Во-первых, нужно пересобрать systemd с флагом --enable-terminal. Примечание: хз почему, но в релизном тарболле v217 нет файла units/user/systemd-consoled.service. Я просто взял гитовый мастер.

Во-вторых, пересобранный systemd нужно поставить и сделать

systemctl --user daemon-reload
systemctl --user start systemd-consoled
(ну или systemctl restart user@$UID, где $UID — UID твоего пользователя). Или просто разлогиниться из всех сессий этого пользователя.

В-третьих, костыль. Создаём файл /etc/systemd/system/getty@ttyN.service.d/console.conf (где N — номер того терминала, на котором ты хочешь иметь консольку):

[Service]
Environment=XDG_SESSION_DESKTOP=systemd-console
И делаем systemctl daemon-reload.

В-четвёртых, переключаемся на этот терминал, логинимся (здесь всё ещё работает ядерная консоль) и получаем consoled. Да-да, всё правильно, поверх баша на ядерной консоли — он тоже запустится. (Это не недостаток consoled, а исключительно моё неумение создавать пустые PAM-сессии.)

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

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

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

у меня есть /usr/lib64/systemd/systemd-consoled, но тоже нет юнита.

всё, что ты написал было проделано, но эффекта не возымело. видимо, systemd-consoled совсем не готов.

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

Никто не обещал его готовности, даже напротив.

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

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

Никто не обещал его готовности

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

ребутнуться

естественно ребутался, причём с той же мыслью.

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

Мм.

systemctl cat getty@ttyN.service (N — номер терминала, на котором ты хочешь консольку) и systemctl --user status systemd-consoled?

Ах да, 1 <= N <= 6 (с дефолтными настройками на остальных VT терминалы просто не запускаются).

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx
 % > systemctl cat getty@tty6.service --no-pager
# /usr/lib64/systemd/system/getty@.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Getty on %I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
After=systemd-user-sessions.service plymouth-quit-wait.service

# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes

# On systems without virtual consoles, don't start any getty. Note
# that serial gettys are covered by serial-getty@.service, not this
# unit.
ConditionPathExists=/dev/tty0

[Service]
# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty --noclear %I $TERM
Type=idle
Restart=always
RestartSec=0
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes

# Unset locale for the console getty since the console has problems
# displaying some internationalized messages.
Environment=LANG= LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC_COLLATE= LC_MONETARY= LC_MESSAGES= LC_PAPER= LC_NAME= LC_ADDRESS= LC_TELEPHONE= LC_MEASUREMENT= LC_IDENTIFICATION=

[Install]
WantedBy=getty.target
DefaultInstance=tty1

# /etc/systemd/system/getty@tty6.service.d/console.conf
[Service]
Environment=XDG_SESSION_DESKTOP=systemd-console
 % > systemctl --user status systemd-consoled
● systemd-consoled.service - Console Manager and Terminal Emulator
   Loaded: loaded (/usr/lib64/systemd/user/systemd-consoled.service; static)
   Active: active (running) since Tue 2014-12-02 03:43:13 YEKT; 9h ago
 Main PID: 320 (systemd-console)
   Status: "Processing requests..."
   CGroup: /user.slice/user-1000.slice/user@1000.service/systemd-consoled.service
           └─320 /usr/lib/systemd/systemd-consoled

Dec 02 03:43:13 gentoo systemd[317]: Starting Console Manager and Terminal Emulator...
Dec 02 03:43:13 gentoo systemd[317]: Started Console Manager and Terminal Emulator.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

напрягает строка Log output is incomplete or unavailable, которая не даёт полного лога.

и, да, ходелось бы systemd-consoled общесистемно, но ни под рутом, ни под юзером оно не запускается даже на отведённом tty.

Ах да, 1 <= N <= 6 (с дефолтными настройками на остальных VT терминалы просто не запускаются).

уже второй месяц планирую перенести иксы на tty11, и сделать первые десять юзабельными, но никак руки не доходят. )=

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

Всё запущено... Если перейти в шестой терминал и залогиниться как обычно (как в классическую консоль), оно не запускается?

Ах да. PAM установлен? /bin/login собран с поддержкой PAM? Модуль pam_systemd.so в директории /etc/pam.d грепается?

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

уже второй месяц планирую перенести иксы на tty11, и сделать первые десять юзабельными, но никак руки не доходят. )=

Это несложно. Нужно сначала настроить DM (или что у тебя там), чтобы он запускался на этом самом 11-м терминале, а потом дописать NAutoVTs=10 в /etc/systemd/logind.conf.

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

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

нет, даже не смотря на то, что

Всё запущено

Ах да. PAM установлен?

установлен. с ним собраны следующие пакеты:

app-emulation/emul-linux-x86-baselibs-20140508-r14
net-misc/openssh-6.7_p1-r3
sys-apps/kbd-2.0.2
sys-apps/shadow-4.2.1
sys-apps/systemd-217-r3
sys-auth/polkit-0.112-r2
sys-libs/libcap-2.22-r2
x11-misc/slim-1.3.6-r4

/bin/login

/bin/login принадлежит sys-apps/shadow, соответственно, собран.

Модуль pam_systemd.so в директории /etc/pam.d грепается?

FAIL!

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

FAIL!

Т. е. если залогиниться «как обычно» и сделать echo $XDG_SESSION_ID или просто loginctl, то будут выведены пустая строка и пустая табличка соответственно?

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

Есть ли метод запилить такой же интрд при установке минимальной убунты? Она спрашивает, общий или специализированный сабж создать, выбираю общий - и нихрена.

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

Просканировал /etc/initramfs-tools глазами в Дебиане и Убунте на предмет отличий. Не обнаружил.

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

В Ubuntu (минимальной установке (mini.iso)) при запуске с systemd (upstart удалён) console-setup не работает - внешний вид консоли настраивает, а keymaps - нет. Начинает работать только после команды ему на restart, хотя systemctl говорит, что он запущен. В Дебиане при прочих равных условиях всё работает идеально.

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

Волею случая обнаружил, что виновен параметр quiet в командной строке ядра. Без него усё пашет, как и должно.

Оного файла не нашёл ни в Убунте, ни в Дебе, хотя, наверное, вопрос можно считать закрытым. Только хотелось бы узнать - почему сплэш себя так погано ведёт (особенно если фактически его нет)?

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

Поставь лучше kmscon.

consoled — это «разработческий превью», со всеми вытекающими. Точнее, на самом деле им уже можно пользоваться, просто никто не написал для него внятного аналога /bin/login (который бы создавал пустую сессию и помечал бы её как «systemd-console»).

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

Поставь лучше kmscon.

только недавно его снёс. во-первых он не хочет логиниться под рута — вечно неверный пароль; во-вторых он либо сам виснет, либо вешает иксы; в-третьих он не умеет /etc/issue.

я знаю, что systemd-consoled тот же kmscon, но я очень надеюсь, что он будет лучше его хотя бы в плане того, что я перечислил выше.

Точнее, на самом деле им уже можно пользоваться

может, от дистра зависит? у меня не взлетел.

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

К systemd-consoled первая и третья проблемы неприменимы, т. к. он не включает в себя чего-либо для логина. Вторая — не знаю.

может, от дистра зависит?

Не должно. Понятия не имею, что ты сделал не так (или что в твоём дистре сделали не так).

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.