Last Update: $Date: 2001/11/25 13:52:21 $ GMT
DHU2ではずっとFreeBSDを使って いたのですが、お仕事の開発環境がNetBSD に移ってしまったことと、1.5がリリースされた ということもあって、生活環境もNetBSDに乗り換えてみることにしました。
ちなみにここに載っているのはあくまで記録なので、 動作を保証するものではありません。At your own riskでお願いします。 ただ誰もが通る道なので、情報の共有とこの元になる情報を公開してくれた すべてのひとに感謝の意味を込めて公開しています。 もしあなたがさらなる有用な情報を得た場合は、 世の中の幸せのために積極的に公開しましょう :-)
まずはマルチブートをするために、partitionの切り直しをします。 「Partition Magic」のようなパーティション切り直しツールがないので、 パーティションを切って新たにインストールしてみることにしました。 最初は素直に、
とやってみましたが、なぜか10GBまるまるWin98が占領してしまいます。 どうやらリカバリCDでインストールの際にpartitionを切り直しているようです。 これをやられるとマルチブートができません。
- Win98をDOSモードで再起動。
- fdiskを起動。
- 現在の基本DOS領域を削除して、例えば6GBで基本DOS領域を確保しなおす(残り4GBは未使用のまま)。
- リカバリCDを使ってWin98をインストール。
ひとまずリカバリCDの中身をあさってみました。するとインストールの スクリプトらしきものがありました。読み解いてみると、どうやらpartition 1を 削除して新たにpartitionを確保した上でインストールするような記述になっています。 ということはpartition2以降はいじらないはずなので、 以下の手順で試してみました。
これでパーティションが2つの状態(CとDドライブが存在)でWin98を復活させる ことができました。 あとは後ろの拡張DOS領域を削除して、そこにNetBSDをインストールします。
- Win98をDOSモードで再起動。
- fdiskを起動。
- 現在の基本DOS領域を削除して、例えば6GBで基本DOS領域を確保しなおす。
- 残り4GBを拡張DOS領域として確保(これはダミー)。
- リカバリCDを使ってWin98をインストール。
特にこれといってデフォルトと変わった設定はしていません。 ただし、ハイバネーション関係はすべて切りました(サスペンドのみ)。
ウルトラベースX2のフロッピーディスクドライブでブート。 ビルトインのEtnernetはfxp0として認識されますので、 問題なくネットワークインストール可能です。
sys/arch/i386/conf/GENERIC_LAPTOPをベースに
あたりを変更。RTC_OFFSET=-540というのは、Win98がPCの時計を localtime(JST)と信じて疑わないので、NetBSDではGMTとのオフセットを 設定してあげる必要があるためです。
options PCMCIAVERBOSE options XSERVER options RTC_OFFSET=-540
X20ではRicohの5C476というPCI-CardBusブリッジのチップが載っていて、 NetBSD的にもcbb?で認識してくれるのですが、僕が試した範囲ではinterrupt が拾えなくてどうもうまく動いてくれません。なので、とりあえずCardBusは あきらめて(カードも持ってないし...)ISAバスからIntel 82365SL互換として 見せるようにしています。
# PCIBIOS関係はすべてコメントアウト #options PCIBIOS # PCI BIOS support #options PCIBIOSVERBOSE # PCI BIOS verbose info #options PCIBIOS_ADDR_FIXUP # fixup PCI I/O addresses #options PCIBIOS_BUS_FIXUP # fixup PCI bus numbering #options PCIBIOS_INTR_FIXUP # fixup PCI interrupt routing #options PCIBIOS_IRQS_HINT=0x0a00 # PCI interrupts hint. IRQ 9 or 11 #options PCIBIOS_INTR_GUESS # see pcibios(4) #options PCIINTR_DEBUG # super-verbose PCI interrupt fixup . . . # CardBus関係もすべてコメントアウト # CardBus bridge support #cbb* at pci? dev ? function ? #cardslot* at cbb? # CardBus bus support #cardbus* at cardslot? #pcmcia* at cardslot? . . . # 必要なのはこれだけ(flags=1にしてpolling modeにする) # ISA PCMCIA controllers pcic0 at isa? port 0x3e0 iomem 0xd0000 iosiz 0x10000 flags 1
ちなみにブートメッセージではこんな感じで表示されます。
pcic0 at isa0 port 0x3e0-0x3e1 iomem 0xd0000-0xdffff pcic0: controller 0 (Intel 82365SL Revision 1) has sockets A and B pcic0: controller 1 (Intel 82365SL Revision 1) has no sockets pcmcia0 at pcic0 controller 0 socket 0 pcmcia1 at pcic0 controller 0 socket 1 . . . pcic0: controller 0 detecting irqs with mask 0xdeb8:..3..5..9..10..15 pcic0: polling for socket events
もっとまともなやり方があったら教えてください :-)
X20ではCirrus LogicのCS4281というチップが載っています。 素の1.5ではドライバがありませんが、currentには先日マージされた模様です。
ドライバを書かれた上記おおがいとさんのページをたどれば、ソースおよび コンパイル方法が載っています。ソースはcurrent用なので、素の1.5では 一部変更が必要です(このときに素の1.5のdev/pci/cs4280.cが必要になるので 上書きしないで取っておくこと)。具体的方法は READMEに書かれています。これで問題なく動くようになりました。
clct0 at pci0 dev 11 function 0: Cirrus Logic CS4281 CrystalClear Audio Interface (rev. 0x01) clct0: interrupting at irq 11 clct0: CRY20 codec; headphone, 20 bit DAC, 18 bit ADC, Spatializer 3D audio0 at clct0: full duplex, independent
X20のグラフィックチップはATI Rage Mobility(AGP)です。 参考文献を見てもらえればわかりますが、素の3.3.6のSVGAサーバよりも patchをあててMACH64サーバで動かした方が快適なようです。
1.5-RELEASEのxsrc.tgzを展開して、XFree86-3.3.6-ragemobility.patchをあててmake。入れ換えるのは/usr/X11R6/bin/XF86_Mach64のみでよいでしょう。そして/usr/X11R6/bin/Xのシンボリックリンクを張ればOK。XF86Configはふゆひこ氏のページにあったXF86ConfigをNetBSD用にしたものを使っています。
DOS領域をNetBSDからマウントするためには、disklabelの設定をする必要が あります。まずDOS領域情報をfdiskで見ます。たとえばこんな感じです。
必要なのは赤い部分です。これでDOS領域の開始シリンダとサイズが 得られます。次にこの情報を元にdisklabelに書き込みます。
# fdisk NetBSD disklabel disk geometry: cylinders: 16383 heads: 15 sectors/track: 63 (945 sectors/cylinder) BIOS disk geometry: cylinders: 1022 heads: 240 sectors/track: 63 (15120 sectors/cylinder) Partition table: 0: sysid 11 (Primary DOS with 32 bit FAT) start 63, size 12292497 (6002 MB), flag 0x80 beg: cylinder 0, head 1, sector 1 end: cylinder 812, head 239, sector 63 1: sysid 169 (NetBSD) start 12292560, size 7348320 (3588 MB), flag 0x0 beg: cylinder 813, head 0, sector 1 end: cylinder 1021, head 239, sector 63 2:3:
空きレター(この場合はf)を使ってエントリを書き込みます。 あとは/etc/fstabに
# disklabel -e wd0 # /dev/rwd0d: type: unknown disk: cocone label: flags: bytes/sector: 512 sectors/track: 63 tracks/cylinder: 15 sectors/cylinder: 945 cylinders: 16383 total sectors: 19640880 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # microseconds track-to-track seek: 0 # microseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize cpg] a: 305235 12292560 4.2BSD 1024 8192 16 # (Cyl. 13008 - 13330) b: 526365 12597795 swap # (Cyl. 13331 - 13887) c: 7348320 12292560 unused 0 0 # (Cyl. 13008 - 20783) d: 19640880 0 unused 0 0 # (Cyl. 0 - 20783) e: 6516720 13124160 4.2BSD 1024 8192 16 # (Cyl. 13888 - 20783) f: 12292497 63 MSDOS
デバイス名(/dev/wd0fなど)とマウントポイント(/dosなど)を登録すればOKです。
/dev/wd0a / ffs rw 1 1 /dev/wd0b none swap sw 0 0 /dev/wd0e /usr ffs rw 1 2 /dev/wd0f /dos msdos rw /kern /kern kernfs rw
NetBSD上でのNetscapeについては、以下の
という感じで日本語表示ができるようになるはずです。
- pkgsrc/www/navigatorからmake;make install。
- pkgsrc/emulator/linux-localeからmake;make install。
- 「Netscape Communicator for UNIX 日本語化」から、 対応するNetscapeバージョンの日本語リソースキットを持ってくる。
- 中に含まれるNetscape.ad-ja_eucのフォントの定義を置き換える。 (参考:installスクリプトの中 のsedのコマンドだけを抜き出したもの)。
- 上記で生成したNescapeを/usr/X11R6/lib/X11/app-defaultsなどに置く。
- /usr/pkg/bin/navigatorのスクリプト中に
LANG=ja ; export LANGの記述を追加する。
ただし、これだけだとフォントがいまいちうれしくないので、FreeBSDの packagesを引っぱってきてフォントのインストールします。持ってくる FreeBSDのpackagesは以下の通りです。
まずフォント群を展開して、/usr/X11R6/lib/X11/fonts/local以下にフォント ファイルをコピーします。
すべてコピーし終えたら/usr/X11R6/lib/X11/fonts/local でmkfontdirします。
# cd /somewhere # tar zxf *.tgz # cd lib/X11/fonts/local/ # cp * /usr/X11R6/lib/X11/fonts/local
# cd /usr/X11R6/lib/X11/fonts/local # mkfontdir
次にja-netscape-fonts.tgzに含まれるinstallファイルにあるfonts.aliasの定義を /usr/X11R6/lib/X11/fonts/local/fonts.aliasとしてコピーします。 これでNetscapeの設定メニューからフォントが選べるようになります。 文字コードセットが日本語の項目について、それぞれ「Fixed(Netscape)」を 選べばOKです。