デバイス - ダメ出し Blog

[] [更新履歴]

デバイス

デバイスへのアクセス権限

参考: https://wiki.ubuntu.com/Security/Privileges

$ sudo usermod -aG cdrom,audio,video,plugdev,netdev,dip,bluetooth $(id -un)

systemd

ノート PC を閉じたときのサスペンドを無効化

/etc/systemd/logind.conf:

[Login]
HandleLidSwitch=ignore
$ sudo systemctl restart logind

Bluetooth

FIXME

オーディオ

$ sudo apt install pipewire pipewire-pulse libspa-0.2-bluetooth wireplumber gstreamer1.0-pipewire
$ sudo touch /etc/pipewire/media-session.d/with-pulseaudio
$ systemctl --user --now enable wireplumber.service

キーボードと入力

キーボードマッピングの変更

initramfs に setkeycodes(1) を実行するフックスクリプトを組込む。 initramfs-tools(7) などを参照。

/etc/initramfs-tools/scripts/init-top/setkeycodes.sh:

#!/bin/sh

PREREQS="keymap"

prereqs() { echo "$PREREQS"; }

case "$1" in
    prereqs)
    prereqs
    exit 0
    ;;
esac

set -x

## `showkey -s` on a conole to get scancodes
## `showkey -k` on a conole to get keycodes

## CapsLock scancode -> Ctrl (left) keycode
setkeycodes 0x3a 29
## Hiragana/Katanaka scancode -> Ctrl (right) keycode
setkeycodes 0x70 97

## Hankaku/Zenkaku scancode -> Esc keycode
setkeycodes 0x29 1
$ sudo chmod +x /etc/initramfs-tools/scripts/init-top/setkeycodes.sh
$ sudo apt install busybox
$ sudo update-initramfs -u
...

SKK

$ sudo apt install fcitx5-skk
$ mkdir ~/.config/libskk/rules
$ cp -rp /usr/share/libskk/rules/default ~/.config/libskk/rules/fumiyas

GUI

ディスプレイの解像度の追加

縦横比 16:10 の 4K ディスプレイ (3840x2400) で解像度を 3200x2000 に設定したい、といったときに xrandr(1) 調べでに該当する解像度 (モード) がない場合がある。 (例: ThinkPad X1 Extreme Gen 4 の内臓ディスプレイ)

$ xrandr
...省略...
eDP-1 connected primary 3840x2400+0+0 (normal left inverted right x axis y axis) 344mm x 2
15mm
   3840x2400     60.00*+
   3840x2160     59.97
   3200x1800     59.96    59.94
   2880x1620     59.96    59.97
   2560x1600     59.99    59.97
...省略...

cvt(1) でモードラインを計算する。 CRT は滅んだろうから --reduced オプション付きでよいのかな?

# cvt --reduced 3200 2000
# 3200x2000 59.97 Hz (CVT 6.40MA-R) hsync: 123.36 kHz; pclk: 414.50 MHz
Modeline "3200x2000R"  414.50  3200 3248 3280 3360  2000 2003 2009 2057 +hsync -vsync

xrandr でモードラインとその名前を登録する。 cvt 出力の Modeline 以降の部分を用いる。 3200x2000R 部分は任意の名前を指定しても構わない。

# xrandr --newmode "3200x2000R" 548.75 3200 3456 3808 4416 2000 2003 2009 2072 -hsync +vsync

xrandr で出力先ディスプレイに登録したモードラインを追加する。

# xrandr --addmode eDP-1 3200x2000R

xrandr で出力先ディスプレイの解像度を切り替える。

# xrandr --output eDP-1 --mode 3200x2000

X サーバーの DRI の有効化

$ sudo apt install libgl1-mesa-dri

DRI 有効の確認:

$ xdpyinfo |sed -n '/^number of extensions:/,/^[^ ]/p' |grep ' DRI'

GTK

FIXME: どっち?
$ echo gtk-key-theme-name=Emacs >>~/.config/gtk-3.0/settings.ini
$ gsettings set org.gnome.desktop.interface gtk-key-theme Emacs

KDE

FIXME: GUI でなく CLI で変更を適用する方法

KDE システム設定:

ネットワーク

SSH サーバーの PubkeyAuthentication 認証設定以外の無効化

# sed -i.dist \
  -e 's/^\(PermitRootLogin\).*/\1 prohibit-password/' \
  -e 's/^#*\([a-zA-Z]*Authentication\).*/\1 no/' \
  -e 's/^\(PubkeyAuthentication\).*/\1 yes/' \
  /etc/ssh/sshd_config \
;

USB NIC のネットワークインターフェイス名

現代の Linux はネットワークインターフェイスの命名の一貫性を保つため、 暗号めいた名前が割り当てられる。デスクトップやモバイル用途のマシンなら 一貫性よりも単純な名前のほうが便利なときがある。

SUBSYSTEM=="net", \
ACTION=="add", \
KERNEL=="usb0", \
  NAME="usb0"
# udevadm control --reload

パッケージ

DKMS によるカーネルモジュールビルド時の並列ジョブ数

デフォルトは nproc(1) の出力、つまり全 CPU 数 (ハイパースレッドも含む) となるため、デスクトップの反応が悪くなるほど重い。

# mkdir -p /etc/sysconfig
# echo 'parallel_jobs=$(($(nproc) / 3))' >/etc/sysconfig/module-init-tools

Ubuntu の unzip パッケージの利用

ファイル名の文字エンコード変更オプション -O, -I に対応するため。 ziprename2utf8 で充分?

/etc/apt/preferences:

Package: unzip
Pin: release l=Ubuntu
Pin-Priority: 500

Package: *
Pin: release l=Ubuntu
Pin-Priority: 90

/etc/apt/sources.list:

deb [arch=amd64] http://jp.archive.ubuntu.com/ubuntu trusty-updates main
deb [arch=amd64] http://jp.archive.ubuntu.com/ubuntu trusty main