□ インストール NetBSD Restore CDROM を入れて VAIO で bootup。 クロスケーブルで Qube2 のプライマリインタフェイスと結んで、Qube2 を NetBoot、ボタン左右同時押しで電源投入。 LCD に NetBooting という表示がでたら後は放置。 特に作業進行度合いや、終了を知る目印はなく、勝手に reboot して上がる。 私の場合は System Startup... 表示(これは Flash memory が出す)で停止 していた。コンソールをつないで reboot させてみると、DHCP サーバを探して いたので、DHCP サーバになっている Cobalt につないだらそのまま上がった。 この時点で root パスワードなし。telnet すれば login: プロンプトがでる。 ただし最初の resolv.conf の設定がおかしいので、逆引きを放棄するまでに 極めて長い時間がかかる場合あり。シリアルコンソールから入るほうが安全。 □ シリアルコンソール 11500bps 8bit non-parity でアクセス可能。 もしシリアルコンソールに起動時の情報が一切出てこないようなら、パス ワード初期化ボタン(電源ボタンの下の小さな穴、ボールペンで押す)を 押し「ながら」電源投入すると「Console On」と LCD に出てくるはず。 これでシリアルコンソールとして機能するはず。もう一度この操作をすると 今度は「Console Off」となるはず。 ブートに失敗していたりすると、db> というプロンプトで止まっていたりする。 ここでは ps コマンドなどいろいろ使える。不思議なモニタ。reboot とすると 再起動する。man ddb すれば何か情報があるようだ。(in-kernel-debugger と ある。) □ 初期的設定 ・パスワード passwd コマンドで root にパスワードを付けたが、/etc/passwd には 反映されず、/etc/master.passwd に書き込まれる。なるほど面白い流儀。 ・/etc/resolv.conf なぜか cobaltmicro.com などを探す設定になっているので、適当に修正する。 □ Localtime 時刻 /etc/localtime が /usr/share/zoneinfo/UTC へのシンボリックリンクと なっていたが、これを /usr/share/zoneinfo/Japan へ変更。 % date Thu Feb 26 18:46:37 JST 2004 % となる。 □ ntpdate ipfilter の設定に以下を追加。 # Allow outgoing NTP requests (includes return packet by keep state) pass out quick proto udp from any to any port = 123 keep state コマンド自体は # ntpdate ntp.kyoto-su.ac.jp などとすれば良いのだが、どうやら /etc/rc.conf に ntpdate=YES ntpdate_hosts="ntp.kyoto-su.ac.jp" としておけば良さそうに見える。/etc/rc.d/ntpdate 参照。 □ bash のプロンプトを変更する /etc/profile を set -p if test "$UID" = "0" ; then PS1="# " else PS1="$ " fi としてみたが、はて、効き目無し。なぜだ? □ パッケージ管理 setenv PKG_PATH ftp://ftp.netbsd.org/pub/NetBSD/packages/1.6/cobalt/All して、 pkg_add -v ack pkg_add -v nkf pkg_add -v ng pkg_add -v ja-man pkg_add -v ja-gawk pkg_add -v ja-sed pkg_add -v bzip2 pkg_add -v bash pkg_add -v tcsh pkg_add -v arpwatch pkg_add -v apache wget http://ftp.gnu.org/pub/gnu/wget/wget-1.9.1.tar.gz w3m http://prdownloads.sourceforge.net/w3m/w3m-0.4.1.tar.gz (4.2 は×) 候補? fetchmail pkg_info でインストールしたパッケージ一覧が表示される。 □ ユーザの追加、修正 ユーザ追加は以下のようにする。 -m オプションはホームディレクトリ作成。 -b でベースディレクトリ指定。 useradd -m -b /home/usr yasuda シェルなどは chsh yasuda などとする。useradd に -s /bin/bash などとオプションで付けても良い。 必要なら /etc/group の wheel に追加して su 可能にしておく。 一度作成したユーザの情報を変更するのは usermod コマンドで。 ホームディレクトリを移動させるときは usermod -d /home/usr/yasuda yasuda のようにする。こうせず /etc/passwd ファイルを直接修正すると、ユーザが 自分で chsh などしたときにまた元のディレクトリに戻る。 □ SSH セットアップ ユーザ側は ssh-keygen -t rsa で準備。キー作成ディレクトリはそのまま、 パスフレーズをセットしておく。 よそからログインするときは .ssh/authorized_keys2 を作って公開鍵を 入れておくこと。ただし chmod go-rw することを忘れずに。 アクセス権設定がうまくいっていないときは slogin の後で /var/log/authlog を見ると何か出ている。 □ インストールメモ http://news.gw.com/netbsd.ports.cobalt/878 にほぼ完璧な資料あり。これを参考にしてインストールした作業メモを以下に。 (tlp1 (secondary interface) を内側セグメントにしている点に注意) ・レストア CD ftp://ftp.netbsd.org/pub/NetBSD/arch/cobalt/restore-cd/1.6.1 にあり。この ISO イメージを CD に焼いて、PC をこれでリブート。 ・この PC と Qube2 をクロスケーブルで接続しておく。 (DHCP サーバが複数あるとうまくいかないので、孤立したネットワークに   するのが簡単で良い。) ・Qube2 を NetBoot させる。(十字ボタンの左右を同時に押しながら電源投入  すると LCD に Net Booting と表示されて動作が確認できる。) ・勝手にインストールが始まる。LCD を見ていると状態がわかる。 ・インストールが終わると勝手に Qube2 はリブートし、そのまま立ち上がる。 DHCP サーバを探しに行くので、レストア CD で立ち上げたシステムをその  まま残しておくと良い。もし DHCP サーバがみつからないと途中でかなり  長い間待つ模様。 ・LCD に IP アドレスを表示していたら起動成功。 ・そのアドレスに root ユーザで telnet login する。 ・まず passwd コマンドで root のパスワードを設定。 ・固定アドレスにする場合は /etc/ifconfig.tlp0 ファイルを作成する。 内容は inet 192.168.1.3 netmask 255.255.255.0 など。  セカンダリインタフェイスも設定する場合は ifconfig.tlp1 を同様に作成。 ・/etc/hosts にホスト名を記述。 ip-address hostname hostname.yourdomain.ch ・/etc/resolv.conf にネームサーバを設定。 search yourdomain.ch nameserver a.b.c.d nameserver d.e.f.g ・/etc/rc.conf を必要に応じて設定。 hostname="qube" defaultroute=123.123.123.123 (tlp1 側に route がある) # dhclient=NO nfs_client=NO paneld=YES inetd=NO sshd=YES ・SSH でアクセスできるようにもう一人ユーザを作成しておくと便利。 useradd -m -b /home/usr yasuda passwd yasuda chsh yasuda  その後、/etc/group の wheel に yasuda を追加して su 可能にしておく。 ・各サービスを起動(または停止) /etc/rc.d/sshd start /etc/rc.d/dhclient stop /etc/rc.d/inetd stop ・この段階(root 権限の shell アクセスがある状態)で SSH 接続がうまく  いくこと、su で root 権限が得られることを確認。 ・再起動。お楽しみあれ。 □ CVS ツリーからの pkgsrc の取得 anonymous cvs を使って以下のようにする。 setenv CVSROOT anoncvs@anoncvs.NetBSD.org:/cvsroot setenv CVS_RSH ssh cd /usr cvs checkout -P pkgsrc この checkout 処理は回線速度によっては時間がかかる。 その後、インストール。 cd /usr/pkgsrc/pkgtools/pkg_install; make install cd /usr/pkgsrc/security/audit-packages; make install /usr/pkg/sbin/download-vulnerability-list それからこれ (adjustkernel, openssl, wget) も入れた方が良いかも。 (ライセンスのところはどうするのが良いのだろう?) cd /usr/pkgsrc/sysutils/adjustkernel; make install echo ACCEPTABLE_LICENSES+=fee-based-commercial-use >> /etc/mk.conf cd /usr/pkgsrc/security/openssl; make install cd /usr/pkgsrc/net/wget; make install 以下に他の pkgsrc の情報もあります。 http://www.netbsd.org/Documentation/software/packages.html#using-pkgsrc ・それ以降のアップデートへの追随はこのようにして setenv CVSROOT anoncvs@anoncvs.NetBSD.org:/cvsroot setenv CVS_RSH ssh cd /usr/pkgsrc cvs -q update -dP /usr/pkg/sbin/download-vulnerability-list □ カーネルリコンパイル tarball からのカーネルリコンパイルは以下のように。 cd / wget ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-1.6.1/source/sets/syssrc.tgz tar -xvzf syssrc.tgz cd /sys/arch/cobalt/conf もし PCI スロットに何かカードを入れていたら、 adjustkernel -file GENERIC -outfile QUBE2IPF それがなければ単にコピーするだけでよし。 cp GENERIC QUBE2IPF QUBE2IPF を編集して、 lcd0 at mainbus? を追加。他には以下の点を確認すると良し。 options GATEWAY options IPSEC options IPFILTER_LOG pseudo-device ipfilter pseudo-device pppoe  (今回は pppoe は不要なのでつけず。lcd0 以外はコメントを外しただけ。) もし SCSI サポートが不要なら以下のものを外すと良い。 #options SCSIVERBOSE #ahc* at pci? dev ? function ? #scsibus* at ahc? #sd* at scsibus? target ? lun ? #st* at scsibus? target ? lun ? 続いて LCD コントローラまわりのパッチをあてる。 wget http://only.mawhrin.net/~cdi/netbsd/cobalt/hd44780.diff.gz gzip -d hd44780.diff.gz cd /sys patch -p1 < /sys/arch/cobalt/conf/hd44780.diff cd - ようやく QUBE2IPF の configure を。 config QUBE2IPF cd ../compile/QUBE2IPF make depend make  コンパイルに約 40 分ほどかかる。  エラーがなければ新しいカーネルができているはず。 mv /netbsd /netbsd.orig cp netbsd / 詳細は例えば以下にも情報あり。 http://www.netbsd.org/Documentation/kernel/#how_to_build_a_kernel http://www.netbsd.org/guide/en/chap-kernel.html ・もしブートに失敗したら場合は、下記のようにして復旧可能。 まずシリアルケーブルを差して login 可能なら、以前のカーネルに戻して 再起動。 mount -u -o rw / cp /netbsd.orig /netbsd reboot もしまったく起動出来なかった場合は、システムが初期化している途中で スペースバーを押して中断。Cobalt: というプロンプトが出るはずなので、  そこで bfd /boot/boot.gz nbsd=wd0a:netbsd.orig とすることで元のカーネルから起動するはず。 □ ipfileter / ipnat とカーネル再コンパイル ipfilter と ipnat は、 /etc/rc.d/ipfilter start /etc/rc.d/ipnat start /etc/rc.d/ipmon start で使えるようになるはずだが、これはカーネルが対応していないとだめ。 カーネル再構築して gateway オプションを付ける?のが必要。 /dev/ipl が最初はないので、cd /dev ; /dev/MAKEDEV ipl すると、 /dev/ipauth, /dev/ipl, /dev/ipnat, /dev/ipstate が作られる。 これがないと ipfstat が cannot open file などで止まる。 つまり標準の NetBSD Cobalt カーネルはそうなっていないため、まずは カーネルリコンパイルが必要というわけ。 なお、この指定をスタートアップスクリプトにさせるには、/etc/rc.conf に ipfilter=YES ipnat=YES ipmon=YES を追加する。 (ipmon はログを大量に吐いて困るので現在停止中) □ ipfilter ipfilter の記述は /etc/ipf.conf にあり。 ipfstat -i (or -o) で現在登録されているルールが出る。 echo /usr/share/examples/ipf/BASIC_1.FW > /etc/ipf.conf todo it the right way here is a description /usr/share/examples/ipf/firewall /usr/share/examples/ipf/mkfilters で作ったものをベースにしようとしたが あまりにシンプルなルールとなってしまい、意味なし。 BASIC_1.FW ではうまく動かないが原因を調べるのが難しい。 結果、手作業で作り出した。 大量にログが出て困ったので touch /var/log/ipflog vi /etc/rc.d/ipmon で -s オプションを入れる。これで syslog の local0.* にエラーが出る。と思ったら解決できず。しばし放置。ipmon は起動させず。 ipf.conf に tlp0 向けの telnet を受け入れるように書いておかないと 困るので追加。 # ipf -FA -Z -f /etc/ipf.conf input packets: blocked 21918 passed 7203 nomatch 0 counted 0 output packets: blocked 4 passed 4004 nomatch 0 counted 0 input packets logged: blocked 21918 passed 0 output packets logged: blocked 4 passed 0 packets logged: input 0-17343 output 0-3 # -F のあとは A/I/O でそれぞれ All/Input/Output -Z カウンタ初期化 □ ipnat /etc/ipnat.conf にルール記述。 # NAT / PROXY setup # map tlp1 192.168.1.0/24 -> a.b.c.d/32 proxy port ftp ftp/tcp map tlp1 192.168.1.0/24 -> a.b.c.d/32 portmap tcp/udp 10000:40000 map tlp1 192.168.1.0/24 -> a.b.c.d/32 起動時に有効にするには /etc/rc.conf に ipnat=YES を追加。 ipnat -l で現在登録されているルールが出る。 % ipnat -l List of active MAP/Redirect filters: map tlp1 192.168.1.0/24 -> a.b.c.d/32 proxy port ftp ftp/tcp map tlp1 192.168.1.0/24 -> a.b.c.d/32 portmap tcp/udp 10000:40000 map tlp1 192.168.1.0/24 -> a.b.c.d/32 List of active sessions: ....(ここに NAT セッションテーブル) ipfilter と連動してパケットがうまく通過するように設定すること。 □ DHCP service http://www.jp.netbsd.org/ja/Documentation/network/dhcp.html#configure_dhcpd /etc/dhcpd.conf に設定 # Setting global parameters allow unknown-clients; ddns-update-style none; # local parameter subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.129 192.168.1.250; default-lease-time 604800; max-lease-time 604800; option subnet-mask 255.255.255.0; option domain-name-servers 133.101.96.25, 133.101.96.26; option domain-name "kyoto-su.ac.jp"; option routers 192.168.1.25; } /etc/rc.conf に dhcpd=YES dhcpd_flags="-q tlp0" を追加。リースファイルがないとスタートアップスクリプトが機能しないので touch /var/db/dhcpd.leases してから /etc/rc.d/dhcpd start で起動。ps して -q tlp0 が引数に付いていることを確認すること。 USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND root 192 0.0 1.8 1264 1192 ?? Ss 8:30AM 0:00.05 /usr/sbin/dhcpd -q tlp0 といった具合い。 □ apache pkg_add -v apache でインストールしても $ /etc/rc.d/apache start (48)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs $ といった具合いで駄目。上のエラーは httpd.conf を Listen *:80 とすることで解決できる。 設定ファイルの場所は /usr/pkg/etc/httpd/httpd.conf で、このままいくことに。 他、各種少々調整。変更点は以下の通り。 MaxKeepAliveRequests 10 StartServers 1 MinSpareServers 1 MaxSpareServers 5 MaxClients 50 Listen *:80 ServerAdmin yasuda@cc.kyoto-su.ac.jp DocumentRoot "/home/WWW/html" UserDir WWW DirectoryIndex index.html index-j.html index.html.var Alias /icons/ "/home/WWW/icons/" ScriptAlias /cgi-bin/ "/home/WWW/cgi-bin/" これにあわせて下記の調整を。 mkdir /home/WWW mkdir /home/WWW/html mkdir /home/WWW/cgi-bin cp -rp /usr/pkg/share/httpd/icons /home/WWW 上記の通り、スペアサーバが多いので、以下を変更して下げている。 StartServers 1 MinSpareServers 1 .... ログは /var/log/httpd/ 以下にできる。 この状態で /etc/rc.d/apache start とすれば起動する。 ただし /etc/rc.conf に apache=YES と入れておかないとスクリプトが エラーを出して起動まで行かない。注意。 # /etc/rc.d/apache start /etc/rc.d/apache: WARNING: $apache is not set properly - see rc.conf(5). #