(2015.11.16 新規作成)
FreeBSD は Linux とずいぶん違う。初期設定の際に直面した違いを書いていきます。
FreeBSD 10.2-RELEASE を導入しました。最新の情報に基づいたつもりですが、廃れた方法もあるかもしれません。
(2018.10) NetBSD で似たページを作りました; NetBSD memo
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 コマンドを新しくする。
FreeBSD のメジャーバージョンアップの場合、ライブラリが入れ替えになったりメジャーバージョンが上がったりして, ABI が変わることがあります。そのままでは依存しているプログラムが動きません。
Packages を更新する必要があります。次のコマンドで, 全パッケージのバージョンを上げます。pkg (または pkg-static) コマンドは, FreeBSD が提供するバイナリ package を扱います。portmaster は, ports パッケージ (ソースからビルド) を管理するためのコマンドです。
# pkg-static upgrade -f # portmaster -af
wheel
グループsuするには、そのユーザを wheel
グループに追加しなればならない。現在の所属グループを表示するのは groups コマンド。
たとえば hhorikaw ユーザを追加するには, 1) /etc/group
ファイルを編集する。
/etc/group
:
wheel:*:0:root,hhorikaw
または, 2) pw group mod コマンドを使う。
# pw group mod wheel -m hhorikaw
[2021.5] FreeBSD 13: sudo パッケージのインストールが必要。
sudo コマンドは /usr/local/etc/sudoers
ファイルで制御される。次の例は, wheel
グループ所属の人は sudo できる。
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL
[2020.12] CentOS 8, Fedora 33 では, wheel
グループに所属しなくても su (root パスワード) できる。他方, sudo (ユーザのパスワードで昇格) は, FreeBSD と同じく wheel
グループに加わらなければできない。sudoers
で制御するのも同じ。
Linux でのユーザ情報の変更は usermod コマンド. [/2020.12 ここまで]
標準の shell は csh or tcsh.
/etc/passwd
ファイルで現在の状況が分かる。このファイルを編集しても反映されない。FreeBSD では /etc/pwd.db
ファイルがマスタ。
また, Linux では /etc/shadow
ファイルにパスワードハッシュが格納されるが、FreeBSD にはそのファイルはなく, /etc/master.passwd
ファイルに格納される。
vipw コマンドでエディタで編集できる。Linux も同様。
chpass コマンドで一人分を画面で編集。pw コマンドにて, コマンドラインで各フィールドを変更可能。いずれも Linux にはないコマンド。
パッケージ管理は 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アドレスも, /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, tcsh だと, ログイン時に ~/.login
を見に行く. ~/.profile
は Bourne Shell 用。
加えて, それぞれの shell 実行時に, ~/.cshrc
を読む。環境変数の設定はこちらに書く。
シェルスクリプトの構文も bash 系統と違う。
setenv GTK_IM_MODULE ibus setenv QT_IM_MODULE ibus setenv XMODIFIERS @im=ibus
FreeBSD 13: 環境変数 LANG
は, ~/.login_conf
ファイルで設定する。
me:\ :charset=UTF-8:\ :lang=ja_JP.UTF-8:
(2019.12) FreeBSD 12.1 では, KDE 5がある。ディスプレイの設定を統合するため, kscreen パッケージも必要。
# pkg install xorg # pkg install x11/kde5 plasma5-kscreen
次の行を /etc/fstab
に追加。
proc /proc procfs rw 0 0
次の行を /etc/rc.conf
に追加。
dbus_enable="YES" hald_enable="YES"
Display manager としては, KDM ではなく, SDDM を使う。設定画面を統合するため, plasma5-sddm-kcm パッケージも必要。
# pkg install x11/sddm plasma5-sddm-kcm
次の行を /etc/rc.conf
に追加。これで自動起動。
sddm_enable="YES"
VMware Player で解像度を検出してくれない。それから日本語入力。次のパッケージもインストールする。
[2021.5] フォントとして, japanese/font-std, noto も入れるとよい。
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 の場合, 次のパッケージも必要. ディスプレイの解像度の選択肢が広がる。
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 -- 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 のキー配列が優先される。