![부팅 후 콘솔 tty를 어떻게 변경합니까?](https://linux55.com/image/119547/%EB%B6%80%ED%8C%85%20%ED%9B%84%20%EC%BD%98%EC%86%94%20tty%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%B3%80%EA%B2%BD%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
이 명령은 dmesg | grep console
다음을 반환합니다.
Kernel command line: console=ttys6,115200 root=/dev/mmcblk1p2
rootwait rw
console [ttys6] enabled
부팅 후 ttys3으로 변경하고 싶습니다. 가능합니까?
답변1
매뉴얼 페이지tty_ioctlioctl TIOCCONS를 나열합니다. tty에 대한 열린 파일 설명자에 적용하면 향후 출력이 /dev/console
해당 tty로 리디렉션됩니다.
간단한 Perl 스크립트에서 사용할 수 있습니다. chmod +x
다음 내용으로 mysetconsole 파일을 생성합니다 .
#!/usr/bin/perl
# https://unix.stackexchange.com/a/397790/119298
# see man tty_ioctl for TIOCCONS
# and perldoc IO::Tty::Constant
require "sys/ioctl.ph";
use IO::Tty::Constant qw(TIOCCONS);
ioctl(STDIN,TIOCCONS,0) or die $!;
원하는 장치를 열 수 있다고 가정하면 다음과 같이 사용하십시오.
sudo ./mysetconsole </dev/ttys3
/dev/console
콘솔을 다시 설정하지 않으면 다시 사용할 수 없습니다.
sudo sh -c './mysetconsole </dev/console'
_FORTIFY_SOURCE
무시할 수 있는 Perl 경고가 나타날 수 있습니다. rpm 패키지 perl-IO-Tty
나 debian 패키지 가 필요합니다 libio-pty-perl
. 원하는 경우 시스템 포함 파일에서 TIOCCONS 정의를 찾아볼 수 있습니다. 내가 찾은 곳은 다음과 같다:
/usr/include/asm-generic/ioctls.h: #define TIOCCONS 0x541D
귀하의 Perl 스크립트는 다음과 같을 수 있습니다.
#!/usr/bin/perl
# https://unix.stackexchange.com/a/397790/119298
sub TIOCCONS{ return 0x541D; }
ioctl(STDIN,TIOCCONS(),0) or die $!;
답변2
사용 편의성을 위해 많은 Linux 시스템은 setconsole(8)
Perl 스니펫과 동일한 하위 수준 작업을 제공합니다.
반품을 확인하는 것이 중요합니다. 실패할 수 있습니다.
$ setconsole /dev/ttyS1 ; echo $?
0
내부 증거:
$ strace -ff setconsole /dev/ttyS1
...
openat(AT_FDCWD, "/dev/ttyS1", O_WRONLY|O_NOCTTY) = 3
ioctl(3, TCGETS, {B115200 opost isig icanon echo ...}) = 0
ioctl(3, TIOCCONS) = 0
...
답변3
짧은 대답: chvt 사용 긴 대답: Linux가 부팅 시 TTY를 구성하는 방법은 배포판에 따라 다릅니다. /etc/inittab 또는 /etc/rc.local일 수 있습니다. systemd 시스템에서는 logind.conf의 구성에 따라 자동으로 수행됩니다.