2007年9月2日(日)

玄箱NetBSD 順番問題

いい加減玄箱を実運用したいんだが、とりあえず home や src tree なんかは lfs にしたい

  1. LFS の HOME が欲しい
  2. その為にはkernel rebuild
  3. ツリーを取ってきてパッチ当てる
  4. commit したいが root でできない。 cvs の糞ー
    (http://www.bookshelf.jp/texi/cvs-ja/cvs-ja_21.html の 'root' is not allowed to commit files)
  5. 一般アカウントの home 用の /home をマウントするために lfs kernel がいる
  6. ついでに screen もできない (kernel rebuild 必要)
    (http://www.ki.nu/~makoto/diary/2007/06/09/#200706091 の No more PTYs. Sorry, could not find a PTY. 問題)
  7. とりあえず kernel だけ作るか
  8. config(9) がいる……

build.sh tools しろと?
……だ・か・ら、 build すんのに /usr/obj を lfs に置きたくって lfs kernel がいるっつーのにっ!!!
これで toolchain 全部作ってたらいつまでかかんだよ……

ついでに、 build にえらい時間がかかるから screen 上で build 始めて切り離せないと PC 切り離せない…。けど、 screen 使うには kernel rebuild が……

しょうがないので toolchain 作らせると

out of memory allocating 250000 bytes after a total of 134119020 bytes

なんかbugってるだろorz

手でconfigだけ作ってみたが

/home2/src_local/sys/dev/pci/files.pci:894: attaching undefined device `genfb'

結局真面目にソースの merge しないと駄目か…

disksubr.c
bp->b_data を (__caddr_t)にキャスト
sys/sys/systm.h
MULTIPROCESSOR でなければ kernel_lock, kernel_unlock はなにもなし
extintr.c
sys/arch/powerpc/include/openpic.h
削除された分を復活
sys/arch/evbppc/kurobox/kurobox_intr.h
IPL_SCHED を勝手に1で追加。 以下を追加
typedef int ipl_t;
typedef struct {
       ipl_t _ipl;
} ipl_cookie_t;
static inline ipl_cookie_t
makeiplcookie(ipl_t ipl)
{
       return (ipl_cookie_t){._ipl = ipl};
}
int splraise(int);
extern int imask[];
static inline int
splraiseipl(ipl_cookie_t icookie)
{
       return splraise(imask[icookie._ipl]);
}

だからっ!真面目に merge 作業する前に、作業用に新 kernel 作りたいのにっっっ

ld まで辿りついたが…

disksubr.o: In function `bounds_check_with_label':
disksubr.c:(.text+0x0): multiple definition of `bounds_check_with_label'
subr_disk.o:subr_disk.c:(.text+0x118): first defined here

evbppc/kurobox/disksubr.c と kern/subr_disk.c か…どっちを取るかな〜 おおざっぱには同じなので、とりあえず kern の方をコロしてみる

……案の定起動しない kernel になったorz

[referer: [an error occurred while processing this directive]]

あわせて読みたい