今回は2台のPCにArchLinuxを入れた.1台は古いDELLで,UEFIですらないデスクトップPC.もう一台は仕事用のThinkpad.
それぞれ詰まったところが少し違うので書き残しておく.
なお,全体的な手順は,ArchLinuxのwikiが詳しいので,それに従うことにする.
DELL
ネットワークインターフェースを認識できない問題
もともとWindowsとUbuntuのデュアルブートになっていたが,どうせ使わないのですべてArchで上書きすることにした.というわけでLiveUSBで起動したArchからfdiskでパーティション削除,パーティション作成を行った.
この後,インターネット接続を確認する必要があるのだが,何度やっても ping archlinux.jp は通らなかった.
というか,そもそも ip link した時点で loopbackのインターフェースしか出てこない.通常であれば,en0とかwlan0とかが出てくるはず.
そこはさすがのArchのwikiだけあって,まったく同じ現象がすでに報告されていた.
確認してみると,たしかにこのPCのネットワークはBroadcomのボードだった.
これに従って,LANケーブルを抜いた後に
# modprobe -r tg3 # modprobe broadcom # modprobe tg3
とすることで,無事en0を認識することができた.認識さえしてしまえばdhcpcdでIP取得されて自動的にネットにつながった.
永続化する設定も書いてあるが,とりあえずLiveUSBでインストールさえ完了すれば,残りは後でやればいいので永続化せずにインストールを続行.
arch-chrootした後にdhcpcdが見つからない問題
pacstrapでArchを /mnt とかにインストールし再起動した後の話.
/mnt に arch-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-serverとlightdmを入れて,いざ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.conf の autospawn = now となっているところをコメントアウトするこで解決できた.
Thinkpad
DELLで一応肩慣らしできたので,いよいよノートPCに入れてみた.
LiveUSBでWiFi接続
ThinkpadにはLANケーブルの口がないので,WiFi接続でインストールしようと思った.というわけでLiveUSBで起動したら,早速ネットに接続する必要がある.
幸い,LiveUSBからは wpa_supplicant を使えば接続できた.
$ wpa_supplicant -B -i wlan0 -c <(wpa_passphrase MYSSID passphrase)
wlan0 はインターフェース名で,これは ip linkすれば見える.MYSSIDと passphrase は自分の家の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
みたいなことをすれば良い.
ただし,注意点として,先にNetworkManagerやdhcpcdを入れていた場合,これらを停止する必要がある.競合していると,自動接続は失敗する.
$ sudo systemctl disable dhcpcd
インターネットに繋がってしまえば,ここでxorg-serverやxfce, 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 input を xim から ibus に変更する.
その後再起動すると,無事QtでもIBusで日本語入力できるようになった.
tp_smapi は使えない
ArchLinuxのThinkpad関連情報を見ていると,tp_smapi について書かれたページがあり,これは割りと大事なことのように見える.
しかし,最近の新しいThinkpadではtp_smapi は使えない.
tp_smapi ほど細かいかはわからないが,充電の制御等については tpacpi-bat と acpi_call で実現できる.これについてはArchLinux固有の方法ではなく,Ubuntu等でも紹介されている方法と同じだ.
また,画面を閉じたときのスリープ設定については,普通にxfceの設定内にある,PowerManagerから設定できた.そのまま画面開閉によりスリープ切り替えが可能だったので,特別な設定は行っていない.