カーネルをコンパイルする


Pages in English

第二に、カーネルをコンパイルすることに挑戦した。 (コンパイルだけ、実行はしない。)

  1. ftp.iij.ad.jpの NetBSD-currentからカーネルのソース"sys.tar.gz"と"config"の ソースをftpした。 [96年2月 & 3月]
  2. そのファイルを適切なディレクトリ(私の場合は/usr/src/)に 展開し、
    cd /usr/src/sys/arch/mac68k/conf
    config GENERIC
    
    を実行した。 リンクする部分をコメントアウトしたので、
    cd /usr/src/sys/arch/mac68k/compile/GENERIC
    cp -r /usr/src/sys/arch/mac68k/include .
    mv include machine
    cp -r /usr/src/sys/arch/m68k/include .
    mv include m68k
    
    を実行した。
  3. Makefile(/usr/src/sys/arch/mac68/compile/GENERICの中)に少し手を加えた。 "genassym"はMacMiNTの下で動かなければいけないので、その部分を 下のように変えた。
    genassym: genassym.o
    	env GNULIB=/r/DUO230/MiNTSys/usr/lib \
    	GCCEXEC=/r/DUO230/MiNTSys/usr/bin/gcc- \
    	gcc -o $@ genassym.o
    
    genassym.o: ${MAC68K}/mac68k/genassym.c
    	env GCCEXEC=/r/DUO230/MiNTSys/usr/bin/gcc- \
    	gcc ${CPPFLAGS} ${PROF} ${PARAM} -c $<
    
    そして、genassym.cの中のprintfの"%p"を"0x%x"に置き換えた。 また、Makefileの中の、"SYSTEM_LD_TAIL"をコメントアウトした。 "size""strip" をコンパイルしなかったからである。
  4. それから、"make depend"を実行した。 2、3時間かかったのち、".depend"と言うファイルができた。
  5. kern libraryを作る時に問題があった。 何故か、Makefile(/usr/src/sys/lib/libkernのなか)の".PATH"が うまく動作しなかった。解決として、ソースファイルを ワーキングディレクトリにコピーした。 2回以上"make"を実行する時にもう一つ問題が起こった。 "mkdir"というコマンドが"file not found"というエラーで 異常終了してしまった。異常終了を避けるため、 Makefile.inc(/usr/src/sys/lib/libkernの中)を下のように変えた。
    __always_make_kernlib:	.NOTMAIN
    	@mkdir -p ${KERNDST} || true
    
    これらの問題は、compat libraryを作る時にも起こった。 同じようにして、それを直した。
  6. 最後に、"make"を実行した。コンパイルの完了まで、 3、4時間待たなければならなかった。 その後、はい、 "netbsd"と言うファイルができた。それは、約680Kバイトだった。 [96年3月]

NetBSD/mac68kのカーネルの再構築に関するドキュメントが ここ(puma)にある。