By ribbon @
2022-12-19 00:12
第四世代の Intel CPU を使ったマシンで openSUSE を使っていると、シャットダウンコマンドで電源をOffにしようとしても( poweroff など)電源が切れません。一旦切れたようになりますが、再度起動してしまいます。この動作は、なぜか Windows と BSD (Dragon Fly BSD)では起こらず Linux のみ起こる現象のようです。 openSUSE 意外に Debian でも現象を確認しています。
色々調べたのですが、正解にはたどり着けず、毎回手動で電源を落としていました。そうすると、マジックパケットを飛ばして WOL による起動ができなくなり、ちょっと不便に感じていました。
結局、Kernel の詳しい人に正解をいただきました。Grub のオプションに
xhci_hcd.quirks=0x2000
を付けるのだそうです。これでちゃんと電源が切れ、さらに WOL も動くようになりました。
Category
Tips,
サーバ,
デスクトップ |
受け付けていません
By ribbon @
2022-12-18 00:00
この記事は openSUSE Advent Calendar 2022 の18日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、wdctl を紹介します。
コマンド名: wdctl
パッケージ: util-linux-2.37.2-150400.8.8.1.x86_64
動作: ○
wdctl は、システムのウオッチドッグ情報を表示するコマンドです。引数なしで起動すると以下のように表示します。
% wdctl
Device: /dev/watchdog0
Identity: Software Watchdog [version 0]
Timeout: 10 seconds
Pre-timeout: 0 seconds
オプションによって表示形式を変更することは出来ますが、基本的に上記のような情報を表示するだけです。ですので、あまり使い道はないかと思います。
Category
openSUSE,
Tips,
サーバ,
デスクトップ |
受け付けていません
By Syuta Hashimoto @
2022-12-14 08:54
この記事は openSUSE Advent Calendar 2022 の14日目です。
大分遅くなりましたが、先月、自宅のopenSUSEを15.4にアップデートしました。なお、SLES15 サービスパック3(Leap 15.3のベース)は、2022年12月でサポートが切れる(セキュリティパッチの提供などが終了する)ので、皆さん15.4にアップデートすることをおすすめします。
さて、15.4にアップデートしたところ、emacsを起動した時に初期設定が反映されなくなりました。
そこでXDDCのもくもく会で力を貸して頂いて対処したので、書いてみます。なお、最終的な解決までには至りませんでした。
結論
/usr/share/hunspell に、ja_JP.affとja_JP.dicを配置する(中身は何でも良い)
症状
emacsを起動しても初期設定が反映されない
*Messages*に以下のメッセージが表示されている
ispell-find-hunspell-dictionaries: Can’t find Hunspell dictionary with a .aff affix file
教えてくださった方法
Ubuntuの開発者の方に、まずstraceでemacs.d/init.el読んでるかみてみたら?と教えて頂きました。
strace -f emacs > strace.log
straceはシステムコールやシグナルをトレースするプログラムです。
このログをinit.elでgrepしても、ヒットしませんでした。なので、そもそもinit.elを読んで無いようです。
どうやら、メッセージにある通り、hunspellの起動が失敗していて、init.elの読み込みまで進んでないようです。
それでhunspellでログをgrepしていると、/usr/share/hunspell/ja_JP.affと/usr/share/hunspell/ja_JP.dicを読みに行く跡がありました。
そこで、/usr/share/hunspell/en_US.affと/usr/share/hunspell/en_US.dicをそれぞれコピーして/usr/share/hunspell/ja_JP.affと/usr/share/hunspell/ja_JP.dicとして配置した所、無事init.elを読み込みました。
hunspellは日本語チェックをする事はないので、このファイルがあることは問題にならないのですが、回避策にしかならないですね・・・
hunspellはどうやらLANGの値を見ているらしく、以下のように起動するとエラーなく起動できました。
LANG=en_US.UTF-8 emacs
hunspellがLANGの値を見る所を探っていけば、根本解決までいけそうですね。
By ribbon @
2022-12-12 00:49
この記事は openSUSE Advent Calendar 2022 の12日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、timedatectl を紹介します。
コマンド名: timedatectl
パッケージ: systemd-249.11-150400.6.8.x86_64
動作: ○
詳細:
timedatectl は、システム時刻の表示/変更を行うコマンドです。引数なしで起動すると以下のような形で日付と時刻を表示します。また、引数 show を指定すると、機械で処理しやすい形で表示します。
% timedatectl
Local time: 日 2022-12-11 14:27:55 JST
Universal time: 日 2022-12-11 05:27:55 UTC
RTC time: 日 2022-12-11 05:27:55
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
% timedatectl show
Timezone=Asia/Tokyo
LocalRTC=no
CanNTP=yes
NTP=yes
NTPSynchronized=yes
TimeUSec=Sun 2022-12-11 14:30:45 JST
RTCTimeUSec=Sun 2022-12-11 14:30:45 JST
日付の変更もできます。但し、NTP が動作している場合は、一旦 NTP の同期を止めてからでないと変更ができません。ここは date コマンドと違うところです。
# timedatectl set-time "2022-12-11 15:40:00"
Failed to set time: Automatic time synchronization is enabled
# timedatectl set-ntp no
# timedatectl set-time "2022-12-11 15:40:00"
# timedatectl
Local time: Sun 2022-12-11 15:40:07 JST
Universal time: Sun 2022-12-11 06:40:07 UTC
RTC time: Sun 2022-12-11 06:40:07
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
日付や時刻の変更は、時刻同期機能を入れておけば使う事は少ないと思いますが、date コマンドよりは情報量が多いので、場合によっては便利かもしれません。
Category
Tips,
サーバ,
デスクトップ |
受け付けていません
By ribbon @
2022-12-10 10:46
この記事は openSUSE Advent Calendar 2022 の10日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、powerprofilesctl を紹介します。
コマンド名: powerprofilesctl
パッケージ: power-profiles-daemon-0.12-1.2.x86_64
動作: ○
詳細:
powerprofilesctl は、電源モードの表示や変更を行うプログラムです。powerprofiles は GNOME の 設定→電源 で表示される電源モードになります。プロファイルの一覧、現状のプロファイル状態は以下のようにして表示できます。
% powerprofilesctl list
balanced:
Driver: placeholder
* power-saver:
Driver: placeholder
% powerprofilesctl get
power-saver
また変更は下記のように行えます。
# powerprofilesctl set balanced
# powerprofilesctl get
balanced
ただ、電源プロファイルを変更することはほとんど無いので、このコマンドの出番はあまりないのかもしれません。
Category
openSUSE,
Tips,
サーバ,
デスクトップ |
受け付けていません
By ribbon @
2022-12-07 00:42
この記事は openSUSE Advent Calendar 2022 の7日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、loginctl を紹介します。
コマンド名: localectl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
loginctl は、systemd の login マネージャからの情報を表示したり設定するためのツールです。表示に関しては、従来の w コマンドや ps コマンド などの機能が含まれています。たとえば、現在ログインしている情報は、下記のように表示されます。
%loginctl
SESSION UID USER SEAT TTY
11 1000 ribbon pts/0
12 1000 ribbon pts/2
13 0 root
6 1000 ribbon seat0 tty2
w コマンドではこのように表示されます。表示する内容がかなり異なります。
%w
20:10:49 up 12:55, 5 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ribbon : : 15:20 ?xdm? 2:18 0.07s gdm-session-worker [pam/gdm-password]
ribbon tty2 tty2 15:20 12:55m 0.08s 0.08s /usr/lib/gnome-session-binary
ribbon pts/0 192.168.X.Y 18:17 10:29 0.28s 0.00s less
ribbon pts/2 192.168.X.Y 19:46 1.00s 0.11s 0.01s w
root pts/3 ::1 20:02 7:58 0.09s 0.09s -bash
自分自身のセッション情報は session-status サブコマンドで表示できます。
%loginctl session-status
12 - ribbon (1000)
Since: Sat 2022-12-03 19:46:34 JST; 28min ago
Leader: 7798 (sshd)
TTY: pts/2
Remote: 192.168.X.Y
Service: sshd; type tty; class user
State: active
Unit: session-12.scope
┣ 7798 "sshd: ribbon [priv]" ""
┣ 7800 "sshd: ribbon@pts/2" "" ""
┣ 7801 -bash
┣ 8134 loginctl session-status
┗ 8135 less
さらに、 user-status サブコマンドで、詳細な情報を得ることができます。pstree コマンドにも似た感じです。
%loginctl user-status
ribbon (1000)
Since: Sat 2022-12-03 15:20:50 JST; 5h 8min ago
State: active
Sessions: 12 11 *6
Linger: no
Unit: user-1000.slice
┣session-11.scope
┃┣ 7431 "sshd: ribbon [priv]" ""
┃┣ 7437 "sshd: ribbon@pts/0" "" ""
┃┣ 7438 -bash
┃┣ 7780 man loginctl
┃┗ 7792 less
┣session-12.scope
┃┣ 7798 "sshd: ribbon [priv]" ""
┃┣ 7800 "sshd: ribbon@pts/2" "" ""
┃┣ 7801 -bash
┃┣ 8270 loginctl user-status
┃┗ 8271 less
┣session-6.scope
┃┣ 4748 "gdm-session-worker [pam/gdm-password]"
┃┣ 4778 /usr/bin/gnome-keyring-daemon --daemonize --login
┃┣ 4784 /usr/lib/gdm/gdm-wayland-session /usr/bin/gnome-session
┃┣ 4788 /usr/lib/gnome-session-binary
┃┗ 7997 /usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
┗user@1000.service
┣app.slice
┃┣app-gnome-YaST2\x2dorg.opensuse.yast.LAN-5394.scope
┃┃┣ 5523 dbus-launch --autolaunch 61ee5253e44f403c9918308e232c84b8 --binary-syntax>
┃┃┗ 5524 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7>
┃┣app-gnome-gnome\x2dsoftware\x2dservice-5036.scope
┃┃┗ 5036 /usr/bin/gnome-software --gapplication-service
┃┣app-gnome-org.gnome.Evolution\x2dalarm\x2dnotify-5045.scope
┃┃┗ 5045 /usr/lib/evolution-data-server/evolution-data-server/evolution-alarm-noti>
┃┣app-gnome-org.gnome.SettingsDaemon.DiskUtilityNotify-5018.scope
┃┃┗ 5018 /usr/lib/gsd-disk-utility-notify
そのほかに、セッションを強制切断する kill-session サブコマンドがあります。たとえば、ssh でログインしているセッションを強制切断するためには、
1) w コマンドでユーザを調べる
2) そのユーザが使っている sshd プロセスを ps コマンドで調べる
3) kill コマンドでそのプロセスを終了させる。
というステップが必要でしたが、loginctl では、セッション番号を表示させた後、そのセッションを終了するコマンドを入力することで作業が行えますので、手間が減ります。
# loginctl
SESSION UID USER SEAT TTY
11 1000 ribbon pts/0
12 1000 ribbon pts/2
13 0 root
6 1000 ribbon seat0 tty2
4 sessions listed.
# loginctl kill-session 13
# loginctl
SESSION UID USER SEAT TTY
11 1000 ribbon pts/0
12 1000 ribbon pts/2
6 1000 ribbon seat0 tty2
3 sessions listed.
loginctl は、表示形式が見やすいので、w コマンドなどと併用すると便利でしょう。
Category
openSUSE,
Tips,
サーバ,
デスクトップ |
受け付けていません
By ribbon @
2022-12-06 00:39
この記事は openSUSE Advent Calendar 2022 の6日目です。
systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。
今回は、localectl を紹介します。
コマンド名: localectl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○
詳細:
localectl は、システムのロケールを表示したり、変更を行うコマンドです。そのほかに、キーボードマッピングの変更も行えます。locale コマンドと loadkeys や kbdconfig の後継とも考えることができます。ただし、機能は強化されています。
ロケールの表示については、 locale コマンドと localectl コマンドでは内容が違い、locale コマンドの方が環境変数に設定されている値を表示するのに対し、localectl コマンドでは、最低限の物のみを表示します。
%locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
%localectl
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp
X11 Layout: jp
X11 Model: microsoftpro
X11 Options: terminate:ctrl_alt_bksp
また、localectl list-locales でロケールの一覧を表示することができますが、その結果は locale コマンドの結果とは異なっていました。locale コマンドで表示できる、UTF-8系以外のロケールが、localectl では表示されません。
% locale -a | grep ja
ja_JP.eucjp
ja_JP.shiftjisx0213
ja_JP.sjis
ja_JP.utf8
%localectl list-locales | grep ja
ja_JP.UTF-8
但し、localectl でロケールの一覧に表示されていない、たとえば ja_JP.sjis を指定しても、変更することはできました。ちなみに、ロケールの変更は、localectl のサブコマンド set-locale で指定します。
キーボードマップの変更はサブコマンド set-keymap で指定します。これも、loadkeys で指定できるキーマップと異なります。loadkeys の場合ですと、IA アーキテクチャを使用する場合には /usr/share/kbd/keymaps/i386/ 配下にあるキーマップを使いますが、そこにあるマップ一覧と同じものになっています。ただ、標準 jp106 以外の使い道は少ないと思いますが….
%localectl list-keymaps | grep jp
jp
jp-OADG109A
jp-dvorak
jp-kana86
jp106
mac-jp106
%find /usr/share/kbd/keymaps -name "jp*" -print
/usr/share/kbd/keymaps/i386/qwerty/jp106.map.gz
/usr/share/kbd/keymaps/xkb/jp-dvorak.map.gz
/usr/share/kbd/keymaps/xkb/jp-OADG109A.map.gz
/usr/share/kbd/keymaps/xkb/jp-kana86.map.gz
/usr/share/kbd/keymaps/xkb/jp.map.gz
localectl でのロケール変更は、システム全体の変更となるので、一時的な変更には使えません。一時的な変更は、環境変数を設定し直すことになります。キーボードの変更についても、loadkeys と同等のことはできますが、locale と言う名前でキーボードの操作、と言うことになるので、ちょっと分かりにくいかもしれません。使い道は限定されそうです。
Category
Tips,
サーバ,
デスクトップ |
受け付けていません