Q & A

こまごましたことを、Q & A 形式でまとめてみました。



起動時に自動的にスクリプトを走らせたい

/usr/local/etc/rc.d/ がそういったスクリプトの置場になっています。 走らせたいシェルスクリプトを実行権を与えて置いておくだけで、 起動時走ります。

Read-only ファイルシステムを Writale にしたい

よくあるのは、/etc/fstab に自動マウントのディスクを書いてあったけど、 そのディスクが接続されてないときに「マウントできないよう」といって / だけが Read-only でマウントされるという事態です。 このときは、/etc/fstab を書き変えないといけません。

まずは Read-only を Writable にします。
# mount -uw /
-u でアップデート、-w で writable です。 もし変更すべき内容が /etc/fstab.new として用意してあるならば、 上の作業の後
# mv /etc/fstab /etc/fstab.bak
# mv /etc/fstab.new /etc/fstab
でOKです。

vi などで書き変えなければならないときは、 / を Writable にした後、 vi の入っている /usr もマウントしないといけません。
# mount /usr
# /usr/bin/vi /etc/fstab
# umount /usr
1行目で /usr がマウントできない場合は、 /etc/fstab を見てどのデバイスをマウントすれば良いかチェックしてください。

Ports からアプリケーションをインストールするときに オプションを手動で入れるのが面倒だ

ほとんどの Ports は make install で自動的にインストールされますが、 たまにオプションを手動で選ばないといけない Ports があります。 例えば gettext などです。 これら、もしくはこれらに依存する Ports をインストールするために モニタの前にずっと居座るのはとても大変です。 そこで(少なくとも)FreeBSD 5.3-RELEASE では、 あらかじめオプションを指定しておくことで全自動インストールができます。

オプションを指定するには、/var/db/ports/ のサブディレクトリに options という名前でファイルを置きます。 例えば gettext ならば /var/db/ports/gettext/options です。 その中身は以下のようなものです。
_OPTIONS_READ=gettext-0.13.1_1
WITHOUT_EXAMPLES=true
WITHOUT_HTMLMAN=true
一番上の行は、Ports の名前とバージョンを入れます。 その次の行から、オプションを入れます。 それぞれ、/usr/ports/devel/gettext/Makefile を見てください。 オプションについては、Makefile 中の OPTIONS という欄を見て下さい。

キーボードのマップを変更したい

コンソールでは、デフォルトで英語101のキーマップになっています。 日本語キーボードを使っている場合で、 刻印通りにキーを使いたい場合はマップを変更しましょう。 まず、/usr/share/syscons/keymaps/ に各種キーボードのマップファイルがあります。 日本語106キーボードの場合は、jp.106.kbd で さらに Caps Lock と Ctrl を変更したものが jp.106x.kbd です。 これらを見つけたら、kbdcontrol でマップを変更します。
# kbdcontrol -l /usr/share/syscons/keymaps/jp.106.kbd
キーマップファイルが /usr/share/syscons/keymaps/ にある場合は、 パスを省略しても構いません。
# kbdcontrol -l jp.106.kbd
これでうまくキーマップが変更されたら、 次回リブート時に自動的に読みに行くように /etc/rc.conf を 変更しておきます。
keymap="jp.106" # この1行を追加する

複数のホストに同じユーザアカウントを作成するのが面倒だ

まずは、一台のホストにユーザアカウントを作成します。 そのホストの /etc/ 下に passwd, master.passwd, pwd.db, spwd.db という 4つのファイルがありますので、これらを他のホストの /etc/ 下にコピーします。 vipw でどうでもいいような場所を変更して(また直して)から Ctrl-Z Ctrl-Z で保存すると、ユーザアカウントが出来ています。 ただし、この操作では /etc/group までは変らないので、 グループ情報も必要であれば /etc/group もコピーします。

Windows 領域を FreeBSD から参照したい

例えば、Windows をインストールしたスライスを /dev/ad0s1 として、 これを /dos にマウントするには、
# mount -t msdos /dev/ad0s1 /dos
です。/etc/fstab に
/dev/ad0s1 /dos msdos noauto 0 0
と追加で書いておけば、
# mount /dos
でマウントできます。

SCSI機器の ID 番号を調べたい

その1:dmesg を使う
dmesg で target という文字列を検索します。 各行、一番左がデバイス名、target の後ろの番号が SCSI の ID 番号です。
% dmesg | grep target
da0 at ahc0 bus 0 target 0 lun 0

その2:cdrecord を使う
まず、ports で sysutils/cdrtools をインストールします。 すると、cdrecord というコマンドがインストールされます。 root になって、-scanbus オプション付で実行します。
# cdrecord -scanbus
右端には SCSI 機器の名前が出て来ます。 その左横の ) 付数字が ID 番号になります。

5.x から 4.x に HDD を付け変えたらマウントできない

ファイルの Superblock ってのの仕様が違うせいのようです。 「マニュアルで fsck をやって」と言われたとき、fsck をします。
# /sbin/fsck -y /dev/da0s1e (最後のデバイス名はそれぞれの環境に合わせてください)
で目的のデバイスの Superblock を調整したのち、
# /sbin/fsck -p
でファイルシステムを整えます。 これでマウントできるようになっているはずです。

ハードディスクから内容を完全に消去したい

FreeBSD では、rm コマンドのオプションとして -P を付けると、 該当のファイルの内容が、「最初に 0xff、次に 0x00、最後に 0xff」 で上書きされます。
% rm -P hogehoge
ports の security/srm (Secure rm)のもあります。 sysutils/obliterate というのもありますが使ったことはありません。

shred というコマンドもあります。 FreeBSD 4.8-RELEASE では ports の sysutils/fileutils をインストールすると その中に gshred が入っています。 FreeBSD 5.4-RELEASE では sysutils/coreutils という名前に 変更になっているようです。 デフォルトでは25回ランダムに上書き操作をするそうで、 パーティション全体も指定できます。 Linux 用のソース coreutils というのにも入っているそうなので、 例えば ftp://alpha.gnu.org/gnu/coreutils/coreutils-5.3.0.tar.gzとかから。 ダウンロードしてコンパイルすればOKです。

ハードディスク全体を消去する場合は、dd コマンドを使う方法もあります。 これは root でやる必要があります。 例えば、ATAPI の1台目のハードディスクすべてをゼロで上書きするなら、
# dd if=/dev/zero of=/dev/ad0
SCSI などの外付け1台目ディスクなら
# dd if=/dev/zero of=/dev/da0
です。

参考サイト: フリーソフトによるデータ抹消・復元大全

ネットワークカードのデバイス名を調べたい

使っているネットワークカードが FreeBSD でサポートされていれば、 起動して次のように調べられます。
% ifconfig -a
このコマンドで出て来る画面のうち、一番左側の項目がデバイス名です。 いろいろ出て来ますが、項目の中に次のような一行があるものが 認識されているネットワークカードです。
ether 00:11:23:45:67:ff
これはMAC アドレスと呼ばれるもので、 IP アドレスがネットワークカードの論理的な番号とすると、 MAC アドレスは物理的な番号です。 つまり、IP アドレスを変えても MAC アドレスは変わりません。

カードが認識されていないときは、 ネットワークカードが FreeBSD でサポートされているかチェックしてください。 http://www.jp.freebsd.org/www.FreeBSD.org/ja/releases/ へ行って、使っているバージョンの「ハードウェアノート」を見ます。

IP アドレスやホストネームの変更を再起動なしで認識させたい

何らかの都合で /etc/rc.conf のネットワーク設定を変更することが あるかもしれません。リブートせずにその設定を反映するには、次のようにします。
# /etc/netstart
# hostname (新しいホストネーム)
/etc/netstart で IP アドレスなどの情報を、 hostname でホストの名前を更新しています。

proxy 経由で ftp をしたい

  1. proxy server に ftp する
    % ftp proxy.server.name
  2. name: が出たら ftp サーバのログインネームを入れる
    公開 ftp サーバの場合は anonymous でよい
  3. password: が出たら ftp サーバのパスワードを入れる
    公開 ftp サーバの場合は e-mail アドレスでよい

proxy 経由で ports をインストールしたい

環境変数 HTTP_PROXY に proxy サーバの名前と port 番号を設定しておく。 例えば、proxy サーバが proxy.server.name で port 番号が 80 だったら、
# setenv HTTP_PROXY proxy.server.name:80

X のウィンドウが開きません

自分のホストが /etc/hosts に登録してあるかチェックしてみてください。 ホスト名が分からず、X が DISPLAY の設定に困っているかも知れません。
Afterstep の Wharf からシェルスクリプトが起動できません
スクリプトが csh 系の場合は、sh スクリプトに変えてみてください。 うまくいくかもしれません。
Caps Lock キーと左 Ctrl キーを入れ換えたい
方法は2つあります。

  1. /etc/X11/XF86Config をいじる
    root 権限で設定します。すべてのユーザに対して変更が適用されます。
    Section "InputDevice" の keyboard 設定をしている箇所に、 次の1行を追加します。
    Option "XkbOptions" "ctrl:swapcaps"

  2. ~/.Xmodmap を書いて、xmodmap に食わせる
    ユーザ権限で設定します。設定したユーザだけに適用されます。
    ~/.Xmodmap の内容は次のようにします。
    remove lock = Caps_Lock
    remove control = Control_L
    keysym Control_L = Caps_Lock
    keysym Caps_Lock = Control_L
    add lock = Caps_Lock
    add control = Control_L
    書いたら保存して、xmodmap に食わせます。
    % xmodmap ~/.Xmodmap
ビープ音がうるさくてたまりません
キーボードで入力をミスしたときなど、「ビッ」とビープ音がなります。 これがうるさくてたまらないときは、xset というコマンドで静かにさせます。
% xset b 0 440 4
もちろん、~/.xinitrc もしくは ~/.xsession の適切な方に書いておけば、 ログイン時に自動的に設定してくれます。

5.4-RELEASE のインストールディスクでのインストールが不完全です

うちでは、次の2つのパッケージのインストールに失敗しました。 それぞれ、/usr/ports/x11-fonts/xorg-fonts-100dpi/ と /usr/ports/emulators/linux_base-8/ に行って make install clean して インストールすればOKです。

ls の結果をカラー表示したい

いろいろやり方はあるようですが、 ここでは ls のオプション -G を使う方法を示します。

環境変数 TERM を kterm/xterm に合わせます。
% setenv TERM kterm-color (kterm の場合)
% setenv TERM xterm-color (xterm の場合)
% ls -G (で、カラー出力がでます)

重要な注意 環境変数 TERM を上のように設定すると、 コンソールでの ls の出力が正常になりません。 そこで、.cshrc などで環境変数を設定する場合には、 kterm か xterm の場合のみ TERM を設定するようにしておきます。
if ( $TERM == 'kterm' ) then
    setenv TERM kterm-color
else if ( $TERM == 'xterm' ) then
    setenv TERM xterm-color
endif

ターミナルを透明化したい

いろいろあるみたいですが、mlterm を使ってみましょう。 インストールは、ports で /usr/ports/x11/mlterm でOKです。 インストールしたら、-t オプションで起動すると透明になって、 背景が透けて見えます。
% mlterm -t
字の色を変えたい場合は、-fg オプションで指定します。
% mlterm -t -fg red
など。色の指定は、# を付けて16進表示でもできます。赤なら
% mlterm -t -fg #ff0000
ですね。 参考:http://www.n.info.eng.osaka-cu.ac.jp/members/takeshi/linux/terminal.html

絵のファイルサイズを変更したい

JPG など絵のファイルサイズを変更する方法です。

その1:convert を使ってコマンドラインで変更
convert のオプション -size か -resize を使います。
convert を使うには、ImageMagick (ports では graphics/ImageMagick) をインストールしておきます。
例えば hogehoge.jpg を 100 pixel × 50 pixel に縮小(拡大) し、 hogehogenew.jpg として保存する場合は、
% convert -size 100x50 hogehoge.jpg hogehogenew.jpg
もしくは
% convert -resize 100x50 hogehoge.jpg hogehogenew.jpg
です。

その2:xv を使って GUI で変更

  1. xv で図を開いて、出て来たウィンドウを右クリックします
  2. 右上の方にある「Image Size」をクリックします
  3. 「Set Size」を選択します
  4. 出て来たウインドウに好みのサイズを書き込み「Ok」をクリックします
    サイズ指定と、拡大/縮小率指定ができます
  5. 図のサイズが変更されます
  6. 先に「Image Size」を押したウィンドウの右側にある「Save」をクリックします
  7. 保存する先を訊いて来ますので、指定して「Ok」をクリックします
  8. 品質を訊いて来ますので、指定して「Ok」をクリックします
  9. これで保存されました

絵を回転させたい

デジカメで撮った写真は横長で表示されますので、 縦長で撮った写真は横向きになります。 そこで、絵を回転させて縦長で表示させます。
% convert -rotate 90 hogehoge.jpg hogehogenew.jpg
上は 90 度回転させる場合の例です。 これで上下反転している場合は、270 度回転させてください。

xemacs の lisp ファイルをバイトコンパイルしたい

lisp ファイルは拡張子 .el というテキストファイルです。 これをバイトコンパイルしておくと、起動が早くなります。 hoge.el のバイトコンパイルのやり方は次の通りです。
% xemacs -batch -f batch-byte-compile hoge.el
これで、hoge.elc というファイルができます。

Mew でメールを入れるディレクトリを消したり名前を変更したりしたい

ターミナルで削除/変更したのち、Mew で C-u Z でリストを更新します。 キーバインド一覧を参照してください。

mozilla で kinput2 で日本語入力するとき、 日本語変換の窓を入力フォームの真下に置きたい

~/.mozilla/xxx/yyy/prefs.js に次の行を追加する。 xxx や yyy は環境に応じて適当な文字列を入れて下さい。
user_pref("xim.input_style","over-the-spot");
mozilla の外枠左側に置きたい場合は、over-the-spot を on-the-spot に変える。 参考サイト:
http://www.coolbrain.net/Mozilla.html

Landscape(横長)のPSファイルを psnup で 4up にするとき、ページ順に並ぶようにしたい

Landscape の PS ファイルを psnup -4 で 4up にすると、 右側に1、2ページ、左側に3、4ページが来てページ順通りになりません。 psnup -2 を経由することで解決できます。
% psnup -2 hoge.ps > hoge1.ps
% psnup -2 -r hoge1.ps > hoge2.ps
hoge2.ps は、上下逆ではありますが、ページ順に並んでいます。

psnup -4 -r でもできるみたいです。

dvipdfmx でパスワードをかけた PDF ファイルを作りたい

オプション -S でパスワードを設定できます。
% dvipdfmx -S hogehoge
owner パスワードと user パスワードの2つを設定できるようです。 どちらでも開くことはできます。

FreeBSD の部屋


Last modified: Wed Jul 4 17:25:23 JST 2012