FreeBSD QandA 1999年4月7日 更新分

QandA
QandA Project
登録・更新 QandA 一覧

管理番号 1032 (新規) 更新履歴
Q. ~/.Xresourcesと~/.Xdefaultsって、どう違うんですか?

A. ~/.Xdefaults は、xrdb でディスプレイに対してリソースを
   登録して「無い」場合に、XToolkitアプリケーションが起動時に
   サーバリソースデータベースとして読み込むファイルです。

   つまり、xrdb -query として、登録済リソースが表示されるような
   状況では、~/.Xdefaultsは参照されません。


   ですから、Xのリソース設定に関しては

     (1). ~/.Xresourcesに記述して、~/.xinitrc(~/.xsession)に
            xrdb -merge $HOME/.Xresources
          と書く。
     (2). ~/.Xdefaultsに記述して、各Xアプリケーション(が使っている
          ツールキットのライブラリ)に読み込ませる。

   のどちらでもいいです。

   ただ、(2)の場合、~/.Xdefaultsを編集した後にXアプリケーションを
   起動すると、(xrdb を実行しなくても) 最新の情報が反映される、
   という特徴があります。

   しかし、Xクライアントを他のマシン上で実行している場合は
   ローカルではなく、リモートの ~/.Xdefaults を読んでしまいます。
   一方(1)は、Xクライアントをローカルで実行しようとリモートで
   実行しようと、同じリソース設定が参照されます。つまり、
   ディスプレイにプロパティとしてリソースを登録するのが xrdb なのです。

   ですから、一応(1)が推奨される方法でしょう。


   本来は ~/.Xresources というファイル名でなくてもいいのですが、
   ~/.xinitrcや~/.xsessionがない場合に実行される
     /usr/X11R6/lib/X11/xinit/xinitrc
     /usr/X11R6/lib/X11/xdm/Xsession
   の中で ~/.Xresources というファイルを参照するようになっているので、
   この慣例にならって ~/.Xresources というファイル名にしておくのが
   無難でしょう。


管理番号 1033 (新規) 更新履歴
Q. X Window System 関連の日本語マニュアルはありませんか?

A. X Japanese Documentation Project が翻訳作業を行っています。
     <URL:http://www.dsl.gr.jp/~go/xjman/>

   port(japanese/xjman) が作成されていますので、インストールには
   こちらをどうぞ。


管理番号 206 (更新) 更新履歴
Q. FreeBSD に付いてくる ppp コマンドは、実は iij-ppp だと
   聞いたんですが。日本語マニュアルはどこにありますか?

A. 「FreeBSD の ppp コマンド= iij-ppp」ではありません。
   FreeBSD の ppp コマンドは、iij-ppp を元に、FreeBSD 独自の
   拡張を加えたものです。

   日本語マニュアルも用意されていますので、現状では、あえて
   iij-ppp のマニュアルを読む必要はないでしょう。


管理番号 1179 (新規) 更新履歴
Q. FreeBSD を NFS サーバにして、NFS クライアントに NEWS-OS 4.2.1/6.1.2、
   SunOS 4.1.3_U1 のような古めの OS を用いたところ、FreeBSD
   2.2.1R-RELEASE 以降では、NFS クライアント側でファイルの読み込みに時間
   がかかる時があります。そのときクライアント側の syslog にはこんな記録が
   残っていました。
    
     Nov  6 13:59:36 mimas vmunix: NFS server hyperion not responding still trying
     Nov  6 13:59:36 mimas vmunix: NFS server hyperion ok

A. FreeBSD 2.2.x-RELEASE の NFS デーモンは、/etc/rc.network
   において次のように起動されています。
     echo -n ' nfsd';            nfsd ${nfs_server_flags}
   nfs_server_flags 変数は /etc/rc.conf で
     nfs_server_flags="-u -t 4"
   と設定されています。

   ただし、2.2.1-RELEASE では /etc/rc で
     echo -n ' nfsd';                nfsd -u -t 4
   となっています。

   -u は「UDP NFS クライアント」に対するサービスを、-t は「TCP NFSクライ
   アント」に対するサービスを有効にするオプションです。

   TCP 経由での NFS は最近策定されたものなので、古めの OS ではまず使えま
   せん。実際、上記のクライアントはいずれも TCP 経由での NFSは使えません。

   そこで、 /etc/rc.conf を
     nfs_server_flags="-u 4"
   と書き換えて、UDP 経由の NFS のみを指定します。
   (2.2.1-RELEASE の場合は /etc/rc を直接書き換えましょう)。

   その後 NFS サーバを再起動すればよいでしょう。


管理番号 1180 (新規) 更新履歴
Q. メルコのハイパーメモリーCPU は FreeBSD(98) で利用可能ですか?

A. このボードには CPUと 増設メモリスロットが付いていますが、
       <URL:http://www.indiscipline.com/kawakubo/excache/>
   に置いてある excache-*.* を持ってきて FreeBSD(98)のカーネルソースに
   patch を当ると CPU、増設メモリともに利用できるようになります。

   現時点 (1999/01/15) での対応製品は
    EUD-HP, EUA-QP, EUF-EP, EUZ-QP, EUB-HP, HAS-33QP
   で、2.2.1, 2.2.2, 2.2.5, 2.2.6, 2.2.7, 3.0 用のパッチが用意されています。

   将来的には FreeBSD(98) のソースに取り込んでもらう予定だそうですが、
   2.2.5 以降の動作報告がまだあまりないので、それを待っているところという
   ことなので、使っているみなさんは是非、動作報告を送りましょう。

   HNE-33QP、HND-33QP はデータがないのできちんと対応できていないそうです。
   対応するためには、MS-DOS か Windows95/98 環境で調べてもらいたいことが
   あるそうなので、持っている人はできれば作者に連絡して下さい。
   また、これ以前のハイパーメモリ CPU (EUF-H0M など) は FreeBSD(98) に特
   に patch をあてなくとも、カーネルコンフィギュレーションファイルに

       options "CPU_MELCO_EX_MEMSLOT0=slot0 の容量"
       options "CPU_MELCO_EX_MEMSLOT1=slot1 の容量"
       options MAXMEM=(元々のメモリ容量+ハイパーメモリCPU上のメモリ容量)

   という形で容量を指定すれば利用できます(Excache-1.3 の場合)。
   例えば、元々16MB、EUF 上に32MB搭載していれば
     options         MAXMEM=49152  #48MB
   または
     options         "MAXMEM=(48*1024)"
   と書けばよいでしょう。詳しくは README を参照して下さい。

   FreeBSD(98) 非公式ガイド: <URL:http://www.nisoc.or.jp/~karl/freebsd-pc98/>
   の「その他の情報」も参照して下さい。


管理番号 1181 (新規) 更新履歴
Q. ports&packages の各種ソフトをインストールしたのですが、そのパッケー
   ジでインストールしたソフトを実行するためのコマンド名がわかりません。
     pkg_info -a | more
   で、どういうパッケージをインストールしたのかはわかるのですが、実際に入
   力するコマンドがわかりません。たとえば、 ImageMagick-4.2.1 をインストー
   ルしても、コマンドが /usr/local/bin/display、 /usr/local/bin/convert 等
   だとはなかなか気付きません。

   このパッケージの名前と、実際に入力するファイル名というかコマンドを、対に
   なった一覧表として表示する方法がないでしょうか?

A. 確かに、package名だけではわかりづらいですね。
   pkg_info のコマンドオプション -L で、パッケージ名及び関連ファイル一覧が表示
   されますので、
     pkg_info -a | more
   あるいは
     pkg_info -a | grep なんとか
   として具体的なpackage名をみつけ、

     pkg_info -L package名 | more

   とするとよいでしょう。

   現在のところ pkg_info の引数の package名は完全一致しなければなりません。


管理番号 1203 (新規) 更新履歴
Q. ノートパソコンで FreeBSD を使っており、PAO のインストールフロッ
   ピーを使ってインストールしています。2.2.6-RELEASE までは問題な
   くインストールでき使えていました。しかし 2.2.7-RELEASE 以降では、
   PC-Card コントローラを認識できず、インストール出来ず困っています。

A. 2.2.7-RELEASE の PAO から、Cirrus Logic PD6729 などの PC-Card
   コントローラ(以下 PCIC)に対する初期化部分のコードが変更になりまし
   た。そのため PC-Card の I/O ポートを正しく指定しないと、認識でき
   ない場合があります。

   ノートパソコンの BIOS によって、いろいろな設定法の組み合わせが
   あるので、ここでは簡単に解法を示します。解決できない場合には、
   お気軽に PAO の開発を主に行っている、BSD-nomads メーリングリスト
   で質問してみてください。 

   この問題も、最終的には自動的に処理されるようになると思います。

   A1.
    BIOS で PCIC の I/O ポートを指定できる場合には、PAO のデフォル
    トの 0x3e0 など指定すると良いでしょう。
 
   A2.
    BIOS で、回答 A1. のような設定ができず、Plug & Play O/S =
    [Yes/No] の指定しか出来ない場合には、まず PnP OS = [No] としま
    す。すると PCIC の I/O ポートなどは、BIOS が適当に割り振ってくれ
    ます。

    この場合、BIOS が割り振った値をインストーラのカーネルに教えて
    認識させます。そのためには、一度 BIOS の割り振った値を得るためだ
    けにインストールフロッピーで起動します。そして、再度起動して、値
    を指定すると、PCIC/PC-Card を無事認識できインストール作業に入
    れます。

    第一ステップの値を得る方法は、まずインストールフロッピーで起動
    し boot: のプロンプットで -v オプションを指定します。すると、次の
    ような表示がされると思います。

      pcic0 <Cirrus Logic PD6729/6730 PC-card Bridge> rev 254 class 60500 int a irq ?? on pci0:19:0
             mapreg[10] type=5 addr=0000fcfc size=0004.
                                  ~~~~~~~~
      bus = 0, slot = 19, func = 0

    この 0000fcfc が BIOS によって割り振られた PCIC の I/O ポート
    番号です。この値を確認できたならば、とりあえず、この状態では、
    PCIC/PC-Card は認識できていないと思いますので、リセットするなり
    して再起動します (0000fcfc の値の表示が瞬間で見えない場合には、
    ScreenLock を行い、カーソルキーなどを用いて画面を戻してください。
    英語(English)モードである必要もあると思われます)

    第二ステップでは、再起動させ値を指定します。ここでは、
    [Kernel Configuration Menu] で [Start kernel configuration in
    CLI mode] を選んだ後に次のようにするとよいです。

      config> port pcic0 0x0000fcfc
      config> q

    これで無事 PC-Card が認識でき、2.2.6-RELEASE 以前と同じように
    インストールできると思います。


管理番号 1205 (新規) 更新履歴
Q. natd のプライベート側からグローバル側のマシンのディスクを
   mount するとアクセスに失敗することがあります。

A. mount_nfs -T host:dir dir
   のように TCP モードで mount してください。この時に

     NFS Portmap: RPC: Program not registered

   というエラーが出たら,TCP モードでは mount できないので、

     mount_nfs -r 1024 -w 1024 host:dir dir

   のように readsize と writesize を小さくして mount してください。


管理番号 1207 (新規) 更新履歴
Q. C言語の printf 文で日本語を表示させようとすると、コンパイル時に
   エラーが出るときがあるんですが(コンパイルできる時もある)。

A. ソースの日本語コードが JISコードになっていませんか?

     % echo 'あいう' | nkf -j | hexdump -c
     0000000 033   $   B   $   "   $   $   $   & 033   (   B  \n       

   でわかるように、JIS コードの「あ」には " というキャラクタコードが
   含まれているため、printf("..") の "" の対応がおかしくなり
   コンパイル時にエラーになります。しかし

     % echo 'ほげほげ' | nkf -j | hexdump -c
     0000000 033   $   B   $   [   $   2   $   [   $   2 033   (   B  \n

   のように、JIS コードには常に " が含まれているわけではないので、
   表示させたい文字によって、エラーになったりならなかったりします。

   EUC だと、日本語部分のコードは ASCII コードとは重ならない値を使うため、
   エラーにはなりませんので、ソースを EUC コードに変換してください。
   変換方法は

    [管理番号 1253]
      Q. ファイルの文字コードを変換したいのですが。

    [管理番号 1289]
      Q. 新規ファイルをエディタで作成したときの、文字コード(JIS、EUCなど)を
         指定したいのですが。

   を参照してください。


管理番号 1218 (新規) 更新履歴
Q. package/ports にある、日本語対応の perl (jperl) をインストール
   したのですが、日本語に対して split 等を使っても、オリジナルの perl と
   同じ挙動になります。

A. まず、処理対象の文字列の文字コードを確認してください。jperlは、
   コンパイル時に EUC か SJIS のどちらかを指定してコンパイルされます。
   この指定と、処理する文字列の文字コードが合っていないと正しく処理
   されません。package/ports の jperl は EUC版です。

   文字コードがあっている場合、以下のどちらかのようにすることで、
   日本語を扱うことが出来るようになります。
     1) スクリプトの先頭行を
          #!/usr/local/bin/perl
        でなく、
          #!/usr/local/bin/jperl
        と書く。
     2) 日本語を使う前に perl スクリプトに
          use I18N::Japanese qw(re);
        と書いておく。


管理番号 1243 (新規) 更新履歴
Q. NAT によって異なるネットワークに分割されている Windows 機の間で、 
   ファイルやプリンタの共有を行いたいのですが。 

A. ファイル共有やプリンタ共有は次の要領で行います。 

    ・プロトコルを TCP/IP とする。 
    ・WINS を立ててどのマシンがどこに属しているかを教える。
       (もしくは、LMHOSTS で指定する)   
    ・静的NAT情報を設定する。 

   以下に設定例を示します。ここでは、Windows におけるコンピュータ名の
   解決に LMHOSTS を使い、また NAT として FreeBSD2.2.8 で IP Filter3.2.10
   を用いているものとします。また、この例では、 
      hostA: public なネットワーク上 (123.45.67/24) の Windows 機
      hostB: local  なネットワーク上 (192.168.1/24) の Windows 機
   とし、この2機間で共有を行うとします。 

   1. Windows 機で LMHOSTS を設定する。 

     ・hostA の LMHOSTS 
         IPアドレス: IP filter 機 に割り当てられている public なIPアドレス
         ホスト名:   hostB の Windows 上におけるコンピュータ名

     ・hostB の LMHOSTS
         IPアドレス: hostA に割り当てられている public なIPアドレス
         ホスト名:   hostA の Windows 上におけるコンピュータ名
         (hostAにおける Window s上のコンピュータ名を、DNS で指定されている
          ホスト名と同じにしている時は、hostB の LMHOSTS を設定しなくても良い
          場合がある。)

   2. NAT 機で静的 NAT の設定をする。 IP Filter の場合、/etc/natrulesに、 
        rdr de0 123.45.67.0/24 port netbios-ssn -> 192.168.1.1 port netbios-ssn
        rdr de0 123.45.67.0/24 port netbios-dgm -> 192.168.1.1 port netbios-dgm
      を加える (192.168.1.1は hostB のIPアドレス、de0 は NAT 機の public 側の
      ネットワークインターフェースのドライバ)。

   (投稿者の環境では、hostA、hostBいずれからでも[ネットワークコンピュータ]
    では相手のマシンが見えません。[スタート]-[検索]-[ほかのコンピュータ]
    とし、さらに相手のコンピュータ名を明示して検索することで、相手を
    見ることが出来ます。)


管理番号 1249 (新規) 更新履歴
Q. ウイルスバスター98 を使っているのですが、tools/osbsbeta.exe と
   tools/osbs135.exe に対して PRESTO* というウイルスが発見されたんですが。

A. それは誤った警告です。実際にはウイルスに感染されていません。
   詳しくはこちらをどうぞ。
     <URL:http://www.jp.FreeBSD.ORG/misc/virus-buster.html>


管理番号 1253 (新規) 更新履歴
Q. ファイルの文字コードを変換したいのですが。

A. nkf や qkc を使いましょう。

     % nkf file    > file-jis  (JISに変換)
     % nkf -e file > file-euc  (EUCに変換)
     % nkf -s file > file-sjis (SJISに変換)

   qkc は ファイルを直接書き換えられるので、
     % qkc -e file (EUCに変換)
   とすることもできます。

   nkf、qkcのどちらも、ports/packages が用意されています。さらに詳しい
   使用法は、コマンドと同時にインストールされるマニュアルページ nkf(1)、
   qkc(1) を御覧下さい。

   また、ファイルの文字コードを調べるには [管理番号 1254] を参照してください。


管理番号 1254 (新規) 更新履歴
Q. ファイル中に使われている日本語部分の文字コードの種類を
   知るには どうしたらいいですか?

A. mule に付属する coco というコマンドがあります。
   port/package を使って mule をインストールしてください。

   EUC/JIS/SJIS のファイルを読ませると、それぞれ
     % coco -q < file-euc
     In (*euc-china*unix):   3209 bytes
     % coco -q < file-jis
     In (*junet*unix):   3221 bytes
     % coco -q < file-sjis
     In (*sjis*unix):   3209 bytes
   と出力します。

   なお、実際は日本語 EUC コードであるのにも関わらず、euc-china
   と判定してしまうというバグがあります。

   他にも、
     jless を起動して C-g
     ack -c 
     kcc -c
     wkf -c
     kanji-type    (むかし fj.sources に流れた)
     jcode.pl      (単体のコマンドではないが、perl script 中で 
                    &jcode::getcode(*line) で判定可能)
   などの方法があります。

   ファイルの文字コードを変換するには [管理番号 1253] を参照してください。


管理番号 1289 (新規) 更新履歴
Q. 新規ファイルをエディタで作成したときの、文字コード(JIS、EUCなど)を
   指定したいのですが。

A. エディタによって設定が違います。

     mule-2.3 をお使いなら、 ~/.emacs に
       (set-default-file-coding-system *euc-japan*)

     emacs20/xemacs20 なら、 ~/.emacs に
       (set-default-file-coding-system 'euc-japan)

   と書くと、それ以降 作成されたファイルは、EUCコードになります。また、

     euc-japan でなく iso-2022-jp とすれば JISコード
     euc-japan でなく sjis とすれば SJISコード

   になります。


   ただし、既に存在するファイルを編集・保存した場合は、emacs/mule は
   文字コードを変換せずに、元の文字コードのままにします。

   ですから、既存ファイルの場合は、明示的に変換しないといけません。
   emacs/mule 上からだと

     M-x set-file-coding-system RET *euc-japan* (mule2.3の場合)
       (C-x C-k f *euc-japan* でも可)
     M-x set-buffer-file-coding-system RET euc-japan (emacs20/xemacs20の場合)
       (C-x RET f euc-japan でも可)

   でできます。また、nkf や qkc を使ってもいいでしょう [管理番号 1253] 。


   kterm 上で jvim などを使って編集する場合は、
      kterm -km euc
   として、EUC コードで kterm を立ち上げた上で編集しましょう。


QandA
QandA Project
登録・更新 QandA 一覧