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

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

 

« 11月 2009
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
       
Today

OpenSolarisの話題から

日々雑感

Solaris Kernelについて

OpenSolaris上でアプリを使う

Login

最近の更新

OpenSolarisの話題から

日々雑感

Solaris Kernelについて

OpenSolaris上でアプリを使う


 
木曜日 6 22, 2006

プロジェクト パルサー (Project Pulsar -- embedded solaris on PowerPC)



Project Pulsar -- Embedded Solaris on PowerPC

先日、Sun LabのOpen Houseがあって、SolarisをPowerPCアーキに移植する プロジェクト・パルサーをやっているTom Riddleさんのプレゼを聞く機会が ありました。

PowerPCへの移植に前々から興味があったので、早速隣のビルへと(^^:)でかけ、幾つか勝手な質問をぶつけてみました。

(注) Tom Riddleと聞いて最初に思ったのは、Harry Potterに出てくる若き日のLord Voldmortのことでした(^-^)

ちなみにTom Riddleさんは、06/01付けのメールで、OpenSolarisのPowerPC communityに、 PowerPCアーキでブート したことを連絡しています。

Q1. Solarisのソースツリーをconfiguration systemライクにしないの?

まず質問したのは、configuration systemのことでした。

Solarisの場合、SPARCの仕様やx86サポートなどからも異なったCPUアーキを サポートできるようにソースツリーが構成されています。 とはいうものの、幾千というシステムをサポートする組み込みシステムでは、 eCosのような洗練された configuration systemを導入した方がやりやすいのではないかと思って 質問してみました。

この道(?)の先駆者であるeCos(embedded)Linuxを 例にあげ、Solarisのソースツリー構成をより組み込み向けに見直して、PowerPCを サポートする可能性はないのかと聞いてみたのですが、現状のPowerPCサポートは、 Solaris 2.6で行ったものをOpenSolarisに組み込む形で行われていて、そこまでは 考えていないという答えでした。

実は、SunはSolaris2.5.1でPowerPC (PRePプラットフォーム向け)をサポート しており、まだ Solaris 2.5.1 PowerPC Edition Installing Solaris Software といったドキュメントでその痕跡をみることができます。

Q2. 他のRTOSのインタフェースはサポートしないの?

続いて、他の組み込みRTOSへの対応、例えば uITRONインタフェース のサポートの可能性、を聞いてみたのですが、感じあまり興味なさそうでした。(^^;)

つまりは、RTOSの領域までは当面踏み込むつもりはなく、あくまで(Embedded)Solaris = SRV4 + (soft)RT拡張のままであるということ、かも知れません。

Q3. サブシステムをモジュール化してMicro Kernelにはしないの?

L4 Micro Kernelを使った取り組み -- 例えば、 L4 + Linuxや、L4 + uITRONなどが巷では実装されていること -- をあげ、 組み込み向けにSolarisをMicro Kernelアーキに対応させるつもりはないだろうか、 また、uCLinuxのようにMMUがないCPUへの 対応や組み込みには重い(だろう)SVR4のVMを考えると、カーネルサブシステムを モジュール化して(今以上に自由度を上げて)選択する仕組みが必要ではないかと質問してみました。

※ 例えば、「Open SourceなCPU」にあるSPARC V8 coreのLeonは、SPARC CPUですが、 MMUがありません。(SPARCの仕様上、MMUは自由に実装できる)

やはりというか、当然というか、そこまでaggressiveな取り組みは一切(^^:)考えて いないようでした。こういうデフォルメ的な取り組みは、オープンソースな 活動でやることなのかも知れません。

Q4. Device Driverの対応は?

最後に組み込みプラットフォームのDevice Driverの対応はどうするつもりなのかを 聞いてみたのですが、今の作業はSun LabにあるPegasosベースのマシンで行っていて、 それ以外のドライバはCommunityに任せたいという意向のようでした。

Pegasosベースのマシンといっていたのは、たぶんメールにある ODW (Open Desktop Workstation)のことではないかと思います。 (PowerPC G4 1GHzを使用したマシンということのようです)

※イメージはwww.pegasosppc.comから

ちなみにTom Riddleさんのメールにある URL に行くと、PowerPC上でブート可能なunixがダウンロードできます。(^^)

※イメージはwww.blastware.orgから

Technorati Tag: 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

水曜日 3 22, 2006

Open SourceなCPU



先日、UltraSPARC-T1 (Niagara Chip)のスペックが公開されましたが、チップそのものがついに OpenSPARC-T1と してリリースされました。



OpenSPARC-T1 CPUをダウンロード...というと、何となく戸惑うのですが、^_^: Verilog RTLを含むChipデザインをダウンロードできるようです。 GNU GPL(Ver2)でライセンスされるということですから、いわゆるオープンソース そのものです。自分で製造して...という類ではないので、自作PCに使ってという わけにはいかないと思いますけれど、CPUアーキのリサーチなどのアカデミックな分野やオープンソース・ハードウェア、たとえばopencores.orgや、オープンソースなSPARC V8 core Leonを使ったLEOX projectのような活動にいい意味での刺激を与えてくれそうで、今後の発展に期待したいです。^-^

月曜日 3 13, 2006

プロジェクト黒点 (Project Sun SPOT)





先週、SunラボからProject Sun SPOTが発表されました。 SPOT = Small Programmable Object Technologyということらしいのですが、 太陽にちなんだ命名は生きていて、ちょっと微笑みます。^-^(Sun Spot = 黒点)

で、このSun SPOTって何?というと、どうやらARM9を使った組み込みボードキット ということのようで、Java2 Micro Edition (Java ME)で作ったアプリをそのボードで 動作させられる組み込み環境のようです。

といっても、(Javaアプリを動作させるのは)携帯ですでにやっていることなので、 そう?という感じだったのですが、Sun SPOTの目標として、

  ○ Wirelessを前提。ネットワーク環境で動作する組み込みアプリ。 たとえば、ネットを通じてRe-programmingが行えるような仕組みや、ネットを通したmigration (あるSun SPOTから、別のSun SPOTへのアプリのMigrate)
  ○ 使い慣れたIDE/言語での組み込みアプリの作成
  ○ セキュリティ。たとえば、public-key cryptographyの組み込み装置への適用等。

というのがあったようで、必然とJavaに落ち着いた...ということになっています。^-^;

目標を改めてみてみると、確かに野心的で携帯の枠を越えているのは確かのようです。 そして携帯よりも小さい組み込みデバイスを想定しているようなんですが、実際のところはやっぱり携帯でのJavaの成功が背景にあり、そのコンセプトを更に押し進めた...のかも知れませんね。^-^

動作しているJava VMにはOSの機能を持たせていてVirtual Machineを直接Bare Metalで 動作させているということで(↓)、

Powered by a small Java 2 Platform, Micro Edition (Java ME) virtual machine written almost entirely in Java, Project Sun SPOT provides a way to easily, affordably and quickly build Java-based sensor applications that run directly on the central processing unit (CPU) without any underlying operating system.

このJava VMの実装に興味が引かれたのですが、どうもSquawkと呼ばれる組み込み用のVMをベースにしているようです。このSquawkには、次のような特徴があります。

  ○ 直接hard上で動作 (RTOSなどを必要としない)
  ○ Device DriverがJavaで書かれている
  ○ memory footprintが少ない -- Java VMで80k, ライブラリで270k。
  ○ 複数アプリを動作させることができる。(application isolation mechanismを使用)

また、Sun SPOTではCLDC1.0以外にセンサーやアクチュエーターをJavaアプリから操作できるようにライブラリが用意されています。

開発環境はNetbeans 5.0を使用し、USBを使ってアプリを転送するようです。 ハードはARM9で、無線、温度センサー、光センサー、3Dアクセラメーター, 8つある汎用 I/Oポートに、4MBのFlash Memory (512KのRAM)とかなりの装備になっており、 評価ボード兼学習キットの色合いを見せています。 まぁ、これなら$499も仕方ないかなぁとは思うのですが、組み込み装置として$499はちょっと高い気もしないわけではありません。^.^



組み込みはやっぱりハードの自由度が高くないと、実用上は意味がないと思うので、是非Java VM(Squawk)をオープンソースにしてもらって、他のCPU、X86やSH, MIPS, PPCへの移植を進めてほしいものです。 またJava VM上で動作するthreadの応答速度も気になるところで、その当たりのスペックも出してほしいのですが、SquawkがReal time Java VMであるとは聞いていないので、リアルタイム性はないのかも知れません。そうであれば、ますますオープンソースにしてもらって、リアルタイム性の追加も 進めたいところですね。 今後に期待しています。

月曜日 2 27, 2006

雪山 (Snow Mountain)



綺麗な雪山ですねぇ --- さぁ、ここはどこでしょう? トリノ?..なんて思う人はまずいないと思いますが(^.^)、スキーで有名なレイクタホ辺り?っていうのはあり得そうな、そんな 冬景色。

もちろん、シリコンバレーなんです。シリコンバレーは、周りを山々に囲まれた 「谷」という話をお正月にしましたけれど、その山に見事に雪が。 ちょっと珍しいので、つい写真に収めてしまいました。(^-^)


ところでトリノの冬季オリンピックも終わってしまいました。終わってしまうと、なんとなく寂しく感じてしまいます。各国のそして日本の選手の皆さん、素晴らしかったです。その中でも荒川選手の演技は印象が強かったです。私も荒川選手のように一生懸命頑張りたいって思いました。

土曜日 2 18, 2006

CoolThreads -- OpenSPARC T1登場 (CoolThreads -- OpenSPARC T1 rises)



Niagaraと呼ばれていたUltraSPARC-T1の仕様が OpenSPARC-T1 として公開されました。



公開されたドキュメントは次の3つです。(最初の2つはprivileged editionと hyperprivileged editionの2つが用意されています。hyperprivileged editionの方は、 Hypervisor(Virtual Machine)の仕様についても記述しているようです)

○ UltraSPARC Architecture 2005 Specification

いわゆるSPARC V9の仕様であるISA(Instruction Set Architecture)などの他、 今後のSunのSPARC CPUのベースになるSunのV9拡張の仕様(UltraSPARC Architecture 2005) -- MMU, Trap, Interrupt, CMT, Error Handlingの仕様等 -- が記述され ています。

○ UltraSPARC T1 supplement to UltraSPARC Architecture 2005 Specification

UltraSPARC T1の、UltraSPARC Architecture 2005仕様の実装について 記述されています。

○ UltraSPARC T1 Hypervisor API Specification

sun4vと呼ばれているSolarisのUltraSPARC T1対応部分の実装とそのHypervisor APIに ついて記述されています。

かつてない充実したドキュメントで、カーネル開発者には有り難いことです。

UltraSPARC-T1以降のSunのUltraSPARC上にLinuxやNetBSDなどのOSを移植したり、 新規のOSを開発するエンジニアにとって、これらのドキュメントと実際に実装を 行ったOpenSolarisのソースは、かけがえのない資料になると思います。

こういった貴重な資料を公開してくれるなんて、一昔前では考えられなかったこと ですが、本当にいい時代になりましたね。^-^



(上は、サンのカフェテリア前にあるCOOLの看板。実物は結構でかいです。(^.^:))

Technorati Tag: OpenSolaris
Technorati Tag: OpenSPARC

木曜日 2 09, 2006

GNU Solaris Nexentaをインストールする (Install GNU Solaris Nexenta)

先日、GNU/Solaris Nexentaをお試しにインストールしてみました。

GNUのソフトがapt-getでSolarisで使える? 何!というノリで、早速インストール することにしてしまいました。(^-^;)

そこで、今日はNexentaのインストールについて紹介したいと思います。


インストールは、比較的「簡単」という"感じ"ですが、手入力で情報をインプットする ためどこか間違えていないか、ちょっと不安であったのも確かです。特に、ディスクの パーティションは要注意かも知れません。僕の場合は、まんまとはまり、結局2度ほど パーティションを行うことになりました。(^.^:)

1) Install CDを用意する

  Nexentaのホームページ からダウンロードします。ページの一番下にダウンロードの方法について書かれて いますが、ダウンロードする前に登録が必要になっているようです。また、LiveCDも ダウンロードできるようですが、巷のCD-Rでは納まらないサイズ(実際、書き込みが できませんでした)のようで、 VMware QEMU で動作させることを想定しているようです。

2) ディスクをパーティッションしておく

Nexentaのインストールそのものは、それほど難しくないと思います。CDを4枚も 使う、通常の(?)OpenSolarisのインストールを考えると、CDを1枚だけ、しかも20-30分 で終わってしまうインストールは、逆に嬉しい?のですけれど、僕の場合 パーティッショニングではまって、結局やり直しとなってしまいました。

問題は、Nexentaのインストーラから起動されるfdisk(実際はSolarisのformatコマンド から起動されるfdisk)が拡張パーティッションを認識できないため、Nexentaを 拡張パーティッションの方にインストールするつもりでいると、結局インストール できなくなってしまうというものです。Solarisのfdiskをちゃんと意識していれば 事前に用意したと思うのですが、すっかり忘れていました。

僕の場合は、Windows XP/Gentoo Linux/Nexenta(+純正OpenSolaris)の3つ(4つ?)をインストールするつもりで あったので、Nexentaを拡張パーティッションの方にいれようとしてしまい、 インストール作業中にインストールできないことに気づき、結局やり直しました。

さて、パーティッションはLinuxのfdiskを使って、あらかじめNexenta用に 切っておきます。
僕の場合は、こんな感じでした。(Solarisが基本パーティション、Linuxが拡張 パーティション)
/dev/hda1 Diag
/dev/hda2 WinXP
/dev/hda3 Solaris用 << パーティッションIDを0xbfに設定。
/dev/hda4 Extended
/dev/hda5 Linux
/dev/hda6 Linux Swap
/dev/hda7 Linux (boot)

※ Solarisのパーティッションは、Linux fdiskのtコマンドを使い、 直接0xbfを設定 しておきます。

3) Install CDでブートし、インストールする

ブートするとログインプロンプトが出力されるので、rootでログインします。 パスワードはありません。 インストール手順は、基本的にNexentaのホームページに書かれているとおり (Getting Started) です。ただ、α1とα2を試したのですが、α1の場合、インストールスクリプトの名前 がドキュメントと違っているので、ちょっと戸惑うかもしれません。 (α1の場合、記述では、インストールスクリプトは、 /usr/gnusolaris/nexenta-install.shとなっていましたが、実際は /usr/gnusolaris/install-stage0.shでした。)

Solaris用のパーティッションが予め切られていれば、インストーラはそれをシステム ボリュームにしようしますので、インストーラに認識させればよいです。でも、表示の 際には、システムボリュームはSolarisの論理パス名(/dev/dsk/cXdYsZの類)で表示され ます。(たとえば、僕の場合、/dev/hda4で切ったパーティッションは、 /dev/dsk/c0d0s0として表示されました。)

Nexentaだけをインストールするのであれば、パーティッショニングは "Auto"でよいと思いますが、OpenSolarisもインストールしようと思うのであれば、 Fresh Installationで"Manual"を選ばないといけません。そうすると、OpenSolarisの Formatコマンドを呼び出し、自分で設定するようになります。


(注意) formatコマンドが起動されるときに、ディスクのジオメトリ情報(シリンダ数や ヘッダ数)が設定されてなく、自分で設定しないといけない場合がありますので、 予めディスクのジオミトリー情報を調べておいた方がいいかも知れません。

僕の場合は、Linuxをブートした時にディスクの型番をメモしておき、ディーラの サイトからジオメトリ情報を調べました。 今は昔と違ってジオメトリ情報が実際のディスクのHW実装を表すものでも何でも ありませんが、ソフトでは伝統的にこれらの情報を使用しているので、何らかの 値を入れる必要があります。できればメーカーの公表している数字がよいと思います。 そのときには、次の値を用意しておくとよいと思います。

 ○ Cylinder数
 ○ Header数
 ○ Sector数
 ○ RPM

これら以外を聞かれても、デフォルトでなんとかなります。^-^


 Linuxのインストールなどに慣れていれば、あまり違和感はないと思いますが、 これが初めてという方は"Auto"を選ぶのが無難かも知れませんし、ちょっと今は Nexentaは止めておいて、OpenSolarisの方をインストールしておくという手も ありそうです。(それに、Nexentaはちょっとした幾つかの問題があります。下の4を 見て下さい。)

fdisk (format)でパーティションを切った後に、Installerはどれをrootにするか、 swapにするか等々を聞いてきますので、ここではパーティションを切るだけです。 OpenSolarisの場合は、パーティションを切る時に設定しますが、それとちょっと 違います。

Installerがroot, swapなどをどれにするか決めるのに、論理番号を知っておく 必要があるので、パーティションを切ったときに、どれをroot, swapにするか、 /dev/dsk/c0d0sXのXの数字を一応頭の中にいれておくとよいと思います。

後は流れ作業ですが、最後にgrubを書き込むか聞いてきます。既にLinuxや OpenSolarisでgrubを書き込んでいる場合や、Windows XP boot loaderでブート する場合は、止めておいた方が無難です。

また、α1の時は、rootが(hd0,0,a)に固定で設定され、たとえば/dev/hda4を システムボリュームにした場合は、rootは(hd0,3,a)でなければいけないため、 これにより結局ブートできないということがありました。(そういう場合は、grubの 画面でrootの値を変更し、ブートしてから/boot/grub/menu.lstを編集します)



4) Nexentaの問題点

Nexentaは、Linuxで実績があるGNU Debianの環境を使っているだけあって、 Xサーバの設定など、OpenSolarisよりも優れているところがありますし、 gnomeの環境も、普段、Debian Linuxを使っている人には、馴染みのあり、 かつ綺麗なもので、好感が持てました。 ただ、次の2つの問題にインストール後、直ちにぶつかりました。

SVR4パッケージがインストールできない

これはかなり困った問題です。今回の場合、使ったノートのNetworkドライバが BroadcomでOpenSolarisに添付されていないものだったため、ドライバがインストール できず困りました。結局、opensolaris.orgから配布されている packaging tool 使い、なんとかドライバはインストールできました。

opensolaris.orgから、 pkgutils.i386.tar.bz2 をダウンロードしてコマンドを展開するのですが、このままではpkgaddが動かず、 結局次の2つのライブラリをOpenSolarisからコピーして動作させました。

 ・ /usr/lib/libwanboot.{so, so.1}
 ・ /usr/lib/libzonecfg.{so, so.1}

ただ、元々のパッケージがないので、必要なパッケージが存在しないというワーニング が表示されます。それを無視してインストールするわけですが(というか、それしか ない(+_+:))、依存関係がある場合は動作しません。

できればスーパーセットにしてDebian packageも、OpenSolarisのSVR4 packageも 使用できるようにして欲しいものです。

日本語環境がない

実は、apt-getで簡単に手に入るのだとばっかり思っていたのですが、GNU Debianの 全部のパッケージ・環境を用意しているわけではないようです。 また、Solaris10の languageCDのパッケージを上でインストールしたpkgaddでインストールしようとしても、 必要なパッケージがないためダメでした。結局のところ、日本語環境は自力でソース からコンパイルして作り上げる以外の方法はないようです。国際化、 ローカライゼイションなどまだ用意されていないDebian packageの提供が待ち望まれ るところです。

5) 感想

総じてよいできです。インストールにやや難がありますが、Linuxの出たての頃を考える と、仕方がないように思います。でも、インストール周りは、Linuxなどの ディストリビュートではよいものもたくさんあるので、短時間で相当改善されるのでは ないでしょうか? やはり頭が痛いのは、日本語環境。Debianベースのpackageを早く 充実させて欲しいです。それと、SVR4の環境は、やっぱり継承して欲しいなぁと思い ます。SVR4のパッケージを自由にインストールできるようにして貰えると、ソフト資産 を継承できるという意味でかなりよいと思うのです。 これらの問題が解決されれば すぐにでも使いたくなる気にさせるNexentaです。

木曜日 1 26, 2006

カリフォルニア共和国(California Republic)




みなさんは、ご存じだったでしょうか?

カリフォルニアは、アメリカの州になる前は、メキシコから独立した共和国 だったんだそうです

いやぁー、そんな共和国、ここにくるまでちっとも知りませんでした。

そんなことで、今日はカリフォルニアの謎の熊(州旗)の話。^-^


謎の国、カリフォルニア共和国。存在したのは、今から、160年前。 その時の首都は、ソノマ。 そうなんです。今はワインやら温泉やらで有名なリゾート地ですよね。 それが共和国の首都だったというから驚きです。

なんでも、その頃のソノマ周辺には、ロシアの侵入を監視するためメキシコの軍隊が 駐屯していたそうです。その頃のカリフォルニアは、今よりも更に激しく無国籍状態 だったんですねぇ。

そして、1846年の6月14日、33人のアメリカ人が電光石火のごとくソノマの地を奪取し、 メキシコからの独立を宣言してしまいました。そんなこともあり、それから間も無く メキシコとアメリカは戦争に突入してしまいます。^-^;  結局、メキシコが降伏して領地を放棄してしまい、戦争で皆共和国のことなんて忘れて しまったのか(元々、33人だし)、その後数年してカリフォルニアは、カリフォルニア州 となったのでした。

ちなみに、このときの(初代)共和国大統領、たった25日の任期で終わったそうです。

それで共和国のことなんて、綺麗さっぱり忘れられたかというと、ところがどっこい、 かつてのカリフォルニア共和国国旗は、今ではカリフォルニアの州旗となって、いたる ところでパタパタと風になびいているんですね。^.^

この州旗のベアー(どうもグリズリーらしいです)、ホントにあちこちでみかけます。

たとえば、これ。

私の住んでいる市の(最近新築した)図書館の前にもベアーの銅像が。

でも、亀と手をつないで遊んでる姿が、なんとなくグリズリーらしくない。。。。 ような気もしますね。。(^-^)


木曜日 1 19, 2006

最近の話題から(OpenSPARC)


今のいままで自分達の会社がOpenSource向けのサイトを開いていたことにも気づかずにいました。(^-^:) プロジェクトに浸りきりで、たとえば12月は、2Qの区切りということもあってマイルストーンの〆切に追われ、OpenSolarisをゆっくりチェックする余裕もなく、そのまま知らぬ存ぜぬのままきてしまったようです。

で、そのサイトなんですが、SunSource.netという、なんかまんまのサイトです。^O^

早速サイトに飛ぶと、右側にOpen Source Projectの幾つかが書かれていて、BrazilやGlassFish, Grid Engineやらの中に混じって、OpenSolaris見つかりました。^-^

でも、OpenSolarisの説明が"Unix Operating System"っていうのは、愛嬌なのでしょうね? なんか、も少し説明があっていいような気がしないわけでも....ありません。

その中でちょっと面白いのは、その下にあるOpenSPARCかも知れません。

UltraSPARC-T1

OpenSPARCでは、Open Source Hardwareとして、Niagaraというコードネームで呼ばれたUltraSPARC-T1のVerilogのソースや仕様などを公開する予定のようです。そしてUltraSPARC Architecture 2005(UltraSPARC-T1のISA(instruction set architecture))の仕様や、OSの移植情報(Linux/FreeBSDなどのSolaris以外のOSの移植向け)も提供するということですので、個人的にもちょっと楽しみにしています。

もう1つ眼にとまったのが、OpenSolarisをPowerPC上に移植したというニュース。

OpenSolarisのPowerPCへの移植は、Blastwareのサイトでやっているようなんですけれど、OpenSolarisのPowerPCコミュニティのディスカッションを覗くと、未だ実際にはブートまで行っておらず、OpenSolarisのソースをPowerPC向けに(MSBで)コンパイルした段階のようですね。今後はgrub2の対応などを行ってブートまで持っていくということですから、こっちも、ちょっと期待したいと思っています。


Technorati Tag: OpenSolaris
Technorati Tag: OpenSPARC

木曜日 1 12, 2006

春の花 (Vernal Flower)



先日、晴れわたった日、アパートの中庭で咲いていたかわいい花を撮って みました。桜に見えます? 春近しといっても、まだ1月なんですけど。

実は私も最初はてっきり桜だと思っていました。わー、カリフォルニア にはなんて桜がたくさんあるんだろうって。(^.^)それにしても、早咲きなんだぁとも。。でも、カリフォルニアですからねぇ、太陽が 西から昇っても、「うん、あり得るっ」って思わせるようなところですから、最初はそういうものだろうって思っていたものです。 でも、ふとした会話で実はあれがアーモンドだって知りました。ちょっとした衝撃が。。。(*-*:)

それまで、アーモンドなんて(塩がまぶしてある)実しかみたことがなかったので、まさか、こんなに綺麗な、しかも桜のような花だなんて想像もしてなかったんです。

でも、アーモンドだって知っても、なぜかこの花を見ていると桜のように思えてしまうんですよね。ここ数年日本の桜を見ていないので、懐かしい気分にさせてくれる嬉しい花。かわいいですよね。

それにしても、こっちには『花見』がないんです。こんな綺麗な花が咲くのに、花見がないなんて、なんかもったいなくありません? ^-^

Technorati Tag: OpenSolaris

水曜日 1 04, 2006

謹賀新年(A Happy New Year)


皆様、あけましておめでとうございます。 昨年は、今やっているプロジェクトの方が忙しく、ブログを更新する時間もありません でした。SolarisのKernelやOpenSolarisについて書くのは楽しいのですけれど、時間が かかってしまうのが難です。(^-^:)

そこで、ちょっとブログの体裁を変えてみました -- OpenSolarisやKernelだけでなく、 日々の生活でちょっと気づいたことも書けるように、カテゴリを整理してみました -- 如何でしょう? 少し見やすくなったのであれば嬉しいのですけれど。 そんなわけで、今年は話題も広くして、忙しい時もできるだけ更新するようにしていき たいと思っています。

今年もよろしくお願いいたします。

さて、ここサンフランシスコ・ベイエリアは年末年始は雨続きで、せっかくのお休みも 雨,雨,雨で初日の出どころではありませんでした。ハイウェイは、日本と違って排水設備が整っていないので、ちょっとした雨でも「洪水」 状態となってしまいます。スリッピーなハイウェイを雨降る夜に車で走るのは、新年早々 あまり気持ちのいいものではありません。

でも、ようやく天気が回復し、日が射すようになってきました。ちょっと春らしい、そん な天気にやっとなりました。^-^  そこでシリコンバレーを訪れる人が誰もが抱く疑問 -- 何でここがバレー(谷)なんだ? -- を解決するため、近くの山に 登ることにしました。

そこから一望すれば、谷だかなんだか分かるって寸法なんですが....
で、一望した景色がこれ。→
どう見えます? でっかい谷って感じ、分かります?
そうなんですよね、 あまりにもでかすぎて、「谷」の中に入るとどこがバレーなんだって思うですけど、ちゃんと両側の山に囲まれた谷だったんですね。^_^

ちなみに奥の方にみえるビル群がサンホゼの ダウンタウンです。
シリコンバレーの広さがなんとなく分かります...はい。(^^;)



長く続いた雨のせいなんでしょうか、
山頂付近に苔がびっしりついた木がありました。



でも、春はしっかり訪れているみたいです。
山頂付近のワイナリーの葡萄の木の下は緑で覆 われていましたし、

アパートの近くでは、もうタンポポがひっそりと咲いていま した。


なんとなく嬉しい気分になる瞬間です。^v^
それでは。


Technorati Tag: OpenSolaris

火曜日 9 06, 2005

OpenSolaris事始め(その2:カーネルビルド)

OpenSolaris事始め(その2:カーネルビルド)

OpenSolaris事始め(その2:カーネルビルド)


前回、OpenSolarisを僕のToshibaのノートにインストールしてLinuxを吹っ飛ばしてしまっったお話をしましたが、それを会社の人に話をしたら色々と反応が返ってきました。

たとえば、「Windowsの代わりにOpenSolarisをインストールしようとしたんだって? それはWindowsのたたりに決まってるだろう? Windowsっていうのはそれができるんだ。」
 (どうやってできるの...って結局聞けませんでしたけれど(^^;))

また、「それはよい経験だったね。バグだったら、こいつは貴重な体験だろう?、まずは再現させてみることだ。是非もう一度トライするべきだ、そう思うだろう?」
(だから、それは僕のパーソナルユースなので...と思いましたが、言っても無駄そうでした(^.^))

人それぞれですねぇ。。。僕のLinuxなんて、そう、誰も気にしていませんでした。(^-^;)

今はディストリビューションが様々あるLinuxくんですけど、以前はYggdrasilぐらいしかなかったんですよねぇ。もちろんRed Hatの前のディストリビューションですけれど、秋葉原のガード下に輸入もののYggdrasilを売っていて、それを買いにいったものでした。(追記(09/06): そういえば、slackwareもあった気もします。でも、Yggdrasilの方が好きでした...^-^)

その当時のLinuxは、アプリケーションをインストールするには、ソースからコンパイルするのが当たり前のような感覚でしたけれど、OpenSolarisくんをいじっていると、そんな頃のLinuxくんを思い出すようで、不思議と懐かしい気分が....ということで、ついつい、今までLinuxくんでやっていたのをOpenSolarisくんで....と思うようになりました。(^v^)

それでもって今日は前回の続きで、OpenSolarisのソースビルドの話です。kernelの実装の方もちょっとやりたいんですけど、乗りかかった船、ある程度までいってしまいましょう。(^.^;)

ここでは、ReleaseNotesにあるやり方ではなくて、カーネルとドライバのビルドに絞ったやり方を紹介します。
えーと、前回は確かソースとコンパイラ一式をダウンロードしたところでしたよね。
  1. 1.SUNWonbld-yyyymmdd.i386.tar.bz2
  2. 2.opensolaris-bfu-yyyymmdd.i386.tar.bz2
  3. 3.opensolaris-closed-bins-yyyymmdd.i386.tar.bz2
  4. 4.opensolaris-src-yyyymmdd.tar.bz2

  5. (yyyy=年, mm=月, dd=日)
それでは、今回はその続きから....
  1. 1. アーカイブを展開する これらを適当なディレクトリの下に展開してもらうのが第一歩です。一応ここでは、 /opensolarisの下に展開する...ということにしましょう。
    bz2でtarが圧縮されているファイルは、次のようにbzip2とtarをパイプでつないでも いいですし、

    • # bzip2 -dc xxxxx.bz2 | tar xvf -

    gtarが入っていれば、直接実行してもかまいません。gtarはSUNWgtarをインストール すればおとされます。フルでインストールしていれば、gtarはあるはずです。

    • # gtar -xvfj xxxxx.bz2

    SUNWonbld-yyyymmdd.i386.tar.bz2の方は、SVR4パッケージ形式なので、改めて pkgaddする必要があります。

    • # pkgadd -d onbld SUNWonbld

    pkgaddしたら、onbldはもう要らないので消してしまいましょう。

    • # \rm -rf onbld

  2. 2. パスを設定する
    展開が終わったら、/opt/onbld/binと/opt/SUNWspro/binをPATH環境変数に加えます。
    /opt/SUNWspro/binはコンパイラをインストールするとできるディレクトリです。
    (コンパイラは、http://opensolaris.org/os/community/tools/sun_studio_tools/からダウンロードします)
    {t}cshであれば、.cshrcに

    • set path = (/opt/onbld/bin /opt/SUNWspro/bin ... (残り))

    {ba}shであれば、.profileに

    • PATH=/opt/onbld/bin:/opt/SUNWspro/bin:(残り); export PATH

    などとやるわけですね。(皆さんご承知だとは思うのでくどかったですね(^-^;))

    ※/usr/ucbはPATHから削るか一番最後に指定するようにという注意があります。

  3. 3. opensolaris.shを準備する
    opensolaris.shを今展開してできたusr/src/tools/envからもってきます。
    • # cp usr/src/tools/env/opensolaris.sh .
    そして、この中にある変数をいくつか修正しないといけません。

    必須なのは、GATE,CODEMGR_WSです。STAFFERやVERSIONは必要に応じて設定します。(STAFFERは、ビルドが終わったら(またはアボートしたら)メールするo送付先で、VERSIONは作ったカーネルでブートしたときにuname -vすると出てくる名前です)
    上の例の場合は、こんな感じになるかな。
    • GATE=opensolaris; export GATE
    • CODEMGR_WS="/$GATE"; export CODEMGR_WS
    • STAFFER=<自分のアカウント>; export STAFFER
    VERSIONはデフォルトで$GATE名になるので(この場合"opensolaris")、 特に変更しなくても良さそうですね。

    さて、ここまでは、ReleaseNotesに載っているのですが、以降はちょっと異なります。(^0^)

  4. 4. ソースのタグを用意する ソースを読むのに必要なのは、まずはタグファイルでしょうか?
    cscopeとctagsはやっぱり何はともあれ作ってしまいたいもの。
    ところが、何もせずにタグファイルを作ろうとすると次のように怒られてしまいます。何が足りないのでしょうか?

    • # bldenv -d opensolaris.sh
    • # cd /opensolaris/usr/src/uts
    • # make cscope.out /opensolaris/usr/src/tools/proto/opt/onbld/bin/xref -x cscope.out
      sh: /opensolaris/usr/src/tools/proto/opt/onbld/bin/xref: not found
      *** Error code 1
      make: Fatal error: Command failed for target `cscope.out'
      Current working directory /opensolaris/usr/src/uts

    どうやら、xrefというツールがないらしいですね。まずこれを"作る"必要があります。 それには、

    • # cd /opensolaris/usr/src/tools
    • # make

    としてやるだけです。これが終われば、必要なツールができていますので、改めて

    • # cd /opensolaris/usr/src/uts
    • # make cscope.out

    としてやりましょう。

    ctagsは、同じディレクトリで、

    • # make tags

    としてやるだけです。簡単ですね。

    ※ makeの代わりにdmakeとすると4つ(デフォルト)のmakeを起動します。

  5. 5. カーネルとドライバのビルド
    さていよいよ待ちにまった?カーネルとドライバのビルドです。^-^
    全ソースをビルドするには、次のようにnightlyコマンドを起動してやればいいのですが、何せコマンド、ライブラリーまでビルドするので時間がかかります。

    (追記 (09/09))
    nightlyの使用例が抜けていました。(^^)

    # nightly ./opensolaris.sh & (nightlyの起動)
    # tail -f log/nightly.log (logの表示)

    Defaultのnightlyは、clobber (make clobber)ビルドですが、-iオプションを使うことで回避が可能です。
    # nightly -i ./opensolaris.sh & (-iオプション付き)
    また、上のログファイルはnightly終了後にlog/log. (mm=月, dd=日)に移されます。実行中は上のように
    logの下に直接置かれます。
    (追記終わり)

    そこまでやる必要はないので、ここでは時間を節約したカーネルとドライバのみのビルドについて説明したいと思います。

    その前に、AMD64向けでなければ、32bitカーネルとドライバだけ必要ですから、64bitのビルドははしょることにしましょう。デフォルトでは、64bitと32bitの双方をビルドしていしまいます。

    そのために、Makefileを2ついじることにします。

    • # cd usr/src
    • # vi Makefile.master
      i386_BUILD64=
      ↓ (次のように変更
      i386_BUILD64= $(POUND_SIGN)

    • # cd usr/src/uts
    • # vi Makefile.uts
      $(NOT_RELEASE_BUILD)DEF_BUILDS64 = debug64
      ↓ (次のように変更
      $(NOT_RELEASE_BUILD)DEF_BUILDS64 =

      LINT64_BUILDS = debug64
      ↓ (次のように変更
      LINT64_BUILDS =

      OBJS_DIR_DBG64 = debug64
      ↓ (次のように変更
      OBJS_DIR_DBG64 =

    次にヘッダーファイルをprotoツリーにコピーさせます。

    • # cd usr/src/uts
    • # dmake -e install_h

    これでビルドの準備は終了です。カーネルとドライバをビルドするには、

    • # cd usr/src/uts
    • # dmake -e
    • # dmake install

    としてやれば、カーネルと全ドライバをビルドしてくれます。

  6. 6. 作成したカーネルとドライバをシステムにインストールする
    無事にカーネルとドライバがビルドできたら、これをシステムにインストールします。
    それには、やっぱりbfuコマンドを使うのがよいでしょう。でもそのためには、bfuで 使用するアーカイブを作成する必要があります。それには、makebfuコマンドを使って やります。

    (追記(09/07))
    makebfuコマンドを起動するには、/opt/onbld/bin/i386にPATHが通っている ことが必要です。そうしないと、
    /opt/onbld/bin/mkbfu[5]: cpiotranslate: not found
    と怒られてしまいます。次のように起動前にパスを通してくださいね。

    # setenv PATH /opt/onbld/bin/i386:$PATH ({t}csh)
    # PATH=/opt/onbld/bin/i386:$PATH; export PATH ({k}sh)

    また、makebfuの第一引数には、xxxxx/proto/root_i386とprotoディレクトリの下の root_i386まで指定する必要があります。
    当初はタイポがあり、protoまでしか記述されていませんでした。ご注意ください。
    (追記終わり)

    • # cd /opensolaris
    • # makebfu -b /opensolaris/proto /opensolaris/opensolaris.sh
    • # makebfu -b /opensolaris/proto/root_i386 /opensolaris/opensolaris.sh
      すると、コマンドやライブラリがないので次のように怒られますが、無視してしまい ましょう。(^.^;)

      Copying /opensolaris/proto/root_i386 to /tmp/bfu101682...
      Copying /opensolaris/proto/root_i386 to /tmp/bfu101682...
      Making compressed archives from /tmp/bfu101682 in /opensolaris/archives/i386/nightly.
      Creating generic kernel archive: 33920 blocks
      Creating generic lib archive: 10 blocks
      Creating generic root archive: 100 blocks
      Failed to create generic sbin archive: 10 blocks
      find: illegal option -- d
      find: [-H | -L] path-list predicate-list
      Creating generic usr archive: 2640 blocks
      Creating i86pc boot archive: 660 blocks
      Creating i86pc root archive: 2500 blocks
      Creating i86pc usr archive: 10 blocks
      Creating conflict resolution archive: 590 blocks

    アーカイブはarchiveディレクトリの下に置かれるはずです。一応、確かめておき ましょうね。

    % find archives/i386/
    archives/i386/
    archives/i386/nightly
    archives/i386/nightly/conflict_resolution.gz
    archives/i386/nightly/generic.root.gz
    archives/i386/nightly/generic.usr.gz
    archives/i386/nightly/generic.lib.gz
    archives/i386/nightly/i86pc.usr.gz
    archives/i386/nightly/generic.sbin.gz
    archives/i386/nightly/i86pc.boot.gz
    archives/i386/nightly/generic.kernel.gz
    archives/i386/nightly/i86pc.root.gz

    後はこのアーカイブをbfuでインストールするだけ....なんですが、ここでちょっと 待った。

    ソースは最新版(08/18日版)ですよね? Solaris Expressはその版のもの ですか? それが異なると、不整合がおきて立ち上がりませんね。(--;)

    そこで、ダウンロードしたbfuアーカイブをまずシステムに適用しておきます。
    最新のもの(8/18日版)であれば、archives-20050818というディレクトリに置かれて いるはずです。これをまずbfuでシステムに適用しましょう。

    archives-20050818/i386/
    archives-20050818/i386/conflict_resolution.gz
    archives-20050818/i386/generic.usr
    archives-20050818/i386/generic.root
    archives-20050818/i386/generic.lib
    archives-20050818/i386/generic.sbin
    archives-20050818/i386/i86pc.root
    archives-20050818/i386/i86pc.usr
    archives-20050818/i386/generic.kernel
    archives-20050818/i386/i86pc.boot
    archives-20050818/BINARYLICENSE.BFU-ARCHIVES.txt
    archives-20050818/README.BFU-ARCHIVES.i386
    archives-20050818/THIRDPARTYLICENSE.BFU-ARCHIVES

    • # bfu /opensolaris/archives-20050818/i386
      注意としては、bfuの引数は絶対パスであること。
      そして、bfuする前に、 bldenv -d /opensolaris/opensolaris.shを実行していることでしょうか?

    bfuが終わったら、念のためacrを実行します。そしてリブートです。

    • # acr
      No conflicts to resolve.
    • # reboot

    ※ このacrコマンドは、僕はopensolarisがリリースされるまで知りませんでした。
    こんな便利なコマンドがあったとは...と絶句したのですが(それまでは、マニュアルでconflictを解決していたので)、このコマンドはNevadaリリース(opensolarisのベース)で誕生したコマンドのようです。以前のSolaris10, Solaris9などでは存在していなかったニューフェースでした。^-^

    さて、無事リブートが終わったら(配布されているアーカイブなので、問題はないはず)、先ほど作ったカーネルとドライバをインストールします。

    • # bldenv -d /opensolaris/opensolaris.sh
    • # bfu /opensolaris/archives/i386/nightly
    • # acr

    そしてリブートです。ソースに何か変なことをしていなければ、すんなりと立ち上がるはずです。(^^)

    • # reboot

※ 万が一ブートしなかったら、grubメニューでfail safeを選び、配布されているアーカイブをもう一度適用しましょう。基本的には、
  1. 1. fail safeで立ち上げる
  2. 2. ルートをmountする
  3. 3. swapを追加する ← 仮想メモリが足りなくなると困るから...
  4. 4. bfuをマウントしたディレクトリに適用する (-Rオプションで指定します-Rオプションはbootadmの方でした。ルートディレクトリは第二引数に指定します(^-^;))
  5. 5. rebootする
という作業になります。(まず、必要ないと思いますけど、念のため)

(追記(09/08))
上(↑)でさらって書いてしまっていますが、老婆心からもう少し詳細な手順を書いておくことにします。
  1. 1. grubのメニューでfail safeを選ぶ
  2. 2. パーティッションをマウントする
    fail safeで立ち上げると、次のようなメッセージが出力され応答を促されます。
    Searching for installed OS...
    /dev/dsk/c0d0s0 -- Solaris11 nv_17 x86
    Do you wish to automatically uupdate boot archives? [y,n,?]n
    目的はシステムの復旧なので、ここでは"n"と応えておきましょう。
    ここで表示されるパーティッションの論理パス名を使ってマウントします。ここの例だと、
    /dev/dsk/c0d0s0がシステムボリュームなので、
    # mount /dev/dsk/c0d0s0 /mnt
    とします。
  3. 3. swapを追加します
    # swap -a /dev/dsk/c0d0s1などとします。swap -lでちゃんとスワップが追加されているか確認できます。
    # swap -l (確認)
  4. 4. bldenvを実行します (bfuを実行するため)
    # /mnt/opt/onbld/bin/bldenv -d /mnt/xxxxx/opensolaris.sh
    (全て、マウントしたシステムボリュームにあることに注意してください)
  5. 5. PATHを通します
    # PATH=/mnt/opt/onbld/bin:$PATH; export PATH
  6. 6. FASTFS, BFULD環境変数を設定します
    # FASTFS=/mnt/opt/onbld/bin/i386/fastfs; export FASTFS
    # BFULD=/mnt/opt/onbld/bin/i386/bfuld; export BFULD
  7. 7. bfuを配布されたbfuアーカイブに適用します
    # bfu /mnt/xxxxx/archives-20050818/i386 /mnt
    ワーニングが色々とでますが、非常事態のオペレーションなので目をつぶりましょう...(^-^)
acrなどがちゃんと動作せず、全て上書きされてしまうことを想定して、予め更新したシステムファイルの
バックアップを取っておく
ことをお奨めします。
何かあった時に上書きされてしまうファイルの例としては、/boot/grub/menu.lst, /etc/hosts, /etc/passwd,
/etc/shadow, /etc/default/login, /etc/system, /etc/vfstabなどがあります。
ブートに必要なもので変更されているものは、システムボリュームのどこかに保存しておくといいと思います。

また、fail safeが動作しない場合(って本当に想定外ですが...-_-)、インストールCD (CD1)で立ち上げて、
ここで説明した手順を行うこともできます。

まず必要ないと思う手順ですが、もしもの時に必要かも知れません。開発作業中は、想定しないことが
まま起こるものです(こういう時は、開発者は持てる力を出して復旧するのですが....結構大変っ ていうのが実感です...特に時間がない状況だと... ^.^;)
そんなこともあり、こういう手順を知っておいて 損はしないと思います。ただ、力業であることはご承知おき下さい。^-^
(追記終わり)

画像(↓)は、gvimとcscopeを使ってソースを見ているところです。これでOpenSolarisをハックするのに必要な環境ができあがったことになりますね。(^^)


Technorati Tag: OpenSolaris
Technorati Tag: Kernel Build
Technorati Tag: Solaris

月曜日 8 22, 2005

OpenSolaris事始め(その1)

OpenSolaris事始め(その1)

OpenSolaris事始め(その1)


普段愛用しているToshibaのノート。そこにはLinuxが入っています。
(正確には、入っていました…です。どうしてかは、読んで頂けると分かるはず…T-T)
そしてついに、そこのWindows XPをOpenSolarisに置き換える決意を...。
(^-^;).oO(実は今更かも…) (注:Windows XPは、プレインストールされていたもの。LinuxでWifi/USBドライバーのコンフィグに成功してからは、最近はあまり使わなくなっていた)

今日はその顛末をご報告します。。。
  • *事始め1. Solaris Expressをダウンロード
  • Solaris Express community releaseを次の(↓)のところから、ダウンロードして CDに焼き付けます。

    http://www.opensolaris.org/os/downloads

    (今回の一言)

    ☆ インストール --- なんでCDを4枚も使わなきゃいけないのぉ?

    Solaris Expressをダウンロードしてインストールから始めます。
    でも、CDROMを4枚分ダウンしてCDに焼き付けるのは流石に辛い。(;-;)
    ちなみに、言語CDを入れると5枚になります。

  • *事始め2. Buildツールと/OpenSolarisのソースをダウンロード
  • http://www.opensolaris.org/os/downloads

    同じサイト(↑)から、ビルドに必要なツールとOpenSolarisのソースをダウンロード します。

    OpenSolarisのカーネルビルドをしない時は、別に必要ではありません。
    X86向けには、次のようなツール、ソースをダウンロードすることになります。
    (gccを使わない場合 - gccは現時点(2005/August)だと、ちょっとまだ不安定かも)

    • SUNWonbld-yyyymmdd.i386.tar.bz2
    • opensolaris-bfu-yyyymmdd.i386.tar.bz2
    • opensolaris-closed-bins-yyyymmdd.i386.tar.bz2
    • opensolaris-src-yyyymmdd.tar.bz2

    (yyyy=年, mm=月, dd=日)

  • *事始め3. Installの準備をします
  • 大事なデータがあれば、事前にバックアップをとっておく事をお奨めします。
    (そのわけは… → 今回の一言)

    (今回の一言)

    ☆ さようなら、Linux君。君の事は忘れないよ…。(T^T)

    Windows XPのパーティッション、P1にインストールするつもりがCDROM一枚目が 終了した時点で念のため確認したら、P3のLinux君のファイルシステムが壊れて いました。(T-T).oO (い、痛すぎる…)

    なぜこのようになったのか、未だ分かりません。えぇ、全然分からないんです。。。

    もしかすると、P2にあったLinux Swap (0x82)が昔のSolarisのPartition IDと同じ なので、それが影響したかも知れません。

    でも、そんなことはどうでもいーんです、もう。
    (← 仕事を考えると、実は全然良くない…が、再現させるにはリスクがあまりに 大きすぎる…(--;)) 長年のデータ、そして作ったプログラムが消えてしまった…今はそれだけを受け止め、 ただ涙したいだけ(T-T)(uuuuuu..)

    ☆ P1のところにOpenSolarisを入れるのにはこの後も四苦八苦。

    よくは分かりませんが、P1にWindows XPなどが入っていてそれに上書きしたい場合、 LinuxのfdiskなどでそのパーティションIDを0xbf(Solaris2 Partition ID)に変更して おくとよいのかも知れません。僕は結局その方法でインストールを完了しました。(--;)
    (注:Linuxのパーティッション全部が上書きされたわけではなくて、ファイルシステムが大規模に破壊されfsck時に相当量のファイルがlost+foundにつながれてしまったためデータを紛失。とはいうものの、fsck後はマウントが可能だった。自力ブートはちと無理ぽかったもののCDの助けでfdiskを起動...)

  • *事始め4. Installの開始
  • CDROMを入れてブートし、Installの開始します。

    上(↑)にもありますが、 パーティションの構成がちょっと面倒かも知れません。新規にパーティッションを 切る場合や、OpenSolarisだけを使う場合はそう面倒でもありません。(^^)

    一枚目はすぐ終ってシステムがリブートして来ます。その後で追加のCDを聞いてくる ので、そのままCDを交換していきます。これを繰り返して、4枚インストールします。(ちょっと退屈かも…)

    (今回の一言)

    Debianのようにミニマムをインストールした後、ネットで必要なパッケージだけを 追加する方がありがたい気がする。SVR4パッケージ形式にラッパーをかますことで実現でき そうな気がしないわけではないけれど…。

    でも、誰がOpenSolarisのビルド毎にパッケージを用意してネットで配布するのかという問題などが残りそうですね。。。(^-^;)

  • *事始め5. 最後に言語CDをインストールする
  • 言語CD(optionのCD)を使って日本語環境をインストールします。

    日本語環境といっても、ATOKや一部フォントなどcopyrightが違うものは配布されていないので、Solarisの日本語環境とは違います。やっぱ、こういう違いは結構でかいかも? (^.^;)

    (今回の一言)

    僕は身近にあったSolarisのCDから日本語環境を追加してしまいました。といっても、 これは日本語Solarisがあればの話…。本来は、scimなどのIMをちゃんと用意したいところですよね。

    この辺りはオープンソースで用意していかないとどうしようもないところかも知れません。OpenSolarisの今後の国際化対応に期待 したいところですね。


    取り合えず、無事インストール完了した姿(↓)です。(^-^)


    Technorati Tag: OpenSolaris
    Technorati Tag: Solaris

水曜日 8 03, 2005

御礼 (Thank to people I met in Japan)

御礼 (Thank to people I met in Japan)

御礼 (Thank to people I met in Japan)


日本からアメリカに戻り、(ちょっと体調を崩していましたが)ようやく体調も戻り、生活も落ち着きました。^-^ そして、ふと気づいてみると、ほぼ一カ月経ってしまいました。(^-^;)>

さて、ブログを再開…と思うのですが、その前に、まずは日本で会った皆様への御礼です。(^-^)

  • ◎古巣の職場のF通の皆さんには、私のブログを見ているとのコメントを頂きました。本当に励みになります。ありがたいです。
  • ◎日本Sunの皆さんには、日本滞在中にオフィスを使わせて頂きました。お蔭で仕事の遅れを作ることなく、日本に滞在できました。横浜や用賀オフィスは景色が綺麗でよかったです。ありがとうございました。
  • ◎久々にあった友人達 - 某省の友人、大学の友人、高校の友人、小学校の友人とは、久々に美味しいお酒と楽しい昔話をさせて頂きました。ブログを見てくれている友人もおり、嬉しかったです。
  • ◎そして最後にNSUGに来てくださった皆様、楽しい一時を持たせて頂き、ありがとうございました。アッセンブラが好きですと言ってくださる方やOpenSolarisをCellプロセッサーに移植したいと話される方などなど、色々な方に出席して頂き、貴重な意見を頂くことができました。本当にありがとうございます。

次に、NSUGの際にお話したことで次の2点についてここで再掲させて下さい。

OpenSolarisのはしょったビルド

これは日頃、如何にはしょってSolaris Kernelをビルドしているか(^-^;)という、何ともレイジーなお話でした。
ビルド環境を設定した後、
  1. 1. usr/src/utsに移動
  2. 2. make install_h (ビルドの初回のみ必要)
  3. 3. sun4u/unix or i86pc/unixに移動
  4. 4. make -e
などとして、unixやgenunixだけを構築するというものです。

新しくできたunixやgenunixは、SPARCの場合、/platform/sun4u/kernelの代わりを作成(実際には/platform/sun4u/kernelをコピーして、/platform/sun4u/kernel.newなどを作る)して、ビルドしたカーネルをそこに置き"reboot -- kernel.new/sparcv9/unix"などとすれば新しいカーネルで立ち上がります。

SPARCの場合
  1. 1. cd /platform/sun4u/kernel
  2. 2. cp -p -r kernel kernel.new
  3. 3. cd kernel.new/sparcv9
  4. 4. mv unix unix.org
  5. 5. 新しいunixを置く
  6. 6. reboot -- kernel.new/sparcv9/unix

パニックしてしまった場合は、慌てずOBPでbootすれば通常のカーネルで立ち上がりますので心配ありませんよ。^-^

不覚にも ^^;パニックしてしまった場合…SPARC編
OK boot
つまりは、普通に立ち上げるだけ…。^.^(簡単)

x86の場合は、grub bootが導入されましたので、"reboot -- kernel.new/unix"などとしてもアーカイブが更新されないのでダメです。/platform/i86pc/kernel.newなどの新しいディレクトリを作ってカーネルを置いた場合、アーカイブにそのカーネルを入れる必要があるので、/boot/solaris/filelist.ramdiskに"platform/i86pc/kernel.new"というエントリを加える必要があります。でも、x86ではgenunixが/kernelの下にあって、genunixも置き換える場合はちょっとややっこしくなるし、grubブートの場合はfail-safeがあるので、パニックしてもなんとかなるということもあるので、直接unix/genunixを置き換えてしまった方が簡単みたい。(^^;) この場合は、こんなオペレーションになります。

x86の場合
  1. 1. cd /platform/i86pc/kernel
  2. 2. mv unix unix.org
    originalを保存しておく -- パニックした時に戻すのでこれは大事ですよ。
  3. 3. 新しいunixを置く
  4. 4. cd /kernel
  5. 5. mv genunix genunix.org
  6. 6. 新しいgenunixを置く
  7. 7. bootadm update-archive -v
    アーカイブを新しいカーネルで作り直す。
    rebootコマンドを叩くと自動的に作ってくれますが、念のため。^-^
  8. 8. reboot

不覚にもパニックしてしまった場合…x86編
  1. 1. grub bootのfail-safeで立ち上げる
  2. 2. アーカイブをupdateするかと聞いてくるので、迷わず?"no"と答えます。^o^
  3. 3. ディスクをマウントします。ルートのディスク名が表示されるので、それを そのまま使ってしまう。例えばこんな感じ。
    # mount /dev/dsk/c0d1s0 /mnt
  4. 4. 退避しておいたunix, genunixを元に戻します。
    # cd /mnt/platform/i86pc/kenrel
    # mv unix.org unix
    # cd /mnt/kernel
    # mv genunix.org genunix
  5. 5. アーカイブをオリジナルのカーネルで作り直す。
    # bootadm update-archive -v -R /mnt
  6. 6. reboot
こうすれば、無事オリジナルのカーネルで立ち上がります。^-^

ちなみに、nightlyビルドの場合、次のオプションを使うと早いっていうのもありましたね。
NIGHTLY_OPTIONS="-aCDFilnmprz"

US Sunのエンジニアはやっぱり凄い

僕からみて、凄いなぁと思う人達をあげさせて頂きました。でも、ブログを確認しますと、皆さんが書いているわけでもないんですねぇ…。^.^; Jeffさんとか、ほとんど書いていないし(忙しいと思うので仕方がないとは思うけど)。そこでブログを書いている皆さんをとくに再掲したいと思います。

Eric Low - EricさんはVM関係なんですが、それ以外も色々と書いているようです。
Alexander Kolbasov - Sashaさんは、STREAMSが強いですね。大変参考になります。
Bryan Cantrill, Jonathan Adams - ご存じのDTraceですね。

それ以外にも、
Mike Shapiro - Mikeさんの出世作?mdbを使ったデバックとかを書いているようです。それ以外にFMAとかがあります。
Eric Schrock - OpenSolarisのsystem callの追加とか色々書いています。

また、Solaris Internalsの著者として有名なRichard McDougallさん、Jim MauroさんのBlogもありますが、Solaris Internalsのサイトそのものの方が参考になるかも知れません。(Richard McDougallさんのDTraceスクリプトとか参考になります。ツールもダウンロードできるようです ^-^)

今回は、日本滞在中の御礼と、NSUGでお話した"はっしょたビルド"と"凄いUSエンジニア"の補足でした。OpenSolarisのカーネルについても、ぼちぼちとスタートさせて貰いますので、お楽しみに。^-^


Technorati Tag: OpenSolaris
Technorati Tag: Solaris



© 太田英二

[RSS Newsfeed]

[This is a Roller site]

素材提供: