yk700101の日記: NetBSD 3.0 - Recompile a Kernel using adjustkernel
日記 by
yk700101
○概要
NetBSD 3.0 のカーネルを adjustkernel を使ってリビルドしたときのメモ。
以下の環境が前提。
・install NetBSD 3.0 on VMware Workstation 5.5
http://srad.jp/~yk700101/journal/336059
○環境に合ったカーネルのビルド
・パッケージソースの取得
操作:
su myuser
# この場所から取得するのが正しいかどうかは不明(この他はうまく取得できなかった)
ftp ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz
# 注:展開にとても時間がかかるので、
# できれば、必要なファイルだけ取り出したいが、
# 今回は試していない。
tar vzxf pkgsrc.tar.gz -C /usr
cd /usr/pkgsrc
exit
・パッケージのインストールのための設定
操作:
su
# 新規にファイルを作成する。
echo '#myuser -->' > /etc/mk.conf
echo 'DISTDIR=/usr/pkgsrc_distfiles' >> /etc/mk.conf
echo '#myuser <--' >> /etc/mk.conf
# 確認
cat /etc/mk.conf
exit
・パッケージのインストール(adjustkernel)
操作:
su myuser
cd /usr/pkgsrc/sysutils/adjustkernel
make fetch-list
# 注:adjustkernel を実行するために
# perl がインストールされるが、
# とても時間がかかる。
make
make install&& make clean && make distclean
exit
・ビルド設定ファイルの自動生成(1)
操作:
su myuser
cd /usr/src/sys/arch/i386/conf
# 環境に合ったカーネルのビルド設定ファイルを作成
adjustkernel GENERIC > VMWARE
config VMWARE
結果:
VMWARE:724: `wd* at atabus?' is orphaned (nothing matching `atabus?' declared)
VMWARE:735: `cd* at atapibus?' is orphaned (nothing matching `atapibus?' declared)
Build directory is ../compile/VMWARE
Don't forget to run "make depend"
・ビルド設定ファイルの自動生成(2)
操作:
# うまく取り扱えなかったものを表示
grep '# NOTE: NoMatch:' VMWARE
結果:
# NOTE: NoMatch: atabus0 at piixide0 channel 0
# NOTE: NoMatch: atabus1 at piixide0 channel 1
# NOTE: NoMatch: scsibus0 at bha2: 16 targets, 8 luns per target
# NOTE: NoMatch: audio0 at eap0: full duplex, mmap, independent
# NOTE: NoMatch: midi0 at eap0: AudioPCI MIDI UART
# NOTE: NoMatch: atapibus0 at atabus1: 2 targets
・自動生成されたファイルの修正
操作:
# コメントアウトされた行を再度追加して有効化する。
# 実際は一度に修正できず、試行錯誤中に後で加えた修正を含む。
# 修正せずにビルドすると、リンクエラーになる。
# config コマンド実行の際の「警告表示(?)」と、
# 実際にビルドを実行して発生したエラーをもとに修正した。
# これでいいかどうかは不明。
echo >> VMWARE
echo '#myuser -->' >> VMWARE
echo 'atabus* at ata?' >> VMWARE
echo 'atapibus* at atapi?' >> VMWARE
echo 'scsibus* at scsi?' >> VMWARE
echo 'audio* at audiobus?' >> VMWARE
echo 'fd* at fdc? drive ?' >> VMWARE
echo '#myuser <--' >> VMWARE
# 確認
tail VMWARE
config VMWARE
結果:
Build directory is ../compile/VMWARE
Don't forget to run "make depend"
・ビルドの実行
操作:
cd ../compile/VMWARE/
make depend && make
結果:
(リンクでエラーが発生した。)
ld -T ../../../../arch/i386/conf/kern.ldscript -Ttext c0100000 -e start -X -o netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
fd.o(.text+0x5ae): In function `fdstrategy':
: undefined reference to `fd_cd'
fd.o(.text+0x5b9): In function `fdstrategy':
: undefined reference to `fd_cd'
fd.o(.text+0xb72): In function `fdopen':
: undefined reference to `fd_cd'
fd.o(.text+0xb7d): In function `fdopen':
: undefined reference to `fd_cd'
fd.o(.text+0xc7d): In function `fdclose':
: undefined reference to `fd_cd'
fd.o(.text+0xc84): more undefined references to `fd_cd' follow
*** Error code 1
Stop.
make: stopped in /usr/src/sys/arch/i386/compile/VMWARE
・設定ファイルの再修正とビルドの実行(リンクエラー対応)
操作:
cd /usr/src/sys/arch/i386/conf
# リンクエラーの原因と思われる部分を修正
echo >> VMWARE
echo '#myuser -->' >> VMWARE
echo 'fd* at fdc? drive ? # the drives themselves' >> VMWARE
echo '#myuser <--' >> VMWARE
# 確認
tail VMWARE
# 時間がないので、make clean を実行してません。
# 問題がないかは不明。
config VMWARE \
&& cd ../compile/VMWARE/ \
&& make depend && make
結果:
ld -T ../../../../arch/i386/conf/kern.ldscript -Ttext c0100000 -e start -X -o netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
text data bss dec hex filename
3304387 76876 224844 3606107 37065b netbsd
・カーネルのインストール
su
cp -i /netbsd /netbsd.old
cp -i netbsd /netbsd.VMWARE
cp netbsd /
# 確認のため再起動
reboot
○カーネルの更新確認(再起動後)
操作:
uname -a
出力:
NetBSD 3.0 NetBSD 3.0 (VMWARE) #1: Sat Dec 31 00:51:30 JST 2005 myuser@:/usr/src/sys/arch/i386/compile/VMWARE i386
○備考
1. 仮想マシンの構成
メモリ 32MB
ハードディスク(IDE 0:0)
ハードディスク(IDE 1:0)
CD-ROM(IDE 1:1)
イーサネット
サウンド
仮想プロセッサ
(フロッピーディスクドライブは なし。)
2. ビルドに時間がかかるため、
adjustkernel の出力結果の調整に手間取った。
○参考
http://www.jp.netbsd.org/guide/en/
○更新履歴
2005/12/30 作成
以上。
NetBSD 3.0 のカーネルを adjustkernel を使ってリビルドしたときのメモ。
以下の環境が前提。
・install NetBSD 3.0 on VMware Workstation 5.5
http://srad.jp/~yk700101/journal/336059
○環境に合ったカーネルのビルド
・パッケージソースの取得
操作:
su myuser
# この場所から取得するのが正しいかどうかは不明(この他はうまく取得できなかった)
ftp ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz
# 注:展開にとても時間がかかるので、
# できれば、必要なファイルだけ取り出したいが、
# 今回は試していない。
tar vzxf pkgsrc.tar.gz -C /usr
cd /usr/pkgsrc
exit
・パッケージのインストールのための設定
操作:
su
# 新規にファイルを作成する。
echo '#myuser -->' > /etc/mk.conf
echo 'DISTDIR=/usr/pkgsrc_distfiles' >> /etc/mk.conf
echo '#myuser <--' >> /etc/mk.conf
# 確認
cat /etc/mk.conf
exit
・パッケージのインストール(adjustkernel)
操作:
su myuser
cd /usr/pkgsrc/sysutils/adjustkernel
make fetch-list
# 注:adjustkernel を実行するために
# perl がインストールされるが、
# とても時間がかかる。
make
make install&& make clean && make distclean
exit
・ビルド設定ファイルの自動生成(1)
操作:
su myuser
cd /usr/src/sys/arch/i386/conf
# 環境に合ったカーネルのビルド設定ファイルを作成
adjustkernel GENERIC > VMWARE
config VMWARE
結果:
VMWARE:724: `wd* at atabus?' is orphaned (nothing matching `atabus?' declared)
VMWARE:735: `cd* at atapibus?' is orphaned (nothing matching `atapibus?' declared)
Build directory is ../compile/VMWARE
Don't forget to run "make depend"
・ビルド設定ファイルの自動生成(2)
操作:
# うまく取り扱えなかったものを表示
grep '# NOTE: NoMatch:' VMWARE
結果:
# NOTE: NoMatch: atabus0 at piixide0 channel 0
# NOTE: NoMatch: atabus1 at piixide0 channel 1
# NOTE: NoMatch: scsibus0 at bha2: 16 targets, 8 luns per target
# NOTE: NoMatch: audio0 at eap0: full duplex, mmap, independent
# NOTE: NoMatch: midi0 at eap0: AudioPCI MIDI UART
# NOTE: NoMatch: atapibus0 at atabus1: 2 targets
・自動生成されたファイルの修正
操作:
# コメントアウトされた行を再度追加して有効化する。
# 実際は一度に修正できず、試行錯誤中に後で加えた修正を含む。
# 修正せずにビルドすると、リンクエラーになる。
# config コマンド実行の際の「警告表示(?)」と、
# 実際にビルドを実行して発生したエラーをもとに修正した。
# これでいいかどうかは不明。
echo >> VMWARE
echo '#myuser -->' >> VMWARE
echo 'atabus* at ata?' >> VMWARE
echo 'atapibus* at atapi?' >> VMWARE
echo 'scsibus* at scsi?' >> VMWARE
echo 'audio* at audiobus?' >> VMWARE
echo 'fd* at fdc? drive ?' >> VMWARE
echo '#myuser <--' >> VMWARE
# 確認
tail VMWARE
config VMWARE
結果:
Build directory is ../compile/VMWARE
Don't forget to run "make depend"
・ビルドの実行
操作:
cd ../compile/VMWARE/
make depend && make
結果:
(リンクでエラーが発生した。)
ld -T ../../../../arch/i386/conf/kern.ldscript -Ttext c0100000 -e start -X -o netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
fd.o(.text+0x5ae): In function `fdstrategy':
: undefined reference to `fd_cd'
fd.o(.text+0x5b9): In function `fdstrategy':
: undefined reference to `fd_cd'
fd.o(.text+0xb72): In function `fdopen':
: undefined reference to `fd_cd'
fd.o(.text+0xb7d): In function `fdopen':
: undefined reference to `fd_cd'
fd.o(.text+0xc7d): In function `fdclose':
: undefined reference to `fd_cd'
fd.o(.text+0xc84): more undefined references to `fd_cd' follow
*** Error code 1
Stop.
make: stopped in /usr/src/sys/arch/i386/compile/VMWARE
・設定ファイルの再修正とビルドの実行(リンクエラー対応)
操作:
cd /usr/src/sys/arch/i386/conf
# リンクエラーの原因と思われる部分を修正
echo >> VMWARE
echo '#myuser -->' >> VMWARE
echo 'fd* at fdc? drive ? # the drives themselves' >> VMWARE
echo '#myuser <--' >> VMWARE
# 確認
tail VMWARE
# 時間がないので、make clean を実行してません。
# 問題がないかは不明。
config VMWARE \
&& cd ../compile/VMWARE/ \
&& make depend && make
結果:
ld -T ../../../../arch/i386/conf/kern.ldscript -Ttext c0100000 -e start -X -o netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
text data bss dec hex filename
3304387 76876 224844 3606107 37065b netbsd
・カーネルのインストール
su
cp -i /netbsd /netbsd.old
cp -i netbsd /netbsd.VMWARE
cp netbsd /
# 確認のため再起動
reboot
○カーネルの更新確認(再起動後)
操作:
uname -a
出力:
NetBSD 3.0 NetBSD 3.0 (VMWARE) #1: Sat Dec 31 00:51:30 JST 2005 myuser@:/usr/src/sys/arch/i386/compile/VMWARE i386
○備考
1. 仮想マシンの構成
メモリ 32MB
ハードディスク(IDE 0:0)
ハードディスク(IDE 1:0)
CD-ROM(IDE 1:1)
イーサネット
サウンド
仮想プロセッサ
(フロッピーディスクドライブは なし。)
2. ビルドに時間がかかるため、
adjustkernel の出力結果の調整に手間取った。
○参考
http://www.jp.netbsd.org/guide/en/
○更新履歴
2005/12/30 作成
以上。
NetBSD 3.0 - Recompile a Kernel using adjustkernel More ログイン