NetBSD (別に NetBSD に限りませんが)を使っていく上でのちょっとした 小技についてまとめてみましょう。
何も指定せずに keyboard をつなぐと、us keyboard と解釈されます。 お使いの keyboard が106 や 109 だと、記号が正しく入力できません。 対応方法は
# wsconsctl -w encoding=jp
Keyboard section
にXkbRules "xfree86" XkbModel "jp106" XkbLayout "jp"を付け加えます。
% xmodmap xmodmap.106元に戻したい場合はxmodmap.101を使ってください。
慌てず騒がず、まずは shutdown しましょう。こういう時に備えて、 普段使っている user を operator グループに登録しておくと便利です。
/etc/ttys の console 行の設定によってこの先は異なります。
single user mode で boot すると、
"Enter pathname of shell or RETURN for sh: "
というプロンプトが出ます。RETURN キーを押せばプロンプトが出るはずです。 この先は
# fsck -p # mount -u / # mount /usr # passwd root
を実行すれば、root のパスワードが変更できます。
この場合は、single user mode で boot しても、root のパスワードが 要求されます。仕方がないので、かねて用意してある、install 用フロッピーで boot して下さい。installer が立ち上がったら、exit to shell を選んで プロンプトを出します。この先は
# fsck -p /dev/rsd0a # fsck -p /dev/rsd0e # mount /dev/sd0a /mnt # mount /dev/sd0e /mnt/usr # chroot /mnt # passwd root
でパスワードの変更ができます。ここでsd0a
は root partition を、
sd0e
は /usr の partition を指定して下さい。
install 用のフロッピーがない場合は、インストールされているものよりも 新しいインストール用フロッピーを ftp://ftp.jp.netbsd.org/pub/NetBSD/から 探してきて使えばいいでしょう。
おそらくタイプミスで login shell が存在しないものになってしまっているのでしょう。
rootのパスワードを忘れてしまったを
参考にして root の login shell を存在するものに直せば OK です。passwd(1)
の
代りに、chfn(1)
や vipw(8)
を用います。ちなみに
私は root の shell は /bin/sh にしています。set -o emacs
と
すれば、ヒストリー機能も使えますしなれれば便利です。
NetBSD に関する一番の情報源は 本家や 日本 NetBSD ユーザーグループなどの mailing lists です。本家の メーリングリストは当然ながら英語で読み書きする必要があります。 敷居が高いと思われる方は日本語メーリングリストで 聞いてみるのも良いでしょう。
これだけ多くのメーリングリストがあると、local news group を作って そこで読みたいなぁと思ったあなたにはmail2newsが お勧めです。:-) これはもともと学生だったころ研究室で使っていたものですが、 複数の mailing list に投稿された記事をきちんと netnews 的な cross post の記事に変換します。使用する message-id は原則として 元の mail の message-id を用います。ちまたに落ちている mail2news だと 複数の mailing list に投稿された記事が一ヶ所でしか読めなくて thread がたどれなくなったりするのが不満で作りました。
pkgsrc を更新したあとには念のため、.../pkgsrc からmake clean
しましょう。依存している pkg が更新されていて、さらにそのディレクトリに
work があると、新しくできません。make update
を使えば、
インストールした後に、make clean
もしてくれて便利です。
必ず package もつくるぞ!という方は /etc/mk.conf
に
DEPENDS_TARGET?= package
というのを入れておけば十分です。
pkg から入れたものは /usr/pkg や /usr/X11R6 に入ります。 したがって library は /usr/pkg/lib に include ファイルは /usr/pkg/include に 入ります。これらのディレクトリはデフォルトでは見てくれません。 compile 時に -I/usr/pkg/include -L/usr/pkg/lib -R/usr/pkg/lib などの オプションをつけましょう。
2001/01/02 以降の NetBSD-current では 16 パーティションまでサポートされています。 ここは、それ以前の NetBSD を使っていてどうしても、upgrade 出来ない場合にのみ 参考にしてください。(2001/01/04)
NetBSD/i386 では c, d パーティションが実際上使えないためデフォルトでは a, b, e, f, g, h の 6つしかパーティションが切れません。さらにディスクが1台しか 無いような場合は、b を swap に使用するので 5つになってしまいます。 私のように /, /var, /usr/local, /usr/pkg, /usr/X11R6, /var/users, /usr/src と 切りたい場合には一台のハードディスクでは無理になってしまうのです。
今までの私の解決策は「あきらめる」でした。が、NetBSD の mailing list で
いいことが流れていたのでメモしておきます。それは「ccd
を使う」と
言うものでした。言われてみればなるほどなのですが思い付きもしませんでした。
まだまだ修行が足りません。
やることは簡単。
ccd0 0 0 /dev/wd0e
という内容の /etc/ccd.conf
を作り、/etc/rc.conf に
ccd=YES
と書くだけで、一つのパーティション(この場合だと /dev/wd0e)が
一つのデバイスになります。物理形状因子は元々の disk の情報を元にして
あとはディスクラベルを書けば完成です。
参考までに私のディスクの disktab はこんな感じです(disklabel -t の出力です)。
tampII|Automatically generated label:\ :dt=unknown:se#512:ns#63:nt#15:sc#945:nc#13328:\ :pa#511245:oa#516915:ta=4.2BSD:ba#8192:fa#1024:\ :pb#615195:ob#1028160:tb=swap:\ :pc#12078045:oc#516915:\ :pd#12594960:od#0:\ :pe#4095630:oe#1643355:te=4.2BSD:be#8192:fe#1024:\ :pf#2047815:of#5738985:tf=4.2BSD:bf#8192:ff#1024:\ :pg#4808160:og#7786800:tg=4.2BSD:bg#8192:fg#1024:\ :ph#512127:oh#63:th=MSDOS: ccd|Automatically generated label:\ :dt=ccd:se#512:ns#63:nt#15:sc#945:nc#4334:\ :pa#818370:oa#0:ta=4.2BSD:ba#8192:fa#1024:\ :pd#4095630:od#0:\ :pe#1638630:oe#818370:te=4.2BSD:be#8192:fe#1024:\ :pf#1638630:of#2457000:tf=4.2BSD:bf#8192:ff#1024:
df の出力はこんな感じ。
[tamp]~/% df -l Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/wd0a 247173 197367 37447 84% / /dev/wd0g 2325195 1832556 376379 82% /var /dev/ccd0a 401688 223122 158481 58% /usr/local /dev/ccd0e 804473 160277 603972 20% /usr/X11R6 /dev/ccd0f 804473 304617 459632 39% /usr/pkg /dev/wd0f 990160 628508 312144 66% /var/users
注意: NetBSD のインストーラを使って update する際には
あらかじめ /etc/fstab
中の ccd partition を
コメントアウトしておく必要があるようです。そうしないと
fsck
が失敗してうまく更新できません。
したがって sysinst を使ってこれから更新していくつもりならば
/usr などの基本的な領域を ccd
にしてはいけません。
悲惨な状況ですね。私が今まで必要になったのは、スイッチに tftp でインストールしたファームウェアが何らかの原因で壊れていたらしく boot しなくなり、途方にくれかけたときに boot loader のメニューに あった 「XMODEM download update System Software」という文字列に 頼ろうとしたときだけです。
何はともあれ。
まず、net/lrzsz
をインストールします。
次に tip(8)
を使うために、/etc/remote
に適切な
設定を入れます。私は USB → シリアル変換を使っているので、次のような
行を追加しました。
ttyU0:dv=/dev/ttyU0:br#9600:pa=none:dc:
root で tip
を実行し、~C
と lsx
を
使ってリモートにファイルを送り込みます。もちろん、リモート側で受け取る準備を
しておかなければなりません。
# tip ttyU0 connected ~C /usr/pkg/bin/lsx firmware_file ~. #
徐々に増やしていこうと思ってます。なんかあれば tacha@tack.fukui-med.ac.jpまで お知らせ下さい。