FreeBSD QandA 2003年10月16日 更新分

QandA
QandA Project
登録・更新 QandA 一覧

管理番号 1144 (新規) 更新履歴
Q. 古い CD-ROM ドライブが装着されたマシン (例えば PC9821Ce2,Cs2) に 
   CD-ROM から FreeBSD をインストールしようとしたところ、ファイルの転送途
   中で止まってしまいます。
   Alt-F2 (pc98 では GRAPH-F2) でホログラフィックシェル画面を確認すると、

     atapi0.1: controller not ready for cmd
 
   というメッセージが表示されている場合があります。

A. wcd ドライバはドライブの busy をきちんと確認していないため、遅い 
   CD-ROM ドライブで問題が起こることがあるようです。
   4.0-RELEASE 以降に入っている ata (acd) ドライバにはこの問題はありません。
   なお、PC-98/NEC での報告が多いのですが、IBM Aptiva や Gateway などでも
   同様の症状の報告があることから PC-98/NEC 固有ではないようです。

   pc98 では 4.6R-Rev01 以降で acd ドライバを使うことで問題が解消される
   でしょう。
   (参考: <URL:http://takeno.iee.niit.ac.jp/~shige/FreeBSD/CD/CD60D.html>)
   また、i386 では 4.0-RELEASE 以降及び pc98 では、5.0R-Rev01 以降は ata
   (acd) ドライバが標準になっていますので、この問題は起こらないと思われます。


管理番号 587 (更新) 更新履歴
Q. gccで "long double" を使用して数値計算を行ないましたが、同じ CPU での 
   Linux の結果と比べて計算精度が悪く、計算結果が異なります。

A. FreeBSD の標準カーネルでは浮動小数点の仮数部の精度が (IEEE754 と異なり)
   53bit に設定されているために起きる現象です。

   long double の仮数部の精度は64bitです。(double の仮数部の精度は 53bit です)

   Intel x86 系の FPU の仮数部の精度は 24/53/64bit に設定可能です。
   FreeBSD では仮数部の精度が 53bit に設定されているために、long double
   を使用しても仮数部の精度が 53bit (つまり、double と同じ) しかありません。

   精度を上げて数値計算を行なうには:

   1. 関数 fpsetprec()/fpgetprec() を使用して、FPU の仮数部の精度を 64bit 
      に変更する事が出来ます。fpsetprec(3) を御覧下さい。

   2. GNU Multiple Precision Arithmetic Library (GMP)、PARI 等 FreeBSD 標
      準以外の数値演算ライブラリを利用してもよいでしょう。

   1. fpsetprec()/fpgetprec() について

   FreeBSD users MLの以下のメールから始まるスレッドが参考になるでしょう。
     Subject: [FreeBSD-users-jp 24352] gcc bug
     Subject: [FreeBSD-users-jp 46648] long double
   その他、オンラインマニュアル fpsetround(3)math(3)ieee(3)などが参考
   になります。
   ただし、fpsetprec は double の内部演算も 64bit 精度にしてしまうという
   副作用があります。double での演算結果が変わってしまう可能性がありますの
   で注意して下さい。

   long double 使用上の注意点:
    * FreeBSD の printf(3) は 5.1-RELEASE から long double に対応しました。
      それ以前 (少なくとも 4.8-RELEASE までと、5.0-RELEASE) は、書式で "%Lf"
      等を使用してもエラーにはなりませんが、double の精度でしか表示されません。
    * long double 用の算術関数 sqrtl(), sinl() 等が標準で用意されていません。
      ([管理番号 588] 参照)

   プログラム例:
   ----------------------------
   #ifdef __FreeBSD__
   #include <ieeefp.h>
   #endif

      ...

   int main()
   {
     long double tmp1, tmp2;
      ...

   #ifdef __FreeBSD__
     fpsetprec(FP_PE); /* 仮数部の精度を 64bit にする。 */
   #endif
      ...
   }
   ----------------------------

   2. 非標準の数値演算ライブラリについて

   GMP (ports/math/libgmp4) は、任意多倍長の整数、整数を法とした計算 
   (modular arithmetic)、有理数、浮動小数点数の四則などが出来ます。但し、
   三角関数、対数関数などの初等的な関数もないので、用途が限られるかも知れ
   ません (自分で頑張って書けば、勿論問題ないですが)。

   PARI (ports/math/pari) は、GMP 同様の数の他、p 進数や、それぞれの数
   を係数とした多項式、羃級数、行列やベクトルの計算ができ、初等超越関数 
   (三角関数や指数対数関数) の他、これでもかというくらい様々な関数が実装
   されています。本来は、整数論用のライブラリ集 (と、対話的に計算するため
   の gp というコマンド (bc の様な感じ)) で、ちょっとした用途には大げさ
   かも知れません。

   いずれも C から使うことになるでしょう。(PARIは、Fortran や Pascal から
   も使えるようです)。

   他に参考になるものとしては
     SAL: <URL:http://SAL.linet.gr.jp/index.shtml>
   があります。


管理番号 2272 (新規) 更新履歴
Q. 起動時に "boot -v" とすれば、詳細なブートメッセージが表示される
   と聞いたのですが、どうやって入力するのか分かりません。

A. FreeBSD 起動時に、

     Hit [Enter] to boot immediately, or any other key for command prompt.

   と出てきたところで Enter 以外 (例えばスペースキーなど) を叩くと

     ok

   というプロンプトが表示されますので、ここで

     boot -v

   と入力します。

   ハンドブックの以下の項目も参考になるでしょう。
     <URL:http://www.jp.freebsd.org/www.freebsd.org/ja/handbook/boot-kernel.html#BOOT-KERNEL-BOOTFLAGS>
     <URL:http://www.jp.freebsd.org/www.freebsd.org/ja/handbook/boot-loader.html#BOOT-LOADER-COMMANDS>


管理番号 1677 (更新) 更新履歴
Q. ATA のハードディスクを使っています。
      下記のように、起動しなかったり、起動してもうまく動かないようです。

    Q1. ブート時に下記のようなメッセージが表示されて起動しません。

         Loading /boot/defaults/loader.conf
         /kernel text=0x18d372 data=0x3d0ec+0x2158c |
         elf_loadexec: archsw.readin failed
         Unable to load kernel:
         Aborted!

    Q2. 起動する場合もありますが、HDD への書きこみエラーが頻繁に起きたり、
       HDD の回転が止まったりします。

A. ATA ケーブルに問題がある可能性があります。
   例えば、ATA66 までしか対応していないケーブルを使って ATA100 や 
   ATA133 対応のデバイスを接続すると起きることがあります。
   場合によっては、ハードウェア、ソフトウェアいずれか、または両方にな
   んらかの制限があるということもありえます。

   このようなケースでは、ブート時にはそのままエラーになってしまい起動
   できませんが、たまたまうまく起動した場合は自動的に PIO モードに
   フォールバックするので、それなりに動くことがあります。
   その場合は、下記のようなメッセージが出るでしょう。

     ad0s1g: UDMA ICRC error writing fsbn 40927487 of 13123680-13123711 (ad0s1 bn 40927487; cn 2547 tn 157 sn 41) retrying
     ad0s1g: UDMA ICRC error writing fsbn 40927487 of 13123680-13123711 (ad0s1 bn 40927487; cn 2547 tn 157 sn 41) falling back to PIO mode

     ad0: UDMA ICRC READ ERROR blk# 2612047 retrying
     ad0: UDMA ICRC READ ERROR blk# 6752531 retrying
     ata0-master: WARNING: WAIT_READY active=ATA_ACTIVE_ATA
     falling back to PIO mode
 
     ad0: UDMA ICRC WRITE ERROR blk# 2111 retrying
     ad0: UDMA ICRC WRITE ERROR blk# 4195013 retrying
     ata0-master: WARNING: WAIT_READY active=ATA_ACTIVE_ATA
     falling back to PIO mode

   対処法 1. ケーブルを適切なものに交換します。

   対処法 2. 本質的な解決ではありませんが、DMA を無効にするとうまく動
     く場合があります。[管理番号 852] を参考にしてください。


管理番号 592 (更新) 更新履歴
Q. パーミッションの実行許可 (rwx の x) がよく理解できません。ファイルの
   場合は、そのファイルが実行可能かどうかを表しますが、ディレクトリだと
   どうなるのでしょうか。

A. ディレクトリの実行許可を より正確に表記すると、
      「実行/検索 (execute/search) 許可」
   となります。これは、そのディレクトリ名をパス名 (ファイル名) の一部
   として使っていいかどうかの判断に使われます。

   それではどうしてまた、パス名の一部に使っていいかどうかを示すのに、
   「検索」などというのでしょう。だいたい「検索」って何を探しているの
   でしょう。これは、カーネルの内部動作を示していて、その動作の内容を
   知らないと意味不明な言葉なのです。


   UNIX では、ファイルを示すのにパス名を使います。一方、カーネル内部で
   は、ファイルを扱うときに inode を使います。このため、カーネルは、シ
   ステムコールなどでパス名を指定された場合、そのパス名が示す inode を
   知らなければなりません。

   カーネルが最初から知っているのはルート("/")とカレント(".")の 2つの
   ディレクトリの inode だけです。

   なので、パス名で指定されたファイルをカーネルが扱うには、この2つのど
   ちらかの位置から、ひとつひとつディレトリを辿り、目的のパス名の最後
   の要素が入っているディレクトリを探し当て、そこに書かれた inode番号
   から目的とするファイルの inode を探し求める旅に出ることになります。

   この「ディレクトリを辿ってパス名で示されたファイルの inode を探す」
   ことをパスの検索(path search)といい、namei という有名なカーネル関数
   がその仕事をしています。この inode を探し求める旅で、通過するディレ
   クトリの中を「検索」していいかを決めるのが、ディレクトリの search
   permission ということになります。直訳すれば「検索許可」。「検索権」
   とも呼ばれます。

   たとえば、/etc/hosts を "/etc/hosts" という絶対パス名を使ってアクセ
   スして読みたい場合には、/etc/hosts そのものの読取り許可だけでなく、
   "/" と "/etc" 両方のディレクトリに検索許可が必要です。

   カーネルの動作をもう少し細かく書きましょう。

   "/etc/hosts" を指定されたカーネルは、これを "/", "etc", "hosts" に
   分解してひとつづつ調べていきます。"/" の inode をカーネルは知ってい
   ますから、"/" の中を検索して "etc" というエントリを見つけます。が、
   その前に "/" を検索していいかどうかを確認します。この時使うのがディ
   レクトリの実行/検索許可です(注)。許可がなければここでエラーになり、
   許可があれば中を検索して "etc" を見つけ出します。

   見つけたエントリにはファイル名(ディレクトリ名)とその inode番号の組
   が書かれていますから、inode番号から inode が手に入ります。次にやる
   のは "etc" の中を検索して "hosts" を見つけ出すことです。そう、もち
   ろん検索の前には、"etc" に実行/検索許可があるかどうかを確認します。
   許可があって "hosts" が見つかったなら、"/etc/hosts" の inode が手に
   入り、検索はここで終ります。

   カレントディレクトリ(".")からの相対指定でも、同様の検索をおこなって
   目的ファイルの inode を求めます。カレントディレクトリが /usr/X11R6 
   だとして、grep -i green lib/X11/rgb.txt を実行するには、".",
   "/usr/X11R6/lib", "/usr/X11R6/lib/X11" の3つのディレクトリに検索許
   可が必要になります。

   "lib/X11/rgb.txt" を指定されたカーネルは、パス名が "/" で始まってい
   ないので、カレントディレクトリから検索をおこないます。カレントディ
   レクトリの inode をカーネルは知ってますから、中を読んで "lib" とい
   うエントリを検索します。もちろん検索の前にはカレントディレクトリの
   実行/検索許可を確認し… あとは同じです。


   このように、カーネルにとっては単純に「検索許可」であるものが、カー
   ネルの外からは「パス名の一部に使っていいかを制限している」と説明す
   るしかない風変りなものに見えるのです。


   関連項目
     intro(2) DEFINITIONS節の File Name から File Access Permissions。
     UNIXカーネルの設計, 4.4節 パス名のiノードへの変換
     Lion's Commentary on UNIX(r) 6th Edition, unix/nami.c
     /sys/kern/vfs_lookup.c

   注
     ディレクトリの中を検索するとき、当然これらをカーネルは「読」んで
     いますが、この時に必要なのは検索許可であり、読取り許可は問われな
     いことを覚えておきましょう。読み取り許可は、ユーザープロセスが読
     む時に使われるものです。


管理番号 1683 (更新) 更新履歴
Q. Kerberos (ケルベロス) をアンインストールするにはどうしたらいいですか。

A. 2 つの方法があります。

   A1. /stand/sysinstall を使って bin をインストールし直す。

     FreeBSD FAQ「Q: Kerberos をアンインストールするにはどうすればいいの?」
       <URL:http://www.jp.FreeBSD.org/www.FreeBSD.org/ja/FAQ/admin.html>
     に書かれている方法で、これが一番簡単です。ただし、これをやると、/etc
     のファイルなども最初の状態に戻ってしまう恐れがありますし、DES をインス
     トールしていた場合はそれもいくつかのファイルが元に戻ってしまいます。

   A2. Kerberos によって置き換えられてしまったファイルを、bin, proflibs
       配布ファイルから復元する。

     例えば次のようにするといいでしょう。なお、$CDROM は FreeBSD の配布ディ
     レクトリを指定しておきます。

     1) ルートディレクトリに移動します。
       # cd /

     2) Kerberos の配布ファイルに含まれるファイルのリストを作ります。
       [3.5-RELEASE まで]
       # cat $CDROM/des/krb.?? | tar ztf - | sort > /tmp/ttt

       [4.0-RELEASE から]
       # cat $CDROM/crypto/krb4.?? | tar ztf - > /tmp/ttt1
       # cat $CDROM/crypto/krb5.?? | tar ztf - >> /tmp/ttt1
       # sort /tmp/ttt1 | uniq > /tmp/ttt

     3) 元のファイルを配布ファイルから展開します。
       # chflags noschg `cat /tmp/ttt`
       # cat $CDROM/bin/bin.?? | tar --unlink -zxvpf - `cat /tmp/ttt` > /tmp/yyy
       # cat $CDROM/proflibs/proflibs.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy
       # cat $CDROM/manpages/manpages.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy

       [4.0-RELEASE から追加]
       # cat $CDROM/crypto/crypto.?? | tar --unlink -zxvpf - `cat /tmp/ttt` >> /tmp/yyy

     4) 残ったゴミを片付けますが、念のためどのファイルが削除
        されるか確認してください。
          # comm -3 /tmp/ttt /tmp/yyy1

     5) 確認できたら、削除します。
          # rm -f `comm -3 /tmp/ttt /tmp/yyy1`

   おまけとして、上記の作業を自動化するスクリプトを添付します。使用に
   際しては自己責任でお願いします。

   なお、この作業は /etc や /bin などを直接いじる作業になりますので、
   本質的に危険です。tar の仕様変更により、実際に被害が出た例もあり
   ます [FreeBSD-users-jp 74025] (以下のスクリプトでは修正済みです)。

   ----ここから----
   #!/bin/sh
   # Example:
   #  # cd /
   #  # sh ./uninstall_kerberos /proj/ftp/FreeBSD/4.2-RELEASE
   # Please use *at your own risk*

   CDROM=/cdrom
   [ "$1" != "" ] && CDROM=$1

   KRB=/tmp/krb.list
   KRB1=/tmp/krb1.list
   ORG=/tmp/org.list
   ORG1=/tmp/org1.list
   DEL=/tmp/del.list

   CRYPTO=
   echo 'Make a list of kerberos binaries.'
   if [ -d $CDROM/crypto ]; then
     CRYPTO=crypto
     cat $CDROM/crypto/krb4.?? | tar ztf - > $KRB
     cat $CDROM/crypto/krb5.?? | tar ztf - >> $KRB
   elif [ -d $CDROM/des ]; then
     cat $CDROM/des/krb.?? | tar ztf - > $KRB
   else
     echo "$CDROM: No such kerberos distribution files." 1>&2
     exit 1
   fi
   sort $KRB | uniq > $KRB1

   echo -n 'Restore files from distribution files:'
   rm -f $ORG
   chflags noschg `cat $KRB1`
   for i in bin proflibs manpages $CRYPTO
   do
     echo -n " $i"
     cat $CDROM/$i/$i.?? | tar --unlink -zxvpf - `cat $KRB1` >> $ORG 2> /dev/null
   done
   echo "."

   echo 'Cleanup all garbage.'

   sort $ORG | uniq | sed '/\/$/d' > $ORG1
   comm -3 $KRB1 $ORG1 > $DEL
   less $DEL
   read -p "Would you like to delete these files now? y or n [n]" YES_NO
   case "${YES_NO}" in
   y)
     rm -f `cat $DEL`
     rm -f $DEL
     ;;
   *)
     echo "Make sure to run rm -f `cat $DEL` yourself"
     ;;
   esac
    :
   ----ここまで----


管理番号 101 (更新) 更新履歴
Q. PS/2 マウスの Sample Rate を変えることは出来ますか?

A. 1. psm ドライバの flags で変更することができます。psm(4) によると、

        bit 0..3 RESOLUTION
        bit 4..7 ACCELERATION

      ということなので、例えば /boot/kernel.conf に、

        flags psm0 0x14
        quit
   
      と書いておけば、もっとも高感度(200 ppi)かつ加速度最大の設定になります。

      詳細は psm(4) のマニュアルページを御覧ください。

      なお FreeBSD 2.2.5-RELEASE 以前ではこの flags の指定は無効ですが、
      カーネル再構築の際、コンフィグレーションファイルに
         options "PSM_ACCEL=N"
      を入れておけば(N >= 1)、加速度については設定できます。

   2. moused(8) をお使いなら、/etc/rc.conf の moused_flags で変更する
      ことができます。例えば、

        moused_flags="-r high -a 1"

      と書いておけば、上記の 1. とほぼ同様の設定になるようです。
      詳細は moused(8) のマニュアルページを御覧ください。

      また X で使う時のマウスの移動速度は xset(1) で変更できます。


管理番号 666 (更新) 更新履歴
Q. CD-ROM や MO のマウントをする際、いちいち root になるのが面倒なのですが。

A. amd (Auto Mount Daemon) という、あるディレクトリを参照すると自動的にマ
   ウントしてくれるシステムがあります。

   amd を利用するためにはカーネルに NFS が組み込まれていなければなりませ
   ん。具体的にはカーネルコンフィギュレーションファイルに
     options NFS
   という行が必要ですが、デフォルトの GENERIC カーネルには含まれています
   ので、この行をあえて削除していないならば amd は利用可能です。

   現在、次のようにマウントできているとします。
     CD-ROM          mount -t cd9660 /dev/cd0a /cd
     MO (UFS 形式)   mount /dev/od0a /od
     MO (FAT 形式)   mount -t msdos /dev/od0s1 /odpc
     HDD (FAT 形式)  mount -t msdos /dev/sd1s1 /dos

   この場合は次のように /etc/amd.map を書きます。

       /defaults       fs:=/a/${key}
       cd      type:=program;\
               mount:="/sbin/mount mount -t cd9660 /dev/cd0a ${fs}";\
               unmount:="/sbin/umount umount /dev/cd0a";
 
       od      type:=program;\
               mount:="/sbin/mount mount /dev/od0a ${fs}";\
               unmount:="/sbin/umount umount /dev/od0a";
 
       odpc    type:=program;\
               mount:="/sbin/mount mount -t msdos /dev/od0s1 ${fs}";\
               unmount:="/sbin/umount umount /dev/od0s1";
 
       dos     type:=program;\
               mount:="/sbin/mount mount -t msdos /dev/sd1s1 ${fs}";\
               unmount:="/sbin/umount umount /dev/sd1s1";

   amd を実行するためには portmap(8) というデーモンを起動しておかなく
   てはなりませんが、FreeBSD 4.4-RELEASE 以降では portmap が標準で起動
   しなくなりました。

   もし ps ax | grep portmap して portmap が起動していないようなら、amd
   よりも先に
      # portmap
   として portmap を起動してください。なお、/etc/rc.conf に
      amd_enable="YES"
   と記述してマシンを再起動すれば、自動的に portmap が起動されます。

   ディレクトリを作成して、実行テストをします。
      % mkdir -p /a/{cd,od,odpc,dos}
      % amd -l syslog -c 20 /mnt /etc/amd.map

   もし /mnt/cd が参照 (ls /mnt/cd 等) されたら、amd は
      % mount -t cd9660 /dev/cd0a /a/cd
   を自動的に実行し、/a/cd へのシンボリックリンクを /mnt/cd に作成します。

   また、一定時間が経過すると自動的にアンマウントします。この場合は -c 20 
   によって 20秒に設定されます。

   ここまでうまく行ったら起動時に amd を起動するようにしましょう。
   /etc/rc.conf を次のようにします。
      amd_enable="YES"
      amd_flags="-l syslog -c 20 /mnt /etc/amd.map"

   また、
     % ln -s /mnt/cd /cd
   のようにしておくと、/cd にアクセスすると /mnt/cd にアクセスしてくれて
   少し便利です。デバイス名はご自分の環境に合わせて下さい。

   さらに、手動でCD-ROMなどを eject したい場合は、
     % amq -u /mnt/cdrom
     % cdcontrol eject (もちろん、かわりに eject ボタンを押してもいいです)
   などとしてください。これは一般ユーザ権限で実行可能です。

   また、メディアが挿入されていない状態で /mnt/cdrom などにアクセスすると、
   amd は automount が失敗したことを認識してくれません。この場合は、再度
   amq -u /mnt/cdrom としてください。


管理番号 54 (更新) 更新履歴
Q. IBM のパソコンを使っているんですが、Mwave という内蔵モデムは FreeBSD で
   使えますか?

A. モデルによっては使えます。

   ThinkPad 600/700 シリーズに内蔵の Mwave モデムに関しては、mwavem と
   いう loadable kernel module 形式のデバイスドライバが用意されていま
   す。ports になっていますので、対応機種をお持ちの方はどうぞ。


管理番号 574 (更新) 更新履歴
Q. 内蔵モデムボードを使えるようにする設定方法を教えて下さい。

A. 内蔵モデムボードと言っても ハードウェア的にシリアルポートとその先に
   モデムが接続されている様に見えるものがほとんどです。このタイプであれば、
   外付けモデムが シリアルポートに接続されている場合と同じ様に考えて設定す
   れば利用できる様になります。

   従って内蔵モデムカードであっても シリアルインターフェイスの部分は、
   通常のシリアルポートと同じように設定します。

   もし、内蔵モデムボードが Windows 専用とされている、いわゆる WinModem で、
   シリアルポートとしてカーネルに認識してもらえない場合でも、ものによっては
   使える場合があります。[管理番号 832] を参照してください。

   内蔵モデムカードを利用するときは、既にマザーボードなどにある シリアル
   ポートとポートアドレスや割り込みが競合しない様にしなければなりません。

   MS-DOS での 一般的なポートと I/O アドレス, IRQ の割り当ては以下のように
   なっています。

     COM   デバイス  I/O  IRQ
     ----  --------  ----  ---
     COM1  sio0      3F8   4
     COM2  sio1      2F8   3
     COM3  sio2      3E8   4
     COM4  sio3      2E8   3
  
   COM1 と 3, COM2 と COM4 で IRQ が重なっていますので、これらは同時使えない
   仕様になっています。 もし同時に使うのであれば IRQ を使われていない別の
   番号に割り当てる必要があります。


管理番号 832 (更新) 更新履歴
Q. WinModem ってどんなモデムですか?

A. モデムの機能の一部を OS (Windows) に分担させるモデムです。ほとんどの
   場合、メーカーからは Windows 用のデバイスドライバしか提供されないの
   で、それ以外の OS からこの種のモデムを利用することは難しいです。

   しかし一部の機種については、Linux 用のデバイスドライバも提供される
   ようになりつつあります。

   また有志の努力によって、これらのドライバを FreeBSD で使えるようにし
   たものがあり、今のところ2つのドライバが ports になっています。

   Driver for the Lucent LT Winmodem chipset (ports/comms/ltmdm)
    Lucent (現 Agere) の Mars チップ用のドライバです。

   Loadable module and user excutable to support IBM Mwave ACP modem
   (ports/comms/mwavem)
    IBM ThinkPad 600/700 シリーズに内蔵の Mwave チップ用のドライバです。


   また PCI-Bus に挿すモデム(シリアル)ボードの中には、NetBSD 由来の 
   puc(4) ドライバで動作するものもあるようです (NEC PK-UG-X001 等)。


   Linux 向けですが、以下のページが参考になるかも知れません。

   Linモデム(linmodem)ドライバで Winモデム(winmodem)を動かそう 
      <URL:http://www.yk.rim.or.jp/~kawagisi/winmodem.html>


   なおPC内蔵タイプのモデムを、FreeBSDで使うつもりで購入するのなら、モ
   デムチップに何が使われているかが選択のポイントになります。よく下調
   べをしてから購入することをお勧めします。たとえば
       REX-PCI56 <URL:http://www.rexpccard.co.jp/products/network.html>
   は、箱に Linux Ready! と書いてあるので「たぶん FreeBSD でも使えるだ
   ろう」と思ってしまうかもしれませんが、実は PCTel 製チップを使った 
   WinModem です (箱のどこにも WinModem とは書いてありません)。メーカー
   が Linux 用ドライバを提供しているのですが、現状、FreeBSD では使えま
   せん。


管理番号 248 (更新) 更新履歴
Q. PC-9821 の内蔵 2nd シリアルポートを使おうとするとハングアップします。

A. 2nd シリアルポートの FIFO を使わないようにしてください。そうすると
   ハングアップしなくなるようです。

   ブート時に loader のところでスペースキーを押し ok プロンプトが出たら
   boot -c で起動させます。config> プロンプトが出たら
      flags sio1 0x12000002
   としてブートさせます。
   起動後 kget > /boot/kernel.conf を実行しておけば次回起動時からは
   自動的にこの flags が sio ドライバに与えられます。
   5.0-RELEASE 以降では、/boot/device.hints に
      hint.sio.1.flags="0x12000002"
   と書けばよいです。

   または、カーネルのコンフィグファイルの sio1 に関する部分を
      device sio1 at isa? port 0x238 irq 5 flags 0x12000002
   としてカーネルを再構築します。

   以上のようにすれば FIFO を使わないようになりますので、内蔵の 2nd シ
   リアルポートが使えるでしょう。


管理番号 581 (更新) 更新履歴
Q. ある NFSサーバに mount しようとすると以下のメッセージが出て接続ができません。
     > NFS Portmap: RPC: Program not registered
   その NFS サーバには他のプロトコルでは接続できています。
 

A. NFS サーバ側のカーネルと /etc/rc.conf の内容を確認してください。
 
   1) カーネルのコンフィグレーションファイルに  
         options NFS             #Network File System
      を入れていること、
         options NFS_NOSERVER    #Disable the NFS-server code.
      を入れていないことを確認します。
 
   2) /etc/rc.conf で nfs_server_enable= が "NO" になっていたら
      "YES" にします。/etc/rc.conf では、同じ変数を二回以上指定
      した場合は 後優先になるので、気を付けて読んでください。

   以上の手順を踏んでから reboot させます。

   これでもうまくいかない場合、/etc/hosts.allow を確認してください。
      ALL : ALL : allow
   という行をコメントアウトしていませんか? コメントアウトする
   こと自体はセキュリティを高めるためのよい方法ですが、NFS を
   使用する際は portmap ののポートを開けておかなくてはいけません。

   例えば、マウントしたいサーバが 192.168.12.34 ならば、
      portmap : 192.168.12.34/255.255.255.0 : allow
   のように、NFS サーバとの通信を許可する設定を追加してください。


QandA
QandA Project
登録・更新 QandA 一覧