川の流れのように‥(Eiji Ota's Weblog)

川の流れのように‥(Eiji Ota's Weblog)

OpenSolaris上でアプリを使う

 
月曜日 5 22, 2006

OpenSolarisに対応したQemu-0.8.1 (Qemu-0.8.1 supports OpenSolaris)


最近、Sunの社内でQemu 0.8.1が話題になっていました -- 先日、Qemu 0.8.0をOpenSolarisに対応させて動かした話をしましたが、その後急速に動き(*1)があって、Qemu 0.8.1でOpenSolaris対応が行われたのです。^-^

早速OpenSolaris上でQemuを動かして、KnoppixやWin98,2K,XP, Solarisなどの動作確認したというメールもありました。Qemu 0.8.1でも残念なことに例のtun/tap対応(IP tunneling)はされていないのですが、tun/tap以外でもネットは対応できるようなので(*2)、それならそれで別にいいっか、っていう気分 だったりしています...。^.^:

ところでKnoppixを動かした...と聞いて、そうかCDから直接ブートできるやつなら、結構楽にテストできるなと思いつき、じゃぁ先日の NexentaでもQemuを使ってブートさせてみるかと試しにやったら、あっさりと、しかも少々お古な僕のLaptopでも実用的な速度でOSがブート してしまいました。^-^


次を↓実行して、CDROMからNexentaを起動。

 % /opt/qemu/bin/qemu -cdrom /vol/rdsk/elatte_livecd user -m 200
  (注: 僕のlaptopは256MBしかないので、-mでは200を指定してsingle userでブート。でも普通は512MB辺りを指定するようです。)

 じゃ、kmdbでデバッカーも起動できるのか...とやってみたら、こちらもあっさりと起動。へぇ、Qemuでデバックもできそう と、改めて感心。^v^ 素晴らしい。。。



今回OpenSolarisが対応されたqemu-0.8.1のソースはこちらからダウンできます。

   ○ qemu-0.8.1(ソー ス)

また、既にパッケージ化したものも配布されていて(*3)、それはこちらからダウンできます。

   ○ PMqemu-0.8.1.i386.pkg (link先をダウンしてね)

前回書き忘れたのですが、gccコンパイラにバグがあるようで、版数が低いとqemuが誤動作してcoreを吐いてしまいます。(=_=) qemu-0.8.0のOpenSolaris対応中に、このバグに見事にはまりました。^^:

デバッカの指す該当付近のソースはどうも問題ないように見えるのですが、生成されたバイナリをディスアセンブルすると、どうもおかしい、、そんな場合は、 このコンパイラのバグに遭遇している可能性が大です。

SUNWgccのバージョンが11.10.0,REV=2005.05.28.01.25のもの(最初のリリース)だと、このバグが潜んでいるようです。 バージョンを11.10.0,REV=2005.09.23.01.45にしましたら消えましたので、最近のものには居ないだろうと思います。

僕の場合、gccのpackageをSolaris Expressから引っこ抜いて置き換え対処しました。 この方法では、SUNWgccとSUNWgccruntimeの2つを置き換えることになります。

○ SUNWgcc -- CDの4枚目に入っている

パス名: cdrom/sol_11_x86_4/Solaris_11/Product/SUNWgcc

○ SUNWgccruntime -- CDの2枚目に入っている

パス名: cdrom/sol_11_x86_2/Solaris_11/Product/SUNWgccruntime

作業はpkgrm(*4)してpkgaddするだけなので、簡単です。

(手順)

1. SUNWgcc

 (削除)
           # pkgrm SUNWgcc
 (追加)
           # cd /cdrom/sol_11_x86_4/Solaris_11/Product
           # pkgadd -d . SUNWgcc

 2. SUNWgccruntime

 (削除)
           # pkgrm SUNWgccruntime

 (追加)
           # cd /cdrom/sol_11_x86_2/Solaris_11/Product/
           # pkgadd -d . SUNWgccruntime

今回は、最近リリースされたQemu-0.8.1についてでした。
ではでは。。。(^-^)


(*1) SunのBen Taylorさんが、Qemuに差分を差し出してくれたようです。
(*2) -net nic -net userでできるらしいのですがよく知りません。^-^;
(*3) Patrick Mauritzさんがビルドしたものです。Patrickさんは、OpenBIOSというieee1275ベースのLinuxBIOSのようなオープンな BIOSを開発しています。
(*4) pkgrmするときに、パッケージの依存関係で警告が出されますが、無視します。

Technorati Tag: OpenSolaris

月曜日 4 24, 2006

OpenSolarisでLinux+QEMUを動かす(Running Linux with QEMU on OpenSolaris)



仮想化ソフトとして有名なのものにVMwareXenがあります。またSolaris Zoneベースの BrandZでもLinuxを動 かすことができますよね。(^^)

一方、オープンソフトベースでは、 BochsQEMUなど有名なものが幾つかあります。試しとQEMUを動かそうとしたですが、まだSolarisをちゃんとサポートしていない ので、色々とコンパイルエラーが.... そこで、やむを得ずhackすることにしました。 ^-^;

一応Linuxがブートし、アプリも動いているようです。(動作させた範囲では...)
※ 画像がはみ出てしまう場合は、ブラウザを大きく(最大化)してみて下さいな。(ちょっと不便でごめんなさい)


元々、Linux/BSDなどunix likeなOSで動作するように書かれているQEMUですので、 OpenSolarisで動作させるようにするのはそう難しいことではない....のはずだったんですが(^.^:)、 とはいうものの、Networkのところ -- Linux/BSDのtun/tap interfaceのところ -- で見事つまずき、今回ちょっとできてなくて、結局Networkは動いていないです、はい。(^-^:)

OpenSolarisの場合、tun tunneling STREAMS module を使えばよいのではないかと勝手に 推測しているんですが、tun STREAMS moduleでIPv4-in-IPv4のtunnelingまで 確認したところで、取りあえず今回は作業はストップ。 (SolarisのIP tunnelingについては、man tun, man ifconfigなどを参照下さいな)

そんなわけで、どなたか対応してましたら、是非連絡を下さいまし。(_0_)


取りあえず今回は中途半端で申し訳ないと思いつつ、途中までの段階のQEMUです。

☆ QEMUをOpenSolarisでコンパイルする...

1. QEMUのソースを入手

QEMUのサイトからダウンしたソースに、取りあえずの、作者から怒られそうな半端なhackを施したソースを使用しました。...^-^;

使ったsourceはこちらです → qemu-0.8.0-opensolaris.tar.gz (OpenSolaris 対応版)

2. QMUをコンパイル

上のソースを展開して、

% gtar xvfz qemu-0.8.0-opensolaris.tar.gz
% cd qemu-0.8.0

x86しか対応していないので、configureには次のように指定します。 prefixはお好みですが、ここでは/opt/qemuを指定しています。

% ./configure --target-list=i386-softmmu --prefix=/opt/qemu --disable-gfx-check

その後、gmakeを使ってコンパイルしインストールします。

% gmake
% su
# gmake install

☆ Linux をQEMUで動かす

動かすLinuxには、QEMUのサイトにあった、linux-test-0.5.1.tar.gzを使いました。

qemuを上の例のように/opt/qemu/binの下に落とした場合、shellのpathを切るか、 展開してできるlinux-testの下にあるqemu.shを編集するかして、pathを通します。

そして、qemu.shを起動してlinuxをブートです。

その時のログは、こんな感じでした。

 % qemu.sh (qemu) Linux version 2.4.21 (bellard@voyager.localdomain) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 0000000000100000 - 0000000008000000 (usable)
128MB LOWMEM available.
On node 0 totalpages: 32768
zone(0): 4096 pages.
zone(1): 28672 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0 root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
ide_setup: ide2=noprobe
ide_setup: ide3=noprobe
ide_setup: ide4=noprobe
ide_setup: ide5=noprobe
Initializing CPU#0 Detected 1996.819 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 3348.88 BogoMIPS
Memory: 126116k/131072k available (1210k kernel code, 4568k reserved, 266k data, 64k init, 0k highmem)

                                                          :

hda: QEMU HARDDISK, ATA DISK drive
hdc: QEMU CD-ROM, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: attached ide-disk driver. hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
hdc: attached ide-cdrom driver. hdc: ATAPI 4X CD-ROM drive, 512kB Cache
Uniform CD-ROM driver Revision: 3.12
Partition check:
  hda:
Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 1024 buckets, 8Kbytes
TCP: Hash tables configured (established 8192 bind 16384)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 64k freed
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended

Linux version 2.4.21 (bellard@voyager.localdomain) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003

QEMU Linux test distribution (based on Redhat 9)

Type 'exit' to halt the system

SIOCSIFADDR: No such device
eth0: unknown interface: No such device

 ネットのエラーが悲しい。(;-;)

☆ nbenchをLinux上で動かす

linux-testについているnbenchを動かしてみました。

sh-2.05b# cd nbench
sh-2.05b# ls
COM.DAT NNET.DAT README nbench
sh-2.05b# ./nbench -v

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

============================== ALL STATISTICS =============================== **Date and time of benchmark run: Mon Apr 24 07:04:08 2006
**Sizeof: char:1 short:2 int:4 long:4 u8:1 u16:2 u32:4 int32:4
**System used for compilation:
**Linux voyager 2.4.18 #6 Tue Jun 24 21:41:32 CEST 2003 i586 unknown
**C compiler: gcc version 2.95.2 20000220 (Debian GNU/Linux)
**libc: ld-2.1.3.so **Date of compilation: Sun Aug 10 13:25:53 CEST 2003
=============================================================================
TEST                   : Iterations/sec.        : Old Index      : New Index
               :                             : Pentium 90*  : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT     :          45.491         :             1.17  :       0.38
  Absolute standard deviation: 0.445907
  Relative standard deviation: 0.98021 %
  Number of runs: 5
  Number of arrays: 1
  Array size: 8111
Done with NUMERIC SORT
                                                        :
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 1.311
FLOATING-POINT INDEX: 0.735
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
sh: line 1: uname: command not found
CPU :
L2 Cache :
OS :
C compiler : gcc version 2.95.2 20000220 (Debian GNU/Linux)
libc : ld-2.1.3.so
MEMORY INDEX : 0.306
INTEGER INDEX : 0.344
FLOATING-POINT INDEX: 0.408
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

どうやら、一応、Linuxは動いている(ネットとかはダメですが)ようです。(^-^)

私自身はQEMUにそれほど詳しいわけではないので、その他諸々のことは全然やって いません。
きっとバグが色々と眠っていることでしょう。。。(^o^)

でもOpenSolarisでQEMUを使って他のゲストOSが動かしたり、OpenSolarisそのものを 動かせれば、それなりに楽しいのではないかと思ったりします。

気が向いたら是非トライして色々と改良してみて下さいな。


Technorati Tag: OpenSolaris



© 太田英二

[RSS Newsfeed]

[This is a Roller site]