FreeBSD QandA 2001年5月7日 更新分
管理番号 1137 (新規)
更新履歴
Q. メールを受信して、mule 上で M-x mh-rmail として新着メールを読み込む、
あるいは MH で inc ないしは scan する時に、メールサマリーの Subject
や From 欄の日本語が
テスト
などとなり、正しく表示されない。
A. 古いバージョンの MH を使用している場合、MIME エンコードされた
メールヘッダーが正しく処理されないことがあります。
2001 年 4 月 12 日現在 ports/packages に収録されている
ja-mh-6.8.4.j3.03 はデフォルトでこれを正しく扱えますので、
MH のバージョンアップをしてください。特に設定をしなくても、
コマンドラインから inc ないしは scan する際には正しく
日本語が処理されます。
上記の設定だけで mule の mh-rmail 使用時に問題が解決されない
場合には ~/.mh_profile に以下を追加してください。
file-coding: ja_JP.jis7
process-coding: jp_JP.jis7
display-coding: jp_JP.jis7
[管理番号 458] も参照してください。
管理番号 1160 (新規)
更新履歴
Q. Sharity-Light で Windows のディスクをマウントしましたが、
すでにあるファイルへの上書きや追加書き込みをしようとすると
<ファイル名>: Input/output error.
というエラーが出てしまいます。
A. shlight に -e オプションをつけてマウントしてください。
たとえば、Windows 側のマシン名が WIN、共有するフォルダの
共有名が MYDOC で、これを FreeBSD 側の /win にマウントする
場合なら、
# shlight //WIN/MYDOC /win -e
としてマウントします。
管理番号 300 (更新)
更新履歴
Q. 音楽 CD を鳴らすにはどうしたらいいですか?
A. まずは CD のデバイスを調べましょう。基本的には
SCSI CD ドライブなら /dev/cd0c
ATAPI CD ドライブなら /dev/wcd0c (FreeBSD 2.2.8-RELEASE 以前)
/dev/acd0c (FreeBSD 3.0-RELEASE 以降)
となっていますが、わからなければ dmesg(8) コマンドで調べてください。
例えば、
acd0: <CD-ROM 40X/AKU/T02> CDROM drive at ata1 as master
acd0: 128KB buffer, PIO4
acd0: Reads: CD-R, CD-RW, CD-DA stream, packet
acd0: Audio: play, 255 volume levels
acd0: Mechanism: ejectable tray
acd0: Medium: no/blank disc inside, unlocked
などという出力が得られれば /dev/acd0c が CD のデバイスです。
次に FreeBSD 付属の cdcontrol(1) コマンドで音楽 CD が鳴るか
どうかを試してみましょう。
% cdcontrol -f 調べたデバイス名 play 1
で、CD の 1 曲目が鳴るはずです。
注意点 1.
デバイスの読み込み権限が必要ですので、
cdcontrol: /dev/acd0c: Permission denied
などとなったら、root で
# chmod 644 /dev/acd0c
とするのがよいでしょう。これだと誰でも音楽 CD を鳴らせます
(逆にいうと、誰でも鳴らせるという危険性もあります)。
あるいは、デフォルトでは
crw-r----- 2 root operator .... /dev/acd0c
となっているので、「音楽 CD を聞きたい人は operator グループに
属する」と決めておく手もあります。ただし operator グループに属する
人は shutdown(8) できてしまいます → [管理番号 461]
また、/etc/fbtab に
/dev/ttyv0 0644 /dev/acd0c
などと記述する方法もあります。詳細は fbtab(5) の man ページを
参照してください。
とりあえず試すだけなら root で cdcontrol(1) を実行すればよいです。
注意点 2.
音楽 CD の音をサウンドカードから出すには、サウンドカードの
設定が必要です。もしまだサウンドカードの設定を行っていない
場合は、CD ドライブ前面のヘッドホンジャックから音が出ている
か調べて下さい。CD ドライブ前面のヘッドホンジャックは、サウ
ンドカードを経由せず、直接 CD ドライブから出力されているから
です。
なお、音楽 CD を鳴らす際、cdcontrol(1) などの CD プレイヤーは、
CD ドライブに「何曲目を鳴らせ」と命令を出します。後は CD ドライブが
音を垂れ流して、サウンドカードは CD ドライブからの出力をミキシング
して出力するだけです。その証拠に、FreeBSD を shutdown(8) しても、
マシンの電源が切れるまでは演奏は続きます。
ですから、音楽 CD が鳴るからといってサウンドカードの設定が
うまくいっている (=MP3 も鳴る) とは限りません。
cdcontrol(1) 以外にも、ports/packages で xcdplayer, cdplay, workman,
cdplayer, xmcd, cda, wmcdplay などたくさんの CD プレイヤーが用意されて
います。ところが、以下の例のように、デバイスの指定方法がばらばらです。
cdcontrol -f /dev/acd0c play 1
xcdplayer -device /dev/acd0c
workman -c /dev/acd0c
wmcdplay -d /dev/acd0c
デバイスの指定方法については、各コマンドの man ページを参照して下さい。
管理番号 1505 (新規)
更新履歴
Q. FreeBSD 2.2.x-RELEASE を使用しています。一般ユーザでも
mount(8) コマンドが使用できるように
chmod 4555 /sbin/mount
としたところ、次回起動時からはシングルユーザモードでしか
立ち上がらなくなりました。
A. 2.2.x-RELEASE の場合、
ls -l /sbin/mount などとしてみると、デフォルトでは
-r-xr-xr-x 1 bin bin 69632 Mar 25 /sbin/mount
となっていると思います。これを chmod(1) コマンドなどで
SUID すると、たとえ root が実行しても、ユーザ bin の権限でしか
実行されなくなり、ファイルシステムが mount 出来なくなってしまいます。
対策としては、fixit.flp からシステムを起動して
Fixit# mount /dev/wd0a /mnt (もし /mnt が無ければつくる。)
Fixit# chmod 555 /mnt/sbin/mount
と元に戻して reboot(8) してください。fixit.flp については
[管理番号 483] に説明があります。
なお、mount(8) コマンドを SUID するのは薦められません。
[管理番号 666] などを参考にして amd(8) の使用を検討してください。
管理番号 662 (更新)
更新履歴
Q. ppp で filter を設定していますが、cvsup が動きません。
A. cvsup は port として 5999 を使うので以下のように指定してください。
また、cvsup を multiplexed モードで動かす必要があります。最近の
cvsup (cvsup 16.0 以降) のデフォルトは multiplexed モードですが、
明示的にこのモードにするには
cvsup -P m <以下略>
のように指定してください。
[2.2.8-RELEASE 以降]
# cvsup
set filter in rule-no permit tcp src eq 5999 estab
set filter out rule-no permit tcp dst eq 5999
[2.2.7-RELEASE 以前]
# cvsup
set ifilter rule-no permit tcp src eq 5999 estab
set ofilter rule-no permit tcp dst eq 5999
なお、rule-no は filter 指定時のルール番号です。
管理番号 1885 (新規)
更新履歴
Q. X 上で emacs2x を使っています。 font の size や face
を変えたいのですが どの樣に設定すればいいのでしょうか。
A. X 用の application 設定は、 xrdb で行います。設定例を示し
ますので、自分用に書き換えてください。
(リソースについては: [管理番号 1032]、[管理番号 496])
------ ~/.Xresources ------
!! Emacs
! 全ての言語用フォントを 10 dots にする
! registry は "fontset" encoding は `特徴的な nickname` とする
! 詳細は、M-x view-emacs-news の Defining fontsets 欄を参照
Emacs.Font: fontset-10
Emacs.Fontset-0: -*-fixed-medium-r-normal--10-*-*-*-*-*-fontset-10
------ ~/.Xresources ------
次に、この樣に記述した リソース (resource) ファイル を X Server
Resource database に登録します。
(既定の設定を消さない様に: -merge)
xrdb -merge $HOME/.Xresources
--ツール--
xfontsel X11 のフォント名をマウスで選択する
xlsfonts X におけるサーバのフォントリストの表示
mkfontdir X フォントファイルのインデックスを生成
--ファイル--
/usr/X11R6/lib/X11/fonts/ フォントファイルの既定 Root
fonts.dir X フォントファイルのインデックス
~/.Xresources X リソースファイル
--参考文献--
GNU Emacs + Gnus + Mew の環境を作ろう
<URL:http://emacs-20.ki.nu/>
XWindow User HOW-TO
<URL:http://www.linux.or.jp/JF/JFdocs/XWindow-User-HOWTO-7.html>
管理番号 357 (更新)
更新履歴
Q. kterm で日本語ファイルを cat すると文字化けします。正しく日本語を表示
させるにはどうしたらいいのですか?
A. kterm(1) が pty(4) とやりとりするデフォルトの漢字コードは JIS です。
例えばファイルの内容が Shift-JIS で書かれていれば、当然ながら cat(1)
の結果は文字化けとなります。また、kterm 上で利用するアプリケーション
の入出力についても同様のことが言えます。
kterm に漢字コードを指示するには以下の3通りの方法があります。
1. kterm の VT Options メニュー
Ctrl + マウスの中ボタン (2番目のボタン) でメニューを表示させて、
`Japanese EUC Mode' をチェックすれば EUC コード、
`Shift-JIS Mode' をチェックすれば Shift-JIS となります。
どちらもチェックされてなければ、デフォルトの JIS コードです。
2. コマンドラインオプション
kterm 実行時のオプション -km で指定します。
-km euc 日本語 EUC コード
-km sjis Shift-JIS コード (マイクロソフト漢字コード)
-km jis JIS コード (ISO-2022-JP ベース)
3. X リソースで指定
以下のどれか1行を ~/.Xresources または ~/.Xdefaults に追加して、
KTerm*kanjiMode: euc
KTerm*kanjiMode: sjis
KTerm*kanjiMode: jis
X を再起動するか
% xrdb -merge ~/.Xresources
などとします。もし、-km オプションが指定されていれば、そちらが
優先されます。
具体的に漢字コードを EUC とする場合の手順を示します。
o 上記のいずれかの方法で kterm を起動して、漢字コードを EUC にします。
確認は kterm の Ctrl + マウスの中ボタンでできます。
o stty(1) を使って pty が 8 bit を通すようにします。
% stty cs8 -istrip -parenb
o EUC コードのファイルが cat で正しく表示されるか確認します。
% kterm -km euc -fn a14 -fk k14
としても上手くいかないようなら、[管理番号 1366] を参考にしてフォント
指定を確認する必要があります
管理番号 358 (更新)
更新履歴
Q. 日本語の文章を kterm にカットアンドペーストすると文字化けします。
A. まず、[管理番号 357] を参照してください。
o kterm(1) の漢字コードを EUC か SJIS (Shift-JIS) にします。
o stty(1) を使って pty(4) が 8 bit を通すようにします。
% stty cs8 -istrip -parenb
これで
% cat
としておいて、ここに日本語の文章をカットアンドペーストすれば良いはず
です。すなわち、これ以降は kterm 上で実行するアプリケーション (shell,
mule -nw, telnet 等) の設定の問題となります。shell の設定に関しては
[管理番号 359] を見てください。
なお、(FreeBSDの) kterm 上から SunOS に telnet(1) でリモートログインし、
そこに日本語をカットアンドペーストすると MSB(8ビット目) が落ちて
日本語が化けてしまうことがあるようです。この場合は telnet の代わりに
rlogin(1) や telnetx、ssh(1) を使ってください。4.0-RELEASE 以降には
OpenSSH がシステムに含まれています。また、ports/packages には telnetx
や SSH のいくつかの実装が用意されています。
管理番号 359 (更新)
更新履歴
Q. kterm 上のコマンドプロンプトに日本語を入力すると化けてしまいます。
A. まず、[管理番号 358] および [管理番号 360] を参照してください。
kterm(1) の中では、通常ユーザからのコマンド入力を処理するプログラム
shell (シェル) が走っています。高機能 shell (tcsh, zsh, bash) は、
その編集機能のための入力と日本語文字入力とを区別できないので、これら
に日本語を入力したいときはしかるべき設定をしなければなりません。また、
現状では両者を完全に両立するのは難しいようです。
1. tcsh (ports/shells/tcsh), ja-tcsh (ports/japanese/tcsh),
4.1-RELEASE 以降では csh(1) (/bin/csh) は tcsh のハードリンク。
コンパイル時に漢字サポートを有効にしたものであれば、
% set dspmbyte=euc
とすれば日本語が入力できると思います。漢字コードについては `euc'
と `sjis' をサポートしています。漢字サポートが有効かどうかは、
シェル変数 version に `kan' 及び `dspm' を含むかどうかで判断でき
ますので、もしこれが無効になっている場合、tcsh をコンパイル仕直す
必要があります。
% echo $version
tcsh 6.09.01 (Astron) 2000-01-14 (i386-intel-FreeBSD)
options 8b,nls,dl,al,kan,sm,rh,color,dspm
^^^ ^^^^
また、シェル変数 nokanji が設定されていないことも条件です。
これでも日本語を通さないようなら stty(1) で 8bit を通すように
設定してみてください。
% stty cs8 -istrip -parenb
2. zsh (ports/shells/zsh), (ports/shells/zsh-devel)
デフォルトで EUC なら入力できます。
zsh-3.1.6 The Z shell (development version)
というバージョンで、一応編集もできています (ja-rxvt-2.7.2 上で確認)。
JIS X0208 な文字を一文字と認識してくれないので、そこに気を使う必要は
ありますが…。
3. bash 1.x (ports/shells/bash1), bash 2.x (ports/shells/bash2)
~/.inputrc に以下の記述を加えておけば EUC を扱えます。
set convert-meta off
set meta-flag on
set output-meta on
また非公式ですが、日本語パッチを適用することで、上記の設定なしに
日本語の行編集も行なえるようです。
管理番号 360 (更新)
更新履歴
Q. kinput2 または skkinput で kterm に日本語入力するには?
A. kinput2(1) 及び skkinput(1) は、以下の多国語変換プロトコルをサポートし
ています。kinput2 の man ページには他にもいくつか書いてありますが、実際
問題として現状では以下の三種類、特に kinput2 プロトコルと XIM プロトコ
ルの、どちらかが使えれば問題になる事は少ないでしょう。
a) Kinput/Kinput2 Protocol
早い話が kinput2 オリジナルのプロトコルで、kinput2 の前身である
kinput がサポートしていた Kinput Protocol と、現在の kinput2 で採用
された Kinput2 Protocol があります。kinput2 及び skkinput 自体は
両方のプロトコルをサポートしています。
b) X Input Method Protocol
X11R6 標準のプロトコルで、省略して XIM とも呼ばれます。また、この
プロトコルでは複数種の変換サーバを同時に実行することができ、多国語を
取り扱うことができます。
c) Ximp Protocol
X11R5 以前のプロトコルで、古いアプリケーションと X サーバの組み合わ
せで使う場合以外では、利用する機会はないでしょう。
kinput2 及び skkinput 共に、コマンド起動時のオプション指定で、上記の
プロトコル毎に有効・無効を選択できます。もちろん前提条件として、これら
のプロトコルをコンパイル時に組み込む必要があります。オプション名の前に
`-' (ハイフン) を付けると有効に、`+' (プラス) を付けると無効化されます。
特に指定しない限り三種類とも有効です。
-/+kinput Kinput/Kinput2 Protocol
-/+xim XIM Protocol
-/+ximp Ximp Protocol
具体的には、Ximp を無効にした kinput2 の起動では、
% kinput2 +ximp &
また、skkinput で XIM のみ有効にしたければ、
% skkkinput +kinput -xim +ximp &
などとすることができます。
次にこれらの変換サーバを利用するクライアント側の設定ですが、主に X リソー
スと環境変数を利用します。詳しくは個々のアプリケーションのマニュアルを
参照して頂くとして、ここでは kterm(1) を具体例として説明します。
現状の kterm version 6.2.0 では kinput2 プロトコルと XIM プロトコルを
サポートしています。コンパイル時に有効にされているかどうかは、kterm の
-version オプションで確認できます。
% kterm -version
kterm: version 6.2.0
options: [KTERM_MBCS] [KTERM_MBCC] [KTERM_KANJIMODE] [KTERM_XIM]
[KTERM_KINPUT2] [KTERM_COLOR] [KTERM_NOTEK] [STATUSLINE] [KEEPALIVE]
[WALLPAPER]
1. Kinput2 プロトコル
kterm はデフォルトでは kinput2 プロトコルを利用します。kinput2 または
skkinput のどちらかを事前に起動しておき、~/.Xresourses や ~/.Xdefaults
から kterm のリソース translations を探し、そこに以下の1行を挿入します。
Shift<Key>space: begin-conversion(_JAPANESE_CONVERSION)
i) 既にリソース translations が存在する場合
KTerm*VT100*translations: #override \
Shift<Key>space: begin-conversion(_JAPANESE_CONVERSION)\n\
<Btn4Down>: scroll-back(2)\n\
<Btn5Down>: scroll-forw(2)
ii) リソース translations が存在しない場合
KTerm*VT100*translations: #override \
Shift<Key>space: begin-conversion(_JAPANESE_CONVERSION)
リソースファイルを更新したら、
% xrdb -load ~/.Xresources
などとして、kterm を新たに起動します。この状態で Shift + Space キーを
押せば変換モードに入るはずです。またトグル操作で変換モードから抜けます。
2. XIM プロトコル
kterm で XIM プロトコルを用いた変換を行なうには、kinput2 や skkinput を
-xim オプションを付けて起動するようにし、
% env XMODIFIERS="@im=kinput2" kterm -xim
% env XMODIFIERS="@im=skkinput" kterm -xim
とすることで利用可能です。環境変数 XMODIFIERS を常に設定しておくには、
csh(1) 系なら ~/.cshrc に
setenv XMODIFIERS "@im=kinput2"
sh(1) 系なら ~/.profile に
export XMODIFIERS="@im=kinput2"
を書き加えれば良いでしょう。
もし、変換時の入力スタイルを指定する必要があれば、リソース preeditType
に OverTheSpot (いわゆるその場変換) または Root (別ウィンドウで変換操作)
のどちらかを指定します。例えば、kterm で kinput2 の Root スタイルを用い
るには、以下の2行を X リソースに追加すれば良いでしょう。
KTerm*inputMethod: kinput2
KTerm*preeditType: Root
変換モードの切り換えキーは、Shift + Space のトグル操作がデフォルトです。
また、kterm の -xim オプションはリソースに次のようにも記述できます。
KTerm*openIm: true
管理番号 363 (更新)
更新履歴
Q. kinput2 または skkinput で tgif に日本語入力するには?
A. [管理番号 360] を参照して、kinput2 / skkinput の起動を確認して下さい。
日本語 tgif (ports/japanese/tgif) は、日本語入力に kinput プロトコルと
XIM プロトコルをサポートしています。どちらのプロトコルを用いるかの指定
は、X リソース (~/.Xresources や ~/.Xdefaults など) に記述するか、tgif
のコマンドラインオプションで行ないます。下記の漢字変換モードの起動/終了
キーはデフォルトのものです。
| kinput プロトコル | XIM プロトコル
--------------+---------------------------+------------------------
X リソース | Tgif*IMProtocol: kinput | Tgif*IMProtocol: xim
オプション | -kinput | -xim
変換起動キー | Ctrl + Space | Shift + Space
変換終了キー | Shift + Space | Shift + Space
もし日本語が化けるときは Menu で Text => Font => で Ryumin または
Gothic を選びましょう。またリソースでのフォント指定も可能です。詳しく
は同時にインストールされるドキュメントを参照してください。
管理番号 356 (更新)
更新履歴
Q. kterm で日本語が文字化けします。
A. 順を追って設定を確認しましょう。以下の項目を見てください。
[管理番号 357] Q. kterm で日本語ファイルを cat すると文字化けします。
正しく日本語を表示させるにはどうしたらいいのですか?
[管理番号 358] Q. 日本語の文章を kterm にカットアンドペーストすると
文字化けします。
[管理番号 359] Q. kterm 上のコマンドプロンプトに日本語を入力すると
化けてしまいます。
[管理番号 360] Q. kinput2 または skkinput で kterm に日本語入力するには?
[管理番号 361] Q. kterm 等を使った場合の日本語表示の仕組みは?
[管理番号 362] Q. 日本語の含まれるファイルを、kterm 上で jless を
使って表示させると文字化けします。
[管理番号 363] Q. kinput2 または skkinput で tgif に日本語入力するには?
[管理番号 1166] Q. kterm上で csh(1),environ(7),kterm(1) の日本語マニュ
アルを読みたいのですが、うまく表示できず、文字化けし
てしまいます。
[管理番号 1366] Q. kterm など X 上の日本語文字表示可能なはずのアプリケー
ションで日本語文字が見えません。
管理番号 1893 (新規)
更新履歴
Q. 色々なデバイスを使いたいのですが、毎回カーネル (kernel)
のコンパイルにえらい時間がかかります。なんとかなりませんか。
A. /sys/xxx/config にある、config ファイルに記述された device や
option を KLD 化して config ファイルから 取り去ってしまいましょう。
全ての device や option はまだ外せないですが usb や network card,
netgraph, sound 関係は 外せるようです。
外した device などを 使いたい時は、デフォルト設定を参考に
/boot/loader.conf へ 記述するか、 起動時に明示的に load しましょう。