ロースペックマシンで Oracle virtualbox を使う

ロースペックマシンで Oracle virtualbox を使う

グラフィック なしで快適VM生活~


ロースペックPCでもLinux VMを動かしたい場合のTIPSメモです。

必要なソフトがCygwinでインストールできなくてLinux だとインストールがうまくいくケースというのは結構あるとおもいます。そういう場合 Virtualbox が便利です。インストールも簡単で、そのまま使っていても最近のパソコンは何の問題もないのですが、遅いロースペックマシンでは辛いです。
特に、グラフィックハードウェアアクセラレーションが効かない場合は実用に耐えない場合があります。そんな時 グラフィックインターフェイス(GUI) を捨てれば快適になれるのではないかということを追及してみました。

まず、どうしてもGUIが必要な分野もあると思います、そういう場合にはこの記事は適当ではありません。どうしてもGUIが必要な場合新しいマシンを買うのが結局正解だと思います。NTT-X StoreなどでCore i 5程度のものをチョイスすればまずVMが満足に動かないPCも無いと思います。しかし自分の場合使いたいソフトはWebサーバ関係なので、時々GUIが使えればそれでよく、サーバが健全に動いてくれていることが大事であって、apt-get 程度の作業はTeraTermなどを使ってできればそれでいいかなと。まあ、そういうサーバ用途だけの使用であれば m-Stick を買うというのもおもしろそうですけどね。

ただ、追加投資なしでやりたいのでちょっと頑張ってみます。
この場合 SSH をふつう試す事になりますが、SSHはわりとやっている人も多いようなのでこのページではシリアルポートでやってみたいなと。

使ったPCとか環境とか
ホストPC: Windows 7 Home 32bit版 C60 Mem8G
ゲストOS: Ubuntu12.04LTS



Step1: VirtualBox のシリアルポートを設定する


こんな感じです。
ポート番号はCOM1でいいです。ゲスト側のCOM1に仮想ハードが追加されるイメージです。
次にポートモードを「ホストにパイプ」にします。このパイプを経由して、TeraTermで接続します。
パイプ名ではまりましたが、virtualbox forum によると
\\.\pipe\<pipe_name>
という形式で書くとのこと。
今回は\\.\pipe\temp.pipeとしてみました。
設定ができたらVMを起動します。


Step2: TeraTermで接続してシリアルポートが接続できているかどうか確認する

Teraterm はこんな感じでいいです。 Telnetを選んで先ほど入力したパイプ名をホストに入れてやるだけです。ディストリビューションによっては、ここでLoginが出て終了になります。ログインしてなんでもできます。ubuntu はデフォルトでは login: が出ないようですね。やれやれ。

Login:を出すようにする作業はあとでやることにして、
ここでは、とりあえず物理的?に接続できることだけ確認してみます。

Windows でいうCOM1はふつうlinuxでは /dev/ttyS0 で使用します。
そこに何か書いて、TeraTerm上に何か出れば問題ありません。


問題ないみたいですね。あれ、ttyS0で一般ユーザに権限与えられてなかったっけ?
tee コマンドはインプットをコンソールに出す以外にファイルにも出力するコマンドです。
TeraTermにttyS0に書き込んだ内容が表示されれば問題なしです。




Step3: getty をinit から起動してもらうようにする。



cd /etc/init/
sudo cp tty1.conf ttyS0.conf 
[1/31補足 ttyS0.confは↓みたいな内容ですよ 編集するところ最後の行だけです]
# ttyS0 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345] and (
            not-container or
            container CONTAINER=lxc or
            container CONTAINER=lxc-libvirt)

stop on runlevel [!2345]

respawn
exec /sbin/getty -8 38400 ttyS0
ttyS0.conf内のtty1となっている部分をttyS0に置き換えてください。 getty という待ち受けプログラムがシリアルポートでも待ってくれるようになります。

こんな感じになります。

Step4:TextModeで起動するようにする

ここは
KRAKENBEAL RECORDS

に詳しいのですが、ディストリビューションによってだいぶ差があって、
ubuntu12.04LTSでは/etc/init/lightdm.confの書き換えでうまくいくようです。

12.04LTSの方は手パッチをお願いします。

diff lightdm.conf lightdm.conf.bak
12c12
>            and runlevel [!026]
---
<            and runlevel [!06]
17c17
> stop on runlevel [0126]
---
< stop on runlevel [016]

このStep4,5あたりはディストリビューションによってまったくばらばらで
init.tabを編集したりするパターンもあるはずですが頑張ってみてください。



完成


結構いい感じです。ロースペックマシンでもちょっとだけWeb開発がしやすいかなと思います。

Core i3環境では sudo shutdown -r now 後再びlogin: が表示されるまで40秒くらいしかかかりません。ロースペックマシンに限らず、Cygwinの置き換え環境としてVirtualbox の活用が可能ではないでしょうか。メモリ消費量も劇的に減らせるはずです。また、SSHが少なくともネットワークが生きていない限り使えませんが、仮想のシリアルポートを使う事によって、ネットワークすらない環境でも使用できます。シングルユーザモードも関係ありません。デバッグ用途にも使えます。

ぜひお試しください。

TeratermのみでOKなら起動するときはシフトキー押しながらやってみてください。ディスプレイウィンドウすら出ません。


sudo apt-get install screen
をお忘れなく

デスクトップ上に↓みたいなBatファイル置いといてもいーかもね。起動画面を見ないですむ。
"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm Linuxmint --type headless
"C:\Program Files\teraterm\ttermpro.exe" \\.\pipe\temp.pipe

0 件のコメント:

コメントを投稿