RasPiでDebian使いたかったらRaspberry Pi OS

何がしたいかというと,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で,sddmdisableにしてから再度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.d00-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設定や他なんやかんやで使えるようになると思います.

Notes:
1. 経緯の記録くらいの意味はあるかもです.
2. LXDEからの派生.
3. 厳密に言うとapt upgradeすると,起動しなくなる.
4. あくまで当社調べです.
5. いや,世の中一人ですごいことをする天才はいますが,確率は低いです.
6. “読者”はこの記事を忘れた頃に読み返す筆者自身を主に想定しています.
7. この時点ではWifiは使わず有線LANでつないでます.
8. Manjaro ARMのrootは第2パーティション.
9. 筆者の場合はManjar ARM.
10. あ,最近した作業のどこかでUUIDで識別しているところもありましたが,どの環境だか忘れました.本筋でないので確認は省略.
11. システムいじりは一般ユーザとして無責任にsudoを連発して行わず,rootになって責任を自覚しつつ行う.
12. /usr/lib/systemd/の中身をいじることは推奨されていませんから,/usr/lib/systemd/system/sddm.service/etc/systemd/system/sddm.serviceにコピーしてから改変します.
経緯の記録くらいの意味はあるかもです.
LXDEからの派生.
厳密に言うとapt upgradeすると,起動しなくなる.
あくまで当社調べです.
いや,世の中一人ですごいことをする天才はいますが,確率は低いです.
“読者”はこの記事を忘れた頃に読み返す筆者自身を主に想定しています.
この時点ではWifiは使わず有線LANでつないでます.
Manjaro ARMのrootは第2パーティション.
筆者の場合はManjar ARM.
あ,最近した作業のどこかでUUIDで識別しているところもありましたが,どの環境だか忘れました.本筋でないので確認は省略.
システムいじりは一般ユーザとして無責任にsudoを連発して行わず,rootになって責任を自覚しつつ行う.
/usr/lib/systemd/の中身をいじることは推奨されていませんから,/usr/lib/systemd/system/sddm.service/etc/systemd/system/sddm.serviceにコピーしてから改変します.