Top / EBUG勉強会 / 20171118_OpenBSD管理入門

他のBSDユーザのためのOpenBSD管理入門

EBUG 第63回会合
2017年 11月18日、長岡市 ながおか市民センター
川俣吉広、kaw@on.rim.or.jp

OpenBSDの設定や管理について、他のBSD系OSからみて特徴的と思われる点をまとめてみる。


ストレージ、ファイルシステム関連

ディスク関連の設定はインストール時に行われるが、運用開始後に変更や増設をする時に、以下のノウハウを把握しておくと有用:

  • OpenBSDでは、fdiskパーティションとdisklabelパーティションが個別に存在する。
    • fdiskパーティションとdisklabelパーティションの設定は連動しない。fdiskパーティションのOpenBSD領域とdisklabelパーティションのOpenBSD boundaryはセクタ単位で合わせておく必要がある(インストール時には自動で合わせられる)。
    • disklabelパーティションはOpenBSD boundaryの範囲内にのみ作成できる。
  • ディスクパーティションは例えば /dev/sd0a のように命名される
    • デバイス : wd=IDE, sd=SCSI/SATA/SD/USB-mem..., cd=CD/DVD...
    • 0..9 : デバイスのユニット番号
    • a..p : パーティション
      • a:(通常はルート)
      • b:swap
      • c:メディア全体
      • iからkくらいまで: 慣習的にFAT/NTFS/EXTFSなどで使われることが多い
      • それ以外については特に決まっていない
  • デバイス名は sd0a というような従来の命名法に加えて、 デバイス毎に生成される固有な値である DUID (disklabel unique ID) を使うこともできる。
    • 表記としては、sd0a の替わりに fbab11c399a0565f.a などとなる。
    • 生成されたDUIDはdisklabelコマンドの表示から確認できる。
    • インストール時に生成される /etc/fstab はDUID表記が用いられる。

ネットワーク

  • ネットワークの基本的な設定は、/etc 内にある以下のファイルによって行われる。
myname
ホスト名のFQDN
mygate
デフォルトゲートウェイ
hostname.if
ネットワークインターフェースの設定
if の部分には設定対象となるem0などのインターフェース名を表記する。
VLANやブリッジ、pppoeなどの仮想インターフェースも全てこの方法で設定する。
基本的にはIPアドレスやネットマスクなど、 ifconfigコマンドの引数となるものを記述する。
無線LAN関連のSSIDや暗号化キーなどもifconfigで設定するため、記述はこのファイルで行う。wpa_supplicantのような外部プログラムは使用しない。
resolv.conf
名前解決の設定
hosts
既知のホスト名とIPアドレスの対応表
pf.conf
パケットのフィルタリング、アドレス変換、帯域制御などの設定
  • 上記のファイルはインストール時に生成されるが、 その後設定変更等を行う場合はファイル編集後、以下の操作で変更を反映させる:
    • mygate, myname ... OSの再起動
    • hostname.if
      # sh /etc/netstart if ... ネットワークインターフェースifを再初期化する場合
      
      # sh /etc/netstart    ... 全てのネットワークインターフェースを再初期化する場合
    • resolv.conf, hosts ... 即時反映
    • pf.conf
      # pfctl -f /etc/pf.conf

アカウント管理

  • ユーザの管理にはuserコマンドを使用する。
    • ユーザの追加はadduserコマンドを使用してインタラクティブに行うこともできる。
      adduserを使った場合、/etc/skel以下にあるドットファイルが追加されたユーザのホームディレクトリにコピーされる。
    • vipwコマンドも使用可。
  • 他のユーザ権限でコマンドを実行したい場合は、sudoの代替実装であるdoasを使用する。 例えば以下のように/etc/doas.confを記述すると、wheelグループに属しているユーザに対してrootでの管理業務を許可することができる:
    permit persist :wheel
    (persistはdoasの実行が許可された後、暫くはパスワード入力なしでdoasを再実行できるようにするためのオプション)

パッケージ管理

サードパーティのソフトウェアはports/packagesを用いて導入することができる。

  • packagesを利用してすでに用意されているビルド済みパッケージを管理するには、pkg_add, pkg_delete, pkg_info などのコマンドを使用する。 以下は、rsyncユティリティの導入例:
    # export PKG_PATH=http://ftp.jaist.ac.jp/pub/OpenBSD/6.2/packages/amd64/
    # pkg_add rsync
  • portsを利用するには、OpenBSDの配布サイトより ports.tar.gz をダウンロードし /usr 以下に展開後、インストールしたいソフトウェアのディレクトリに移った後、make install を行う。 ソフトウェアのビルドが終わると、/usr/ports/packages/arch名/all 以下にそのソフトウェアのパッケージが作成され、さらに pkg_add が行われる。
  • ports/packagesを用いて導入したソフトウェアは、/usr/local以下に配置される。
    • ただし、設定ファイルは/etc以下に配置される。
    • パッケージの管理情報が/var/db/pkg以下に記録される。
    • pkg_add実行時に、そのソフトウェアの設定などについての留意事項が表示される。これは /var/db/pkg/パッケージ名/+DISPLAY ファイルの内容である。
    • インストール後の設定作業などは、/usr/local/share/doc/pkg-readmes以下に記述がある場合もあり、こちらも要参照。

デーモンやサービスの設定

  • OpenBSDでは、各種設定ファイルはX Window関連、ports/packagesから導入したものを含め、すべて /etc 以下に配置される。
  • /etc/examples 以下に設定ファイルのサンプルがある場合は、それを/etcにコピー、編集して使用することができる。
  • 起動時の初期化スクリプトは /etc/rc。ユーザが初期化動作を追加したい場合は /etc/rc.local ファイルを作成し、その中にシェルスクリプトとして記述する。
  • デーモンやサービスの初期値は /etc/rc.conf に記述されている。このファイルをユーザが変更することはない。初期値を変更したい場合は /etc/rc.conf.local に変更内容を記述する。
  • デーモンやサービスの管理は rcctl を用いる。rcctlを用いると /etc/rc.conf.local を直接編集することなしに記述内容の変更を行うことができる。
    rcctlの実行例:
    # rcctl disable sndiod ... sndiod(サウンドデーモン)を無効化する ... 次回ブート時以降、起動されない
                                             (/etc/rc.conf.localに「sndiod=NO」という行が追加される)
    # rcctl stop sndiod    ... 現在動いているsndiodを停止する
  • cronデーモンの管理はcrontabユティリティを使用して行う。
  • /etc/firmware 以下にはデバイス初期化に必要なファームウェアバイナリのうち、OSに同梱可能なものが置かれている(ファームウェアが必要なデバイスとしては、グラフィクス、無線LAN、カメラなどのデバイスが多い)。
    • 同梱不可なファームウェアは http://firmware.openbsd.org/firmware/ からダウンロード・インストールする必要がある。
    • fw_update を使用すると、ファームウェアの必要なデバイスの検出、ファームウェアのダウンロードとインストールを自動で行うことができる。
  • カーネルのパラメータを変更してパフォーマンスの改善を行うことができる。
    • UKC (User Kernel Config) あるいは config ユティリティによる起動時での変更
    • sysctl による on the fly での変更(と参照)
      ... 変更を永続化するには /etc/sysctl.conf に記述する。

アップデート作業

OpenBSDは概ね半年に一回バージョンアップが行われている。バージョンが更新されるとバージョン番号が0.1増える (2017年11月現在の最新バージョンは2017年10月9日公開のOpenBSD 6.2)。

  • 現行リリースのうち、i386, amd64, arm64プラットフォームについては、バイナリパッチが提供される。このパッチは syspatch ユティリティを用いて適用する。
  • 修正の適用をバイナリパッチではなく、ソースレベルで行う場合は概ね以下の手順で行う:
    • ソースを/usr/src以下に展開 (Xの場合は/usr/xenocara、portsの場合は/usr/ports)
    • cvsを用いてソースを最新の状態に更新
    • 修正情報の手順を参照して、ビルド・インストールを行う。
  • OSのバージョンアップを行う場合は新しいバージョンのインストール用カーネル /bsd.rd を起動し、メニューから「update」を選択する。具体的な作業についてはバージョン毎に提供される情報を参照のこと。

情報源

  • Online Manual Page (Web)

    Again, PLEASE READ THE MANUAL PAGES.
    Our developers have spent countless hours improving them so that they are clear and precise.

    ... /var/mail/root

  • afterboot(8) - things to check after the first complete boot
  • 公式: FAQ - FreeBSD Handbook や The NetBSD Guide に相当

Top / EBUG勉強会 / 20171118_OpenBSD管理入門

Reload  New Edit Freeze Diff Attach Copy Rename  Top Index Search Recent Backups  Help  RSS
Last-modified: 2017-12-10 (Sun) 01:12:25 (344d)