FreeBSD 10.2: Linuxとの違いの気づき

(2015.11.16 新規作成)

FreeBSD は Linux とずいぶん違う。初期設定の際に直面した違いを書いていきます。

FreeBSD 10.2-RELEASE を導入しました。最新の情報に基づいたつもりですが、廃れた方法もあるかもしれません。

base systemのレベル

FreeBSD base system のレベルを上げる方法。個々のパッケージではない.

freebsd-update コマンドを使う。

# freebsd-update fetch
# freebsd-update install

=> 10.2-RELEASE-p7 に上がった。

[2016-10-12] 11.0-RELEASE に上げるときは, 次のようにする;

# freebsd-update upgrade -r 11.0-RELEASE
# freebsd-update install

この後, pkg-static install -f pkg で, pkg コマンドを新しくする。

wheel

suするには、そのユーザを wheel グループに追加しなればならない。

たとえば hori ユーザを追加するには, /etc/group ファイルを編集する。

/etc/group:

wheel:*:0:root,hori

shell

標準の shell が csh or tcsh.

/etc/passwd で選択する。

パッケージ管理

パッケージ管理は pkg コマンド.

(2016.11) ページを分けました; パッケージマネジャ: Linux (Yum, DNF) と FreeBSD (pkg) の比較

rc.conf

FreeBSD には systemd が入っていない。昔ながらのテキストファイル。

例えば, ntp を有効にする方法。 See https://www.freebsd.org/doc/handbook/network-ntp.html

FreeBSD では、サービスの起動は, /etc/rc.conf ファイルに追加する。

ZZZ_enable="YES" と /etc/rc.conf に書くと, /etc/rc.d ディレクトリにあるZZZコマンドを service 経由で呼び出す, ようだ。

service -l でサービスの一覧が表示される。

やってみよう. /etc/rc.conf に次を追加

ntpd_enable="YES"   # dが付く

/etc/ntp.conf ファイル::

server ntp.nict.jp

すぐに時刻を合わせる;

# ntpdate ntp.nict.jp

TODO: スリープやハイバネートから復帰して、ネットワークに接続したときに, 自動的に時刻を合わせる方法?

ホスト名, 静的IPアドレス

ホスト名、IPアドレスも, /etc/rc.conf で設定する。

/etc/rc.conf:

hostname="banana.fruits"
ifconfig_em0="DHCP"
ifconfig_em0_ipv6="inet6 accept_rtadv"

keymap="jp.106.kbd"
sshd_enable="YES"

keymap="jp.106x.kbd" だと, Capsキーと 左Ctrlキーを入れ替える.

静的IPアドレスは, 次のようにする;

#ifconfig_em0="DHCP"
ifconfig_em0_ipv6="inet6 accept_rtadv"
ifconfig_em0="192.168.241.51 netmask 255.255.255.0"
defaultrouter="192.168.241.2"

defaultrouter などは, man 5 rc.conf

IPアドレスを確認するのは ifconfig コマンド, ルーティングを確認するのは netstat -r コマンド.

ログイン時スクリプト

shell が csh だと, ~/.profile ではなく, ~/.login を見に行く.

構文も bash と違う。

setenv LANG ja_JP.UTF-8

KDE4

FreeBSD 10.2 では KDE4が提供される。KDE5はまだみたい。

パッケージ

パッケージをインストールする。x11 は kde4と別にインストールする。依存になっていない.

  • x11/xorg
  • ja-font-std
  • ja-ibus-anthy

kde4 のパッケージ;

# pkg install x11/kde4 japanese/kde4-l10n 

VMware Workstation 12 Player の場合, 次のパッケージも必要. ディスプレイの解像度の選択肢が広がる。

  • xf86-video-vmware -- X.Org vmware display driver

dbusも必要

KDE を動かすには /proc が必要。/etc/fstab ファイルに次を追加; /etc/fstab::

proc           /proc       procfs  rw  0   0

dbus の設定も必要.

/etc/rc.conf

dbus_enable="YES"
hald_enable="YES"
polkitd_enable="YES" or polkit_enable="YES" は不要。ネット上では, dあり/なしの両方が見えるが、書かなくても立ち上がる。別の方法か?

KDMを有効化

KDM -- KDE Display Manager を有効にする。PC の起動時に X が立ち上がる。

/etc/rc.conf

kdm4_enable="YES"

日本語キーボード配列

fdi ファイルは古いらしい。Xorg -configure も不要。いきなり次のファイルを作ればOK. See http://www.x.org/releases/X11R7.7/doc/xorg-docs/input/XKB-Config.html

/usr/local/etc/X11/xorg.conf.d/keyboard.conf ファイル

Section "InputClass"
    Identifier      "keyboard defaults"
    MatchIsKeyboard "on"

    Option "XkbModel"   "jp106"
    Option "XkbLayout"  "jp"
    Option "XKbOptions" ""
EndSection

再起動後, KDM (ログイン前) に反映されるか確認する。

[[参考: ログイン後、次のコマンドを実行してもよい。KDM にも似たような設定で反映させる方法もある。しかし、上で説明したように, X11の設定をきちんとしたほうが better。

$ setxkbmap -model jp106 -layout jp

~/.xprofile に保存する。~/.xinitrc では (startx ではなく) KDM 経由の場合に呼び出されない。~/.xsession も呼び出されない。

参考ここまで]] ~/.xprofile:

#!/bin/sh

export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus   # not xim

巷の解説だと XIM, XIM_PROGRAM などの環境変数が書いてあるが、特に不要。

ログイン後 ibus が立ち上がると, 上の設定に関わらず, ibus のキー配列が優先される。