Raspberry PiにAlpine Linux入れてデスクトップ環境を構築した…い (2)

前回のつづきです。

前回はCUIでログインできるところまでできたので、この上にWindow環境を構築してみます。今回の参考文献はこちら。

wiki.alpinelinux.org

wiki.alpinelinux.org

とりあえず公式の手順に則り、まずはxorg用のパッケージをインストールし、その後必要なパッケージをインストールしていきます。dbus自動起動するように設定した後、xfce4をインストールしました。

# setup-xorg-base 
# ​apk add xf86-video-fbdev xf86-video-vesa xf86-input-mouse xf86-input-keyboard dbus ​set​xkbmap kbd  
# rc-update ​​add dbus
# apk add xfce4

ここでstartxを叩いてもいいらしいのですが、今回使用しているのがRaspberry Pi3のためOpenGL関係もインストールします。ビデオメモリの割当容量が設定できるので今回は32Mを割り振りました。

(/media/mmcblk0p1/config.txtに下記を追加)
dtoverlay=vc4-kms-v3d
gpu_mem=32

/media/mmcblk0p1/config.txt

該当ファイルがあるパーティションは永続ストレージを作る際に書き込みできるよう再マウントされているものとします。

# apk add mesa-dri-vc4

これで準備完了、としたいところですがこの手順ではウィンドウマネージャ (xfce4)はインストールされますがディスプレイマネージャ (今回はlxdm)がインストールされておらずデスクトップ環境には足りません。足りないものを追加でインストールしました。

# apk add lxdm faenza-icon-theme mesa-egl xf86-input-evdev libinput
# rc-update add lxdm

上記の例ではlxdm以外もインストールしています。アイコンパックはいいとして、mesa-egl以下3つはデスクトップ環境を立ち上げた際にXorg.0.logやlxdm.logに読み込みエラーとして記録されていたものです。

最後にもう2点、必要な設定を行います。この設定のまま再起動するとウィンドウマネージャが立ち上がった時点からXorg.0.logに下記メッセージが大量に出力されます。これを抑制するためにPageFlipモードをいうものを無効化する必要があるようです。このための設定が1点目です。

(EE) modeset(0): Failed to get GBM bo for flip to new front.
(EE) modeset(0): present flip failed

無効化の方法は下記設定内容を記述したファイルを作成します。

Section "Device"
  Identifier "DisplayLink"
  Driver "modesetting"
  Option "PageFlip" "false"
EndSection

/usr/share/X11/xorg.conf.d/20-displaylink.conf

2点目は、デフォルトセッションをxfce4に変更します。

(下記設定を追記)
session=/usr/bin/startxfce4

/usr/lxdm/lxdm.conf

ここでlbu ci -dで変更を反映し、再起動します。するとGUIのログイン画面が表示される、はず。動作はやはりというかもっさりな感じがしますし、メモリ使用量も500~600MB近くまで上がりました。

記事タイトルがデスクトップ環境を構築し「たい」にも関わらず、うまく構築できています。今回引っかかたのは実はここから。キオスク端末のごとく自動ログインさせたいという要件が残っていました。自動ログインの設定自体は簡単です。デフォルトセッションを設定したファイルに下記内容を追記して再起動するだけです(設定反映を忘れずに)。

(下記を追記)
autologin=root

/usr/lxdm/lxdm.conf

この設定を有効化したまま再起動すると…ログイン画面が表示されません。lxdm.logやXorg.0.logにもそれらしきエラー(EE)の記述もなし。不思議なことにCUIでログインしてstartxfce4もしくはrcコマンドを実行すると何事もなかったかのようにログインが完了した状態で起動します。大きく違うのはデスクトップ環境起動時にすでにユーザー(ここではroot)でログインしていたか否か、だと思います。となると認証関係でしょうか…。この一点のために行き詰まってしまいました。

このままこの問題を追うか、arch Linuxなど別の軽量Linuxに乗り換えるか。どうしたものかなぁと言うことでこれまでの作業内容をブログに残しました。