Debian noroot 環境に LXDE を導入する

# はじめに

[Debian noroot][DBNR] とは、 [Android OS][ANDR] 上において root 権限を取ることなく [Debian 環境][DEBI]を構築するためのアプリケーションです。
CPU の性能とメモリ容量が潤沢にある Android 端末であれば、 [Debian noroot][DBNR] の導入によって Android 端末上で非常に軽快な [Debian 環境][DEBI]を実現することが出来ます。

[Ubuntu][UBUN] 及び [ArchLinux][ARCH] 等の各種 Linux ディストリビューションにおいて導入されている統合デスクトップ環境のうち、軽量に動作するものとして良く知られているものに [Xfce4][XFCE] 及び [LXDE][LXDE] 等が挙げられます。 [Debian noroot 環境][DBNR]においては、デフォルトの状態の統合デスクトップ環境として [Xfce4][XFCE] が導入されています。

本稿では、 [Debian noroot 環境][DBNR]において、デフォルトの統合デスクトップ環境の [Xfce4][XFCE] に代えて、軽量な統合デスクトップ環境である [LXDE][LXDE] を導入する手法について述べます。

本稿では最初に、"[LXDE の導入][CHAP01]" の章において、軽量の統合デスクトップ環境である [LXDE][LXDE] の導入手法について述べます。

次に、 "[設定の変更][CHAP02]" の章において、  [Debian noroot 環境][DBNR]の起動時に [LXDE][LXDE] を自動的に起動するための設定の変更手法について述べ、 "[LXDE の起動][CHAP03]" の章において、 [LXDE][LXDE] を起動する手法について述べます。

最後に、 "[結論][CHAP04]" の章において、本稿の結論について述べます。

# LXDE の導入

軽量の統合デスクトップ環境である [LXDE][LXDE] は、コマンドライン上から ```apt-get``` コマンドを用いて、以下のようにして導入することが出来ます。

```shell-session
 # apt-get install task-lxde-desktop
```

また、 [LXDE][LXDE] は ```apt-get``` コマンドの他にも、Debian パッケージ管理の GUI フロントエンドである [Synaptic][SYNA] を用いても導入することが出来ます。

なお、 [LXDE][LXDE] のインストールの際、有線若しくは無線 LAN の設定・制御を行うためのツールパッケージ ```wicd, wicd-daemon, wicd-gtk``` がインストール出来ない問題が発生する場合があります。

ここで、 [Debian noroot 環境][DBNR]においては、 [Debian noroot 環境][DBNR]と端末本体の [Android OS][ANDR] でカーネル及びハードウェアのリソースを共有し、 LAN 関連の設定は、 [Android OS][ANDR] 側の設定を用いるので、パッケージ ```wicd, wicd-daemon, wicd-gtk``` のインストールは必要有りません。

従って、これらのパッケージを以下の通りにしてアンインストールします。

```shell-session
sudo apt-get remove --purge wicd wicd-daemon wicd-gtk
```

# 設定の変更

パッケージ ```lxde``` をインストールした後は、以下のように、[Debian noroot 環境][DBNR]の起動スクリプトの一つであるシェルスクリプト ```/startx.sh``` において、 ```dbus-launch``` 経由で ```xfce-session``` コマンドを起動している行を ```startlxde``` コマンドを起動するように書き換えます。

```sh:/start.sh
...
rm -f /var/run/dbus/pid
fakeroot-tcp /usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin dbus-daemon --system

sleep 1
#dbus-launch --exit-with-session sh -c 'xfce4-session ; setsid sh -c "cd /proc/ ; for f in [0-9]* ; do [ \$f = \$\$ ] || kill -9 \$f ; done"' &
dbus-launch --exit-with-session sh -c 'startlxde ; setsid sh -c "cd /proc/ ; for f in [0-9]* ; do [ \$f = \$\$ ] || kill -9 \$f ; done"' &

wait
```

# LXDE の起動

[前章][CHAP02]で述べた設定変更を行った後に [Debian noroot 環境][DBNR]を再起動すると、以下の画像のように  [LXDE][LXDE] を起動することが出来ます。

![(Desktop LXDE)][IMG1]

なお、 [LXDE][LXDE] の起動を行った際に、以下の画像のように、エラーダイアログ **[No session for pid xxxxx]** (ここに、 xxxxx は任意の 10 進数) が表示される場合があります。

![(Error Dialog of LXDE)][IMG0]

これは、非特権ユーザが、 root 権限を要求するハードウェア等の設定を行う場合に、設定に必要な権限を非特権ユーザに渡すことができるように制御するためのツール ```polkit``` のプロセスによるものであり、 [Debian noroot 環境][DBNR]の利用の際には特に支障はありませんが、このエラーダイアログの表示を抑止するには、以下の操作を行います。

- 以下の画像のように、画面左下の [LXDE][LXDE] のマークをクリック → **[設定]** を選択する。
![(Setting of LXDE)][IMG2]
![(Setting of LXDE)][IMG3]
- 次に、以下の画像のように **[設定]** の選択 → **[LXSession のデフォルトのアプリケーション]** を選択する。
![(Setting of Default Application of LXSession)][IMG4]
- ここで、以下の画像のように **[LXSession Configuration]** のウィンドウが表示されるので、 **[Core Applications]** を選択する。
![(Default Application of LXSession)][IMG5]
![(Default Application of LXSession)][IMG6]
- 以下の画像のように **[Core Applications]** において、 **[Polkit agent]** の項目を空欄とする。
![(Default Application of LXSession)][IMG7]

以上の操作により、 エラーダイアログ **[No session for pid xxxxx]** の表示が抑止されます。 

# 結論

本稿では、[Debian noroot 環境][DBNR]において、 Debian パッケージ管理システムより軽量デスクトップ環境である [LXDE][LXDE] を導入し、 [Debian noroot 環境][DBNR]の起動スクリプトの一つである ```/startx.sh``` を修正することにより、デフォルトの統合デスクトップ環境の [Xfce4][XFCE] に代えて [Debian noroot 環境][DBNR]の起動時に [LXDE][LXDE] を起動させることが可能となりました。

また、 [LXDE][LXDE] は、 [Lubuntu][LUBU] 等多くの軽量 [Ubuntu][UBUN] 系ディストリビューションに採用されているため、 [Debian noroot 環境][DBNR]において、非常に軽量かつ快適に使用できるデスクトップ環境であると考えられます。

# 謝辞

本稿の記述に当たって、 [Android OS][ANDR] 端末上で非常に軽快な [Debian 環境][DEBI]を実現することを可能にした [Debian noroot 環境][DBNR]の開発者である [pelya 氏][PELY]に心より感謝致します。

そして最後に、 [Debian noroot 環境][DBNR]と [Android OS][ANDR] 及び [Debian 環境][DEBI]の全ての事に関わる全ての皆様に心より感謝致します。

# 追記

## 2019/02/11 現在の追記

有線若しくは無線 LAN の設定・制御を行うためのツールパッケージ ```wicd, wicd-daemon, wicd-gtk``` 及び、 非特権ユーザが、 root 権限を要求するハードウェア等の設定を行う場合に、設定に必要な権限を非特権ユーザに渡すことができるように制御するためのツール ```polkit``` のプロセスの問題において、 [@cakecakecake 様][CAKE]の御指摘に関する内容について追記し、本稿の改稿を行いました。

[@cakecakecake 様][CAKE]におかれましては、誠に御手数をお掛け致しますと共に、御指摘に心より感謝致します。

## 2019/02/12 現在の追記

```polkit``` 関連のエラーダイアログの表示の抑止の説明について画像の添付を行いました。

<!-- 各章のリンク一覧 -->

[CHAP01]:#lxde-の導入
[CHAP02]:#設定の変更
[CHAP03]:#lxde-の起動
[CHAP04]:#結論

<!-- 外部リンク一覧 -->

[DBNR]:https://play.google.com/store/apps/details?id=com.cuntubuntu&hl=ja
[ANDR]:https://www.android.com/intl/ja_jp/
[DEBI]:https://www.debian.org/index.ja.htm
[UBUN]:https://www.ubuntu.com/
[ARCH]:https://www.archlinux.org/
[XFCE]:https://xfce.org/
[LXDE]:http://lxde.org/
[SYNA]:http://qiita.com/z80oolong/items/d66d0dccab32df2e0798
[LUBU]:https://lubuntu.net/
[IMG1]:https://qiita-image-store.s3.amazonaws.com/0/86258/4ec19e55-266e-d10e-b66a-bafba5a0d93f.png
[IMG0]:https://qiita-image-store.s3.amazonaws.com/0/86258/325c8fe3-cfd0-f0ea-1b8a-053024af7a4f.jpeg
[IMG2]:https://qiita-image-store.s3.amazonaws.com/0/86258/ee9ab242-aa71-7675-7c34-b43c3a9e48c8.jpeg
[IMG3]:https://qiita-image-store.s3.amazonaws.com/0/86258/577fe697-2306-bb1e-226e-b4655c1ada5b.jpeg
[IMG4]:https://qiita-image-store.s3.amazonaws.com/0/86258/2e4c3a0a-cb91-1d01-55fa-a0594b978c72.jpeg
[IMG5]:https://qiita-image-store.s3.amazonaws.com/0/86258/01fbe758-f93d-b79b-cd0b-1ee3991abc0b.jpeg
[IMG6]:https://qiita-image-store.s3.amazonaws.com/0/86258/f10e586b-2b02-e038-4f2a-ba5f425225b0.jpeg
[IMG7]:https://qiita-image-store.s3.amazonaws.com/0/86258/485a667c-2897-ecfa-f6eb-6e305c086b8a.jpeg
[PELY]:https://github.com/pelya
[CAKE]:https://qiita.com/cakecakecake