■サーバマシンの選択■(2004/07/26)

Webサーバというからには24時間つけっぱなしにしておきたいけど、 何分狭い部屋で生活しているもんだから消費電力でかいわ熱を持つわうるさいわ ...てなマシンは嫌。そうならないためにも静かなPCを探さないと。

最近作ったメインマシンは音にかなり気を使った方なんだけど、 寝るときにつけっぱなしにしとくとどうしてもCPUファンやHDDの音とか気になってしまう。 気になるといえばVRAMとかに大量にメモリアクセスしたときの「キュイーン」って音も気になる。 あれっていったい何の音なんだろ?そういやカメラのフラッシュたくときもあんな音するなぁ。

そんなことはともかく、売ってそうな無音・省電力な小型PCの仕様は多分こんな感じ。

  • 電源はACアダプタ(電源ファンがない)
  • ATA/IDEデバイスはコンパクトフラッシュ(HDDみたいにカリカリしない)
  • 5インチHDD2個分くらいの大きさ(場所とらない)
  • CPU遅い、メモリ少ない(Webサーバなら問題ない)
で、ちょこっと検索してみた。 すると思ったより良さそうなもの見つけた。 ぷらっとホームが出してるOpenBlockS。 Linux積んであってサーバとかルータとか、いろいろ出来るらしい。 値段は予算より高かったけど許容範囲だからいっか。 でも、HDDまで買うつもり無いからクロス開発環境は必須だ。 注文する前に整備しよう。

資料を読んでるとSSD/Linuxとかいうのを使うらしい。 なになに、クロス開発環境にはx86のDOS/VマシンにSSD/Linuxをインストールして...ってめんどくさ。 RedHatLinux(というよりFedoraCore)とかBSDとか有名なOSでのクロス環境の作り方を書いといて欲しかった... 下手にそんな事挑戦したくないしなぁ。 かといってパーティション作り直すもバックアップとらなきゃなんないからもっとめんどくさいし... よし、バーチャルなx86マシンにインストールしよう!

■Bochsのインストール■(2004/07/26)

まずBochsのWindows版(bochs-2.1.win32-bin.zip)をダウンロードして解凍。 コンパイル済みだからこのままWindowsで使えるはずだ。

次にbximage.exeでHDDイメージの作成。

========================================================================
                                bximage
                  Disk Image Creation Tool for Bochs
        $Id: websvr.html,v 1.1.1.1 2005/01/22 10:16:23 Exp $
========================================================================

Do you want to create a floppy disk image or a hard disk image?
Please type hd or fd. [hd] 
フロッピーのイメージ(fd)かハードディスクのイメージ(hd)かを聞いてくるのでhdを選ぶ。
What kind of image should I create?
Please type flat, sparse or growing. [flat] 
なになに、どんな種類のイメージを作るかって? 何じゃこりゃ。こんなもんあったっけ? よくわからんけど、イメージを圧縮したり、実際に書き込みのあった部分だけ記憶すんのかな? とりあえずflatで。
Enter the hard disk size in megabytes, between 1 and 32255
[10] 
要領は2Gくらいあれば大丈夫でしょ。多分。
I will create a 'flat' hard disk image with
  cyl=4161
  heads=16
  sectors per track=63
  total sectors=4194288
  total size=2047.99 megabytes

What should I name the image?
[c.img] 
イメージ名は「ssdlinux.img」でいっか。
Writing: [] Done.

I wrote 2147475456 bytes to (null).

The following line should appear in your bochsrc:
  ata0-master: type=disk, path="ssdlinux.img", mode=flat, cylinders=4161, heads=
16, spt=63
んで完了。最後の「ata-master: type=disk, ...」てのは大事にメモしとく。

さ〜て、お次はBochsの設定ファイルを... ってよく考えたらSSD/Linuxのインストーラが入ったディスクイメージが必要じゃないか。うっかり。
ぷらっとホームからCDイメージ(0.2-20040723.iso)をダウンロード...遅!! 3時間ってあんた... もーいーや。ダウンロードしっぱなしで今日は寝ることにしよう。

■Bochsの起動■(2004/07/27)

まず、Bochsの設定ファイルを用意。 bochsrc-sample.txtをコピってbochsrc-ssdlinux.txtと命名する。 HDDイメージはBochsと同じフォルダにある「ssdlinux.img」から

ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17
          ↓
#ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17
ata0-master: type=disk, path="ssdlinux.img", mode=flat, cylinders=1040, heads=16, spt=63
と変更する。ついでにCDも設定。こいつは別のディレクトリに入ってるから絶対パスを渡しとく。
ata1-master: type=cdrom, path="e:\Linux\SSDLinux\0.2-20040723.iso", status=inserted 
ata1を有効にするのを忘れずに。
ata1: enabled=0, ioaddr1=0x170, ioaddr2=0x370, irq=15
          ↓
#ata1: enabled=0, ioaddr1=0x170, ioaddr2=0x370, irq=15
ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15
BIOSイメージも同じフォルダにあるので余計なパスは省いておこう。
#romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000
          ↓
romimage: file=BIOS-bochs-latest, address=0xf0000
#vgaromimage: $BXSHARE/VGABIOS-elpin-2.40
          ↓
vgaromimage: VGABIOS-elpin-2.40
ブートデバイスはディフォルトだとフロッピーになってる。インストールはcdイメージから行うので
boot: disk
          ↓
#boot: disk
boot: cdrom
にする。 フロッピーは使わないだろうからflopyaとfloppybは#でコメントアウト。 よし、こんなもんだろ。

では、bochs.exeをダブルクリック。

========================================================================
                        Bochs x86 Emulator 2.1
                           January 11, 2004
========================================================================
------------------------------
Bochs Configuration: Main Menu
------------------------------

This is the Bochs Configuration Interface, where you can describe the
machine that you want to simulate.  Bochs has already searched for a
configuration file (typically called bochsrc.txt) and loaded it if it
could be found.  When you are satisfied with the configuration, go
ahead and start the simulation.

You can also start bochs with the -q option to skip these menus.

1. Restore factory default configuration
2. Read options from...
3. Edit options
4. Save options to...
5. Begin simulation
6. Quit now

Please choose one: [2] 
設定ファイルを読み込まなきゃならんので2を選択。
What is the configuration file name?
To cancel, type 'none'. [none] 
設定ファイルは「bochsrc-ssdlinux.txt」を入力。
00000000000i[     ] reading configuration from bochsrc-ssdlinux.txt
------------------------------
Bochs Configuration: Main Menu
------------------------------

This is the Bochs Configuration Interface, where you can describe the
machine that you want to simulate.  Bochs has already searched for a
configuration file (typically called bochsrc.txt) and loaded it if it
could be found.  When you are satisfied with the configuration, go
ahead and start the simulation.

You can also start bochs with the -q option to skip these menus.

1. Restore factory default configuration
2. Read options from...
3. Edit options
4. Save options to...
5. Begin simulation
6. Quit now

Please choose one: [5] 
よしよし、無事に読み込んだようだ。 5でエミュレーション開始!
どうやらブートできたようだ。 キーを押せと書かれてるのでキーを押す。
GRUBが立ち上がった。インストールする手段を選ぶようだ。 CDイメージからインストールするので一番上を選んでEnter。
ふむふむ、何かいろいろ出てきたぞ。 さて、どーしたらいいのかSSD/Linuxのマニュアルを見てみよう。 うわ、画面が真っ暗になった。 Bochsじゃ無理なのか...と一瞬びっくりしたけど、どうやらスクリーンセーバーが働いて 画面の出力切れただけのようだ。キーを押したらまた出てきた。人騒がせだなぁ、まったく。 Pen4マシンでのエミュレーション速度ってそこまで早いもんなのかね。 いや、多分バーチャルマシンの時計が狂ってるだけなんだろうな。

■SSD/Linuxのインストール■(2004/07/27)

Linuxが立ち上がったのでrootでログイン。パスワードはいらない。

SSD-Linux login: root
#

次にfdiskでパーティションを設定。

fdisk /dev/hda
/bootに128Mを。ブート可フラグを立てるのを忘れずに。
n
p
1

+128M
a
1
スワップ領域に128M。
n
p
1

+128M
t
2
82
残りは全部/でいいでしょう。
n
p
2


これでパーティションの作成が終了。
w
で終了。

次はsysinitを実行する。

# sysinit
sysinit: not found
は?なぜ?まさかインストールできないとか言わないだろうな? 探してみたら/sbinの中にあった。もとのディレクトリに戻って直接パスを書いて実行してみよう。
# /sbin/sysinit
/sbin/sysinit: not found
こらこらこらこら。なんでじゃ!と思ったら間違っとるやないけ! sysinitじゃなくてsysinst!まったくもう...やり場の無い怒りはどうしようもないね。
# sysinst


SSD/Linux 0.2-20040723/2.4.20 Installer

  Why do you choose Linux ?
  We recommend you to use NetBSD, FreeBSD, or OpenBSD instead.

よしよし
Are you sure to install [y/N] ?
インストールしますよ。はい。
y
Really [y/N] ?
だからインストールしますってば。
パーティションの使い方を設定するようだ。 /bootと/を設定しよう。
0
m
/boot
x
2
a
m
/
x
これでよし。
x
ブートパーティションは/bootでいいでしょう。
t
x
Taking mkswap and mke2fs.
 Are you sure [y/N] ? 
何のことかよくわかんないけどyesで
y
Select Distributions

     0. Generic Kernel : yes
     1. Base           : yes
     2. System (/etc)  : yes
     3. Compiler       : yes
     4. Cross Complier : yes
     5. Manuals        : yes
     6. Source         : yes

     x. Exit this menu.

Enter number [0-6 or x] : 
ディストリビューションの選択。 とりあえず全部入れとこう。Sourceがnoになってるからyesにする。
6
これでおっけぇ。
x
Select install media

     * CDROM   : /dev/hdc

    x. Exit this menu.

Enter command [x] :
インストール元を選択。選択の余地なんかないじゃないか。
x
Extract binaries from CDROM.
Are you sure [y/N] ?
はいはい
y
いろいろ展開(?)し始めたぞ。しばらく待とう。

Install boot block.
Are you sure [y/N] ?
ブート領域を作成するようだ。もちろんYesで。
y

Segmentation fault
Segmentation fault
Segmentation fault
Segmentation fault
Segmentation fault
Segmentation fault
Segmentation fault
Segmentation fault
Segmentation fault
Segmentation fault
...
何かおびただしい量のセグメンテーションエラーが出たぞ。大丈夫か?
何とかなったらしい(ホントか?)。 テキトーにパスワードを打つ。

これにてインストールは終了。Bochsを終了させる。
# shutdown -h now
INIT: Switching to runlevel: 0
INIT: # Sending processes the TERM signal
INIT: Sending processes the KILL signal
flushing ide devices: hda hda: task_no_data_intr: status=0x41 { DriveReady Error
 }
hda: task_no_data_intr: error=0x04 { DriveStatusError }
hdc
Power down.
なんかHDDがエラー起こしてないか?ま、いっか。電源をぽちっとな(Bochsの)。

■SSD/Linuxの起動?■(2004/07/27)

CDの役目はもう終わったのでbochsrc-ssdlinux.txtを編集しなおす。 まず、CDはイジェクトしておく。

ata1-master: type=cdrom, path="e:\Linux\SSDLinux\0.2-20040723.iso", status=inserted 
          ↓
ata1-master: type=cdrom, path="e:\Linux\SSDLinux\0.2-20040723.iso", status=ejected
ブートデバイスはハードディスクで。
#boot: disk
boot: cdrom
          ↓
boot: disk
#boot: cdrom
で、Bochsを起動してbochsrc-ssdlinux.txtを読み込んでエミュレーション開始。
撃沈。固まった...

今日は疲れたので、原因追求はまた明日以降にしよう。