初速1PV

プログラミングにまつわることの記録

ノートPCを買ったのでGentooをインストールしてみた

Gentooをインストールしました。

きっかけ

今まで使っていたノートPCが

  • たまに誤動作がおきて作業が止まる
  • Gnomeを使っていたが入れたくないソフトウェアが入っていた (依存関係の解消ができるか不明だった)
  • 512GBのストレージでは足りなかった
  • 8GBのメモリも足りなかった

構成

Gnomeもいいがいらないパッケージが結構入ってアップデートがめんどくさくなるので軽量なウインドウマネージャを使いたい。 xmonadを使ったことがあったのでまたxmonadにしようと思う。今回のノート PCはタッチペンが使えてタブレットとしても操作できるらしいので少なくともタッチスクリーンは使えるようにする。

ハードウェア

HP Spectre x360 13 https://jp.ext.hp.com/notebooks/personal/spectre_x360_13_ap/

  • CPU: intel Core i7-8565U
  • メモリ: 16GB
  • SSD: NVMe M.2
  • 解像度: 3840x2160

気に入ったところ

  • メモリとSSDの容量が大きい
  • 解像度が高い

気に入らないところ

  • キー配列
    • JIS配列
    • Aの左隣がCaps lock

キー配列は設定を変えたり別のキーボードを使うつもりだったので気に入らないが妥協した。

OS

ストレージとかの関係でWindowsは消した。 もしかしたらVMWindowsを入れるかもしれない。

デスクトップ環境

  • lightdm
    • 最初gdmを入れたけどいらないやつがどんどん入ってきて辛くなってきたのでlightdmにした。
  • xmonad
  • wayland
    • 新しさに惹かれた
  • sway
    • タイル型ウインドウマネージャ
    • i3っぽいやつ

swayだと常時CPUを70~100%使用してて気になったり、ブラウザを開くとたまにカクつくのでアップデートして治るのを待とうかなと思ってます。xmonadはwaylandを使わないのでwaylandもなし。 今まで使っていたxmonadにします。

日本語入力

ibus, mozcを使う。 今までibus, mozcを使っていたので今回もこれを使うことにした。 /etc/portage/make.confのUSEフラグにibus -fcitx4を追加してibus, mozcをそれぞれインストールする。 工夫としてはibusで英語/日本語切り替えをすると入力中のフォームからフォーカスが外れてしまうのでibusではmozcのみ使用し、mozc内でIMEの切り替えをしている。

参考: http://gaobin.hatenablog.com/entry/2014/07/23/010558

その他

`` initはsystemdで動かしていて思ったよりスムーズにインストールできた。 ネットワークへの接続はwpa_supplicant。必要になったらNetworkManagerを使うようにする。

各種設定

ハードウェア

タッチパッド

デフォルトでは改善点がそこそこあり、 タップしてクリックできるようにしたり、macosみたくスワイプしてワークスペース変えたり(変えられたっけ?)したい。

タップの有効化

sway (XWayland)上で使っていたため、swaymsg -t get_inputsから入力デバイス名を取得して ~/.config/sway/config

input "2:7:SynPS/2_Synaptics_TouchPad" {
    dwt enabled
    tap enabled
    natural_scroll enabled
    middle_emulation enabled
}

を追加してタップを有効にする。

Xorg

xmonadなどXorg上で動作するものは以下のの設定をxorg.conf.d以下のにおいておくだけで十分(libinputは不要かもしれない)

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Option "Tapping" "on"
        Option "NaturalScrolling" "true"
        Driver "libinput"
EndSection

タッチスクリーン

タッチペンがついてて操作でき、ディスプレイが360度回転してタブレットな代わりになったりもしてくれる。 Linuxではデフォルトで対応してないのでいろいろドライバを入れて頑張る。 ちなみにUbuntuでは最初から対応しているのでlsmodの出力を読んだりすると参考になるかもしれない。

設定前の状態ではタッチスクリーンはELANTech製だがxinputやswaymsg -t get_inputsから確認できなかったが特別なファームウェア等を入れる必要はない。カーネルのコンフィグを適当に選択すると認識してくれた。

試行錯誤

  • タッチスクリーンが正常に動くubuntu(live usb)からlsmod, dmesgの出力を読んだ。
  • カーネルのビルド時にi2c_hidやGPIOからのデバッグ出力を有効にした
  • 手当たり次第カーネルモジュールを追加してdmesgの出力を確認しタッチスクリーンっぽいデバイスのエラーらしき出力(実際にはエラーではない)を読んで関係ありそうな項目を追加で設定する。

自分のlsmodの結果 https://pastebin.com/zeyezzmC

dmesgの結果 https://pastebin.com/m0LEYh5t

kernelのコンフィグ https://pastebin.com/yURcVBiE

タッチスクリーンのの設定を終えたのでひとまず終了

感想

過去にGentooをインストールしたことがあったこともあり、Gentoo wikiに書いてあることは理解してインストールできたと思う。 ただ、ハードウェア特有の問題についてうまく対象できなかった。ドライバ関連で検索してもわからなかったときはubuntuのlive cd (usb)を使っていたどのカーネルモジュールか入っているのかとかdmesgの出力を比べなから何が入っていないのかを推測しなから設定した。かなり苦労した 今回の苦労を気にUbuntuに対する好感度もかなり上がったし機会があればUbuntuを使おうと思った。