LINUX.ORG.RU

Return при автологине в терминале выдаёт код 0x0d вместо 0x0a

 , ,


0

1

Настраиваю автологин при использовании machinectl login, через /etc/systemd/system/container-getty@.service.d/override.conf:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --noclear -a user --keep-baud pts/%I "115200 38400 9600" $TERM

Автологин работает, но при этом enter работает «криво». Если запустить xxd и понажимать enter, то xxd печатает 0d.

Если из опций agetty убрать -a user, т.е. автологин, и залогиниться с вводом пароля, то xxd печатает 0a, как и должно быть.

bash переваривает кривое поведение enter-а при автологине, а многий другой софт — нет, приходится жать Ctrl-J, что неудобно.

stty -a при автологине

speed 38400 baud; rows 44; columns 142; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
-echoctl echoke
при обычном логине
speed 38400 baud; rows 44; columns 142; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
-iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
-echoctl echoke
diff -u noauto auto
--ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff
+-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon ixoff

Нашёл такое https://lists.freedesktop.org/archives/systemd-devel/2015-July/033533.html

Как чинить?

Добавил stty icrnl в .bashrc, но это кастыль.

utf8nowhere ★★ ()

Достаточно глупый вопрос: а machinectl shell никак?

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

А вообще, казалось бы, на самом деле нужно поправить создание псевдотерминальной пары в machinectl. Ещё, в качестве меньшего костыля, можно попытаться найти управляющую строку, действие которой эквивалентно stty icrnl, и дописать её в container-getty@.service параметром --init-string к agetty.

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