Какое приложение управляет консолями

Похоже, что файл optparse.pyиз вашей установки Python 2.7 был поврежден. В частности, похоже, что он был перезаписан и заменен копией optparse.pyиз Python 3.

Вывод dpkg -Vпоказывает много полей, проверяющих владельца, группу, режим и т. д. 5в выводе указывает, что контрольная сумма MD5 файла в системе не совпадает с суммой в манифесте пакета. (Другими словами, содержимое было изменено после установки пакета.)

Не совсем уверен, как вы могли узнать, что могло вызвать это... Если вы установили модули Python от имени пользователя root, используя что-то, отличное от вашей ОС. дистрибутив пакета, это могло бы объяснить это... Возможно, если бы вы что-то установили, используя pip? Хотя pipобычно хорошо разделяет модули Python 2 и Python 3... Кроме того, я не понимаю, почему это касается конкретно optparse.py...

В любом случае, чтобы решить эту проблему, вы можете попросить apt -get переустановить пакет, который должен исправить повреждение:

$ sudo apt-get install --reinstall libpython2.7-minimal
1
21.02.2020, 16:12
2 ответа

В ядро ​​Linux встроена программа-эмулятор терминала. Он не проявляется как работающий процесс с дескрипторами открытых файлов. Он расположен поверх фреймбуфера и подсистемы входных событий, для доступа к которым он использует внутренние интерфейсы ядра. Он представляет себя для систем режима приложения -в виде последовательности устройств виртуального терминала ядра , /dev/tty1и т. д., псевдофайла -под /sys, который показывает активный номер KVT, и серия видеобуферных устройств в стиле CGA -, /dev/vcsa1и так далее.

Обычно эмулятор терминала ядра распознает и #x2387; Alt + F Nключевые аккорды. Все это делается полностью в коде режима ядра -. (Вы можете собрать ядро ​​без этого кода, используя параметр сборки ядра CONFIG_VT.)

Однако прикладное программное обеспечение может отключить эту функцию. Например, сервер Xorg делает это. Когда он активен на экране -, он временно выключает или отключает большую часть эмулятора терминала ядра, распознает свои собственные аккорды клавиш(и #x2388; Управление + и #x2387; Alt + F N)и использует системные вызовы ioctl()для переключения активного KVT под управлением программы. По сути, сервер Xorg использует переключение KVT как средство для согласования эксклюзивного доступа к фреймбуферу и HID, которые он использует совместно со встроенным в ядро ​​-эмулятором терминала.

Дополнительная литература

2
28.04.2021, 23:22

В дистрибутивах на основе systemd, таких как Enterprise Linux 7 и 8, есть генератор systemd -getty -. Подробнее об этом решении можно прочитать в блоге Lennart Poettering:http://0pointer.de/blog/projects/serial-console.htmlи на freedesktop https://www.freedesktop.org/software/systemd/man/systemd-getty-generator.html.

Простые тесты. При запуске консоли на ctrl+ alt+F2:

[root@SpaceStation ~]# systemctl list-units  | grep getty
  getty@tty2.service                                                                       loaded active running   Getty on tty2
  system-getty.slice                                                                       loaded active active    system-getty.slice
  getty.target                                                                             loaded active active    Login Prompts

После входа в третью консоль(ctrl+ alt+F3):

[root@SpaceStation ~]# systemctl list-units  | grep getty
  getty@tty2.service                                                                       loaded active running   Getty on tty2
  getty@tty3.service                                                                       loaded active running   Getty on tty3
  system-getty.slice                                                                       loaded active active    system-getty.slice
  getty.target    

Сгенерированный служебный файл выглядит так:

cat /usr/lib/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 getty-pre.target
After=rc-local.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=tty

Наиболее важной строкой является ExecStart=-/sbin/agetty --noclear %I $TERM, которая отвечает за запуск терминала.

0
28.04.2021, 23:22

Теги

Похожие вопросы