酒飲んで、車いじって、トロンボーン吹いて、寝る。そんな生活に憬れる今日この頃。
日記の更新は気の向くまま、つれづれなるままに・・・

kernelの再構築

DEC3000/300のkernelを再構築してみました

ソースをDownload

公式リリースのsourceか、currentのsourceか、どちらかを拾ってきます。
公式リリースの場合はsyssrc.tgzを、currentの場合はconfig.tar.gz(configのソース)とsys.tar.gz(kernelのソース)の2つを拾ってきます。

公式リリースの場合
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-3.0/source/sets/syssrc.tgz
currentの場合
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/src/config.tar.gz
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/src/sys.tar.gz

ソースの展開

ソースをtarで展開します

公式リリースの場合

# cd /
# tar xzvf syssrc.tgz

currentの場合

# cd /usr
# tar xzvf config.tar.gz
# tar xzvf sys.tar.gz

configuration

NetBSDはconfigのためのconfファイルを自分で編集します。これが他のと違って面倒なところ。
まず、ソースがcurrentの場合は、新しいconfigをインストールします

# cd /usr/src/usr.sbin/config
# make
# make install

新規カーネルのためのconfファイルを作ります。といってもコピーするだけだけど。

# cd /usr/src/sys/arch/alpha/conf
# cp GENERIC MYKERNEL (MYKERNELは任意のファイル名でOK)

MYKERNELを編集します。

# vi MYKERNEL

基本的にはDEC3000/300には存在しないデバイスや機能などを削除してゆけばいいと思います。たとえばPCIバス関連のデバイスとかUSBポート関連のデバイスとか。事前にdmesgで表示されるデバイスを記録しておけば楽だと思います。
参考までにMYKERNELの例。実はひそかにIPv6を無効にしています。

カーネルのbuild

カーネルをビルドするためのディレクトリを生成します

# rm -rf /usr/src/sys/arch/alpha/compile/MYKERNEL←一応過去のゴミを消しておく
# config MYKEYNEL
# cd ../compile/MYKERNEL
# make depend

時間がかかりますので、しばらく放置プレイ。
終わったら、次にカーネルコンパイルする。

# make

時間が掛かるかな、と思いきや、結構早く終わる。まぁそれでも1時間くらいでしょうか。

カーネルのインストール

# make install

または手動でインストールするには

# mv /netbsd /netbsd.old ←現在のカーネルを保存
# mv netbsd / ←新しいカーネルをブートできるようにする

完了

リブートします。

# shutdown -r now