入場者数
kema's web TopWho is kema?電気・回路無線コンピュータ
バイク鉄道関係妙な写真・イラストkema's料理ゲーム関係

上に戻る

1:カーネル構築
2:Crunched Binary作成
3:1FDディスクイメージ作成
4:起動フロッピーディスク作成
1:カーネル構築

1FD FreeBSD カーネル構築編

1FD FreeBSDに必要なユーティリティを詰め込む前に、まずはOS自体の構築方法について解説します。

必要なもの

  • FreeBSDが動作するパソコン一台
  • フロッピードライブ
  • マトモなフロッピーメディア(CDRメディアに、フロッピーのブートイメージとして焼いちゃっても良いかもしれません。)

まずは普通にFreeBSDのインストール

1FD FreeBSDを作るには、まず普通に(ハードディスクに)インストールしたシステムが必要になります。
このFreeBSD上で、フロッピーに収まるカーネルを構築したり、crunchされたshをはじめ各種ツールのバイナリを作成するわけです。 FreeBSD5.x以降は、カーネル周りのディレクトリレイアウトが変わったため、1FDに収めるためにどうしたら良いか良く分からんので(おい)、FreeBSD4.11-Releaseをベースにしました。
これを書いている現在(2006年9月)、4.11Rは少々古い感じはするものの、obsolereされている訳でもないし、安定性や対応ハードウェアの面においても不自由は無いので、問題は無いでしょう。
(2006/10追記:FreeBSD6.1Releaseで試してみましたが、機能を削りまくったカーネルを作成しても、圧縮後のサイズが1.5MB程になってしまったため、やはり4.11で作るのが現時点では最良のようです)

FreeBSDのインストール方法

普通にインストールすれば良いです。ソースファイルは全て展開しておいた方が良いでしょう。(ま、kernelのソースと、bin,sbin,ubin,usbin辺りだけあれば良い筈ですが)
FreeBSDのインストール方法については省略します。

1FD FreeBSD用カーネルの構築

この辺からが本番です。
FreeBSDのインストールはした事があっても、カーネルの再構築は経験が無い人も居ると思いますので、ちょっと丁寧に書いてみます。
カーネルの設定ファイルは、/usr/src/sys/i386/conf/ にあります。GENERICってのがデフォルトの設定ファイルです。
このGENERICを元にして、1FD FreeBSD用のカーネルコンフィグファイルを作成します。

# cd /usr/src/sys/i386/conf
# cp GENERIC FD
# vi FD
1FD FreeBSDには、NFSで何かをマウントする予定があるならともかく、普通はNFSは不要だと思います。また、SCSI関係やCDROM関係も要らないと思います。ISA NIC関係は要らないと思いますが、PCIなNICに関しては、稼動開始後にNICが壊れて入れ替えたりとか、あるいは1FD ディスクデュプリケータのように、稼動させるシステムが決め打ち出来ない場合を考え、全て残しておきました。
この辺は各人の状況に合わせて設定してください。参考までに、私のコンフィグを書いておきます。
machine i386
cpu I486_CPU
cpu I586_CPU
cpu I686_CPU
ident "1FD_FreeBSD"
maxusers 0
options INET
options FFS
options MFS
options MD_ROOT
options COMPAT_43
device isa
device pci
device fdc0 at isa? port IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive 0
device ata
device atadisk
device atkbdc0 at isa? port IO_KBD
device atkbd0 at atkbdc? irq 1 flags 0x1
device vga0 at isa?
device sc0 at isa? flags 0x100
device npx0 at nexus? port IO_NPX irq 13
# PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (``Tulip'')
device em # Intel PRO/1000 adapter Gigabit Ethernet Card (``Wiseman'')
device txp # 3Com 3cR990 (``Typhoon'')
device vx # 3Com 3c590, 3c595 (``Vortex'')
device miibus # MII bus support
device dc # DEC/Intel 21143 and various workalikes
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device pcn # AMD Am79C97x PCI 10/100 NICs
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (``Starfire'')
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device ste # Sundance ST201 (D-Link DFE-550TX)
device tl # Texas Instruments ThunderLAN
device tx # SMC EtherPower II (83c170 ``EPIC'')
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
device bge # Broadcom BCM570x (``Tigon III'')
pseudo-device loop # Network loopback
pseudo-device ether # Ethernet support
pseudo-device md # Memory "disks"
options ATKBD_DFLT_KEYMAP # specify the built-in keymap
makeoptions ATKBD_DFLT_KEYMAP="jp.106"
さて、コンフィグが出来たらカーネルの構築です。
# config 1FD_FreeBSD
Don't forget to do a ``make depend''
Kernel build directory is ../../compile/1FD_FreeBSD
# cd ../../compile/1FD_FreeBSD/
# make cleam
# make depend
# make
make installしてしまうと、今稼動しているシステムのカーネルを置き換えてしまうので注意してください。もし万が一make installしてkernelが書き換わってしまった場合は、
# cd /
# chflags noschg kernel
# cp kernel.GENERIC kernel
# chflags schg kernel
で元に戻ります。kernelは大変重要なファイルなので、誤って消去できないよう、削除不可フラグが立っています。何かしらの事情で消去なりする必要が生じた場合は、chflagsでフラグを変更してから操作します。
以上の操作で、新しいカーネルが /usr/src/sys/compile/1FD_FreeBSD/kernel に出来ました。
次は、crunchされた各種プログラムを作成します。