NetBSD/hpcmips memo
公式ページには最新の情報があります。
1999-11-11頃のNetBSD-currentからhpcmipsのバイナリを作って遊んでみましょう。
基本的なことは前のを参照してください。
NetBSD/i386-currentの準備
currentのソースは/usr/src以下に配置する。
クロスコンパイル環境の構築
source tree, target root 環境変数設定。
% setenv ORGSRC /usr/src
% setenv TMPSRC /usr/tmpsrc
% setenv TARGET_ROOT /usr/local/hpcmips
currentのpkgsrcを/usrで展開。
% ftp ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz
# tar xzCf /usr pkgsrc.tgz
autoconf bison gpref pkglibtool gmake m4は先にpkgsrcからインストールしておくと良い。
cross-netbsd.tgzを/usr/pkgsrc/crossで展開。
% ftp ftp://www.cec.co.jp/usr/sakamoto/NetBSD/experiment/cross-netbsd.tgz
# tar zxCf /usr/pkgsrc/cross cross-netbsd.tgz
autoconfが/usr/pkg/bin/gm4を読むようにする。
autoconfが動くならは必要ないです。
# (cd /usr/pkg/bin; ln gm4 m4)
# set path=(/sbin /usr/sbin /usr/pkg/bin /bin /usr/bin)
cross-netbsdのインストール。
# mkdir ${TMPSRC}
# mount_union -b ${ORGSRC} ${TMPSRC}
# cd /usr/pkgsrc/cross/cross-netbsd
# make TARGET_MACHINE_ARCH=mipsel TARGET_MACHINE=hpcmips \
ALLSRC=${TMPSRC} TARGET_ROOT=${TARGET_ROOT} install clean clean-depends
# umount ${TMPSRC}; rm -rf ${TMPSRC}
/usr/pkg/mipsel-netbsd/binにpathを通しておくと良いでしょう。
hpcmipsカーネルの作成
カーネル作成。
% cd ${ORGSRC}/sys/arch/hpcmips/conf
% config GENERIC
% cd ../compile/GENERIC
% mipsel-netbsd-make depend all
ユーザーランドの作成
/usr/pkg/mpisel-netbsd/bin/mipsel-netbsd-makeを変更。
*** mipsel-netbsd-make.orig Sat Sep 4 17:23:54 1999
--- mipsel-netbsd-make Tue Sep 7 11:42:23 1999
***************
*** 18,27 ****
AR=${target}-ar ; export AR
NM=${target}-nm ; export NM
SIZE=${target}-size ; export SIZE
! STRIP=${target}-strip ; export STRIP
STRIPFLAGS="--strip-debug" ; export STRIPFLAGS
! STRIPPROG=${target}-strip ; export STRIPPROG
HOSTED_CC=cc ; export HOSTED_CC
--- 18,27 ----
AR=${target}-ar ; export AR
NM=${target}-nm ; export NM
SIZE=${target}-size ; export SIZE
! STRIP=${root}/bin/${target}-strip ; export STRIP
STRIPFLAGS="--strip-debug" ; export STRIPFLAGS
! STRIPPROG=${root}/bin/${target}-strip ; export STRIPPROG
HOSTED_CC=cc ; export HOSTED_CC
先ず、やってみる。
# mipsel-netbsd-make build
.
.
mipsel-netbsd-ld -Bshareable -Bsymbolic -e .trld_start --script /usr/src/libexec/ld.elf_so/arch/mips/ld.so.script -o ld.elf_so rtld_start.o mips_reloc.o .........
/usr/lib/libc_pic.a: could not read symbols: File format not recognized
*** Error code 1
ライブラリのサーチ順がおかしいと推測されるので無理矢理指定する。
/usr/src/libexec/ld.elf_so/arch/mips/ld.so.scriptを変更。
Makefile内で -L フラグが --script の前に来るようにしても良いかもしれない。
diff -c -r1.1.1.1 ld.so.script
*** arch/mips/ld.so.script 1999/09/16 04:44:52 1.1.1.1
--- arch/mips/ld.so.script 1999/11/12 17:49:19
***************
*** 5,10 ****
--- 5,11 ----
"elf32-littlemips")
OUTPUT_ARCH(mips)
ENTRY(_start)
+ SEARCH_DIR(/usr/local/hpcmips/usr/lib);
SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/mips-dec-netbsd/lib);
/* Do we need any of these for elf?
__DYNAMIC = 0; */
# mipsel-netbsd-make build
.
.
(cd ../usr.sbin/sendmail/cf/cf; make distribution)
install -c -o root -g wheel -m 444 netbsd-proto.cf /usr/local/hpcmips/etc/sendmail.cf
/usr/local/hpcmips/usr/libexec/sendmail/sendmail -C /usr/local/hpcmips/etc/sendmail.cf -O AliasFile=/usr/local/hpmcips/etc/aliases -bi
Segmentation fault
*** Error code 139
iyoda-www@atikoro.org
$Date: 2004/06/03 22:10:43 $