FreeBSD QandA 2001年11月3日 更新分
管理番号 596 (更新)
更新履歴
Q. /kernel など一部のシステムファイルに対して、削除、上書き、名前の変更を
しようとすると、Operation not permitted といわれてしまいました。
A. まず、Operation not permitted というエラーメッセージが表示される状況に
は二つのケースが考えられます。
1. スティッキービット: sticky(8)
具体的には /tmp ディレクトリなどの様に、ファイルモードの最後が `t' に
なっているディレクトリで、ファイルのオーナとは異なる一般ユーザが rm し
ようとした場合です。スーパユーザにはこの制限はありません。
% ls -ld /tmp
drwxrwxrwt 13 root wheel 1024 Oct 29 22:56 /tmp/
% ls -l /tmp/list
-rw-r--r-- 1 foo wheel 18561 Sep 21 14:58 /tmp/list
% su bar
% rm -f /tmp/list
rm: /tmp/list: Operation not permitted
2. ファイルフラグ: chflags(1)
これはそれらのファイルに schg フラグが設定されているからです。実際に
どのファイルにフラグが設定されているかは、FreeBSD のバージョンにより異
なりますが、このフラグが付いているファイルは、スーパユーザでも変更する
ことができません。フラグを確認するには ls(1) に -lo オプションを付けて
実行します。また、find(1) を使えばファイル一覧を得ることができます。
# ls -lo /kernel
-r-xr-xr-x 1 root wheel schg 2383647 Sep 19 22:30 /kernel*
# find / -flags schg -exec ls -lo {} \;
-r-sr-xr-x 1 root wheel schg 354504 Sep 21 22:05 /bin/rcp
-r-x------ 1 root wheel schg 388072 Sep 21 22:13 /sbin/init
-r-sr-xr-x 1 man wheel schg 28944 Sep 21 22:08 /usr/bin/man
...省略...
これらのファイルを変更するには、例えば
# mv /kernel /kernel.old
mv: rename /kernel to /kernel.old: Operation not permitted
# chflags noschg /kernel
# mv /kernel /kernel.old
と chflags(1) コマンドで schg フラグを消去してから操作します。カーネル
については make installkernel したとき自動的に行われます。注意点として、
カーネルのセキュリティレベルが 1 以上では、chflags でフラグを消去する
ことも禁止されます。この場合、システムをシングルユーザ・モードでブート
し必要な作業を行なってください。securelevel(8), security(7) を参照。
# sysctl kern.securelevel
kern.securelevel: 2
# chflags noschg /kernel
chflags: /kernel: Operation not permitted
管理番号 362 (更新)
更新履歴
Q. 日本語の含まれるファイルを、kterm 上で jless を使って表示させると
文字化けします。
A. jless は出力する漢字コード (および入力漢字コード) を選べます。
たとえば、環境変数 JLESSCHARSET に次のように設定します。
% setenv JLESSCHARSET japanese (csh 系)
$ export JLESSCHARSET=japanese (sh 系)
以下に代表的な三種類を例示しておきますので、kterm(1) 側の設定に合わせ
てください。いずれも入力については、JIS, EUC, Shift-JIS の自動認識を
試みます。
1. japanese-jis または japanese
出力を JIS コードに変換して表示します。
2. japanese-ujis または japanese-euc
出力を EUC コードに変換して表示します。
3. japanese-sjis
出力を Shift-JIS コードに変換して表示します。
なお、同様の環境変数として LESSCHARSET がありますが、4.1-RELEASE 以降
では less(1) が標準システムに含まれたため、こちらに上記の設定をしない
ようにしてください。間違えて LESSCHARSET に設定した場合、less(1) およ
び more(1) が ``invalid charset name'' というエラーメッセージを表示し
て動作しません。
管理番号 745 (更新)
更新履歴
Q. FreeBSD で音楽 CD の曲データ (CD-DA) を CD-ROM, PD ドライブを用いて
取り出せますか?
A. ドライブの機種に依存しますが、次の樣な方法があります。最近のドライブで
はほとんど問題ないと思われますが、一部の古いドライブなどでは不具合が
報告されています。
1. ATAPI CD-ROM
a) FreeBSD 4.3-RELEASE 以降を使っている場合
もはや特別なソフトウェアは不要です。読み出し時の block size を
2352 bytes に指定してコピーするだけです。
まず必要とするトラック番号までのデバイススペシャルファイルを作ってお
きます。次の例は 50 トラック (t50) としています。
# cd /dev; ./MAKEDEV acd0t50
CD メディアをドライブにセットしたら、OS に目次を読み込ませます。
ついで、どのトラックを吸い出そうとしているのか確認します。
% cdcontrol -f /dev/acd0c info
吸い出したいトラック番号を # とすると、以下のコマンドで raw データ
がファイル track#.raw に吸い出せます。
% dd if=/dev/acd0t# of=track#.raw bs=2352
後は、好きな順番に並び替えて My best CD を cdrecord や burncd で
焼くも良し、MP3 にエンコードするも良し。
% gogo -nopsy -offset 0 track#.raw
WAV 形式で保存するのであれば、適切な 44Byte のヘッダを付けなければなり
ません。
ヘッダには、サンプリング周波数,長さその他各種の情報が格納されています。
AFsp (ports/audio/afsp) を利用した場合の例:
% CopyAudio -t noheader -F WAVE -P 'integer16, 0, 44100, native, 2, 1.0' track#.raw > track#.wav
また、 sox (ports/audio/sox) を利用して変換を行うことが可能です。
b) dagrab (ports/audio/dagrab) を使います
<URL:http://web.tiscali.it/marcellou/dagrab.html>
ただし、一部の CD-ROM ドライブにおいて dagrab を用いて取り出しを行うと、
出力にノイズが混じるという事例が報告されています。
その場合は、このあと紹介する cdda2wav を試してみてください。
2. SCSI CD-ROM
a) tosha (ports/audio/tosha) を使います。
b) cdda2wav (ports/sysutils/cdrtools) を使います。
<URL:http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html>
3. SCSI PD
松下 LF-1000 では tosha-0.6 に以下のパッチが必要です。
---ここから---
*** tosharc Wed Jan 13 15:37:42 1999
--- tosharc Mon Jan 18 22:24:51 1999
***************
*** 66,71 ****
--- 66,72 ----
# This one was tested with "MATSHITA" "PD-1 LF-1001" "A105":
+ "MATSHITA" "PD-1 LF-1000" "" 0xd8 0 0x00 0 10 0
"MATSHITA" "PD-1" "" 0x28 1 0x00 0 10 0
# Someone reported the following setting for his
---ここまで ---
Appendix. 参考情報
<URL:http://www.kobe1995.net/~kaz/FreeBSD/cd_rip.html>
管理番号 701 (更新)
更新履歴
Q. デジタルカメラで撮ったデータを FreeBSD でやりとりしたい。
A. 以下の方法が考えられます。
1. デジタルカメラに付属もしくは別売のパソコン接続用キットを用いること
により、PC のシリアルポートとをつなぐ方法。
この方法で問題になるのは、接続用キットが FreeBSD をサポートしていなくて、
なおかつ通信のプロトコルが公開されていない場合がほとんどなことです。
とはいえ、シリアルポートを用いた簡単なデータのやりとりなので、通信を解
析してプロトコルを調べ、通信プログラムを作成することはできます。
実際、以下のようなものがあります。
- カシオのデジタルカメラ QV シリーズ用の通信プログラム qvplay
<URL:http://www.asahi-net.or.jp/~XG2K-HYS/qvindex.html>
- 富士フイルムのデジタルカメラ DS-7 用の通信プログラム get_ds7
<URL:http://www.yk.rim.or.jp/~mamo/Computer/DS-7/index.html>
DS-7 用ですが、富士フイルムの他のデジタルカメラにも使えるはずです。
- コダックのデジタルカメラ DC20 の画像データダウンロードプログラム
<URL:http://www.jiugms.mdx.or.jp/~mokada/Linux/DC20/>
- キヤノンのデジタルカメラ PowerShot および IXY 用の通信プログラム s10sh
<URL:http://www.kyuzz.org/antirez/s10sh.html>
上記のサイトでは IXY についての言及はありませんが、IXY200 で使用
できました。
2. デジタルカメラのメモリを PC-CARD ポート経由で読み書きする方法。
デジタルカメラが PCMCIA の Flash ATA を利用していたりスマートメディア
やコンパクトフラッシュのような PCMCIA に対応するアダプタが存在するメモ
リカードを利用している場合、簡単な方法です。ただし、当然 PC 側に
PC-CARD ポートが必要です。Flash ATA カードとして認識され、MSDOS ファイル
システムとして利用できます。
なお、SmartCard を FDD 経由で読み書きする FD-A1 というものが富士フイル
ムから出ていますが、これは残念ながら現時点では FreeBSD からは利用でき
ないようです。
3. デジタルカメラに付属もしくは別売のパソコン接続用キットを用いること
により、PC の USB ポートにつなぐ方法。
デジタルカメラのマニュアル等に "USB ストレージクラス対応" と書かれて
いる場合、または Windows でリムーバブルディスクとして読み書きできる
場合は、USB 接続で使える可能性があります。
PC につないだ時に umass ドライバがアタッチされた場合、SCSIディスクと
して認識され、MSDOSファイルシステムとして利用できます。
デジタルカメラによっては、以下の udsc ドライバが使えるかもしれません。
<URL:http://www.geocities.co.jp/SiliconValley-Oakland/4187/udsc/udsc-j.html>
上記のサイトによると、Nikon の CoolPix880 等に対応しているそうです。
デジタルカメラの機種によっては、そのままでは mount できず
cam/scsi/scsi_da.c に修正が必要があるようです。
bsd-usb:462 が参考となるでしょう。