パスワードを忘れた? アカウント作成
544894 journal

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 作成

以上。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...