ロード トップ 参照元 逆検索 検索 ヘルプ

[logo] Grub


Tiki:cont から Omicron:ContOS へ そして Omicron:Grub へ。


妄想モード


bochs を試す ...

NetBSD-1.5.2/i386 のインストーラ ... 起動。

メッセージを抜粋すると

cpu0: Intel Pentium (P5) (586-class), 0.51 MHz

wd0: drive supports 1-sector pio transfers, chs addressing

あれ、ne2000 が probe されていない。

ne2000 を使えるようにするには、

   1. configure のときに --enable-ne2000 とする。
   2. bochsrc.txt に
     ne2k: ioaddr=0x280, irq=9, mac=b0:c4:20:00:00:00, ethmod=linux, ethdev=eth0
    なんて書く。
   3. bochs を root で起動する

そうすると....

ne0 at isa0 port 0x280-0x29f irq 9
ne0: NE2000 Ethernet
ne0: Ethernet address b0:c4:20:00:00:00

とか出てみつけてくれた。ただし、なんか使えない。

00435074488i[NE2K ] RCR write, monitor bit set!
00435074497i[NE2K ] TCR write, loop mode 1 not supported

なんて出ているから、エミュレーションの問題か。... と思ったけど違う。 単に初期化でサポートしていない機能をつかってみているだけ。 一応 Network は使えた。ただ、ホストOS には アクセスできない。

ちなみに、2.88MB の ブートイメージは、サポートしてる。

floppya: 2_88=boot-big.fs, status=inserted


FreeBSD 4.5 のインストーラを立ち上げてみる....

   ed0 at port 0x280-0x29f iomem 0xd8000 irq 10 isa0
   ed0: address b0:c4:20:00:00:00, type NE2000 (16 bit)

とか出た後で

Event type: PANIC
Device: [NE2K ]
Message: [NE2K ] asic write invalid address 0002

となる。cont で先にいっても

Event type: PANIC
Device: [NE2K ]
Message: [NE2K ] ne2K: dma write, byte count 0

さらに cont

Event type: PANIC
Device: [NE2K ]
Message: [NE2K ] ne2K: dma read underrun

なんか FreeBSD は Network が 動かないっぽい。

なんどか cont していると 見慣れた メニュー画面が...

ne2k のエミュレーションに問題がある以外は、良いかんじ。


Linux-2.4系カーネルを make して 動かしてみる

がーん。動かん。 カーネルを 586 にして make すれば カーネルが立ち上がる 直前まで来る ... ところが、/sbin/init が i686 で make されているらしく ...

00156848290p[CPU  ] >>PANIC<< cmov_gded called

なんて言われてしまう。EIP=40003e2b となっているからカーネルではない のは明らか。カーネルは、EIP=c0xxxxxx

40000000-40016000 r-xp 00000000 08:01 433023     /lib/ld-2.2.2.so

どうもこいつらしい。

しょうがないので、次ぎのやつを試してみたら ...

#define BX_CPU_LEVEL 5
#define BX_CPU_LEVEL_HACKED 6

なんとか立ち上がった。よしよし。


Grub をインストールしてみる。

フロッピーイメージファイルに対して

   dd if=/usr/local/share/grub/i386-pc/stage1 of=floppya.img
   dd if=/usr/local/share/grub/i386-pc/stage2 of=floppya.img skip=1

とかする。

で、bochs を起動すると floppy から grub が立ち上がる。

ディスクイメージ は、あらかじめファイルシステムを作っておいて

/grub/stage1
/grub/stage2
/grub/*_stage1_5

を 仕込んでおく。

   root (hd0,1)/grub
   setup (hd0)

でとりあえず、インストールされる。

Kondara_grub_HOWTO をみると、いろいろわざがあるらしい。


stage1

これは単なる MBR 用 ブートストラップ

自分が読み込まれたら、次に 自分に続く DISK 領域を読んできて 制御を渡す。 (... たぶん)

stage1_5

これは、ファイル システムを認識できるブートローダ。MBR のすぐ後ろにおかれる。 (サイズの問題があり)ファイルシステムごとに 別々になっている。

と沢山ある。

どこから 次を 読み込んでくるか。およびどのパラメータを渡すかは、 stage1_5 内に たぶん書き込まれている。

stage2

これが grub 本体。カーネルロード専用の OS 。

read-only でしか mount できないが、上記のファイルシステムを全部含んでいて さらに、network ? とか コンソールオペレーションができる。 gzip された イメージを展開して vga に張り付けたりも。

なるほど、これで遊ぶというのが... Omicron:Grub さらに Omicron:ContOS というわけか。


NetBSD のブートローダーも紹介。

grub に似ている面がある、正確にはライブラリで、libsa --- sys/lib/libsa



(最終更新 Thu Mar 30 18:55:28 2006)