FreeBSDによるNetBSD/hpcmipsのクロスコンパイル
FreeBSDによりNetBSD/hpcmipsをクロスコンパイルした時のメモです。
ソースツリーの取得
FreeBSDで、anoncvsからNetBSD-currentのソースツリーを取得します。
$ cvs -d :pserver:anoncvs@anoncvs.netbsd.org/cvsroot login
anoncvs <-- password入力
$ cvs -z5 -d :pserver:anoncvs@anoncvs.netbsd.org/cvsroot co src
備考:以下では、ソースツリーのディレクトリは#{span color_red $TOP/src}と表します。
クロスコンパイラの作成
FreeBSD上に、NetBSD/hpcmipsのクロスコンパイル環境を作成する。
$ cd $TOP/src
$ ./build.sh -m hpcmips -T $TOP/cross tools
コンパイルが終わると以下のメッセージが表示されました。
===> Summary of results:
build.sh command: ./build.sh -m hpcmips -T /export/share/NetBSD-R430/cr
oss tools
build.sh started: Mon May 31 09:24:00 JST 2004
No $TOP/cross/bin/nbmake, needs building.
Bootstrapping nbmake
MACHINE: hpcmips
MACHINE_ARCH: mipsel
TOOLDIR path: $TOP/cross
DESTDIR path: $TOP/src/destdir.hpcmips
RELEASEDIR path: $TOP/src/releasedir
Created $TOP/cross/bin/nbmake
makewrapper: $TOP/cross/bin/nbmake-hpcmips
Updated $TOP/cross/bin/nbmake-hpcmips
Tools built to $TOP/cross
build.sh started: Mon May 31 09:24:00 JST 2004
build.sh ended: Mon May 31 10:36:56 JST 2004
===> .
カーネルコンパイル&インストール
-
カーネルコンパイル とりあえず GENERIC のカーネルをコンパイルする。
$ cd $TOP/src $ ./build.sh -m hpcmips kernel=GENERIC
-
カーネルインストール hpcmipsマシン、私のはNEC MobileGear R430で、母艦マシンのディスクをnfsマウントして、カーネルをインストールする。
-
R430
# mount -t nfs <FreeBSD Machine>:$TOP /mnt # mv /netbsd /oldbsd # mv /mnt/src/sys/arch/hpcmips/compile/GENERIC/netbsd /
-
R430をリブートし、新カーネルでNetBSDを起動する。
-
dmesg
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 2.0F (GENERIC) #0: Mon May 31 11:31:30 JST 2004 jun1@opti.sasaj.com:/usr/src/sys/arch/hpcmips/compile/GENERIC NEC MC-R430 (NEC VR4121 rev1.2 168.521MHz) total memory = 32768 KB avail memory = 28276 KB mainbus0 (root) cpu0 at mainbus0: NEC VR4100 CPU (0xc60) Rev. 6.0 with software emulated floatin g point cpu0: 16KB/16B direct-mapped L1 Instruction cache, 32 TLB entries cpu0: 8KB/16B direct-mapped write-back L1 Data cache vr4102ip0 at mainbus0 vrbcu0 at vr4102ip0 addr 0x0b000000-001f vrbcu0: CPU 168.521MHz, bus 28.086MHz, ram 56.173MHz vrcmu0 at vr4102ip0 addr 0x0b000060-007f vrgiu0 at vr4102ip0 addr 0x0b000100-011f button1 at vrgiu0 port=3 id=13 active=high sense=edge pwctl0 at vrgiu0 port=46 id=0 on=1 pwctl3 at vrgiu0 port=44 id=6 on=1 vrdmaau0 at vr4102ip0 addr 0x0b000020-0037 vrdcu0 at vr4102ip0 addr 0x0b000040-004b vrrtc0 at vr4102ip0 addr 0x0b0000c0-00df vrkiu0 at vr4102ip0 addr 0x0b000180-019f hpckbd0 at vrkiu0 wskbd0 at hpckbd0: console keyboard vrpmu0 at vr4102ip0 addr 0x0b0000a0-00bf vrdsu0 at vr4102ip0 addr 0x0b0000e0-00e7 vrled0 at vr4102ip0 addr 0x0b000240-024f vrpiu0 at vr4102ip0 addr 0x0b000120-013f, 0x0b0002a0-02bf wsmouse0 at vrpiu0 mux 0 mqvideo0 at vr4102ip0 addr 0x0a000000-7fffff: MQ200 Rev.00 video controller, con sole mqvideo0: framebuffer address: 0xaa180100 PLL1: 47.001MHz(0x0e98292a, 12.288MHzx153/ 40) PLL2: 30.021MHz(0x00d60a30, 12.288MHzx215/ 88) PLL3: disable MEM: 30.021MHz(PLL2) GE: 30.021MHz(PLL2) GC1: disable GC2: 18.800MHz(PLL1/2.5/1), FP hpcfb0 at mqvideo0: 640x240 pixels, 65536 colors, 80x24 chars wsdisplay0 at hpcfb0 kbdmux 1: console (std, vt100 emulation), using wskbd0 wsmux1: connecting to wsdisplay0 vrc4172pwm0 at vr4102ip0 addr 0x15003880-3885 vraiu0 at vr4102ip0 addr 0x0b000160-017f audio0 at vraiu0: half duplex vrisab0 at vrgiu0: ISA port 0x14000000-0x18000000 mem 0x10000000-0x14000000 isa0 at vrisab0 pcic0 at isa0 port 0x3e0-0x3e1 iomem 0x70000-0x73fff irq 589827 pcic0: controller 0 (Ricoh RF5C396) has sockets A and B pcmcia0 at pcic0 controller 0 socket 0 pcmcia1 at pcic0 controller 0 socket 1 btnmgr0 at mainbus0 wskbd1 at btnmgr0 mux 1 wskbd1: connecting to wsdisplay0 hpcapm0 at mainbus0: pseudo power management module apmdev0 at hpcapm0: Power Management spec V1.2 pcic0: using irq 589827 for socket events wdc1 at pcmcia0 function 0pcic0: port 0x14000400-0x1400040f atabus0 at wdc1 channel 0 pcmcia0: card irq 3 ne0 at pcmcia1 function 0pcic0: port 0x14000420-0x1400042f pcic0: port 0x14000430-0x1400043f ne0: D-Link DE-660 Ethernet ne0: Ethernet address 00:80:c8:87:11:17 wd0 at atabus0 drive 0: <IBM-DMDM-10340> wd0: drive supports 16-sector PIO transfers, LBA addressing wd0: 342 MB, 695 cyl, 16 head, 63 sec, 512 bytes/sect x 700560 sectors wd1 at atabus0 drive 1: <ST506> wd1: drive supports 1-sector PIO transfers, chs addressing wd1: 69632 KB, 1024 cyl, 8 head, 17 sec, 512 bytes/sect x 139264 sectors boot device: wd0 root on wd0a dumps on wd0b pcmcia0: card irq 3 pcmcia0: card irq 3 pcmcia0: card irq 3 pcmcia0: card irq 3 WARNING: preposterous clock chip time -- CHECK AND RESET THE DATE! root file system type: ffs pcmcia1: card irq 3
ユーザーランドの構築
ユーザーランドを構築する。
$ cd $TOP/src
$ ./build.sh -m hpcmips distribution
もし、ktraceでエラーが出るなら、以下のコマンドを実行し、すでにremoveされたディレクトリを削除してから、上記のコマンドを実行することを進める。
$ cd $TOP/src
$ cvs update -P
コンパイルが終わると以下のメッセージが表示されました。
{{{
===> Summary of results:
build.sh command: ./build.sh -m hpcmips distribution
build.sh started: Mon May 31 17:10:22 JST 2004
No nonexistent/bin/nbmake, needs building.
Bootstrapping nbmake
MACHINE: hpcmips
MACHINE_ARCH: mipsel
TOOLDIR path: $TOP/src/tooldir.FreeBSD-5.2-CURRENT-i386
DESTDIR path: $TOP/src/destdir.hpcmips
RELEASEDIR path: $TOP/src/releasedir
Created $TOP/src/tooldir.FreeBSD-5.2-CURRENT-i386/bin/nbmake
makewrapper: $TOP/src/tooldir.FreeBSD-5.2-CURRENT-i386/bin/nbmake
-hpcmips
Updated $TOP/src/tooldir.FreeBSD-5.2-CURRENT-i386/bin/nbmake-hpcmips
Successful make distribution
build.sh started: Mon May 31 17:10:22 JST 2004
build.sh ended: Tue Jun 1 13:15:15 JST 2004
===> .
ユーザーランドのインストール
FreeBSDのディスクをnfsマウントして、ユーザランドをインストールする。ユーザランドが$TOP/src/destdir.hpcmips/ にインストールされているため、以下のようにインストールする。
# mount -t nfs <FreeBSD Machine>:$TOP /mnt
# cd /
# ( cd /usr/src/destdir.hpcmips; tar cpf - . ) | tar xpvf -
注)これ、止めた方がいいです。/usr/src/destdir.hpcmips以下の容量は約237MBです。ディスク容量に余裕のある方はいいのですが、私のようなディスク容量に余裕がない方は、入らないファイルを削除してから上記コマンドを実行してください。
削除可能なファイルとしては以下の物が考えられます。
{{{
/usr/share/man/ 以下
/usr/share/groff_font/ 以下
/usr/share/tmac/ 以下
/usr/share/examples/ 以下
/usr/share/doc/ 以下
/usr/share/game/ 以下
/usr/share/info/ 以下
/usr/share/sushi/ 以下
/usr/X11R6/ 以下
/usr/game/ 以下
/var/game/ 以下
}}}
以上を削除すると、約169MBになります。
予備として
{{{
/usr/share/i18n/
/usr/share/locale/
/usr/share/zoneinfo/
}}}
/etcのアップグレード
今までの/etc/を別の名前でコピーしておき、新/etc/をコピーする。
忘れずに、rootのパスワードや自分のアカウントを追加する。それと、/etc/fstabを旧/etc/から新/etc/へコピーしておく。これを行っておかないと、正常に起動できなくなる。(#{span color_red 私はこれではまってしまった})
現在の不具合-2004/6/5
-
cshでaliasされているコマンドを使用するとcore dumpする。
r430% alias ll ls -l r430% ll Segmentation fault (core dumped) r430%