川の流れのように‥(Eiji Ota's Weblog)
- All
- application
- kernel
- life
- opensolaris
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辺りを指定するようです。)
|
今回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
Posted at 06:03午前 5 22, 2006 by eota in application | Comments[4]
OpenSolarisでLinux+QEMUを動かす(Running Linux with QEMU on OpenSolaris)
仮想化ソフトとして有名なのものにVMwareや
Xenがあります。またSolaris Zoneベースの
BrandZでもLinuxを動
かすことができますよね。(^^)
一方、オープンソフトベースでは、
BochsやQEMUなど有名なものが幾つかあります。試しと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
Posted at 05:00午前 4 24, 2006 by eota in application |