起動後にコンソールttyをどのように変更しますか?

起動後にコンソールttyをどのように変更しますか?

このコマンドはdmesg | grep console以下を返します。

Kernel command line: console=ttys6,115200 root=/dev/mmcblk1p2 
rootwait rw
console [ttys6] enabled

起動後にttys3に変更したいです。可能ですか?

ベストアンサー1

マニュアルページtty_ioctlioctl TIOCCONSをリストします。 ttyのオープンファイル記述子に適用すると、将来の出力はその/dev/consolettyにリダイレクトされます。

単純な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 $!;

おすすめ記事