FreeBSD QandA 2000年6月25日 更新分
管理番号 588 (更新)
更新履歴
Q. FreeBSD には long double 用の算術関数 sqrtl()、sinl() はないのですか。
A. ありません。しかし、FPU を持っている CPU の場合は、次のような方法が
あります。
一部の算術関数は gcc に最適化フラグ
-O -ffast-math -mfancy-math-387
を付ける事により、buildin function 扱いになり、アセンブラ上に FPU の
命令が直接生成され、使えるようになります。
ただし fmodl() など、使えない算術関数もあります。
どういう関数が使えるかは、gcc の i386.md ファイルを参照して下さい。
(/usr/src/contrib/gcc/config/i386/i386.md)
FreeBSD では long double の算術関数のプロトタイプ宣言が math.h で
行なわれていないので、プログラム中で宣言が必要です。使う関数の
プロトタイプ宣言を Cの参考書等を参考にして追加してください。
FreeBSD の long double は使用上の注意点があります。[管理番号 587]
をご覧ください。
プログラム例
--------------------------------------------------------
#include <stdio.h>
#include <math.h>
#ifdef __FreeBSD__
/* [管理番号 587] を参考ください */
#include <ieeefp.h>
#endif /* __FreeBSD__ */
#ifdef __FreeBSD__
/* プロトタイプ宣言 */
extern long double sinl(long double);
extern long double sqrtl(long double);
#endif /* __FreeBSD__ */
int main()
{
long double ld; double d;
#ifdef __FreeBSD__
/* [管理番号 587] を参考ください */
fpsetprec(FP_PE); /* 仮数部の精度を 64bit にする。 */
#endif /* __FreeBSD__ */
ld = sinl(1.1); d = sin(1.1);
printf("double = %.20f\n", d);
printf("long double = %.20Lf\n", ld);
printf("ld-d = %e\n", (double)(ld-d));
return 0;
}
管理番号 1606 (新規)
更新履歴
Q. パスワードが入力できません。キーボードでタイプした文字が
全く反映されていないようです。
A. login: のときのみ入力文字が見える場合は、正常です。
UNIX では、
- コンソールからの login
- telnet や rlogin 経由の login
のときなど、パスワード入力時にキーを打っても、画面上には
何も表示されない (エコーバックされない) ことが多いです。
ですから、パスワードを入力するところで英数字などを入力
しても、画面上では何の変化も起こらないように見えます。
しかしながら、ちゃんと入力はされているはずなので安心しましょう。
管理番号 1621 (新規)
更新履歴
Q. FreeBSD 4.0-RELEASE で xmcd-2.6 を ports からインストールしたのですが、
no disc と言われて CD が再生できません。また、-debug オプションをつけて
起動すると、
SCSI CDB bytes (dev=/dev/rcd0c rw=0 to=20):
0000 00 00 00 00 00 00 -- -- -- -- -- ..............
SCIOCCOMMAND ioctl failed: Inappropriate ioctl for device
というメッセージが出力されます。
A. おそらく、お使いの imake のバージョンが古いことが原因です。
<URL:http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/ports/audio/xmcd/Makefile?lang=ja>
に、以下のような記述があります。
-- ここから --
1.25 Wed Feb 23 3:40:29 2000 UTC by deischen
CVS Tags: RELEASE_4_0_0
Diffs to 1.24
Upgrade to latest release (xmcd-2.6).
This still fails to build correctly on -current since the /usr/libexec/cpp
fiasco -- old versions of imake still use /usr/libexec/cpp instead of
gcc -E. If you don't have a fixed version of imake, a quick fix to get
around this is to set IMAKECPP=/usr/bin/cpp in your environment before
make'ing this port.
Note that the port builds without errors if you don't have the correct
version of imake, but FREEBSD_CAM will not be defined and xmcd will use
the ioctl method which hasn't worked since 3.0.
-- ここまで --
新しい imake を入れるか、
$ IMAKECPP=/usr/bin/cpp make
として make して下さい。
FreeBSD 4.1-RELEASE 以降では、この問題は起こらないはずです。
管理番号 1638 (新規)
更新履歴
Q. root のパスワードを忘れてしまいました。
/etc/ttys で console を insecure に設定している為、[管理番号 464] の
様にシングルユーザモードに入ってパスワードを再設定しようとしても、root
のパスワードを要求されるのでそもそもシングルユーザモードに入れません。
A. Fixit フロッピーを利用すれば /etc/ttys の console 行の insecure を
secure に変更することが出来、シングルユーザモードで root のパスワード
を変更出来るようになります。
(1) Boot、mfsroot、fixit フロッピーを利用して Fixit モードに入ります。
(2) / パーティションにあたる device を mount します。
例えば、/ パーティションが /dev/wd0s1 の場合は:
Fixit# mount /dev/wd0s1 /mnt
(device は FreeBSD 4.x で ATA なら ad、SCSI なら da となります。
あなたのシステムに合わせて下さい)。
(3) Fixit には ex/vi が含まれていますので、ex/vi を用いて /etc/ttys を
編集し, console と書いてある行の insecure を secure に変更します。
ex を使用する場合は
Fixit# /stand/ex /mnt/etc/ttys
/^console/p
s/insecure/secure/p
w
q
(尚、ここで用いている command はそのまま ed でも通用するはずです)。
(4) /mnt を unmount するのを忘れないようにしましょう。
Fixit# umount /mnt
(5) あとはリブートすればシングルユーザモードに入る際に root パスワード
が要求されませんので、[管理番号 464] などを参考に root のパスワー
ドを変更すれば良いでしょう。
(6) /etc/ttys の console 行を secure から insecure に戻すのを忘れない
ようにしましょう。
おまけ:
一般ユーザでログインできる場合は、/etc/ttys をコピーして編集し、
その後 fixit モードで cp を使ってコピーするという手もあります。
(確認は FreeBSD/i386 3.4-RELEASE、4.0-RELEASE で行なわれています)。
管理番号 273 (更新)
更新履歴
Q. FreeBSD のインストール時にも使われている ee (easy editor)という
エディタがありますが これ 日本語が化けてしまうんですけど。
A. 日本語化されています。ports/japanese/ee にありますので、
ports または packages を使ってインストールしてください。
管理番号 24 (更新)
更新履歴
Q. FreeBSD では PC Card (PCMCIA) が使えますか?
A. 16-bit PC Card は使用できますが、32-bit CardBus PC Card は使えません。
FreeBSD 2.2.x や FreeBSD 3.x では、FreeBSD 標準では PC Card サポートが
貧弱ですから、PAO <URL:http://www.jp.FreeBSD.org/PAO/> を使ってください。
FreeBSD 4.0-RELEASE 以降では普通に使えます。
管理番号 227 (更新)
更新履歴
Q. 16-bit PC Card (PCMCIA) の持っている情報 (CIS tuple) を確認するには
どうしたらいいですか?
A. PC Card をカードスロットに挿入して、
% /usr/sbin/pccardc dumpcis
とします。カードスロットの番号を指定しなければ、全てのスロットに挿入さ
れているカードの CIS タプルを表示します。詳しい使い方は pccardc(8) を
読んでください。なお、現状では CardBus PC Card は正しく扱えません。
管理番号 228 (更新)
更新履歴
Q. 16-bit PC Card (PCMCIA) のアトリビュートメモリの内容を確認するには
どうしたらいいですか?
A. PC Card をカードスロットに挿入して、
% /usr/sbin/pccardc rdattr
で見られます。特別な整形をせず、16進ダンプ形式で表示します。
詳しくは pccardc(8) を読んでください。
管理番号 1646 (新規)
更新履歴
Q. FireWall を構築しました。破棄 (deny) したパケットの log を取りたいので
すが、どのようにすればよいでしょうか?
A. 次のオプションを含めてカーネルを構築してください。
options IPFIREWALL_VERBOSE
options "IPFIREWALL_VERBOSE_LIMIT=30"
オプションの詳しい解説はファイル「/usr/src/sys/i386/conf/LINT」を読ん
でください。
次に、rc.firewall に記述している ipfw のルールに 「log」を追加してくだ
さい。
例えば次のようなルールを記述していたら、
$fwcmd add 65000 deny all from any to any
「deny」の次に「log」という引数を追加してください。
$fwcmd add 65000 deny log all from any to any
記述したら reboot してください。
成功したら次のようなメッセージが console に表示されます。
ipfw: 65000 Deny P:2 123.456.789.012 224.0.0.2 out via mx0
ipfw: 65000 Deny ICMP:9.0 123.456.789.012 224.0.0.1 in via mx0
以上は FreeBSD 3.4-RELEASE にて確認されました。
以下の参考文献を参照してお使いのシステムに当てはまるかどうか確認して下さい。
参考文献: ipfw(8)
FreeBSDハンドブック 「6.4 ファイアウォール」
ファイル 「/usr/src/sys/i386/conf/LINT」