仕事用のThinkpadにArchLinuxを入れた

今回は2台のPCにArchLinuxを入れた.1台は古いDELLで,UEFIですらないデスクトップPC.もう一台は仕事用のThinkpad

それぞれ詰まったところが少し違うので書き残しておく.

なお,全体的な手順は,ArchLinuxのwikiが詳しいので,それに従うことにする.

wiki.archlinux.jp

DELL

ネットワークインターフェースを認識できない問題

もともとWindowsUbuntuデュアルブートになっていたが,どうせ使わないのですべてArchで上書きすることにした.というわけでLiveUSBで起動したArchからfdiskでパーティション削除,パーティション作成を行った.

この後,インターネット接続を確認する必要があるのだが,何度やっても ping archlinux.jp は通らなかった.

というか,そもそも ip link した時点で loopbackのインターフェースしか出てこない.通常であれば,en0とかwlan0とかが出てくるはず.

そこはさすがのArchのwikiだけあって,まったく同じ現象がすでに報告されていた.

wiki.archlinux.jp

確認してみると,たしかにこのPCのネットワークはBroadcomのボードだった.

これに従って,LANケーブルを抜いた後に

# modprobe -r tg3
# modprobe broadcom
# modprobe tg3

とすることで,無事en0を認識することができた.認識さえしてしまえばdhcpcdでIP取得されて自動的にネットにつながった.

永続化する設定も書いてあるが,とりあえずLiveUSBでインストールさえ完了すれば,残りは後でやればいいので永続化せずにインストールを続行.

arch-chrootした後にdhcpcdが見つからない問題

pacstrapでArchを /mnt とかにインストールし再起動した後の話. /mntarch-chrootするのだが,その状態だとdhcpcdが見つからずに,またインターネット接続がなくなっていた.

これは,そもそもbaseパッケージに含まれているはずのdhcpcdがないというだけの話なので,LiveUSB側で先程と同じ手順でネット接続を確立した後に,arch-chroot してそのまま pacman -S dhcpcd しておいた.これで再起動して arch-chroot してもちゃんとdhcpcdが起動しており,ネット接続ができる.

xfce入れるの忘れてた

$ sudo pacman -S xorg-server xorg-apps xorg-xinit mesa lightdm

とかして,xorg-serverlightdmを入れて,いざGUIログイン画面を起動してみた.そしてログインボタンを押すのだがセッションを開始できなくてエラーが出る.

CUIからstartx した際には無事に立ち上がるので,何がおかしいのかかなり悩んだのだが,普通にxfceのインストール忘れてた.

$ sudo pacman -S xfce4

オーディオの設定

ALSAは普通入っているので,追加でpulseaudioを入れた.

$ sudo pacman -S pulseaudio pavucontrol
$ yay -S xfce4-pulseaudio-plugin

しかし,OS起動時の自動起動でpulseaudioの起動に失敗している.Connection failure: Connection refused と言われるだけだったので,原因がわからなかったのだが,

/etc/pulse/client.confautospawn = now となっているところをコメントアウトするこで解決できた.

askubuntu.com

Thinkpad

DELLで一応肩慣らしできたので,いよいよノートPCに入れてみた.

LiveUSBでWiFi接続

ThinkpadにはLANケーブルの口がないので,WiFi接続でインストールしようと思った.というわけでLiveUSBで起動したら,早速ネットに接続する必要がある.

幸い,LiveUSBからは wpa_supplicant を使えば接続できた.

wiki.archlinux.jp

$ wpa_supplicant -B -i wlan0 -c <(wpa_passphrase MYSSID passphrase)

wlan0 はインターフェース名で,これは ip linkすれば見える.MYSSIDpassphrase は自分の家のWiFiのものを入れるだけで良い.

LiveUSBに関してはこれで接続できた.

また,今回はデスクトップでdhcpcdがインストールされなかったのを踏まえて,予めdhcpcdをインストールしておいた.

インストールしたArchLinuxがWiFi接続できない

ところが,LiveUSBによるセットアップを終わりにしてインストールしたArchLinuxを起動すると,WiFi接続ができない.

dhcpcdは入っているし,wpa_supplication の設定はしてある.しかし,wpa_supplicantを起動しようとすると,

Successfully initialized wpa_supplicant
nl80211: kernel reports: Attribute failed policy validation
Failed to create interface p2p-dev-wlp0s20f3: -22 (Invalid argument)
nl80211: Failed to create a P2P Device interface p2p-dev-wlp0s20f3
P2P: Failed to enable P2P Device interface
dbus: fill_dict_with_properties dbus_interface=fi.w1.wpa_supplicant1.Interface.P2PDevice dbus_property=P2PDeviceConfig getter failed

というようなログがでている.

これは試行錯誤してみたがどうにも解決しなかった.xorg-serverさえ起動してしまえば,dhcpcdよりNetworkManagerを使ったほうが,グラフィカルに設定できて良い.しかし,インストール直後の再起動では,まだCUIのままなので,ここでなんとかしてネットにつなぐ必要がある.

仕方ないので,一時的にwifi-menuを入れた.

$ sudo wifi-menu

とすると,SSIDが一覧表示されるので,接続したいSSIDを選ぶ.このあとパスワードを入力する.

これを自動化するには,

$ sudo systemctl enable netctl-auto@wlan0.service

みたいなことをすれば良い. ただし,注意点として,先にNetworkManagerdhcpcdを入れていた場合,これらを停止する必要がある.競合していると,自動接続は失敗する.

$ sudo systemctl disable dhcpcd

インターネットに繋がってしまえば,ここでxorg-serverxfce, lightdm等を入れてしまって,GUIログインの設定までできる.GUIログインさえできれば,あとはwifi-menuより,NetworkManagerのほうが設定しやすいだろう.そうなったら,wifi-menuの自動接続は消してしまって良い.あとはNetworkManagerの設定を行えば良い.

$ sudo systemctl disable netctl-auto@wlan0.service

lspciでハングする問題

これはCUIの時点で発生していたのだが,wifiのデバイスを調べたりグラフィックボードを調べたときにlspciコマンドを使うと,ハングするという問題が発生していた.

ThinkpadにはnvidiaのGTX 1050 Tiをさしてあり,おそらくこのグラフィックボード関連が原因だろうと思っていたら,見事それっぽいものを見つけた.

https://support.lenovo.com/us/en/solutions/ht505385support.lenovo.com

これとまったく同じ症状でnoveauを無効化したらlspciも通るようになった.

/etc/default/grub を開いて,

rd.driver.blacklist=nouveau nouveau.modeset=0 とする.

そして,grubの設定をリビルドする.

# grub-mkconfig -o /boot/grub2/grub.cfg

cat /etc/modprobe.d/blacklist.confすると blacklist nouveau となっているはずだ.

既存の設定をバックアップし,新しいgrubの設定で置き換える.

# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
# dracut /boot/initramfs-$(uname -r).img $(uname -r)

で,あとは再起動すればnoveauが無効化され,無事lspciコマンドが通った.

なお,nvidiaのドライバインストールは,

$ sudo pacman -S nvidia

するだけで問題なかった.

IBusがQtのアプリで使えない

日本語変換はibus + mozcでいつも設定している.デスクトップはxfceを入れたが,こちらはFcitxからIBusに変えていた.ブラウザやターミナルでは問題なく日本語変換できていたが,Qtを使うアプリケーションで日本語変換が効かなくなっていた.

まず,ibusはすでに入っているとして,ibus-qtを入れる必要がある.

$ sudo pacman -S ibus-qt

次に,ibus-setup したときに表示される環境変数~/.xprofile に書いておく.

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

そして,

$ qtconfig-qt4

して,default inputxim から ibus に変更する.

その後再起動すると,無事QtでもIBusで日本語入力できるようになった.

tp_smapi は使えない

ArchLinuxのThinkpad関連情報を見ていると,tp_smapi について書かれたページがあり,これは割りと大事なことのように見える.

wiki.archlinux.jp

しかし,最近の新しいThinkpadではtp_smapi は使えない.

tp_smapi ほど細かいかはわからないが,充電の制御等については tpacpi-batacpi_call で実現できる.これについてはArchLinux固有の方法ではなく,Ubuntu等でも紹介されている方法と同じだ.

www.xmisao.com

また,画面を閉じたときのスリープ設定については,普通にxfceの設定内にある,PowerManagerから設定できた.そのまま画面開閉によりスリープ切り替えが可能だったので,特別な設定は行っていない.