はじめに
※ PixelにはLinuxターミナルが追加され、Dockerも使用できます。本記事の手法は必要ありません。
やりたいこと
- スマホPCのように使うため、Linux環境を作成したい
- すべてローカルで動かしたい
- Dockerを使用したい
→ proot-distroのUbuntuでデスクトップ環境作成、QEMUでDocker起動
使いたいソフト
- VS Code
- Docker (ここが一番の問題)
- ブラウザ
- Wordみたいなもの
- AviUtl (おまけ。Windows用ソフトも動けばハッピー)
※ 自分の勉強も兼ねて、Linux初心者向けに書いています。もし間違い等がございましたら、ご指摘いただけますと幸いです。
0. 使用するアプリのインストール
ターミナルエミュレータのTermuxを使用します。
Termuxのページ からapkをダウンロードしてアプリをインストールします。
インストール方法
Termuxページ下部、任意のバージョンのapkファイルをダウンロードします(F-DROIDは必要ありません)。ファイルアプリからダウンロードしたapkファイルをタップし、インストールを押します。
"安全でないアプリ"と出るので、"詳細" → "インストールする"を押してインストールします。
次に、GUI(デスクトップとかの画面)を表示するためのTermux:x11アプリをインストールします。
リリースページから、app-XXX-debug.apkをダウンロードします。
XXXは自分のCPUのアーキテクチャのものを選択します。わからない場合はuniversalをインストールします。
ダウンロードしたapkを上のtermuxと同じ方法でインストールします。
1. Termuxの初期設定
内部ストレージへのアクセス権限を許可します(内部ストレージを使わない場合は不要です)。
termux-setup-storage
必要なパッケージをインストールします。
pkg update
pkg upgrade -y
pkg install -y termux-services vim openssh
コマンドの説明
-
pkg update
パッケージ(プログラム)のリストを更新 -
pkg upgrade
パッケージを更新(-y
:yesオプション、更新に同意) -
pkg install パッケージ名
パッケージをインストール -
termux-services
サービスを管理する -
vim
ファイルを編集するテキストエディタ -
openssh
SSH接続する
root(管理者)のパスワードを設定します(SSH接続するときなどに必要です)。
passwd
を実行するとパスワード入力を求められます。文字が表示されませんが入力できています。
passwd
SSH接続できるように~/.bashrcに以下を追記します。
if ! pgrep -x "sshd" > /dev/null; then
sshd
fi
ファイル編集の方法
vimというテキストエディタを例に説明します。まず、下記のコマンドで.bashrcファイルの編集画面を開きます。
~/
はファイルの場所、ユーザーのホームディレクトリ(フォルダ)を示しています。
vim ~/.bashrc
キーボードのiを押すと文字が入力できるようになります(INSERT: 挿入モード)。
その状態で下記の内容を入力します。
if ! pgrep -x "sshd" > /dev/null; then
sshd
fi
キーボードのESCキーを押して挿入モードを終了します。
その状態で、:wq
を入力した後Enterを押すことで保存して終了します。
-
:
これからvimのコマンドを入力するよって合図 -
w
保存コマンド -
q
終了コマンド
termux-servicesを起動しなおすため、exitコマンドで一度アプリを終了します(タスクキルしただけでは終了しないので注意)。
exit
2. GUIの設定
必要なパッケージをインストールします。
pkg install x11-repo
pkg install termux-x11-nightly
コマンドの説明
-
x11-repo
X11をインストールできるようにする -
termux-x11-nightly
GUIを表示する
X11が自動的に起動するよう設定します。
まずtermux-x11サービス用ディレクトリを作成します。
mkdir -p $SVDIR/termux-x11/log
コマンドの説明
-
mkdir
ディレクトリを作成する(-p
:複数階層のディレクトリを作成する)
自動起動スクリプト$SVDIR/termux-x11/runを作成します。
#!/data/data/com.termux/files/usr/bin/sh
exec termux-x11 2>&1
スクリプトの説明
このスクリプトが実行されるとtermux-x11が起動する。
- スクリプト:コマンドを書いてまとめて実行できるようにしたもの
-
#!
:シェバン。1行目に記述する。スクリプトを何で実行するかを記述する -
exec
:現在のプロセスでコマンドを実行する
ログ用スクリプト$SVDIR/termux-x11/log/runを作成します。
#!/data/data/com.termux/files/usr/bin/sh
svlogger="/data/data/com.termux/files/usr/share/termux-services/svlogger"
exec "${svlogger}" "$@"
コマンドの説明
ログファイルを作成する。
-
OOO=XXX
:XXXをOOOという名前(変数)で呼ぶね、という意味 -
${OOO}
:変数を呼ぶ -
$@
:すべての引数 - 引数:コマンドを実行するときのオプションやデータのこと
上2つのファイルに実行権限を付与し、自動起動の設定します。
chmod u+x $SVDIR/termux-x11/run
chmod u+x $SVDIR/termux-x11/log/run
sv-enable termux-x11
コマンドの説明
先ほど作成したスクリプトを実行できるよう、権限を変更し、自動起動するように設定する。
chmod
:ファイルの権限を変更するコマンド(u+x
:ユーザー(u)に実行権限(x)を付与する)
sv-enable
:サービスを有効にする(今回は先ほど作成したtermux-x11サービスを有効にする)
サービスを起動するため、exitコマンドで一度アプリを終了し、タスクキルをします。
exit
再度termuxアプリを起動するとtermux-x11が自動で実行されます。
termuxアプリを起動したままX11アプリを開き、下のような真っ黒な画面と×印カーソルが表示されればX11の自動起動は成功です。
うまくいかない場合
3. Ubuntuの設定
TermuxだけではできないことがあるのでUbuntuをインストールします。
pkg install proot-distro
proot-distro install ubuntu
proot-distro login ubuntu
コマンドの説明
-
proot-distro
Linuxの仮想環境 -
proot-distro install ubuntu
Ubuntuをインストールする -
proot-distro login ubuntu
Ubuntuにログインする
proot-distro login ubuntu
を実行すると、ubuntuにログインできます。
このままだとrootなので、一般ユーザーを作成します。
Ubuntuにログインした状態で下のコマンドを実行します("ユーザー名"のところは好きな名前を英語で入力してください)。
apt-get update
apt-get upgrade -y
apt-get install -y sudo
useradd -m ユーザー名
passwd ユーザー名
usermod -aG sudo ユーザー名
echo "ユーザー名 ALL=(ALL:ALL) ALL" >> /etc/sudoers
exit
最後のexit
をするとUbuntuからログアウトし、termuxに戻ります。
コマンドの説明
-
apt-get update
パッケージのリストを更新する -
apt-get upgrade
更新できるパッケージを更新する(-y
:yesオプション、更新に同意) -
apt-get install
パッケージをインストールする。今回はsudoをインストール -
sudo
パッケージをインストールする際など、権限が必要なときに使うコマンド -
useradd
ユーザーを追加する(-m
:ユーザーのディレクトリを作成) -
passwd ユーザー名
ユーザーのパスワードを設定する -
usermod -aG sudo ユーザー名
ユーザーをグループに追加する(sudoグループはsudoコマンドを使えるグループ) -
echo "ユーザー名 ALL=(ALL:ALL) ALL" >> /etc/sudoers
sudoを使えるように設定を追記
4. UbuntuのGUIの設定
先ほど作成したユーザーでUbuntuにログインします。
proot-distro login --isolated --shared-tmp --user ユーザー名 ubuntu
コマンドの説明
--isolated
termuxのディレクトリをマウントしない(ubuntuからtermuxのディレクトリにアクセスしないように設定。被るコマンド等で困ることがあるため)
--shared-tmp
termuxの一時ディレクトリを共有する(termuxで起動したX11に接続するため)
GUIで使用するパッケージをインストールします。
sudo apt install -y dbus-x11 openbox xterm tint2
sudo update-alternatives --config x-session-manager
コマンドの説明
-
dbus-x11
:X11でアプリケーション間のやりとりをする -
openbox
:アプリケーションのウインドウを表示する -
xterm
:コマンドを実行するターミナル -
tint2
:タスクバー
X11に接続し、画面を表示します。
DISPLAY=:0 dbus-launch --exit-with-session openbox-session
一度ホームに戻り、X11アプリを開きます。うまくいっていれば真っ黒な画面にマウスカーソルが表示されているはずです。
動作確認
二本指でタップするとopenboxのメニューが表示されます。
メニューから"Terminal emulator"を選択します。
ターミナルが開くので、tint2
コマンドを実行します。
スマホのキーボードを使用する場合、戻るボタンを押すとキーボードが表示されます。
実行すると画面下部にタスクバーが現れます。
GUIを終了するときはメニューから"Exit"を選択し、ダイアログの"Exit"を押します。
次回
キーボード、音声などの設定を行います。