Wikiの記事通りトラブルシューティング以外の節の内容をしたのですがキー配列がjp106じゃなくなり、どうあがいても変更できないのではないかと考え元のコンソールに戻そうとしたのですがtty1でコンソールが読み込まれなくなりました
なんとかtty2などに変更すればログインはできるようですがtty1だけはログインができないままです
このままでは気持ちが悪いのでKMSCONをインストールしようとする前の状態に戻したいです
以下、wheelユーザで行った操作をhistoryで表示したもの(の抜粋)です
sudo -i pacman -S kmscon
ls
whereis gettext.sh
man gettext.sh
pacman -Q pango
sudo -i vim /etc/fonts/conf.d/99-kmscon.conf
pacman -Qs font
pacman -Qs font|less
sudo -i pacman -S tty-dejavu
sudo -i vim /etc/fonts/conf.d/99-kmscon.conf
kmscon --help
kmscon
...
sudo -i rm /etc/systemd/system/getty.target.wants/getty@tty1.service
sudo -i systemctl enable kmsconvt@tty1.service
...
exit
...
sudo -i ln -s /usr/lib/systemd/system/kmsconvt@.service /etc/systemd/system/autovt\@.service
...
exit
type jp106
...
sudo -i vim /etc/vconsole.conf
...
shutdown -h now
...
sudo -i rm /etc/systemd/system/getty.target.wants/kmsconvt@tty1.service
sudo -i ln -s /usr/lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty.service
shutdown -r now
...
sudo -i pacman -R kmscon
Alt+Ctrl+F1を押すと、このようなメッセージが出たままです。
Starting version 245.6-8-arch
/dev/sda2: clean, (略) files, (略) blocks
なお、グラフィカルなログイン画面はインストールないし設定していません
仮想コンソールから行います
他にもrootユーザでいろいろと行いました
現在このような状況です
$ ls /etc/systemd/system/*
/etc/systemd/system/getty.target.wants:
getty@tty.service getty@tty1.service
/etc/systemd/system/getty@tty1.service.d:
noclear.conf
/etc/systemd/system/multi-user.target.wants:
remote-fs.target
$ file /etc/systemd/system/getty.target.wants/*
/etc/systemd/system/getty.target.wants/getty@tty.service: symbolic link to /usr/lib/systemd/system/getty@.service
/etc/systemd/system/getty.target.wants/getty@tty1.service: empty
$ cat /etc/systemd/system/getty@tty1.service.d/noclear.conf
[Service]
TTYVTDisallocate=no
$ file /etc/systemd/system/multi-user.target.wants/remote-fs.target
/etc/systemd/system/multi-user.target.wants/remote-fs.target: symbolic link to /usr/lib/systemd/system/remote-fs.target
追記(2020年7月20日午前8時51分)
$ systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed.
$ journalctl -fp err
-- Logs begin at Tue 2020-01-28 00:52:19 JST. --
Jul 20 08:48:58 ljmljat agetty[2838]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:49:08 ljmljat agetty[2839]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:49:18 ljmljat agetty[2842]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:49:28 ljmljat agetty[2852]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:49:38 ljmljat agetty[2867]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:49:48 ljmljat agetty[2879]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:49:59 ljmljat agetty[2889]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:50:09 ljmljat agetty[2895]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:50:19 ljmljat agetty[2898]: /dev/tty: cannot open as standard input: No such device or address
Jul 20 08:50:29 ljmljat agetty[2902]: /dev/tty: cannot open as standard input: No such device or address
^C
編集者 mjachkie (2020-09-02 13:48:17)
this is a signature.
オフライン
KMSCON は使っていないので検討外れの回答だと申し訳ないですが、手元の標準インストール(に近いであろう)環境では、 getty@tty.service はありませんでした。こちら不要そうであれば無効化してみたらいかがでしょうか。
エラーについても tty1 ではなくこちらの tty のもので出ているように見えます。
オフライン
助言ありがとうございます
rootアカウントでログインし、
# systemctl disable getty@tty.service
# reboot
を愚直に実行しました
状況は変わっていません
で、エラーログがどんな状況なのかを次のように調べてみました。
$ systemctl --failed
UNIT LOAD ACTIVE SUB DESCRIPTION
0 loaded units listed.
$ journalctl -fp err
-- Logs begin at Tue 2020-01-28 00:52:19 JST. --
Jul 21 12:36:42 ljmljat agetty[536]: /dev/tty: cannot open as standard input: No such device or address
Jul 21 12:36:52 ljmljat agetty[575]: /dev/tty: cannot open as standard input: No such device or address
Jul 21 12:37:02 ljmljat agetty[578]: /dev/tty: cannot open as standard input: No such device or address
Jul 21 12:37:12 ljmljat agetty[601]: /dev/tty: cannot open as standard input: No such device or address
Jul 21 12:37:22 ljmljat agetty[603]: /dev/tty: cannot open as standard input: No such device or address
Jul 21 12:37:32 ljmljat agetty[604]: /dev/tty: cannot open as standard input: No such device or address
Jul 21 12:37:42 ljmljat agetty[605]: /dev/tty: cannot open as standard input: No such device or address
Jul 21 12:37:52 ljmljat agetty[606]: /dev/tty: cannot open as standard input: No such device or address
Jul 21 12:38:02 ljmljat agetty[640]: /dev/tty: cannot open as standard input: No such device or address
-- Reboot --
Jul 21 12:38:30 ljmljat kernel: i2400m_usb 1-1.6:1.0: WiMAX interface wmx0 (50:2d:a2:05:0b:94) ready
^C
とりあえず/dev/ttyによるエラー「は」無くせたようです
他にどんな操作が必要でしょうか
this is a signature.
オフライン
gettyのsystemdテンプレートユニットは、/usr/lib/systemd/system/getty@.serviceで。それのDefaultInstanceはtty1であるから、systemctlを用いて有効化するには、以下のように@のあとに『tty+数字』をつけて指示するか、テンプレートユニットを渡すとtty1のインスタンスが/etc/systemd/system/以下のどこかにつくられるよ。※『tty+数字』のinstance identifierじゃないと、多分agettyプロセスが仮想端末を作ろうとしない。
# systemctl enable getty@tty1.service
Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
# systemctl disable getty@tty1.service
Removed /etc/systemd/system/getty.target.wants/getty@tty1.service.
#
# systemctl enable getty@.service
Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
# systemctl disable getty@.service
Removed /etc/systemd/system/getty.target.wants/getty@tty1.service
それに、DefaultInstanceとしてつくられるsymlinkと同じ名前の、ファイルがあると有効化されない。
$ file /etc/systemd/system/getty.target.wants/*
…
/etc/systemd/system/getty.target.wants/getty@tty1.service: empty
関連パッケージのバージョンと、そのファイル:
systemd 245.7-1 gettyのテンプレートユニットである普通ファイル。
/usr/lib/systemd/system/getty@.service
util-linux 2.36-1 gettyの標準プロセス
/bin/agetty
編集者 tomonori_suga (2020-08-06 17:52:17)
I like perl5. I haven't do any kind of low-level programming.
オフライン
助言ありがとうございます。
以下4コマンドを順に実行を行いました。
# systemctl enable getty@tty1.service # systemctl disable getty@tty1.service # # systemctl enable getty@.service # systemctl disable getty@.service
その結果私の環境では次のように出力がされました。
$ sudo -i systemctl enable getty@tty1.service
Failed to enable unit: File /etc/systemd/system/getty.target.wants/getty@tty1.service already exists.
$ sudo -i systemctl disable getty@tty1.service
$ sudo -i systemctl enable getty@.service
Failed to enable unit: File /etc/systemd/system/getty.target.wants/getty@tty1.service already exists.
$ sudo -i systemctl disable getty@.service
$
現在次のような状態になっています。
$ ls /etc/systemd/system/*
/etc/systemd/system/getty.target.wants:
getty@tty1.service
/etc/systemd/system/getty@tty1.service.d:
noclear.conf
/etc/systemd/system/multi-user.target.wants:
chronyd.service remote-fs.target
$ for d in /etc/systemd/system/*; do eval file "${d}/*"; done
/etc/systemd/system/getty.target.wants/getty@tty1.service: empty
/etc/systemd/system/getty@tty1.service.d/noclear.conf: ASCII text
/etc/systemd/system/multi-user.target.wants/chronyd.service: symbolic link to /usr/lib/systemd/system/chronyd.service
/etc/systemd/system/multi-user.target.wants/remote-fs.target: symbolic link to /usr/lib/systemd/system/remote-fs.target
$ cat /etc/systemd/system/getty@tty1.service.d/noclear.conf
[Service]
TTYVTDisallocate=no
$
この後再起動をして確かめます。
(2020年8月21日追記)だめでした
編集者 mjachkie (2020-08-21 12:57:10)
this is a signature.
オフライン
上のcodeブロックで、enable した後にdisableしたのは比較するため、有効と無効を繰り返しただけでしたごめんなさい。Gettyを起動するならdisable(無効にする)しないでね。enable(有効にする)してください。
Failed to enable ... already existsと書いてあるように、空(empty)のユニットファイルがあると一向に有効化されないと思う。(多分systemctl edit --full getty@tty1.serviceと何処かでしたんじゃないかな。それかエディタで直接つくったとか。)
この事はmanページのsystemd.unit(5)始め、DESCRIPTION節の19段落目に情報が載ってたんで。(空のファイルをつくると、そのユニットは作動しないとかなんとか)
systemd.unit (5)より引用
If a unit file is empty (i.e. has the file size 0) or is symlinked to /dev/null, its
configuration will not be loaded and it appears with a load state of "masked", and
cannot be activated. Use this as an effective way to fully disable a unit, making it
impossible to start it even manually.
...
/etc/systemd/system/getty.target.wants/getty@tty1.service: empty
...
I like perl5. I haven't do any kind of low-level programming.
オフライン
この質問を見て、KMSCONに興味を持ったので、同じようにwikiに従って、KMSCONをインストールして使ってみました。
おお、コンソールで漢字が表示されてるかっけえと思ったのですがKMSCONからxが起動できず、じゃあ、元に戻すかと思ったら、mjachkie さんと同じようにtty1からログインできなくなって焦りました。
この↓書き方がアカンですよね。
# rm /etc/systemd/system/getty.target.wants/getty@tty1.service
削除しちゃいかんだろうと。
こんなこともあろうかと、バックアップを取っていた私はラッキーでした。
サービスを停止して、ファイルをリネームしたらtty1でログインできるようになりました。
wikiの方も安全側に書きなおした方がいいですよね(英語版も含めて)
追記
英語版の方は、そもそも systemctl disable getty@tty1.service となっていました。
日本語版の翻訳が更新されていないのが問題でした。
該当箇所のみ修正しましたが、他にも古い記述があるかもしれません。
編集者 kusanaginoturugi (2020-08-20 11:42:04)
オフライン
上のcodeブロックで、enable した後にdisableしたのは比較するため、有効と無効を繰り返しただけでしたごめんなさい。Gettyを起動するならdisable(無効にする)しないでね。enable(有効にする)してください。
助言ありがとうございます
すなわちこういうことですか?
# systemctl enable getty@tty1.service getty@.service
Failed to enable unit: File /etc/systemd/system/getty.target.wants/getty@tty1.service already exists.
#
this is a signature.
オフライン
要はこうすることかな。
# rm /etc/systemd/system/getty.target.wants/getty@tty1.service
# systemctl enable getty@tty1.service
Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
I like perl5. I haven't do any kind of low-level programming.
オフライン
少なくとも僕の環境では、これとの違いはないですし、それがそこまでmjachkieさんの環境でのgettyの起動に関わってるとも思えないなぁ。
# rm /etc/systemd/system/getty.target.wants/getty@tty1.service
それに、KMSCONのwikiページをよくするのは、あまりそれを知らないので難しいな。
I like perl5. I haven't do any kind of low-level programming.
オフライン
要はこうすることかな。
# rm /etc/systemd/system/getty.target.wants/getty@tty1.service # systemctl enable getty@tty1.service Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
助言ありがとうございます
その2つのコマンドの実行によりtty1でも端末が起動するようになりました
this is a signature.
オフライン