FreeBSD QandA 2003年5月17日 更新分
管理番号 155 (更新)
更新履歴
Q. vipw を実行すると、意図しない editor が起動されます。
vipw で起動する editor を好みのものに変えたいのですが。
A. vipw は、EDITOR 環境変数を見て指定された editor を起動します。
EDITOR 環境変数が定義されていない場合 (デフォルト) は /usr/bin/nvi が
起動されます。
好みの editor を使いたい場合は、.cshrc 等 shell のスタートアップファイ
ルで EDITOR 環境変数を設定して下さい。
意図しない editor が起動される場合は、以下の点を確認してみて下さい。
・ホームディレクトリの shell のスタートアップファイル
で EDITOR 環境変数が設定されていたら、それを変更して下さい。
・system の shell のスタートアップファイル (/etc/csh.cshrc,
/etc/profile 等) または /etc/login.conf で EDITOR 環境変数が定義され
ている。
この場合は、EDITOR 環境変数が定義されている箇所をを変更するか、または
個人の shell のスタートアップファイルで EDITOR 環境変数を設定して下さい。
(unsetenv EDITOR や unset EDITOR とすればデフォルトの editor が
使われます)。
管理番号 296 (更新)
更新履歴
Q. Anonymous FTP はどうやって立ち上げるのでしょうか?
A. OS 付属の ftpd を使うなら、やり方は ftpd(8) に書いてあります。
また /stand/sysinstall で、
設定→ネットワーク→匿名 FTP
と選んでいけば設定が可能です。
FreeBSD 4.7-RELEASE のデフォルトでは、inetd(8) は動いていますが、
ftpd などの各種デーモンは起動されないようになっています。
/etc/inetd.conf の
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
#ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l
の部分の行頭の # を削り、
# kill -HUP `cat /var/run/inted.pid`
と inetd に SIGHUP を送って、inetd が /etc/inetd.conf を読み直す
ようにします。
また、FreeBSD 5.x 以降においては、inetd(8) がデフォルトでは
起動されないようになっています。従って、sysinstall で inetd を
有効にするか、/etc/rc.conf に
enable_inetd="YES"
を追加した上で /etc/inetd.conf を修正してください。
管理番号 365 (更新)
更新履歴
Q. コンソールでキーボードの Ctrl キーと Caps Lock キーを交換して使いたい。
その他、任意のキーの意味を交換したい。
A. 各キーの意味を記述したキーボードマップと呼ばれるファイルをドライバに
読み込ませることにより、キーの意味を変更することができます。
/usr/share/syscons/keymaps/ に、各種キーボードマップがあります。普通は
us.iso.kbd … 101キーボード用
jp.106.kbd … 106キーボード用
などを使用しますが、
us.pc-ctrl.kbd … us.iso.kbd の Caps Look を Ctrl に変更したもの
(Caps Look は使えなくなる)
jp.106x.kbd … jp.106.kbd の Ctrl と Caps Look を逆にしたもの
というものも用意されています。
コンソールで、kbdcontrol(1) を用いて、
# kbdcontrol -l /usr/share/syscons/keymaps/jp.106x.kbd
を実行することでキーボードマップが読み込まれます。キーボードマップが
/usr/share/syscons/keymaps/ の下にある場合は、パスを省略して
# kbdcontrol -l jp.106x
としてもかまいません。
狙い通りのキーマップに変更されたことを確認したら /etc/rc.conf に
keymap="jp.106x"
などと記述すると、ブート時に ここに書いたキーマップが自動的に設定
されます。
キーボードマップのファイルはテキストファイルですので、編集するのは
簡単です。例えば us.iso.kbd の Caps Lock と Ctrl を交換した
us.isox.kbd を新たに作成するには以下のようにします。
1. us.iso.kbd を、たとえば us.isox.kbd にコピー。
# cd /usr/share/syscons/keymaps/
# cp us.iso.kbd us.isox.kbd
2. us.isox.kbd の 029 と 058 を編集。
029 clock clock clock clock clock clock clock clock O
058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
3. kbdcontrol -l us.isox.kbd で確認する。
4. /etc/rc.conf を以下のように記述する。
keymap="us.isox"
5. リブート。
同様の操作で各キーの意味を変更できますが、慎重に行わないと「元に
戻すためのコマンドをタイプできない」という困ったことになります
のでご注意下さい。
X Window System 上でのキーの入れ替えについては [管理番号 110] を見て
ください。
管理番号 2341 (新規)
更新履歴
Q. 複数の ISP と契約し、FreeBSD をルータとして接続した時にルーティングが
うまく行きません。
ISP0 ISP1
| |
| |
|if0 |if1
+-------------+
| FreeBSD Box |
+-------------+
上記のような構成で、Default Gateway を ISP0 側に設定しました。この状態
で外部ネットワークからアクセスすると
・if0 に振っている IP アドレスにアクセスすると問題なくつながります。
・if1 に振っている IP アドレスにアクセスすると繋がりません。
Default Gateway を ISP1 側に設定して外部ネットワークからアクセスすると
・if0 に振っている IP アドレスにアクセスすると繋がりません。
・if1 に振っている IP アドレスにアクセスすると問題なくつながります。
最初の構成に戻して tcpdump(1) で調べたところ外部ネットワークから if1 に
振っている IP アドレスにアクセスすると、戻りのパケットが if0 から送出し
ているのが確認できました。どうやら、if1 のアドレスは ISP0 でフィルター
されているようです。
if1 にアクセスされたときに if1 からパケットを送出するようにするにはどの
ようにすれば良いのでしょうか 。
A. ipfw(8) の fwd をつかって下さい。Default Gateway が ISP0 に向いている場合、
# /sbin/ipfw fwd {ISP1 Gateway address} from {if1 のアドレス} to not {if0のネットワークアドレス}
とすれば if1 へのアクセスの戻りのパケットは ISP1 に向かって送出される
ようになります。
なお ipfw の使い方に関してはハンドブックや ipfw(8) などご参照下さい。
管理番号 709 (更新)
更新履歴
Q. コマンドのバージョンを知るには どうしたらいいですか?
A. いろいろ考えられますが、以下の方法が比較的簡単です。
1. what(1) や、ident(1) を使う。ただし全てのソースのリビジョン番号が
表示されますので、「このコマンドのバージョンを知りたい」という場合は
不向きです。
% what /bin/ls
/bin/ls:
Copyright (c) 1989, 1993, 1994
termcap.c 8.1 (Berkeley) 6/4/93
strftime.c 7.38
strftime.c 5.4 (Berkeley) 3/14/89
(略)
% ident /bin/ls
/bin/ls:
$FreeBSD: src/lib/msun/i387/s_ilogb.S,v 1.7.2.1 2000/07/10 09:16:28 obrien Exp $
$FreeBSD: src/lib/libc/i386/string/strrchr.S,v 1.5 1999/08/27 23:59:35 peter Exp $
$FreeBSD: src/lib/libc/i386/string/strncmp.S,v 1.6 1999/08/27 23:59:35 peter Exp $
$FreeBSD: src/lib/libc/i386/string/index.S,v 1.5 1999/08/27 23:59:30 peter Exp $
(略)
2. strings(1) を使う。
% strings hogehoge | grep -i version
3. ports/packages を利用してインストールしたものなら、
% pkg_info -aI | grep hogehoge
4. command 自身の version 表示。
command のなかには、バージョン表示オプションを持っていたり、help 表示すると
version を表示してくれるものがあります。
% hogehoge -h や hogehoge -V
最近の GNU 系のコマンドであれば、hogehoge --version なども使えるでしょう。
5. その他
(servername で動いている) bind のバージョン
% nslookup -q=txt -class=chaos version.bind servername
または
% dig @servername txt chaos version.bind
sendmail のバージョン
- macro 'v' の値を調べる
% echo '$v' | sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 8.9.1
- デバッグ用オプションを使って表示させる。
% sendmail -bt -d0.1 < /dev/null | head -1
Version 8.9.1
- コマンドラインから SMTP 的にお話をする。
% echo HELP | sendmail -bs | head -2 | tail -1
214-This is Sendmail version 8.9.1
- SMTP でお話でする。
% telnet servername smtp
Trying 127.0.0.1...
Connected to servername.
Escape character is '^]'.
220 servername ESMTP Sendmail 8.9.1/8.9.1 ...
ただし、その sendmail の設定ファイル /etc/sendmail.cf の
SmtpGreetingMessage=$j Sendmail $v/$Z; $b
が書きかわっていたなら、正しく表示されません。逆に言うと、
外部に sendmail のバージョンを漏らしたくない場合は、ここを
書きかえておくとよいでしょう。
XFree86 のバージョン
% /usr/X11R6/bin/X -version
(--version ではありません。-version です)
最も確実なのはコマンドのソースを調べる事でしょう :)
管理番号 2355 (新規)
更新履歴
Q. CPU 切り替え機を利用しています。FreeBSD をインストールしようとすると
キーボードが効かなくなるのですが、どうしたらよいですか?
A. まずインストール時に
Skip kernel Configuration and Continue with installation
Start kernel configuration in full-screen visual mode
Start kernel configuration in CLI mode
という 3択画面が表示されるか確認してください。
1. この画面が表示される場合
A. FreeBSD 4.x 系列
三番目の "Start kernel Configuration in CLI mode" を選択し、
Config> flags atkbd0 0x2
Config> quit
と入力する。
B. FreeBSD 5.x 系列
Hit [Enter] to boot immediately .... と画面が表示されたときに
Enter キー以外を押す。ok とプロンプトが表示されたら以下の
コマンドを入力する
set hint.atkbd.0.flags=0x2
boot
以上の作業でキーボードを使ってインストール可能になります。インス
トール後、atkbd0 のフラグが常に有効になるようにしてください
2.この画面が表示されない場合
残念ながら、CPU 切り替え機に問題があるようです。以下の CPU 切り替え機では
kernel configuration 画面が表示されないと報告されています。
・SANWA SUPPLY SW-CPU4N
解決策は以下の通りです。
A. FreeBSD 4.x 系列
CPU 切り替え機を外した状態でインストールを行って下さい。その後
カーネル設定ファイル (/usr/src/sys/i386/conf 以下) の atkbd0 の
flags の値に 0x1 を 0x2 に変更します。
device atkbd0 at atkbdc? irq 1 flags 0x1
↓
device atkbd0 at atkbdc? irq 1 flags 0x2
CPU 切り替え機を再接続してください。この状態で利用できるようになります。
B. FreeBSD 5.x 系列
Hit [Enter] to boot immediately .... と画面が表示されたときに
Enter キー以外を押し
set hint.atkbd.0.flags=0x2
boot
と打ち込む事で、CPU 切り替え機を外さなくともインストール可能です。
管理番号 187 (更新)
更新履歴
Q. メールサーバの設定を行うために sendmail.cf や submit.cf を作成し
ようと思いますが、書き方がわかりません。
A. sendmail.cf の書式、特に書き換えルールの部分は複雑ですので、いきなり
sendmail.cf を作るのは難しいかもしれません。
そこで sendmail に附属の cf という設定ファイル生成ツールを使うとよい
でしょう。FreeBSD 附属の sendmail.cf や submit.cf もこれで作られて
います。
cf の概要については
<URL:http://www.imasy.or.jp/~ume/published/sendmail-auth/>
をどうぞ。
附属の英文ドキュメントが /usr/share/sendmail/cf/README にあります。
cf プロジェクト (仮称) <URL:http://home.jp.FreeBSD.org/~koga/cf/>
で、和訳作業をしています。
同様の設定ファイル生成ツールとして、WIDE プロジェクトが配布していた
CF というツール (cf とは全く別物です) もありました。しかし、sendmail
8.9.X 対応のバージョンを最後に更新されていないため、お勧めできません。
特に sendmail 8.12.0 以降で追加された submit.cf は CF では生成できません。
管理番号 82 (更新)
更新履歴
Q. FreeBSD をネットワーク経由でインストールしたいのですが、どの FTP
サイトを利用したらよいでしょう?
A. 国内のプロバイダを利用している場合は、ftp?.jp.FreeBSD.org が
おすすめです。
<URL:http://www.jp.FreeBSD.org/mirror.html>
を参照して、適当な FTP サイトを選択してください。
なお、ftp?.jp.FreeBSD.org は いずれも [announce-jp 1107] の
(a) 分類の条件を満たしており、ネットワーク条件のよいところに
設置されています。
管理番号 145 (更新)
更新履歴
Q. 起動直後に表示されるメッセージが速すぎて読めないのですが。
A. いくつか方法があります。
A1. /sbin/dmesg | more とする。
A2. /var/log/messages を見る。
A3. デバイスのプローブが終わった後、すなわち、
Automatic reboot in progress...
と表示された後で、Scroll Lock キーを押すと、
PageUp , PageDown , カーソル上下キー
で上下にメッセージを移動できます。再度 Scroll Lock キーを押すと
元に戻ります。
NEC PC-9801/9821 をお使いの場合は、
Scroll Lock -> VF3
Page Up -> ROLLDOWN
Page Down -> ROLLUP
のキーを使ってください。
A4. 4.5-RELEASE 以降なら、/boot/loader がカウントダウンしている時に
リターンキー以外のキーを押し、
boot -p
として起動すると、起動メッセージを1行ずつ確認することができます。
なお、フロッピーディスクでインストールしているときは、A1、A2 の
方法は使えません。
boot -v などで起動すると、起動メッセージの最初の部分が表示されなく
なります。これに関しては [管理番号 1334] をご覧下さい。
管理番号 315 (更新)
更新履歴
Q. インストールは CD-ROM から出来たのですが、インストール後どのように
CD-ROM を使えばいいのか分かりません。
A. 通常、CD-ROM は以下のコマンドを root 権限で実行することで、マウント
して読み出すことが出来ます。
mount -t cd9660 /dev/xxx yyy
# xxx はデバイス名: 例えば ATAPI CD-ROM なら acd0c
# yyy はマウントポイント: 例えば /cdrom や /mnt
/etc/fstab に以下のような記述がある場合には、mount /cdrom でマウン
トすることも可能です。
# Device Mountpoint FStype Options Dump Pass#
/dev/acd0c /cdrom cd9660 ro,noauto 0 0
CD-ROM からインストールした場合には自動的にこの記述が追加され、マウ
ントポイント(ディレクトリ)である /cdrom も作成されるようです。
マウントしたあとは、通常のファイルシステムと同様に参照することが可
能です( ls /cdrom してみてください)。
関連: [管理番号 666] CD-ROM や MO のマウントをする際、いちいち root
になるのが面倒なのですが。
なお Note PC 等で、PC Card 経由で接続された CD-ROM ドライブがうまく
動作しない場合、[管理番号 1408] [管理番号 2132] 等を参照してみてく
ださい。
管理番号 827 (更新)
更新履歴
Q. リモートから telnet 接続できないようにするにはどうすればいいんでしょ
うか。
A. いくつかの方法が考えられます。
・/etc/inetd.conf の
telnet stream tcp nowait root /usr/libexec/telnetd telnetd
という行の先頭に「#」をつけてコメント行にしてしまう。
(kill -HUP `cat /var/run/inetd.pid` を忘れずに)。
この方法だと、localhost からの telnet 接続もできなくなる。
なお FreeBSD 4.4-RELEASE 以降から、telnetd を含めた inetd 経由で
起動されるデーモンは、全て標準で無効になりました。
・tcp_wrapper(tcp_wrappers) を使って、一部のホストからのみ telnet
接続できるようにする。なお、ルータや xinetd で設定することもでき
る。
・該当アカウントのパスワードファイルのシェルを変更しておく。
ユーザ単位での管理で、telnet 接続させたくないユーザのログインシェ
ルに、たとえば /sbin/nologin などを指定して、これを /etc/shells
に登録しておく。
なお、
・telnet のポート番号を変えてしまう。
デフォルトの telnet ポートは23番だが(/etc/services を参照)、これ
を別の空いているポートに変えておく。この方法だと、telnet のポート
番号を知っている自分だけが telnet できる。
というのは、ポートスキャンされれば一発でばれます。やめておきましょう。
管理番号 1489 (更新)
更新履歴
Q. ghostview, gv で、起動時に ps ファイルを指定すると
% ghostview xxx.ps
Segmentation fault (core dumped)
となります。そこで ghostview の場合に
% ghostview
で立ち上げて ghostview の menu で xxx.ps を選択し、okay を押す
Cannot open file: No such file or directory
と表示されるだけで xxx.ps を読むことができません。
A. ~/.Xdefaults や ~/.Xresources などで
*international : TRUE
としていませんか。X のアプリケーションの中には international という
リソースを TRUE にすると正常に動作しなくなるものがあります。
解決方法としては、次のどちらかを選べばよいでしょう。
1. 正常に動かなくなるアプリケーションについては
Ghostview*international : FALSE
GV*international: false
を ~/.Xdefaults や ~/.Xresources に書き加える。
2. *international : TRUE と書くのをやめて必要なアプリケーションに
対してだけ
XCalendar*international : TRUE
のように指定する。
<URL:http://www.netlaputa.ne.jp/~utty/linuxmld/gv1.html>
管理番号 1854 (更新)
更新履歴
Q. FreeBSD(98)で STABLE/CURRENT を make world するにはどうすればよい
ですか。
A. 基本的に、FreeBSD(98) でも STABLE/CURRENT の make world 手順は
i386 と一緒です。少なくとも FreeBSD ハンドブック
<URL:http://www.jp.FreeBSD.org/www.FreeBSD.org/ja/handbook/>
の「make world」関連は熟読するようにしてください。
現在の STABLE/CURRENT では、特に FreeBSD(98) のリリースに含まれるパッ
チを適用しなくても、OS としては動作します。
FreeBSD(98) 移植チームがリリース時に作ったパッチは配布物に含まれて
いますが、sysinstall などの日本語化されたものや、特定機種向けのパッ
チがほとんどです。必要に応じてあてて下さい。
5.0-RELEASE 以降はソースツリーへのマージが一層進み、徐々にパッチの
割合が低下してゆくでしょう。
なお、PC/AT 互換機で pc98 の buildworld も可能です。
make MACHINE=pc98 buildworld のように実行してください。
カーネルのコンパイルには MACHINE 指定は不要です。