2015年1月30日金曜日

BochsをUbuntuにインストールする

PCエミュレータのBochsをデバッグモードでUbuntu14.04(32bit)にインストールしてみた。apt-getではうまくいかなかったため、ソースからビルドする方法をここに残す。Bochsの動作を確かめるのにFreeDOSを使ってみた。

Bochsをソースでダウンロードして、解凍する

Bochsのページ(http://bochs.sourceforge.net/)ヘアクセスして「SourceForge project page」のリンクをたどる。



ここではbochs-2.6.2をインストールするため下の図の「bochs」のリンクをたどり、


「2.6.2」をたどり、


bochs-2.6.2.tar.gzをダウンロードする。



以下のように、ダウンロードしたファイルをホームディレクトリに解凍する($はプロンプト)

$ cd ~
$ gzip -dc ./Downloads/bochs-2.6.2.tar.gz | tar xf -

Bochsのビルドと環境変数の設定

解凍したディレクトリに移動し、

$ cd ./bochs-2.6.2/

次の条件が満たされるように
  • インストールがホームディレクトリのbochsディレクトリになされるよう(--prefix=$HOME/bochs)
  • x86_64アーキテクチャをサポートするように(--enable-x86-64)
  • Bochsがデバッグモードでビルドされるように(--enable-debugger --enable-disasm)
configureを実行する。(./configure --helpでオプションの一覧を見ることができる。)

$ ./configure --prefix=$HOME/bochs --enable-x86-64 --enable-debugger --enable-disasm

その後、ビルドする。

$ make

しかし、「シンボルpthread_create@@GLIBC_2.1が見つからない」とエラーがでるので、Makefileの96行目

X_LIBS = -lX11    -lXrandr



X_LIBS = -lX11    -lXrandr -pthread

に変更して、再度ビルドする。

$ make

ビルドが終わったら、次でインストールが完了する。上のconfigureの--prefixオプションで指定したディレクトリにインストールされる。

$ make install

またBochsの動作を設定するためのファイル.bochsrcをホームディレクトリにコピーしておく。

$ cp ./.bochsrc ~/

Bochsの起動を簡単にするために.bashrcに次の追記をして環境変数を設定しておく

PATH=$PATH:$HOME/bochs/bin
export PATH

PATHをすぐに反映させるためには

$ source ~/.bashrc

を実行する。

FreeDOSをダウンロードして配置する

Bochsの実行を確認するためにFreeDOSというOSを使う。フロッピーディスクイメージでダウンロードしてBochsで動作させてみる。FreeDOSのページ(http://www.freedos.org/)から以下のようにリンクをたどってダウンロードする。


下の方からフロッピーディスクイメージをダウンロードできる。ファイル名はfdboot.img


ダウンロード後、そのイメージファイルをホームディレクトリに配置すると実行まであともう少し。

$ cd ~/
$ cp ./Downloads/fdboot.img ~/


Bochsの設定ファイル.bochsrcを修正する

そのまま実行するとエラーがが出て実行が中断される。そこで設定ファイルを以下のように修正する。設定ファイル内に説明や設定の例があるので、それを参考に設定していけばよい。
まずは、192,193行目の

cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"
cpu: cpuid_limit_winnt=0



#cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def"
#cpu: cpuid_limit_winnt=0
cpu: model=turion64_tyler

にしてcpuを変更(#はコメントアウト)。
先ほどホームディレクトリに配置したFreeDOSをフロッピーAに設定するため、435行目付近の

floppya: 1_44=/dev/fd0, status=inserted

を同様に#でコメントアウトし、その下の行に

floppya: 1_44=/home/username/fdboot.img, status=inserted

を追記。
ハードディスクを無しにするため、522行目付近の

ata0-master: type=disk, mode=flat, path="30M.sample"

を#でコメントアウト。
542,543行目付近の

#boot: floppy
boot: disk



boot: floppy
#boot: disk

に変更してフロッピーからOSが起動するようにした。

Bochsの実行

$ bochs

でBochsを実行すると、

Please choose one: [6]

と尋ねられるので、Enterでbochsのシミュレーションをスタートさせる。bochsのシミュレーション用の画面が表示されたところでデバッグのブレイクがかかるので、コンソールでcを入力するとシミュレーションを続けられる。下の図はBochs上でFreeDOSが起動したところ。



0 件のコメント:

コメントを投稿