Help us understand the problem. What is going on with this article?

Debian noroot 環境におけるキーボード設定操作での重篤な障害とその回避策について

More than 1 year has passed since last update.

はじめに

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

しかし、自分の手元の端末である Xperia Z Ultra 上での Debian noroot 環境において、xfce のキーボードの設定変更の操作を行ったところ、"問題が発生したため [Debian] を終了します" のメッセージと共にアプリ全体が異常終了し、 Debian noroot 環境が起動しなくなる重篤な障害が発生しました。

障害の原因を調べた結果、 xfce のキーボードレイアウトの設定ファイルの存在が xfce の起動の阻害とアプリ全体の異常終了を引き起こしていたのが原因であると判明しました。

そこで、 xfce の起動スクリプトファイルに障害の原因となる設定ファイルを削除するコマンドを追記することにより、今回の障害を回避し、正常に Debian noroot 環境が起動することを確認しました。

本稿では、今回発生した Debian noroot 環境での重篤な障害の経緯と障害の回避策について述べます。

本稿では最初に、 ”今回の障害の経緯” の章で、今回の障害についての具体的な経緯について述べます。

次に、 "今回の障害の原因" の章において、今回判明した障害の原因について述べ、 "問題の回避策" の章において、今回の障害の具体的な回避策について述べます。

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

今回の障害の経緯

本章では最初に、 "障害の内容" の節において、今回の障害の具体的な内容について述べます。

次に、 "障害の対応" の節において今回発生した障害について行った対応について述べます。

障害の内容

本節では、今回発生した重篤な障害について、問題となった xfce のキーボード設定の操作及び、設定の結果実際に発生した障害の内容について述べます。

先ず、自分の手元の Xperia Z Ultra のファームウェアを更新し、Android OS のバージョンを 4.4.2 に引き上げました。
そして、 Debian noroot 環境を使用していたところ、 xfce のキーボードの設定パネルにおいて、キーボードのレイアウトの設定変更で「システムデフォルトを使用する (U)」(下記の画像の赤丸で囲った部分) のチェックを外す操作を行っていた時に、 "問題が発生したため [Debian] を終了します" のメッセージと共に Debian noroot 環境及び Debian noroot アプリが異常終了しました。

(keyboard panel of xfce)

そして、再度 Debian noroot 環境を起動しようとしても、 xfce の起動時に "問題が発生したため [Debian] を終了します" のメッセージが表示されて Debian noroot アプリ全体が異常終了を起こすようになり、 Debian noroot 環境が完全に起動しなくなりました。

障害の対応

本節では、今回発生した障害について、 Debian noroot 環境を正常に起動させることができるようになるまでに行った具体的な対応について述べます。

まず、 USB ケーブルを用いて PC と Xperia Z Ultra を接続して adb shell コマンドを用いたデバッグや adb backup コマンドによるバックアップを試みましたが全く効果がなく、已む無く Xperia Z Ultra の root 権限の取得を行いました。

ここで、端末を rooted にした状態から、ターミナルエミュレータである ConnectBot を用いて Debian noroot 環境のイメージが置かれている /data/data/com.cuntubuntu/files/img ディレクトリにカレントディレクトリを移動して ./home/***/.cache/session/xfce* を削除しても状況が変わりませんでした。

最終的に Debian noroot 環境のイメージを tarball で固めてストレージ上に救出した上でアプリデータの全削除と Debian noroot 環境のクリーンインストールを行いました。

そして、再度 Debian noroot アプリを起動させたところ、完全に初期化された Debian noroot 環境が正常に起動することを確認しました。

今回の障害の原因

本章では、 Debian noroot 環境の復旧及び、障害の現象の調査の過程において判明した障害の原因について述べます。

まず、 tarball で固めた Debian noroot 環境のイメージを /data/data/com.cuntubuntu/files/img ディレクトリに復旧させて、再度 gnome の設定ファイルを中心に原因を調べたところ、キーボードレイアウトの設定ファイルである ./home/***/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml を取り除くと、 Debian noroot 環境が問題なく正常に起動することが判明しました。

また、問題の設定ファイルである ./home/***/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml を再度元に戻すと障害が再現することも判明しました。

即ち、 $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xmlxfce の起動前に存在していることで Debian noroot 環境の起動時に xfce の起動を阻害してアプリ全体を異常終了し、今回の重篤な障害が発生する事が判明しました。

問題の回避策

本章では、前々章で述べた問題の経緯及び前章で述べた問題の原因を踏まえて、今回発生した問題の回避策について述べます。

前章で述べた通り、 xfce の起動前に $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml の存在が、 xfce の起動阻害と Debian noroot アプリ全体が異常終了する原因となっていました。

即ち、 xfce の起動プロセスが記述されているスクリプトファイルである /startx.sh$HOME/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml を強制的に削除させるコマンドを追記することにより、問題の発生を回避することが出来ます。

具体的には、 /start.sh ファイルに、以下のようにして xfce を起動するための xfce-session コマンドが書かれている行の前に問題の設定ファイルを強制的に削除する rm -f コマンドを記述します。

/startx.sh
...
# xfce の起動前に問題の設定ファイルを強制的に削除する
...
rm -f $HOME/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xml
...
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"' &

wait

以上の設定により、誤って xfce キーボードレイアウトの設定操作を行って Debian noroot 環境が異常終了しても、再起動時に xfce の起動の前に異常終了の原因となる設定ファイルが強制的に削除される為、問題なく Debian noroot 環境が起動することを確認しました。

結論

本稿では、自分の手元の端末上の Debian noroot 環境において、xfce のキーボードの設定変更の操作を行った際に発生した重篤な障害について、障害の原因を調べました。

その結果に基づき、障害を回避するための設定を行い、その後誤った設定を行っても重篤な問題が起こることなく、正常に Debian noroot 環境が起動する事を確認しました。

Debian noroot 環境において、本稿で述べた問題回避策を取ることなく、 xfce 上において、キーボードのレイアウト設定を変更する操作を行った場合、現時点では root 権限を取得するか、 "Debian noroot 環境の障害復旧用の環境の構築" の投稿で述べた障害復旧用の環境からの起動を行うか、若しくは Debian noroot 環境をクリーンインストールしない限り、再度正常に Debian noroot 環境を起動することは不可能です

従って、 Debian noroot 環境を新たにインストールした際には、予め本稿で述べた設定の他、 Debian noroot 環境の起動時における障害全体への対応のため、 Debian noroot 環境の障害復旧用の環境の構築を行っておくことを強く御勧め致します

謝辞

本稿の記述に当たって、 Android OS 端末上で非常に軽快な Debian 環境を実現することを可能にした Debian noroot 環境の開発者である pelya 氏に心より感謝致します。
そして最後に、 Debian noroot 環境Android OS 及び Debian 環境の全ての事に関わる全ての皆様に心より感謝致します。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away