何がしたいかというと,Raspberry Pi 4 Model B (RPi4)でDebian + KDE Plasma Desktopを動かし,fcitx5+Mozcによる日本語入力をしたいというのが最終目標です.
紆余曲折
この節は,他の人,というか自分自身にとってもなんの役にも立たない愚痴です.
そもそもなんでRaspberry Pi OSでなくてDebianなのかというと,Raspberry Pi OSの標準DesktopであるPIXELが気に入らんのです.なんとしてもManjaro ARMのように,KDEを動かしたいのです.「だったら,Raspberry Pi OS LITEをインストールして,そこにKDEをインストールすればいいじゃないか」,と思った人は正解です.昨年の6月に私もそれに気がついて,やっていたんです.
しかし,今回なぜすぐにそれをしなかったかというと,Debian Bookworm (12)がリリースされたのが今年の6月10日であるのに,Raspberry Pi OS Bookwormは10月11日です.これは本家を使わなければ時代から取り残されるとの危機感を抱いたのです.
そこで,DebianのサイトにあるRasperry Pi用イメージを試してみましたができがよろしくない.これは好事家によるcontributionなのであまり文句はいってはいけないようですが,起動が遅いうえ,USB-3接続のSSDにインストールすると,upgradeができないという致命的な問題がありました.
そこで,Debian ARMの公式のインストールDVDイメージをダウンロードしてドキュメントの初めの方を読んでみましたが,基本的にUEFI対応のハードウエアでないとDVDイメージは使えず,Raspberry Piのようなそうでないハードウエアに対しては,自分でなんだかんだとインストーラー的なものを作らないといけない.
そう,それをやっているのがRaspberry Pi OSのcontributerたちなわけです.寄ってたかって作っているわけですから,好事家の私家版が及ぶ訳はないし,ましてや筆者ごときが逆立ちしたってそれより良いものは作れないわけです.
というあたりをこの週末の作業で悟ったり思い出したりしたわけです.
RPi4でKDE + Mozc
Raspberry Pi OS Lite (64bit)をインストール
説明はいらないと思います.Liteなら数GBのSDカードにコピーできそうですが,手持ちの関係で32GBのmicroSDカードを使いました.
最初の起動では,色々設定があり,素直にしたがって設定をします.その後の起動でネットの接続を確認して,apt update; apt upgrade
をかけました.
SSDへのコピー
SSDへのコピーのタイミングはいつも迷いますが,早いほうがupgradeや新規インストールの作業が高速なのは言うまでもありません.しかし,あまり早い段階ですると,そこから先は製作元の想定していない使い方なのでトラブルが発生するリスクが高くなります.
しかし,KDEのインストールでは1000以上のパッケージがインストールされるので,この段階で移行しました.
ご存知のようにRPi4では,USB接続したHDD/SSDからブートも可能ですが,SSDの第1パーティションをManjaro ARMのブート用のままにして,SDカードを差すと第3パーティションをrootにしてDebianが起動するようにしました.
この場合,32GBのSDカードをそのまま使うこともできますが,もったいないので手持ちで一番小さい2GBのmicroSDカード(以下 “小SD(カード)” )をブート用に仕立てました.
ここまで使用してきたSDカードのルートから,Debianが活きたままSSDにコピーすることもできますが,その場合あとでいくつか呪い(まじない)が必要なので,他のLinuxマシンで死んだ状態のSDカードからコピーしました.
コピー先は,SDカードの第1パーティションは,MBR式パーティションの小SDカード(vfatのパーティション一つだけ)のvfatパーティションへ,SDカードの第2パーティションの中身はSSDの第3パーティションへ,です.
コピーコマンドはいずれも,
cp -Rdvp 元 先
または,
rsync -artlvd --delete 元 先
です.
Raspberry Pi OSはデフォルトでパーティションラベルでパーティションの識別をしているので,それはそれで楽なので,fatlabel
, e2label
コマンドで,起動用の小SDカード,rootパーティションに適当な名前を付け,ブート用小SDカード内のcmdline.txt
とrootハーティションの/etc/fstab
のそれぞれの該当部分を編集します.
あとは,起動用に新しく仕立てた小SDカードとSSDを接続して,祈りながら起動します.間違いがなければ起動するはずです.
KDE Plasma Desktopのインストール
無事起動したら,いよいよGUIのインストールです.メインというか,root以外の唯一のユーザーでログインして,あとはSlackware的流儀で行くためすかさずsudo -i
をします.
まずインストールするのは,sddm
, kde-plasma-desktop
です.今回はsddm
を明示しましたが,いらないかもしれません.
次に,kde-full
です.完了したら,また祈りながらリブートですが,sddm
が起動してくれませんでした.
sddm workaround
RPi4を起動しても,sddm
が起動してくれません.CUIのコンソールから(root権限にて),
systemctl start sddm
とすると,sddm
が起動してKDE Plasma Desktopにログインできますから,なにかタイミングの問題と思われます.
systemctl
で,sddm
をdisable
にしてから再度enable
にしたり,sddm
パッケージを削除して再インストールするというようなオーソドックスな方法を試みましたが,改善しません.
実は,/usr/lib/systemd/system/sddm.service
に解決のヒントが書いてあります.
略 # If using tty1 and plymouth, sddm will fail till plymouth stops # consider using: ## After=plymouth-quit.service # or to forcefully stop plymouth and start earlier: ## Conflicts=plymouth-quit-wait.service ## After=plymouth-start.service plymouth-quit-wait.service ## OnFailure=plymouth-quit.service 略
ところがどっこい,提案してあるどちらを試しても状況は変わらずでした.
さて,何をいつまで待てば良いかわからないので,単純に30秒待つことにしました.
具体的には,/etc/systemd/system
内に,次の内容で,テキストファイル,sddm.timer
を作成します.
[Unit] Description=Delayed start of sddm [Timer] OnBootSec=30sec [Install] WantedBy=timers.target
CUIから,
systemctl disable sddm systemctl stop sddm ← 念のため systemctl enable sddm.timer
ここで,リブートして,動作確認します.筆者の環境ではうまくいっています.
その後,待ち時間を削り,最終的にOnBootSec=0sec
にしてもsddmが起動します.
日本語環境
Mozcをインストールする前でもあとでもいいですが,/etc/X11/xorg.conf.d
に00-keyboard.conf
というテキストファイルを以下の内容で作ります.ローマ字入力の人には関係ないかもしれませんが,これをしないと,あとでKDEのsettingでどこをどうしてもかな入力で濁点や半濁点,長音記号が使えなくなります.
Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "jp" Option "XkbModel" "jp106" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection
fcitx5-mozc
apt install fcitx5-mozc
して,一般ユーザーのホームディレクトリーに,.xprofile
という名前で,
export GTK_IM_MODULE="fcitx"
export QT_IM_MODULE="fcitx"
export XMODIFIERS='@im=fcitx'
が中身のテキストファイルを作ります.たぶん,sddmの再起動だけで良いと思いますが,システムごとリブートして確認してみます.
あとは,KDE settingsのキーボード設定やMozc設定や他なんやかんやで使えるようになると思います.
apt upgrade
すると,起動しなくなる.sudo
を連発して行わず,rootになって責任を自覚しつつ行う./usr/lib/systemd/
の中身をいじることは推奨されていませんから,/usr/lib/systemd/system/sddm.service
を/etc/systemd/system/sddm.service
にコピーしてから改変します.