ラベル virtualbox の投稿を表示しています。 すべての投稿を表示
ラベル virtualbox の投稿を表示しています。 すべての投稿を表示

2011年2月12日土曜日

Flappy のための Windows 3.1 with VirtualBox

様々な事情で Flappy をやってみたいなあ,と思ったのが発端.そういえば持ってたなあ,と思いだした.

あちこち探してパッケージを見つけたが,Windows 3.1 版 だった.しかも FD 1 枚 だった.
FD の中を見てみると WING.DLL とか入っている.当時は DirectX なんてなかったので,個別にこういう直接レンダリングができるツールを入れてたんだよなあ,MicroImages が配っていた MI/X という Free の Xserver にも付いていたっけかなあ,MicroImages は GIS の有名どころの TNTMips を作っている会社だけど,未だに Xserver 経由で動かすバージョンがメインなんだよなあ... とか考えたが解決にはならない.こういうシステムに近いツールを想定されてないバージョンに突っこむのは怖すぎるよなあ.そもそも 16bit だから,動かないか.

ぐらいまで考えたあたりで,Virtualbox 使って Win3.1 を入れればいいんじゃね?と思いついた.昔,FD を廃棄する前に全部 dd でコピーしていたから,FD image はあるはず.
で,ディスクをひっくりかえしてみるとイメージが見つかった.1.44FD 12 枚.小さい.さらにこれが英語版なら 1.44FD 7 枚組みで,しかも 1 枚は最後まで要求されないという小ささ (実質 6 枚).ちなみに日本語版で増えている分は,半分以上がフォントだ.
VirtualBox に新しい仮想マシンを追加,ストレージとして FD のデバイスを足して FD image (Win 3.1 の disk1) をマウントして起動... しようとしたがシステムが無い,と言われてしまった.遠い記憶を探ってみると,そういえば DOS が起動しているところからインストーラを動かしたような気がする.DOS は別売 (というか大抵の人が持ってた) だったよな.
ところが不思議な事に (?),DOS の FD image はどこにもない.どうも作っておかなかったようだ.インストールで使うだけだから,最小限だけあればいいんだけど.
更に探すと bootable FD image みたいなのが出てきた.IBM-DOS7 とか,Win95 の起動イメージだ.disk1 というわけでもなく,非常用に作った奴で,最小限の DOS にツールが入っている.DOS7 は,Win3.1 に対して新しすぎるので,どんなもんかなあ.でも Win95 の起動ディスクなんてほとんど DOS なので,これでいけるかもしれん.

Win95 の image をマウントして起動する.当然 OK.日本語 Windows を入れるためには 日本語環境ではならないが,肝心の CONFIG.SYS はこんなかんじ.

FILES=50
BUFFERS=30
DOS=HIGH,UMB
STACKS=9,256
DEVICE=HIMEM.SYS    (1MB 以上のメモリを使うためのドライバ
DEVICE=BILING.SYS    (バイリンガル環境構築
DEVICE=JFONT.SYS /MSG=OFF    (日本語フォントをメモリにロード
DEVICE=JDISP.SYS /HS=LC    (グラフィックモードに移行して日本語を表示
DEVICE=JKEYB.SYS /106    (キーボードドライバ,US キーボードなら /101 に

FILES と BUFFERS は大きめにしておく必要があるようだ.DOS で使うなら半分でいいけどね.

VirtualBOX の設定は,メモリ 64MBに,HDD 500MB.贅沢だなあ.実機でやっている頃は,この半分以下だったよな.

FD から起動できたら,fdisk で HDD の領域確保,再起動して format C:,sys C: でシステムを転送して,上記の CONFIG.SYS とそこに書いてある必要なファイルをコピー.そしたら再起動して,こんどは HDD から起動する.
必要なファイルは IO.SYS MSDOS.SYS COMMAND.COM ANK16.FNT ANK19.FNT BILING.SYS CONFIG.SYS HIMEM.SYS JDISP.SYS JFONT.SYS JKEYB.SYS JKEYBRD.SYS KANJI16.FNT ぐらいだと思う.最初の 3 つは sys C: の段階で自動で入る.
試行錯誤の結果,途中で FD を抜き差ししていると止まりやすいので,あらかじめ md C:\inst して,そこに win3.1 の FD の中身をどんどん入れていく.FD imageを開放して,新しいのを指定して,copy a:*.* していくわけだが,FD image のマウント後に F3 を押すと,直前のコマンドが再入力されるので便利だ.それでも FD 12 枚はなかなかきつい.
コピーが終了したら,setup を起動して,運が良ければインストール出来る.運が悪いと (何度も運が悪かったが),単にフリーズしたり,ファイルの展開が不十分なのかファイルが見付からなかったり,これが多かったが スタンダードモード:MS-DOSエクステンダ外のエラーです なるエラーが出て止まる.PC が速すぎるのが問題なのかもしれない.なんとなく,FILES,BUFFERS を多めにしておくと止まり難いように思う.(後は,Linux よりも Win 環境のほうが良さげ)
上手く入ったらそれなりに動く.でも最初に Win95 のロゴが出て次に Win3.1 のロゴが出るのは変なかんじ.

Win3.1 が入れば Flappy は簡単に入る.WING.DLL も問題ない.SB16 のドライバを入れれば音も出る.ハードの設定はデフォルトの I/O 0x220,IRQ 5.動きがひっかかるような時は全画面モードで.
昔のゲームだが,今でも十分におもしろい.そうそう,昔 200 面までクリアしたんだよな... 1999 年か.OS は Win95/98 だったようだ.


PC-DOS7 でもインストールしてみた.CONFIG.SYS は以下のとおり.

files=40
buffers=20,0
dos=high,umb
stacks=9,256
device=\himem.sys
country=081,932,\country.sys
devicehigh=\$font.sys /p=\  (インストール時は device= のほうがいいかも
devicehigh=\$disp.sys  (同上
rem device=\$ansi.sys

キーボードドライバが入ってないが,106 キーで使うときは,フリーの jis_a01.com をロードしていたようだ.もっとも,Win が起動してしまえばキーボードドライバは Win のものを使うし,インストールのときだけ我慢できればどうでもいい話だ.
こっちで必要なファイルは IBMBIO.COM IBMDOS.COM COMMAND.COM CONFIG.SYS $ANSI.SYS $DISP.SYS $FONT.SYS COUNTRY.SYS HIMEM.SYS $JPNHN16.FNT $JPNHN19.FNT $JPNZN16.FNT ぐらいか.この $JPNZN16.FNT が非常に綺麗で,pcf フォントに変換して長く使っているんだよな.
入れてみると少々起動が遅いものの,こちらのほうが安定しているように思う.


ここまで来たら,ということで英語版の Win3.1 も入れた.英語環境で入れればいいので,CONFIG.SYS は HIMEM.SYS の行まででいい.英語版はずいぶんと安定して入る.ユーザの数の差かねえ.


そうそう,ひとつ困ったことがあった.日本語 Win を入れる途中で,ユーザ名を入れる画面があるのだが,そこではカナキーが押された状態になっているのだ.101 キーボードでカナを解除するのってどうやるんだ?
CTRL + Shift + CapsLock らしい.思いつかんわ,そんなの.
いろいろ試したが,直らないなあ.ゲームするには十分だが,文字入力はできんな.

2011年1月7日金曜日

tips: VirtualBox

例えば OS の選択肢から "opensuse (64bit)" 選べば 32 bit ホストでも 64bit ゲストが動く.

2010年12月30日木曜日

VirtualBox でゲストからホストの生ディスクを使うには

VirtualBox では生のパーティションも扱えると聞いていたので,そっちを試してみることにする.参考にしたのは
 - 物理パーティションにインストールしたOSをVirtual Boxで使う
 - Windows 上の VirtualBox で実パーティション上の Linux を起動する
 - Using a raw host hard disk from a guest
あたり.


Step 1. 仮想ディスクの作成


 まず,vmdk 形式の仮想ディスクを作成する必要がある.VirtualBox 付属の VBoxManage コマンドを使うのだが,Linux で作成したディスクを Windows で使ったりは出来ないようだ.(出来れば楽だったんだが.もしかすると VirtualBox のバージョンが違ってたかも)

VBoxManage internalcommands createrawvmdk -filename FILE.vmdk -rawdisk /dev/sda

にて作成するが (この時はディスクにアクセスするため,root or 管理者権限が必要になる),デバイス名は Win -> "\\.\PhysicalDrive0", Mac -> "/dev/disk1" 等に読み変える.基本的にはこれで終了だが,この仮想ディスクを使っているゲスト OS から,ホスト OS で使っているパーティションにアクセスすると VirtualBox が落ちてしまうので,アクセス禁止にしておくのが無難だ.それには作成時にアクセスを許可するパーティションを指定してやればいい.今回の場合,

VBoxManage internalcommands createrawvmdk -filename FILE.vmdk -rawdisk \\.\PhysicalDrive0 -partitions 3,5,6,7,8

とやって Linux 方面にのみアクセスするようにした.この状態で起動した場合でも,p1,p2 は見えなくなるわけではなく,単にアクセスエラーになる.従って fstab を書き換える等の手間は不要だ.
パーティションを限って .vmdk を作成すると,FILE.vmdk と FILE-pt.vmdk の 2 つのファイルが出来る.多分両方必要なのだと思うが,仮想ディスクとして指定するのは FILE.vmdk のほうだ.(両ファイルを同じ場所に置くことを推奨したい)

Step 2. 新規仮想マシンの作成


 ディスクが出来たら VirtualBox を起動する.この時もディスクにアクセスするので root or 管理者権限が必要だ.新しい設定を作っていく途中で仮想ディスクとして上で作成した FILE.vmdk を指定してやれば OK.
(もっとも今回は,生 Arch が amd64 バイナリだったため,起動に失敗した.やれやれ)
 (64bit ゲストを動かすためには,設定で 64bit を選択する必要がある)

Step 3. 起動


 その状態で起動すると,不思議なことに生パーティションを使って起動できる.MBR は,/dev/sda のものが FILE.vmdk にコピーされているようだ.他サイトで説明されているように,ディスク作成時に指定してやることで好きな MBR を使うこともできる.また,読み書きするのに "-relative" オプションも不要.(ホストが Linux の時には必要?)

 速度は,仮想ディスクを使う時よりもわずかに遅いようだ.他は変るところはないと思う.


2010年12月27日月曜日

VirtualBox

Win でしか使えないハードを使う機会が増えてきたので、何度も再起動するハメになり面倒だ。そのへんをなんとかしてみようかと Virtualbox を試してみることにした。ホストは Win7 でゲストには ArchLinux と debian。
VirtualBox のインストールは簡単。インストール後はウィザードに従って設定、起動には USB CD を使ってもいいし CD-image を使ってもいい。どちらも試したが、まあ image のほうが楽かな。静かだし。

最初の難関は xorg。単に入れただけだと 800x600 (しかも遅い) で動く。メニューから "Guest Addition のインストール" を選ぶことで /dev/sr0 あたりにゲスト OS 用ツールの cd-image がセットされる。それをマウントして OS に合致したものを導入する (shell script)。Linux の場合は、カーネルモジュールをコンパイルするので、arch なら base-devel と kernel26-headers、debian なら build-essential あたりをあらかじめ入れておく。
スクリプトを動かすと、カーネルモジュールとツールがインストールされる。場所は /opt あたり。リンクも作成してくれる。vboxvideo あたりが上っている状態で xorg を動かすと、好きな解像度で GUI を使える。私の好みはフルスクリーンかな。

debian は問題なかったのだが、arch のほうは一般ユーザで xorg を起動しようとしても失敗する現象が発生.root では問題ないのでパーミッションかな?と思うがよく判らない。結局、/etc/skel に入っていた .xsession が「何もしない」設定になっていたためと判明。"exec openbox" を記載してやることで動くようになった。(まったくこんなことで時間を取られるなんざ... )

 使ってみたがなかなか速い。例の pdftoppm ベンチにしても、2 割ほど遅いぐらいで済んでいる。描画のほうも問題ないようだ。1280x764 とかの flv でもスムーズに再生する.

ところが usb メモリを読もうとしたら反応しなくなった.usb cdrom は問題ないのになあ.起動から終了まで付けていたからかな?
ファイルのやりとりには共有フォルダを使うのが良いようだ.Virtualbox の方で設定して,ゲストの Linux に入った後は "mount -t vboxsf DIRNAME /MOUNTPOINT" でマウントできる.

 後,気付いたのは,ネットの接続が遅いことか.速度が出ないというわけではなく,最初の接続に時間がかかる印象.これは設定が NAT になっているからかもしない.bridged にしてみるべきかも.

別にある Linux ホスト w2k ゲストの環境で共有フォルダを使ってみる.ホストのマネージャのほうを設定して,ゲストのほうでは「ネットワークドライブの設定」あたりで "\\vboxsrv\SHARE_NAME" みたいなかんじで割り付けしてやると使えるようになる.今迄は smbmount していたが,ずいぶん簡単だ.それに "smb 共有を解除する前に VirtulaBox を終了してしまったぁ" なんてこともおこらないし.