今回は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から設定できた.そのまま画面開閉によりスリープ切り替えが可能だったので,特別な設定は行っていない.