Следуя meuh предложению, я запустил Python с strace
и посмотрел на различия между интерактивным и не-интерактивным Python.
Interactive Python прочитал мой ~/.inputrc
, так как он использует readline , и это был файл, который вызывал Segmentation fault (core dumped)
.
У меня был ~/.inputrc
, который пришел с другой машины (Ubuntu ), и внутри него я слепо скопировал содержимое (Ubuntu)/usr/share/doc/bash/inputrc.arrows
.
Содержимое /usr/share/doc/bash/inputrc.arrows
::
# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD" backward-char
"\C-[OC" forward-char
"\C-[OA" previous-history
"\C-[OB" next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D" backward-char
"\C-[[C" forward-char
"\C-[[A" previous-history
"\C-[[B" next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD" backward-char
"\C-M-OC" forward-char
"\C-M-OA" previous-history
"\C-M-OB" next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D" backward-char
"\C-M-[C" forward-char
"\C-M-[A" previous-history
"\C-M-[B" next-history
8 bit keypad mode
и 8 bit ANSI mode
были конкретной причиной проблемы, поэтому после их удаления все работает нормально.
Спасибо thrig за то, что он указал мне на gdb
и проявил достаточно терпения, так как я никогда раньше не пользовался этим инструментом. То же самое с meuh , который предложил использовать strace
, что также было для меня новым. Я понятия не имел, с чего начать отладку, так как я всего лишь случайный пользователь, которому нравится узнавать что-то новое. Отличное сообщество!
Отсутствует параметр -d /dev/fb0
, указывающий на фактическое устройство кадрового буфера. Кстати, я пытаюсь заставить работать опцию -T 1
прямо сейчас, но она терпит неудачу независимо от того, что я делаю. Существует еще один ответ на вопрос fbi
, в котором говорится, что «если виртуальный терминал не указан, /dev/console
используется». (Я отредактирую это, если заставлю -T
работать из systemd)
Следующее работает (для отображения изображения )как службы systemd
и было найдено в/etc/systemd/system/splashscreen.service
:
[Unit]
Description=Splash screen
DefaultDependencies=no
After=local-fs.target
[Service]
#ExecStart=/usr/bin/fbi --noverbose -d -T 1 /dev/fb0 -t 60 -a -l /path/to/some/images.lst
ExecStart=/usr/bin/fbi --noverbose -d /dev/fb0 -t 60 -a -l /path/to/some/images.lst
#ExecStart=/usr/bin/fbi --noverbose -d /dev/fb0 -a /path/to/some/image.png
StandardInput=tty
StandardOutput=tty
#TTYPath=/dev/tty1
[Install]
WantedBy=sysinit.target
Строки #
— это то, что я тестирую, и 2-я, и 3-я строки ExecStart
будут отображать изображение.
Если вы переключитесь с (виртуальной консоли загрузки по умолчанию ), вы потеряете вывод кадрового буфера (экран будет пустым/черным ), хотя ввод с клавиатуры по-прежнему работает(q
для выхода -проверено с помощью ps
иsystemctl
). Я предполагаю, что если вы не отключитесь, все будет работать, как и ожидалось, но я не могу проверить, что банкомат, поскольку ОС, из которой он исходит, запускает виртуальную машину в качестве своей основной ОС, которая по умолчанию открывается на другом терминале., и который также использует устройство фреймбуфера.