メモのページ - チラシの裏メモ 3枚目

通信技術や気になった事を黙々とメモし続ける

AndroidスマホでVyOSを動かす

AndroidスマホでVyOSを動かしてみた。
VyOSはPCにて動作するVirtualboxだけでなく、Microsoft AzureやAWSなどのクラウド環境においても動作する。そしてAndroid端末にて動作するエミュレータアプリ、Limbo PC Emulatorでも動作する。
先日、AndroidタブレットのNexus7でVyOSを動かす事に成功した。
Androidタブレットで出来るのだからスマホでも出来る、しかもNexus7よりスペックが高いVAIO PhoneAだったらサクサクと動作するだろう...と今更気が付く。
ここでは、Nexus7と同様にLimbo PC EmulatorというVirtualboxのAndroid版といった感じのアプリにVyOSをデプロイ(導入)してみた。


Limbo PC Emulatorとは
Limbo PC Emulatorとは、Android OSで動作するQEMUベースのx86エミュレータツール。


当方の環境
・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
※Bluetooth接続の物理キーボードの使用可能。


デプロイ手順
1. VyOSの.isoファイルの準備。
VyOSのダウンロードサイトから.isoファイルをダウンロード。ダウンロードサイトは下記を参照。

2. Limbo PC Emulatorの準備とインストール。
まずはLimbo PC EmulatorをAndroidスマホにダウンロードしインストール。ダウンロードした.apkファイルをタッチすると、Limbo PC Emulatorのインストールが開始する。
Limbo PC Emulatorのダウンロードサイトは下記を参照。
ARM版やx86版など複数のバージョンが有るが、x86版をダウンロードすること。

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

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

Architectureの設定。32bit版(x86版)のVyOSをデプロイする場合はx86を選択、64bit版(x86_64)のVyOSをデプロイする場合はx86_64を選択する。
設定可能なRAMの容量はスマホ本体のRAM容量に左右されるようで、VAIO Phoneよりスペックが高いSONY Xperia XZ2の場合は700MBに設定してもLimbo PC Emulatorが落ちなかった。
VyOSのデータシートにはRAMの推奨容量が512MBと記載されているが、VAIO Phoneでは512MBを選択するとStartアイコン(三角アイコン)をタッチ後即座にLimbo PC Emulatorが落ちる。
よって512MBより減らしながらVyOSの立ち上げを試み、456MBでようやく落ちなくなった為に456MBを選択。

5.「Storage」欄の設定は以下のとおり。
「Hard Disk A:」にチェックを入れる。容量は自動で5GBが選択される。

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

7.「Graphics」「Audio」の各欄は設定を変えずそのまま。

8.「Network」欄の「Network Card:」はvirtioとE1000のどちらでも良いが、自分の場合はE1000を選択。
「Host Forward:」の欄には hostfwd=tcp::22222-:22 を入力し、VyOSにSSHでログイン出来るように設定。
スマホ本体やWLANで接続しているPC等からsshでアクセスする際は、ポート番号は22222に指定する。

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

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

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

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

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

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

14. インストール完了後は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から起動する。

15. Let's enjoy!!
4Gや5G等の回線を介して外部との通信が出来るだけでなく、WLAN経由で他のスマホやPCで動作するVyOS、他のソフトウェアルータとの間で通信可能。
VyOSにて宛先0.0.0.0/0、ネクストホップ10.0.2.2のデフォルトルートを設定する事で、外部への通信が可能になる。

他に、Limbo PC Emulator内で動作するVyOSとPCのVirtualbox内で動作する仮想ルータとの間でeBGPピアを張る事も出来る。
neighborコマンドで指定するアドレスは10.0.2.xではなく、WLANのネットワーク上のネイバのアドレスになる。


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:」ではCombined - Latin; Slavic and non-Slavic Cyrilliを選択、
「Font for the console:」ではTerminusBoldを選択、「Font size:」では22x11を選択。
しかしフォントは変わるもののフォントサイズは変わらず、自分の環境では16より大きくならない。


それでも文字が小さくて見辛い場合
AndroidのSSHクライアントアプリを使用しVyOSにアクセスする。
自分の場合、TerminusというSSHクライアントアプリを使用。
フォントサイズや色の設定が可能なのでLimbo PC Emulatorの画面より文字が読みやすい。
宛先のIPアドレス欄はlocalhost、SSHのポート欄は上記の.8にて設定した22222を設定すると、VyOSの起動完了後にSSH経由でログインが可能になる。


ゲスト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ポート番号。FTPサーバへのアクセスで使用するUsernameとパスワードは、Ftp serverの設定画面で変更可能。


その他、制限事項など
・Limbo PC Emulatorは、Virtualboxのように複数のゲストマシンを同時に立ち上げる事が出来ない。
・外部へのアクセスはNATのみ。Virtualboxで言うブリッジアダプターやホストオンリーアダプタや内部ネットワーク等のようなネットワークアダプタは無い。
・設定可能なポートはeth0とloのみ。勿論、eth0に仮想インタフェース(vif)の作成は可能。
・Nexus7等のようにスペックが低いAndroid端末では、ドキュメント閲覧の為にWebブラウザやPDFビューワを立ち上げるとVyOSが落ち、VyOSを起動しなおさなければならない事が有る。
・Limbo PC Emulatorがバックグラウンドにいる状態では、VyOSは外部のNTPサーバと時刻同期をしない。
・Limbo PC Emulator内のVyOSにSSHログインする際は、スマホ本体にアサインされているIPアドレスに対し、SSHポート番号2222(上記10で設定したとおり)でアクセスする。VyOSに設定した10.0.2.xではない点に注意。


大変恐縮ですが...
・当記事の内容を実行した事による不具合や故障や損害について私は一切の責任を負いません。あらかじめご了承ください。



https://vyos.io/ (VyOS)
https://downloads.vyos.io/?dir=rolling/current/amd64 (開発版のダウンロードサイト)
https://downloads.vyos.io/?dir=release/legacy (バージョン1.x系のダウンロードサイト)
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で動かす)