FreeBSD QandA 2003年5月17日 更新分

QandA
QandA Project
登録・更新 QandA 一覧

管理番号 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 指定は不要です。


QandA
QandA Project
登録・更新 QandA 一覧