NetBSD/hpcmips with Mobile Gear II (MC/R450, MC/R300)

参照回数 []

いまさらな感じもしますが(^^;、Mobile Gear II(MC/R450)に NetBSD/hpcmipsをインストールして、システム手帳代わりに利用しております。 あくまでも備忘録ですが、御役に立てればと思います。


部材調達(ヤフオクにて)

2004/02/27 NEC Mobile Gear II MC/R450 25,000円
2004/03/02 コンパクトフラッシュ(ハギワラシスコム)HPC-CF1GV(1GB) 21,480円
2004/09/24 コンパクトフラッシュ(トランセンド)TS2GCF45(2GB)(現在) 20,500円
2004/03/06 増設RAM(16MB) MC/MB4 11,500円
2004/03/10 コレガ PCMCIA Ether II PCC-T 200円
2006/03/10 MobileGearII for DoCoMo 8,250円
2006/04/15 NEC Mobile Gear II MC/R300 12,700円

インストール(NetBSD/hpcmips 1.6.2)

参考URL

NetBSD/hpcmips
Japan NetBSD Users' Group Mailing-list Archive
Index of port-hpcmips
NECインフロンティア[商品情報]

お仲間URL

HowTo Install Linux-VR on MobileGear-II
株式会社アックス◆式神◆
Jun Sun の Linux MIPS 移植指南
Main Page - LinuxMIPS

ポイント

以上でインストール完了

種々のTIPS


NetBSDのロケール(locale)に関して

$ cat >localetest.c <<_EOF_
#include <stdio.h>
#include <locale.h>
main()
{
        if (setlocale(LC_ALL, "") == NULL){
                fprintf(stderr, "== setlocale error ==\n");
                exit(1);
        }

        printf("setlocale LC_ALL = (%-s)\n", setlocale(LC_ALL, NULL));
}
_EOF_
$ cc -o localetest localetest.c
$ LC_ALL=ja_JP.eucJP ./localetest
setlocale LC_ALL = (C/C/C/C/C/ja_JP.eucJP)
$ LC_ALL=C ./localetest
setlocale LC_ALL = (C)
...というように、LC_ALL=ja_JP.eucJP時のsetlocaleの戻り値が「C/C/C/C/C/ja_JP.eucJP」と いうふうになってます。ちなみに、Linux(glibc-2.3.2)では「ja_JP.eucJP」が返ります。 で、googleで検索してみると こんな情報がありました。ようはNetBSDのlocaleの仕様なんですが、対応できてない アプリケーションがいっぱあるような気が...。

(追記)と、上記でNetBSDのsetlocaleの仕様がおかしいように書いたのですが、Linuxでも、

$ unset LC_ALL
$ unset LANG
$ LC_CTYPE=ja_JP.eucjp; export LC_CTYPE
$ ./localetest
setlocale LC_ALL = (LC_CTYPE=ja_JP.eucjp;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C)
みたいに返ってきました。ようは、すべての「LC_ほにゃらら」が同じ設定でなければ、 内容を列挙した形で(NetBSDとLinuxではびみょーにフォーマットが違いますが...)返される のが仕様のようです。で、NetBSD-1.6.2の場合はLC_ALLでlocaleを設定しても、全て同じに 設定出来ない(LC_MESSAGESのみOK)ので、列挙されて返ると...いうことのようです。

ですので、setlocale(LC_ALL, NULL)の戻り値が「ja_JP.eucJP」を期待するようなアプリケーションは 注意が必要です。


カーネル再構築

SystemV IPCの機能を有効にする為にカーネル再構築を行う


com0ポートを認識させる


NetBSD/hpcmips 2.0で報告された割り込み周りのバグパッチを1.6.2に適用させる

Re: trouble installing NetBSD 2.0 on NEC MobilePro 780@port-hpcmipsで紹介されて いるパッチ(hpcmips.diff)をそのまま1.6.2に当てると2箇所でリジェクトされるので、 それらについては手パッチを当てる(1.6.2用に作り直したパッチ-> hpcmips-1.6.2.diff)。

カーネル再構築は上記を参照してください。


X Window Systemにロケールを組み込む

NetBSD 1.6.2はlibcのlocale機能が有効なはずなのですが、hpcmipsでは 不完全 みたいなので、XhpcをX_LOCALE付きでビルドしなおす。

(追記)アプリケーションでの、setlocale(LC_ALL, NULL)の戻り値を「ja_JP.eucJP」決め打ちに してよければ、libcのロケールを使っても、なんとかなるかもしれない...。


仮想コンソールの利用


各種設定ファイル

/etc/rc.conf

# Add local overrides below
#
hostname=mcr450
defaultroute="192.168.0.100"
sshd=YES                sshd_flags=""
lpd=YES                 lpd_flags="-s"          # -s "secure" unix domain only
rpcbind=YES             rpcbind_flags="-l"      # -l logs libwrap
mountd=YES              mountd_flags=""         # NFS mount requests daemon 
nfs_client=YES                                  # enable client daemons
nfs_server=YES                                  # enable server daemons
                        nfsd_flags="-6tun 4"
wscons=YES              wscons_flags=""         # setup wscons from wscons.conf

/etc/ifconfig.ne0

up
192.168.0.45 netmask 0xffffff00

/etc/resolv.conf

nameserver 192.168.0.100
search artie.or.jp

/etc/printcap

lp|remote printer in home:\
	:lp:\
	:rm=192.168.0.1:\
	:rp=lp:\
	:sd=/var/spool/output/lph:\
	:lf=/var/spool/output/lph/log:

/etc/ld.so.conf

/usr/local/lib
/usr/local/netpbm/lib
/usr/lib
/usr/X11R6/lib

/etc/sudoers

# User privilege specification
root ALL=(ALL) ALL
m-ito ALL=NOPASSWD: /sbin/mount /mnt/cf,/sbin/umount /mnt/cf,/etc/rc.d/network start,/etc/rc.d/network stop

/etc/exports

/ -ro -maproot=root -network 192.168.0.0 -mask 255.255.255.0

/etc/fstab

/dev/wd0a / ffs rw,softdep,noatime,nodevmtime 1 1
/dev/wd0b none swap sw 0 0
/dev/wd1e /mnt/cf msdos rw,noauto 0 0

~/.Xmodmap

keycode  11 = 2 quotedbl
keycode  15 = 6 ampersand
keycode  16 = 7 apostrophe
keycode  17 = 8 parenleft
keycode  18 = 9 parenright
keycode  19 = 0 
keycode  20 = minus equal
keycode  21 = asciicircum asciitilde
keycode  34 = at grave
keycode  35 = bracketleft  braceleft
keycode  47 = semicolon plus
keycode  48 = colon asterisk
keycode  49 = 
keycode  51 = bracketright  braceright
keycode 123 = backslash underscore
keycode 133 = backslash bar
!!
!! Swap Caps_Lock and Control_L
!!
!remove Lock = Caps_Lock
!remove Control = Control_L
!keysym Control_L = Caps_Lock
!keysym Caps_Lock = Control_L
!add Lock = Caps_Lock
!add Control = Control_L

~/.Xresources

!
! < xterm >
!
XTerm*ScrollBar:	on
XTerm*SaveLines:	400
*XTerm*ttyModes:	intr ^C	erase ^? kill ^U
XTerm*termName:		xterm
XTerm*font:		s5x8
XTerm*background:	#ffffed
!
! < kterm-6.2.0 >
!
KTerm*ScrollBar:	on
KTerm*SaveLines:	400
*KTerm*ttyModes:	intr ^C	erase ^? kill ^U
KTerm*termName:		kterm
KTerm*font:             s5x8
KTerm*boldFont:         s5x8
KTerm*romanKanaFont:    s5x8
KTerm*romanKanaBoldFont:        s5x8
KTerm*kanjiFont:        elisa
KTerm*kanjiBoldFont:    elisa
KTerm*VT100*translations:	#override	Ctrl<Key>O:	begin-conversion(_JAPANESE_CONVERSION)
KTerm*allowSendEvents:	true
KTerm*KanjiMode:	euc
KTerm*background:	#ffffed
!
! < kinput2 >
!
Kinput2*sendbackKeyPress:	true
!
! < tk8.0.5jp >
!
*tkKanjiConversionProtocol:	kinput2
*tkKinputStartKeys:		<Control-o>
*tkKinputStyle(Text):		over
*tkKinputStyle(Entry):		over

ソースからインストール

8hz-mp3_v02b_win3204j.tar.gz

Canna35b2.tar.gz

ImageMagick-5.3.7.tar.gz

make clean
CPPFLAGS=-I/usr/local/include/libpng ./configure --enable-shared
make
make install

bash-2.05b.tar.gz

-- パッチ ここから --
*** configure.ORG	Fri Mar  5 09:30:37 2004
--- configure	Fri Mar  5 07:58:32 2004
***************
*** 7477,7529 ****
      fi
  fi
  
! for ac_header in wctype.h
! do
! as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
! echo "$as_me:7483: checking for $ac_header" >&5
! echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
! if eval "test \"\${$as_ac_Header+set}\" = set"; then
!   echo $ECHO_N "(cached) $ECHO_C" >&6
! else
!   cat >conftest.$ac_ext <<_ACEOF
! #line 7489 "configure"
! #include "confdefs.h"
! #include <$ac_header>
! _ACEOF
! if { (eval echo "$as_me:7493: \"$ac_cpp conftest.$ac_ext\"") >&5
!   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
!   ac_status=$?
!   egrep -v '^ *\+' conftest.er1 >conftest.err
!   rm -f conftest.er1
!   cat conftest.err >&5
!   echo "$as_me:7499: \$? = $ac_status" >&5
!   (exit $ac_status); } >/dev/null; then
!   if test -s conftest.err; then
!     ac_cpp_err=$ac_c_preproc_warn_flag
!   else
!     ac_cpp_err=
!   fi
! else
!   ac_cpp_err=yes
! fi
! if test -z "$ac_cpp_err"; then
!   eval "$as_ac_Header=yes"
! else
!   echo "$as_me: failed program was:" >&5
!   cat conftest.$ac_ext >&5
!   eval "$as_ac_Header=no"
! fi
! rm -f conftest.err conftest.$ac_ext
! fi
! echo "$as_me:7518: result: `eval echo '${'$as_ac_Header'}'`" >&5
! echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
! if test `eval echo '${'$as_ac_Header'}'` = yes; then
!   cat >>confdefs.h <<EOF
! #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
! EOF
! 
! fi
! done
  
  for ac_header in wchar.h
  do
--- 7477,7529 ----
      fi
  fi
  
! #DEL_for ac_header in wctype.h
! #DEL_do
! #DEL_as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
! #DEL_echo "$as_me:7483: checking for $ac_header" >&5
! #DEL_echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
! #DEL_if eval "test \"\${$as_ac_Header+set}\" = set"; then
! #DEL_  echo $ECHO_N "(cached) $ECHO_C" >&6
! #DEL_else
! #DEL_  cat >conftest.$ac_ext <<_ACEOF
! #DEL_#line 7489 "configure"
! #DEL_#include "confdefs.h"
! #DEL_#include <$ac_header>
! #DEL__ACEOF
! #DEL_if { (eval echo "$as_me:7493: \"$ac_cpp conftest.$ac_ext\"") >&5
! #DEL_  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
! #DEL_  ac_status=$?
! #DEL_  egrep -v '^ *\+' conftest.er1 >conftest.err
! #DEL_  rm -f conftest.er1
! #DEL_  cat conftest.err >&5
! #DEL_  echo "$as_me:7499: \$? = $ac_status" >&5
! #DEL_  (exit $ac_status); } >/dev/null; then
! #DEL_  if test -s conftest.err; then
! #DEL_    ac_cpp_err=$ac_c_preproc_warn_flag
! #DEL_  else
! #DEL_    ac_cpp_err=
! #DEL_  fi
! #DEL_else
! #DEL_  ac_cpp_err=yes
! #DEL_fi
! #DEL_if test -z "$ac_cpp_err"; then
! #DEL_  eval "$as_ac_Header=yes"
! #DEL_else
! #DEL_  echo "$as_me: failed program was:" >&5
! #DEL_  cat conftest.$ac_ext >&5
! #DEL_  eval "$as_ac_Header=no"
! #DEL_fi
! #DEL_rm -f conftest.err conftest.$ac_ext
! #DEL_fi
! #DEL_echo "$as_me:7518: result: `eval echo '${'$as_ac_Header'}'`" >&5
! #DEL_echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
! #DEL_if test `eval echo '${'$as_ac_Header'}'` = yes; then
! #DEL_  cat >>confdefs.h <<EOF
! #DEL_#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
! #DEL_EOF
! #DEL_
! #DEL_fi
! #DEL_done
  
  for ac_header in wchar.h
  do
-- パッチ ここまで --
./configure
make
make install

bison-1.875.tar.gz

canfep-1.0.tar.gz

-- パッチ ここから --
*** Makefile.ORG	Fri Apr 28 00:17:22 2006
--- Makefile	Mon May  1 16:11:10 2006
***************
*** 1,7 ****
  # Linux
  CC=c++
  LIBS=-lcanna -ltermcap
! CFLAGS=-O2 -g
  
  # Solaris 2.6J
  #CC=c++
--- 1,7 ----
  # Linux
  CC=c++
  LIBS=-lcanna -ltermcap
! CFLAGS=-O2 -g -I/usr/local/canna/include
  
  # Solaris 2.6J
  #CC=c++
*** pty.C.ORG	Thu Apr 27 23:58:38 2006
--- pty.C	Mon May  1 16:17:17 2006
***************
*** 11,16 ****
--- 11,19 ----
  char Pty::endstr[] = "";
  char Pty::endmsg[] = "";
  
+ static char nullstr[] = "";
+ static char *Tgetstr(char *id, char **area);
+ 
  // コンストラクタだよん
  Pty::Pty(int ac, char** av, char* amsg, char* emsg)
  {
***************
*** 30,54 ****
      char* pt = funcstr;
  
      // スタンドアウト (反転)
!     so = tgetstr("so", &pt);
      adjstr(so);
!     se = tgetstr("se", &pt);
      adjstr(se);
  
      // アンダーライン (下線)
!     us = tgetstr("us", &pt);
      adjstr(us);
!     ue = tgetstr("ue", &pt);
      adjstr(ue);
  
      // カーソル位置の保存,保存した位置への復帰
!     sc = tgetstr("sc", &pt);
      adjstr(sc);
!     rc = tgetstr("rc", &pt);
      adjstr(rc);
  
      // カーソル位置から行の最後までを削除する
!     ce = tgetstr("ce", &pt);
      adjstr(ce);
  
      // ステータスラインを持っているかどうか
--- 33,57 ----
      char* pt = funcstr;
  
      // スタンドアウト (反転)
!     so = Tgetstr("so", &pt);
      adjstr(so);
!     se = Tgetstr("se", &pt);
      adjstr(se);
  
      // アンダーライン (下線)
!     us = Tgetstr("us", &pt);
      adjstr(us);
!     ue = Tgetstr("ue", &pt);
      adjstr(ue);
  
      // カーソル位置の保存,保存した位置への復帰
!     sc = Tgetstr("sc", &pt);
      adjstr(sc);
!     rc = Tgetstr("rc", &pt);
      adjstr(rc);
  
      // カーソル位置から行の最後までを削除する
!     ce = Tgetstr("ce", &pt);
      adjstr(ce);
  
      // ステータスラインを持っているかどうか
***************
*** 62,72 ****
  
      // ステータスラインへ移動,戻る
      if (hs) {
!         ts = tgoto(tgetstr("ts", &pt), 0, 0);
          adjstr(ts);
!         fs = tgetstr("fs", &pt);
          adjstr(fs);
!         ds = tgetstr("ds", &pt);
          adjstr(ds);
          if (ds) {
              strcat(endstr, ds);
--- 65,75 ----
  
      // ステータスラインへ移動,戻る
      if (hs) {
!         ts = tgoto(Tgetstr("ts", &pt), 0, 0);
          adjstr(ts);
!         fs = Tgetstr("fs", &pt);
          adjstr(fs);
!         ds = Tgetstr("ds", &pt);
          adjstr(ds);
          if (ds) {
              strcat(endstr, ds);
***************
*** 74,98 ****
          }
      }
      else {
!         char* cs = tgoto(tgetstr("cs", &pt), tgetnum("li") - 2, 0);
          adjstr(cs);
          if (cs) {
              write(1, ce, strlen(ce));
              write(1, cs, strlen(cs));
          }
!         char* cl = tgetstr("cl", &pt);
          adjstr(cl);
          if (cl) {
              write(1, cl, strlen(cl));
              strcat(endstr, cl);
          }
!         ds = tgoto(tgetstr("cs", &pt), tgetnum("li") - 1, 0);
          adjstr(ds);
          if (ds) {
              strcat(endstr, ds);
              strcat(endstr, ce);
          }
!         ts = tgoto(tgetstr("cm", &pt), 0, tgetnum("li") - 1);
          adjstr(ts);
          fs = rc;
      }
--- 77,101 ----
          }
      }
      else {
!         char* cs = tgoto(Tgetstr("cs", &pt), tgetnum("li") - 2, 0);
          adjstr(cs);
          if (cs) {
              write(1, ce, strlen(ce));
              write(1, cs, strlen(cs));
          }
!         char* cl = Tgetstr("cl", &pt);
          adjstr(cl);
          if (cl) {
              write(1, cl, strlen(cl));
              strcat(endstr, cl);
          }
!         ds = tgoto(Tgetstr("cs", &pt), tgetnum("li") - 1, 0);
          adjstr(ds);
          if (ds) {
              strcat(endstr, ds);
              strcat(endstr, ce);
          }
!         ts = tgoto(Tgetstr("cm", &pt), 0, tgetnum("li") - 1);
          adjstr(ts);
          fs = rc;
      }
***************
*** 133,138 ****
--- 136,149 ----
              fail();
          }
          if (child) {
+ #if defined(__NetBSD__)
+ //
+ // 起動してもなぜか直に終了してしまう原因はexecしたshellが
+ // 起動しきる前に、その疑似端末のマスタ側を読み込もうとし
+ // ていたかららしい。
+ //
+             sleep(1);
+ #endif
              close(0);
              int cc;
              int ret;
***************
*** 165,170 ****
--- 176,190 ----
          dup2(slave, 1);
          dup2(slave, 2);
          close(slave);
+ #if defined(__NetBSD__)
+ //
+ // CTRL-C(SIGINT)等のシグナルが効かなかった原因は、疑似端末の
+ // スレーブが制御端末として設定できていなかったかららしい。
+ //
+ // stdin(=疑似端末のスレーブ)を制御端末とする
+ //
+         ioctl(0, TIOCSCTTY, 0);
+ #endif
          if (ac > 1)
              execvp(av[1], &av[1]);
          else
***************
*** 334,358 ****
          tgetent(buff, term);
          char funcstr[BUFSIZ];
          char* pt = funcstr;
!         char* cs = tgoto(tgetstr("cs", &pt), tgetnum("li") - 2, 0);
          adjstr(cs);
          if (cs) {
              write(1, ce, strlen(ce));
              write(1, cs, strlen(cs));
          }
!         char* cl = tgetstr("cl", &pt);
          adjstr(cl);
          if (cl) {
              write(1, cl, strlen(cl));
              strcpy(endstr, cl);
          }
!         ds = tgoto(tgetstr("cs", &pt), tgetnum("li") - 1, 0);
          adjstr(ds);
          if (ds) {
              strcat(endstr, ds);
              strcat(endstr, ce);
          }
!         ts = tgoto(tgetstr("cm", &pt), 0, tgetnum("li") - 1);
          adjstr(ts);
      }
  
--- 354,378 ----
          tgetent(buff, term);
          char funcstr[BUFSIZ];
          char* pt = funcstr;
!         char* cs = tgoto(Tgetstr("cs", &pt), tgetnum("li") - 2, 0);
          adjstr(cs);
          if (cs) {
              write(1, ce, strlen(ce));
              write(1, cs, strlen(cs));
          }
!         char* cl = Tgetstr("cl", &pt);
          adjstr(cl);
          if (cl) {
              write(1, cl, strlen(cl));
              strcpy(endstr, cl);
          }
!         ds = tgoto(Tgetstr("cs", &pt), tgetnum("li") - 1, 0);
          adjstr(ds);
          if (ds) {
              strcat(endstr, ds);
              strcat(endstr, ce);
          }
!         ts = tgoto(Tgetstr("cm", &pt), 0, tgetnum("li") - 1);
          adjstr(ts);
      }
  
***************
*** 364,367 ****
--- 384,402 ----
      ioctl(wfd, TIOCSWINSZ, (char*) &win);
  
      signal(SIGWINCH, (SIG_PF) winchange);
+ }
+ 
+ //
+ // termcapエントリが貧弱な場合core dumpするのを防ぐ為のtgetstr代替
+ //
+ static char *Tgetstr(char *id, char **area)
+ {
+     static char *str;
+ 
+     str = tgetstr(id, area);
+     if (str == (char *)NULL){
+         return(nullstr);
+     }else{
+         return(str);
+     }
  }
*** pty.H.ORG	Fri Apr 28 00:16:03 2006
--- pty.H	Mon May  1 16:11:10 2006
***************
*** 15,21 ****
  #include <sys/file.h>
  #include <sys/signal.h>
  #include <sys/wait.h>
! #if defined(sun)
  #include <curses.h>
  #else
  #include <term.h>
--- 15,21 ----
  #include <sys/file.h>
  #include <sys/signal.h>
  #include <sys/wait.h>
! #if defined(sun) || defined(__NetBSD__)
  #include <curses.h>
  #else
  #include <term.h>
-- パッチ ここまで --
make
cp canfep /usr/local/bin/

elisau10.tgz

emacs-21.3.tar.gz

-- パッチ ここから --
*** ./src/Makefile.in.ORG       Sat Mar 27 12:09:14 2004
--- ./src/Makefile.in   Sat Mar 27 12:09:14 2004
***************
*** 116,122 ****
  /* Some machines don't find the standard C libraries in the usual place.  */
  #ifndef ORDINARY_LINK
  #ifndef LIB_STANDARD
! #define LIB_STANDARD -lc
  #endif
  #else
  #ifndef LIB_STANDARD
--- 116,123 ----
  /* Some machines don't find the standard C libraries in the usual place.  */
  #ifndef ORDINARY_LINK
  #ifndef LIB_STANDARD
! /* #define LIB_STANDARD -lc */
! #define LIB_STANDARD -lc /usr/lib/crtend.o
  #endif
  #else
  #ifndef LIB_STANDARD
***************
*** 221,227 ****
  #ifdef COFF_ENCAPSULATE
  #define START_FILES pre-crt0.o /usr/local/lib/gcc-crt0.o
  #else /* ! defined (COFF_ENCAPSULATE) */
! #define START_FILES pre-crt0.o /lib/crt0.o
  #endif /* ! defined (COFF_ENCAPSULATE) */
  #else /* ! defined (NO_REMAP) */
  #define START_FILES ecrt0.o
--- 222,229 ----
  #ifdef COFF_ENCAPSULATE
  #define START_FILES pre-crt0.o /usr/local/lib/gcc-crt0.o
  #else /* ! defined (COFF_ENCAPSULATE) */
! /* #define START_FILES pre-crt0.o /lib/crt0.o */
! #define START_FILES pre-crt0.o /usr/lib/crt0.o /usr/lib/crtbegin.o
  #endif /* ! defined (COFF_ENCAPSULATE) */
  #else /* ! defined (NO_REMAP) */
  #define START_FILES ecrt0.o
-- パッチ ここまで --

font10.tar.gz

fvwm-1.24r.i18n-jp.tar.gz

gs7.05.tar.gz

imlib-1.9.14.tar.gz

CC="gcc -I/usr/local/include -I/usr/local/include/libpng" LDFLAGS=-L/usr/local/lib ./configure
make
make install

jless-358.tar.gz

INSTALL=/usr/bin/install ./configure
make
make install

jpegsrc.v6b.tar.gz

-- パッチ ここから --
*** config.guess.ORG	Wed Mar 10 06:24:00 2004
--- config.guess	Wed Mar 10 05:52:43 2004
***************
*** 121,126 ****
--- 121,129 ----
      hkmips:OpenBSD:*:*)
  	echo mips-unknown-openbsd${UNAME_RELEASE}
  	exit 0 ;;
+     hpcmips:NetBSD:*:*)
+ 	echo mips-unknown-openbsd${UNAME_RELEASE}
+ 	exit 0 ;;
      pmax:OpenBSD:*:*)
  	echo mipsel-unknown-openbsd${UNAME_RELEASE}
  	exit 0 ;;
-- パッチ ここまで --
./configure --enable-shared --enable-static
make
make install

jvim-3.0.tar.gz

kinput2-v3.tar.gz

kterm-6.2.0.tar.gz

libiconv-1.9.1.tar.gz

libpng-1.2.5.tar.gz

libungif-4.1.1.tar.gz

lv4494.tar.gz

libid3tag-0.15.1b.tar.gz

libmad-0.15.1b.tar.gz

m4-1.4.1.tar.gz

madplay-0.15.2b.tar.gz

LDFLAGS=-L/usr/local/lib ./configure
make
make install
madplay -R 8000 foo.mp3

make-3.80.ttar.gz

mpg123-0.59r.tar.gz

netpbm-10.18.9.tgz

ng-1.4.3.tar.gz

nkf19.tar.gz

oleo-1.99.16.tar.gz

-- パッチ ここから --
*** ./src/io-curses.c.ORG       Mon Nov 29 12:21:38 2004
--- ./src/io-curses.c   Mon Nov 29 10:19:29 2004
***************
*** 58,64 ****
--- 58,68 ----
  #include "key.h"
  #include "input.h"
  #include "info.h"
+ #if defined(__NetBSD__)
+ #include <curses.h>
+ #else
  #include <term.h>
+ #endif
  
  #define MIN_WIN_HEIGHT        (cwin->flags&WIN_EDGES ? 2 : 1)
  #define MIN_WIN_WIDTH (cwin->flags&WIN_EDGES ? 6 : 1)
***************
*** 387,393 ****
--- 391,401 ----
    io_init_windows (LINES, COLS, 1, 2, 1, 1, 1, 1);
    // io_init_windows (Global->scr_lines, Global->scr_cols, 1, 2, 1, 1, 1, 1);
    info_rows = 1;
+ #if defined(__NetBSD__)
+   print_width = COLS;         /* Make ascii print width == terminal width. */
+ #else
    print_width = columns;              /* Make ascii print width == terminal width. */
+ #endif
  }
  
  void
***************
*** 705,711 ****
--- 713,723 ----
      return;
    getyx (stdscr, yy, xx);
    move (Global->status, 0);
+ #if defined(__NetBSD__)
+   wid = COLS - 2;
+ #else
    wid = columns - 2;
+ #endif
    
    if (mkrow != NON_ROW)
      {
-- パッチ ここまで --
./configure
make
make install

perl5.005_03.tar.gz

screen-3.9.15.tar.gz

./configure --prefix=/usr/local
make
make install

sed-4.0.9.tar.gz

sox-12.17.4.tar.gz

-- パッチ ここから --
*** sunaudio.c.ORG	Fri Mar 19 10:42:01 2004
--- sunaudio.c	Fri Mar 19 10:39:00 2004
***************
*** 31,37 ****
--- 31,39 ----
  #ifdef HAVE_ERRNO_H
  #include <errno.h>
  #endif
+ #ifndef __NetBSD__
  #include <stropts.h>
+ #endif
  #include <malloc.h>
  #include <unistd.h>
  #include <stdlib.h>
***************
*** 170,176 ****
--- 172,182 ----
          return(ST_EOF);
      }
      /* Flush any data in the buffers - its probably in the wrong format */
+ #ifdef __NetBSD__
+     ioctl(fileno(ft->fp), AUDIO_FLUSH, 0);
+ #else
      ioctl(fileno(ft->fp), I_FLUSH, FLUSHR);
+ #endif
      /* Change to non-buffered I/O*/
      setvbuf(ft->fp, NULL, _IONBF, sizeof(char) * ft->file.size);
      sigintreg(ft);      /* Prepare to catch SIGINT */
-- パッチ ここまで --
./configure
make
make install

sudo-1.6.7p5.tar.gz

tcl8.0.5jp.tar.gz

tk8.0.5jp.tar.gz

tiff-v3.6.1.tar.gz

tpctl

-- パッチ ここから --
*** tpctl.h.ORG	Sat Apr  3 17:18:04 2004
--- tpctl.h	Sat Apr  3 17:17:48 2004
***************
*** 29,34 ****
--- 29,44 ----
   * POSSIBILITY OF SUCH DAMAGE.
   */
  
+ /* get device id for calibration */
+ #define       WSMOUSE_ID_TYPE_UIDSTR  0
+ #define       WSMOUSE_ID_MAXLEN       256
+ #define       WSMOUSEIO_GETID         _IOWR('W', 38, struct wsmouse_id)
+ struct wsmouse_id {
+       u_int type;
+       u_int length;
+       u_char data[WSMOUSE_ID_MAXLEN];
+ };
+ 
  #ifndef __TPCTL_H__
  #define __TPCTL_H__
  
-- パッチ ここまで --
/usr/bin/make
cp tpctl /usr/local/sbin/
cp tpctl.8 /usr/local/man/man8/

w3m-0.4.1.tar.gz

wv-0.7.1.tar.gz

xlhtml.0.5.1.tgz

xlockmore-5.11.1.tar.bz2

xpaint-2.6.1.tar.gz

-- パッチ ここから --
*** rw/rwTable.c.ORG	Sun Mar  7 20:26:46 2004
--- rw/rwTable.c	Sun Mar  7 20:38:07 2004
***************
*** 232,238 ****
--- 232,240 ----
  RWGetMsg()
  {
  #if defined(BSD4_4)
+  #if !defined(__NetBSD__)
      __const extern char *__const sys_errlist[];
+  #endif
  #else
  #ifndef __GLIBC__
  #ifndef SYS_ERRLIST_DEFINED
*** misc.h.ORG	Sun Mar  7 20:06:21 2004
--- misc.h	Sun Mar  7 20:08:06 2004
***************
*** 23,29 ****
  long random(void);
  #endif
  
! #if !defined(linux) & !defined(__EMX__) & !defined(__FreeBSD__) & !defined(__CYGWIN__)
  #if defined(BSD4_4) || defined(HPArchitecture) || defined(SGIArchitecture) || defined(_AIX) || defined(_SCO_DS)
  void srandom(unsigned int);
  #else
--- 23,29 ----
  long random(void);
  #endif
  
! #if !defined(linux) & !defined(__EMX__) & !defined(__FreeBSD__) & !defined(__CYGWIN__) & !defined(__NetBSD__)
  #if defined(BSD4_4) || defined(HPArchitecture) || defined(SGIArchitecture) || defined(_AIX) || defined(_SCO_DS)
  void srandom(unsigned int);
  #else
*** Local.config.ORG	Mon Mar  8 01:57:18 2004
--- Local.config	Mon Mar  8 01:59:51 2004
***************
*** 84,90 ****
  
  #ifdef HavePNG
  PNG_LIB     = -L/usr/lib -lpng -lz
! PNG_INCLUDE = -I/usr/include/png
  #endif
  
  XCOMM  If you are running SunOS and get an error with the following undefined
--- 84,90 ----
  
  #ifdef HavePNG
  PNG_LIB     = -L/usr/lib -lpng -lz
! PNG_INCLUDE = -I/usr/local/include/libpng
  #endif
  
  XCOMM  If you are running SunOS and get an error with the following undefined
-- パッチ ここまで --
xmkmf
make Makefiles
make
make install
make install.man

xpm-3.4k.tar.gz


canvas.tk(メモソフト)

#!/bin/sh
# the next line restarts using wish \
exec wish "$0" "$@"

#
# canvas.tk - simple memo writing tool ver. 0.01 by m.ito
# 2004.03.12 create
#
# usage : canvas.tk window_width window_height canvas_width canvas_height
#

#font create f10 -compound {a10 k10} -size 16
#font create f10 -compound {a10 k10}
font create f10 -compound {s5x8 elisa}
#font create f10 -compound {a14 k14}
bind Text <Control-o> {kinput_start %W over}
bind Entry <Control-o> {kinput_start %W over}

set bgcolor "#ffffff"
set fgcolor "#000000"
set pen_width 1
set vcwidth [lindex $argv 0]
set vcheight [lindex $argv 1]
set rcwidth [lindex $argv 2]
set rcheight [lindex $argv 3]
set log_idx -1

frame .line01
pack .line01 -side top -fill both -expand 1

button .line01.but1 -text "Save" -font f10 -command {
    set file [tk_getSaveFile -initialdir ~/.canvas -initialfile canvas.cnv -defaultextension .cnv]
    if { $file != "" } {
        set fd [open $file "w"]
        for { set j 0 } { $j <= $log_idx } { incr j } {
            puts $fd $log($j)
        }
        close $fd
    }
}
pack .line01.but1 -side left -fill both -expand 1

button .line01.but1_1 -text "Load" -font f10 -command {
    set file [tk_getOpenFile -initialdir ~/.canvas -initialfile canvas.cnv -defaultextension .cnv]
    if { $file != "" } {
       set fd [open $file "r"]
       set log_idx -1
        gets $fd rec
        while { ![eof $fd] } {
            incr log_idx
            set log($log_idx) $rec
            eval $rec
            gets $fd rec
        }
        close $fd
    }
}
pack .line01.but1_1 -side left -fill both -expand 1

button .line01.but1_2 -text "Print" -font f10 -command {
    set file [tk_getSaveFile -initialdir ~/.canvas -initialfile canvas.ps -defaultextension .ps]

#
# gs -sPAPERSIZE=a4 canvas.ps
# gs -sPAPERSIZE=a4 -r77 canvas.ps
# gs -g640x908 -r77 canvas.ps
#
# gs -dNOPAUSE -g640x908 -sDEVICE=jpeg -sOutputFile=canvas.jpg -q -r77 -dBATCH canvas.ps 
# gs -dNOPAUSE -sPAPERSIZE=a4 -sDEVICE=jpeg -sOutputFile=canvas.jpg -q -dBATCH canvas.ps 
#

    if { $file != "" } {
        .line02.can postscript -file "$file" -colormode color -x 0 -y 0 -width $rcwidth -height $rcheight -pageanchor sw -pagex 0 -pagey 0 -pagewidth 210m -pageheight 298m
    }
}
pack .line01.but1_2 -side left -fill both -expand 1

button .line01.but2 -text "\[1\]" -font f10 -command {
    set pen_width 1
    .line01.but2 configure -text "\[1\]"
    .line01.but3 configure -text "3"
    .line01.but4 configure -text "5"
    .line01.but5 configure -text "30"
}
pack .line01.but2 -side left -fill both -expand 1

button .line01.but3 -text "3" -font f10 -command {
    set pen_width 3
    .line01.but2 configure -text "1"
    .line01.but3 configure -text "\[3\]"
    .line01.but4 configure -text "5"
    .line01.but5 configure -text "30"

}
pack .line01.but3 -side left -fill both -expand 1

button .line01.but4 -text "5" -font f10 -command {
    set pen_width 5
    .line01.but2 configure -text "1"
    .line01.but3 configure -text "3"
    .line01.but4 configure -text "\[5\]"
    .line01.but5 configure -text "30"
}
pack .line01.but4 -side left -fill both -expand 1

button .line01.but5 -text "30" -font f10 -command {
    set pen_width 30
    .line01.but2 configure -text "1"
    .line01.but3 configure -text "3"
    .line01.but4 configure -text "5"
    .line01.but5 configure -text "\[30\]"
}
pack .line01.but5 -side left -fill both -expand 1

button .line01.but6 -text "\[B\]" -font f10 -command {
    set fgcolor "#000000"
    .line01.but6 configure -text "\[B\]"
    .line01.but7 configure -text "R"
    .line01.but8 configure -text "W"
}
pack .line01.but6 -side left -fill both -expand 1

button .line01.but7 -text "R" -font f10 -command {
    set fgcolor "#ff0000"
    .line01.but6 configure -text "B"
    .line01.but7 configure -text "\[R\]"
    .line01.but8 configure -text "W"
}
pack .line01.but7 -side left -fill both -expand 1

button .line01.but8 -text "W" -font f10 -command {
    set fgcolor "#ffffff"
    .line01.but6 configure -text "B"
    .line01.but7 configure -text "R"
    .line01.but8 configure -text "\[W\]"
}
pack .line01.but8 -side left -fill both -expand 1

button .line01.but9 -text "Clear" -font f10 -command {
    .line02.can delete all
    set log_idx -1
}
pack .line01.but9 -side left -fill both -expand 1

button .line01.but10 -text "Exit" -font f10 -command {
    exec kill [pid]
}
pack .line01.but10 -side left -fill both -expand 1

frame .line02
pack .line02 -side top -fill both -expand 1

canvas .line02.can \
        -scrollregion "0 0 $rcwidth $rcheight" \
        -width              $vcwidth \
        -height             $vcheight \
        -background         $bgcolor \
        -xscrollcommand     ".line03.hs set" \
        -yscrollcommand     ".line02.vs set"
scrollbar .line02.vs -command ".line02.can yview"

pack .line02.can -side left -fill both -expand 1
pack .line02.vs -side left -fill both -expand 1

frame .line03
pack .line03 -side top -fill both -expand 1

scrollbar .line03.hs -orient horiz -command ".line02.can xview"
pack .line03.hs -side left -fill both -expand 1

bind .line02.can <Button-1>  {
    set x [.line02.can canvasx %x]
    set y [.line02.can canvasy %y]
}

bind .line02.can <B1-Motion> {
    set nx [.line02.can canvasx %x]
    set ny [.line02.can canvasy %y]
    set kyori_no_2jo [expr (($x - $nx) * ($x - $nx)) + (($y - $ny) * ($y - $ny))]
    if { $kyori_no_2jo > 16 && $kyori_no_2jo < 900 } {
        .line02.can create line $x $y $nx $ny \
                -fill  $fgcolor \
                -width $pen_width

        incr log_idx
        set log($log_idx)  ".line02.can create line $x $y $nx $ny -fill $fgcolor -width $pen_width"

        set x $nx
        set y $ny
    }
}

無線LANカード(BUFFALO WLI-PCM-L11)の利用

※ 「WEPKEY」は「5文字のキャラクタ」または「0x??????????」の16進数で指定する。

無線APの検索

wiconfig wi0 -D

firefox-1.0ビルド(途上)の記録

ある日、NetBSD 1.6.2/hpcmips上でfirefox-1.0をビルドしてみようと思い立った...
試行錯誤の記録はTrial of building firefox on NetBSD/hpcmipsから。
ビルドのサマリはSummary of building Minimo on NetBSD/hpcmipsから。

MGL2関係

遅ればせながら、最近MGL2環境も良いなぁと気付きました。 正直、開発はとっくに止まってしまってるようですので、 ウェブの情報が消えてしまわないうちに、まとめておこうかと 思います(^^;。
続きはMGL2 on NetBSD/hpcmipsから。

Nemacs-3.3.2

懐かしのNemacsをビルドしてみました。ダンプはできませんでしたが emacs-21.xに比べて使用リソース、サイズともに1/3程度になり、かな り軽快になりました。今後はこちらを常用していこうと思っています。
続きはNemacs on NetBSD/hpcmipsから。

matchbox window manager

matchbox window managerが使いやすい&軽い ので、最近はまたX Window Systemを利用しています(^^;。基本的には1アプリケーションが全画面を使 うタイプなので、オーバーラップ型のウィンドウマネージャでなきゃ...という人には向かないのですが PDAのような画面の広さに制限がある場合は、かえってそのシンプルさがメリットとなります。

インストールは、幾つかのファイルに別れているので、ちょっと分かりにくいかもしれませんが、PDA のようなリソースの限られたデバイスで利用する場合に、必要最低限の機能を選択してインストール出 来るようにそのようなスタイルになっているのだと思います。

私は以下の手順でインストールしました...
続きはmatchbox window manager on NetBSD/hpcmipsから。


Xvnc and mgvncviewer

時は流れ、今は 2007年6月頃... MC-R450はNetBSD-3.1ベースで環境も再構築され、 このページの情報も若干色あせた部分もあるようです。しかし、毎日持ち歩く環境は MC/R300という(古くて)新しい革袋を手に入れ、NetBSD-1.6.2の環境をそのまま 移し変えて利用しています。NetBSD-1.x系最後の1.6.2は今でも非常に安定している バージョンだと感じてます。

NetBSD-3.1 with MC-R450のお話し は又の機会にしたいと思ってます。もうしばらく お待ち下さい(MPlayer-1.0rc1を動かしてみた話なんか面白いかも...)。

NetBSD-1.6.2 with MC/R300でも面白いネタがあって、実は昨日(2007/6/21)Xvncをbuild する事に成功しました(^o^)/。といっても2000年辺りの情報をかき集めて、最新のvncソースに 適応させただけなのですが...。今、情報の整理をしているのでもうすぐ公開できると思います。

これでmgvncviewerの復活ができれば、モノクロモバ(MC-R3xx)でX Window Systemの利用が できるようになるのですが...鋭意作業していきたいと思います。

2007/6/23 mgvncviewer のbuildに成功しました。モノクロモバ(MC/R300)上でXvncを動かし、 さらに同一機上でmgvncviewerを起動することにより、モノクロモバ(MC/R300)上で X Window Systemの稼働が実現しました。ただ、私が探した限りではmgvncviewerの実装 が2種類有って、今回成功したのは1種類だけですので、もう1種類の方も試してから build情報を紹介したいと思ってます。もう少しお待ち下さい。

2007/06/26 X Window System for MC/R300 on NetBSD/hpcmipsからどうぞ!。


Return to top of Masa's WebPage
introduction of kyoto internet people
[更新]