AndroidスマホでVyOSを動かす

AndroidスマホでVyOSを動かしてみた。
Androidタブレット、Nexus7 2012年版と2013年版で出来るのだからスマホでも出来る、しかもNexus7よりスペックが高いVAIO PhoneAだったらサクサクと動作するだろう...と今更気が付く。
ここでは、Nexus7と同様にLimbo PC EmulatorというVirtualboxAndroid版といった感じのツールにVyOSをデプロイ(導入)してみた。

■当方の環境
AndroidスマホVAIO Phone A VPA0511S
 CPU:Qualcomm Snapdragon 617 1.5GHz(クアッドコア) + 1.2GHz(クアッドコア)、RAM:3GB、内蔵ディスク(ROM);16GB
・ホストOS:Android OS 6.0.1
エミュレータ:Limbo PC Emulator 2.10.0
・ソフトウェアキーボード:Hacker's Keyboard 1.40.7
・ゲストOS:vyos-1.1.8-i586.iso

■手順
1. VyOSの.isoファイルの準備。
VyOSのダウンロードサイトから.isoファイルをダウンロード。

2. Limbo PC Emulatorの準備とインストール。
まずはLimbo PC EmulatorをAndroidスマホにダウンロードしインストール。ダウンロードした.apkファイルをタッチすると、Limbo PC Emulatorのインストールが開始する。
Limbo PC Emulatorのダウンロードサイトは下記を参照。

3. Limbo PC Emulatorを立ち上げる。
画面右上の「None」をタッチし「New」を選択。「Machine Name」欄に任意のマシン名を入力。
マシン名入力後、ゲストOSの種別の設定を求められるがここでは無視。

4.「CPU/Board」欄の設定は以下のとおり。
 Architecture:x86
 Machine Type:pc
 CPU Model:qemu32
 CPU Cores:1
 RAM Memory (MB):472

VyOSのデータシートにはRAMの推奨容量が512MBと記載されているが、自分の環境では512MBを選択するとStartアイコン(三角アイコン)をタッチ後即座にLimbo PC Emulatorが落ちる。
よって512MBより減らしながらVyOSの立ち上げを試み、472MBでようやく落ちなくなった為に472MBを選択。

5.「Storage」欄の設定は以下のとおり。
「Hard Disk A:」にチェックを入れ、5GBを選択。

6.「Removable Storage」欄の設定は以下のとおり。
「CDROM:」にチェックを入れ、VyOSのisoファイルを選択。

7.「Graphics」「Audio」の各欄は設定を変えずそのまま。
「Network」欄の「Network Card:」はvirtioを選択し、他の設定はそのまま。

8.「Boot Setting」欄の設定は以下のとおり。
「Boot from Device:」はCD Romを選択。
仮想CDROM(.isoファイル)でVyOSを起動後、install imageコマンドでシステムを仮想HDDにインストールする為、最初はCD Romを選択する。

9.「User Interface」「Advanced」の各欄は設定変更せずそのまま。

10. 上記の設定完了後、Startアイコン(三角アイコン)をタッチしVyOSを立ち上げる。
ログインプロンプトが出力されるまで約20分、ひたすら待つ。※当方の環境では約20分だった。
Startアイコンにタッチした後「うっすらとグレーの横線が見えるだけ」の場合は、Limbo PC EmulatorのColor Modeを変更する事で文字が見えるようになる。※Color Modeの変更に関しては下記を参照。
途中で画面が黒くなり何も見えない状態になった場合は、ソフトウェアキーボードを表示させてEnterキーを叩くと、起動ログが再び見えるようになる。

11. ログインプロンプトが出力されたら起動完了。
vyos login: とPassword:の両方共にvyosと入力しログインする。

12. ログイン後、install imageコマンドを打ち、VyOSをAndroidスマホのMain Storageにインストール。
インストール開始までの間に幾つか質問されるがデフォルト値のまま進めて問題無い。そのままEnterキーもしくはYesを選択。

This will destroy all data on /dev/sda
Continue?と聞かれるが、これはAndroidではなくVyOSの/dev/sdaである為、Yesで良い。

13. インストール完了後はrebootではなくpoweroffコマンドでVyOSを一旦落とす、もしくは画面左下のAndroidの三角アイコンにタッチ → 画面右上に表示される3つの点のアイコンをタッチ → ShutdownでVyOSを一旦落とす。
VyOSの停止後はLimbo PC Emulatorの「Removable Storage」欄にてCDROMからチェックを外す。
「Boot Settings」欄の「Boot from Device」をCD RomからHard Diskに変更し、該当する.qcow2ファイルを選択。
その後、Startアイコン(三角アイコン)をタッチするとVyOSが仮想HDDから起動する。

14. Let's enjoy!!


■その他
・VyOSバージョン1.2.xは64bit版につき「CPU/Board」欄の「Architecture:」はx64、「CPU Model:」qemu64を選択する。
しかし自分の環境では上記8.の三角アイコンのタッチ後、Freeing unused kernel image memory:で止まりデプロイが完了しない。
・複数の仮想マシンを同時に立ち上げる事が出来ない。
・外部へのアクセスはNATのみ。Virtualboxで言うブリッジアダプターやホストオンリーアダプタや内部ネットワーク等のようなネットワークアダプタは無い。
・設定可能なポートはeth0とloのみ。
・Nexus7等のようにスペックが低いAndroid端末では、ドキュメント閲覧の為にWebブラウザやPDFビューワを立ち上げるとVyOSが落ち、VyOSを起動しなおさなければならない事が有る。
・Limbo PC Emulatorがバックグラウンドにいる状態では外部のNTPサーバと時刻同期をしない。

■Limbo PC Emulatorで出力される文字が見辛い場合は...
・画面下部左側のAndroidの三角アイコンにタッチ → 画面右上に表示される3つの点のアイコンをタッチ → 「Color Mode」で
「Black & White (1bpp)」もしくは「8 colors (1bpp)」を選択すると文字がくっきりと表示され、少しは読みやすくなる。
・文字の大きさは、sudo dpkg-reconfigure console-setupコマンドで変更が出来る。
自分の場合、「Encoding to use on the console:」ではUTF-8を選択、「Character set to support:」ではAmericanを選択、
「Font for the console:」ではFixedを選択、「Font size:」では18を選択。

■ゲストOS(VyOS)内のファイルをホストOS(Android)内に保存
例えば、show tech-supportコマンドの出力結果をスマホのSD Card内に保存する場合...

スマホにてWLAN接続を有効にする。
スマホにてFTPサーバを立ち上げる。今回はFtp serverというFTPサーバアプリを使用。
FTPサーバの設定。User nameとUser passwordとHome directoryを任意の値で設定。自分の場合、FTP ServerのホームディレクトリをスマホのSD Card内に設定した。
④以下のコマンドを打ち、show tech-supportの内容をスマホのSD Card内の20191029.txtファイルに出力。
show tech-support save ftp://admin:admin@192.168.3.7:2221/20191029.txt
192.168.3.7はスマホIPアドレス(Ftp serverにて確認出来る)、2221はFtp serverのデフォルトのFTPポート番号




https://vyos.io/ (VyOS)
https://wiki.vyos-users.jp/index.php/ユーザーガイド (日本語版ドキュメント)
https://vyos.readthedocs.io/en/latest/index.html (ドキュメント)
https://sourceforge.net/projects/limbopcemulator/ (Limbo PC Emulator)
https://play.google.com/store/apps/details?id=org.pocketworkstation.pckeyboard&hl=ja (Hacker's Keyboard)
https://debslink.hatenadiary.jp/entry/20171001/1506867093 (VyOSをNexus7で動かす)