OpenBSDメモ
ドキュメント
=== オンライン ===
FAQ(公式チュートリアル集): https://www.openbsd.org/faq/index.html
Online man pages : https://man.openbsd.org/
=== ローカルPC内 ===
manページの検索
aproposコマンド → 部分一致検索
whatis コマンド → 全体一致検索
manページ分類
table:manページセクション
番号 分類
1 一般的な​コマンド
2 システムコールと​エラー番号 / システムコールおよびカーネルルーチン (カーネルとの直接的なやりとりに使用される関数)
3 C ライブラリ (標準CライブラリおよびOpenBSDシステム固有のライブラリ関数)
3p Perlの​ライブラリ
4 デバイスドライバ (デバイスの制御に関連するドライバおよび関連する情報)
5 ファイルフォーマット、設定ファイル、ログファイル
6 ゲーム
7 その他のマニュアルページ (ロケール、プログラム言語、その他のマニュアルページ)
8 システムの​保守・管理コマンド  (特権ユーザーによって実行されるプログラム)
9 カーネル内部  (カーネル内部のルーチンやデータ構造)
設定ファイルテンプレート
/etc/example/ ディレクトリ以下に多くの設定例が置かれているので、それをコピーして使うのが楽
例えば doas cp /etc/example/httpd.conf /etc/httpd.conf
メンテナンスメール
OpenBSDは、毎日、毎週、毎月、メンテナンスタスクを実行し、その結果をローカルの root アカウントに電子メールメッセージで送信している。
カーネルファイル
ルートディレクトリに置かれている。
table:カーネルの種類
/bsd シングルコアCPU向け
/bsd.mp マルチコアCPU向け
/bsd.rd OSのインストール, アップグレード時に使用される
/bsd.sp 以下の説明を読むこと
bsd.spはマルチコアCPUマシンに OpenBSD をインストールすると、インストーラが以下の動作(概要)で置かれるもの(/bsd.mpをデフォルトカーネル名/bsdに変更している)
code:mv
mv /bsd /bsd.sp
mv /bsd.mp /bsd
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
パッケージ管理
table:pkg_add の使い方
コマンド 説明
pkg_add pkgname パッケージをインストール。
pkg_add -u インストールされているパッケージをアップグレード
pkg_add -I pkgname 依存関係を含め、パッケージをインストール
pkg_add -D update pkgname パッケージをアップグレードするが、依存関係の更新は行わない
pkg_add -r pkgname リモートリポジトリからパッケージをインストール
pkg_add -l path ローカルファイルシステムからパッケージをインストールする。pathはインストールするパッケージのpath
pkg_add -n シミュレーションモードで実行する
pkg_add -v verboseモード
table:pkg_infoの使い方
コマンド 説明
pkg_info インストールされているすべてのパッケージの情報を表示
pkg_info pkgname 指定したパッケージの情報を表示
pkg_info -Q option パッケージ検索。オプション -Qe(すべてのインストール済みパッケージ) -Ql (指定したファイルを含むパッケージ)などがあります。
pkg_info -R pkgname 指定したパッケージが依存するパッケージの情報を表示。
pkg_info -D pkgname 指定したパッケージが依存するパッケージと、それらのパッケージが依存するパッケージを表示。
pkg_info -C コンフリクトしているパッケージを表示。
pkg_info -K 不足しているライブラリを表示。
デーモン管理
rcctl コマンドを経由すると /etc/rc.conf.local を自動編集してくれる。
code:rcctl
rcctl enable daemon
rcctl disable daemon
rcctl get daemon
rcctl getdef daemon
rcctl ls all|faulty|off|on|started|stopped
rcctl order pkg_daemon
rcctl set daemon variable argument
引用元: 第44回 OpenBSDのサービス制御機構 rc.d(8)とrcctl(8) | gihyo.jp
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
インストール直後
doas の設定
一般ユーザーでログイン後
code:doas.sh
$ id # ユーザー情報の確認
$ su # root になる
# vi /etc/doas.conf
# usermod -G wheel <user name> # もしユーザーが wheel グループに属してなければ
persistを付けると一定時間 doas のたびにパスワードを入力する必要がなくなる
code:doas.conf
permit persist keepenv :wheel
詳しくは: doas mastery
電源管理
ampdを有効化
code:ampd.sh
doas rcctl enable ampd
doas rcctl set ampd flags -A # CPUを自動調整する機能
リソース制限解除
usermod -G staff <YOUR_NAME> で staffグループに追加。
staffユーザークラスは、​使用できるメモリ使用の​制限が無い
ユーザーが​同時に​実行できる​プロセス数も多い
​ログインが​禁止されている​ときでも​ログイン可能
/etc/login.conf の staff: を以下の用に編集
code:login.conf
staff:\
:datasize-cur=1536M:\
:datasize-max=infinity:\
:maxproc-max=1024:\ # 最大1024プロセス起動可能
:maxproc-cur=512:\ # 512プロセス起動で渓谷
:openfiles-cur=4096:\
:openfiles-max=8192:\
:stacksize-cur=32M:\
:ignorenologin:\
:requirehome@:\
:tc=default:
login.conf編集後 cap_mkdb /etc/login.conf でバイナリ化(/etc/login.conf.dbできるが必須ではない(むしろ不要)
タイムゾーンと日付と時刻の設定
/etc/localtime というファイル名でzonefileへシンボリックリンクを貼ることで設定できる
code:timezone.sh
ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
時刻はNTPで管理する。デフォルトで /etc/ntpd.conf に参照先の設定が書かれている。
手動で設定する場合は $ date YYYYmmDDhhMM のコマンドで設定可能だが非推奨。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ディスク管理
OpenBSDのパーティション
table:パーティション
/ 主要な設定ファイルや必須プログラムが置かれる。可能な限り速度の出るディスクが望ましい
swap 仮想メモリ。システムの物理RAMサイズより大きい方が良い。OpenBSDはデフォルトで物理RAMの2倍のswapを確保する。
/tmp 一時ファイル置き場。
/var ログ, DB, メールスプール, WWWなど頻繁に変更されるデータ置き場. デフォルトで5GBだがウェブサーバー等ならもっと必要。
/usr OSのプログラム、コンパイラ、ライブラリなど。大部分はsysupgrade時に更新される。
/usr/X11R6 X Window System関連置き場
/usr/local pkg_add とかで追加されるプログラム置き場
/usr/src OpenBSDそのもののソースコード置き場。ソースからセルフアップグレードする予定がないなら不要。
/usr/obj OpenBSDをソースから更新する際のオブジェクト置き場。セルフアップグレードする予定がないなら不要
/home 各ユーザーが好きに使う
識別子
wd0a~p: IDE接続のSATA、MFM、ESDI、フラッシュデバイスをwdcまたはpciideインターフェイスに接続した場合。
sd0a~p: SCSI コマンドを使用するデバイス、USB ディスク、ahci インターフェイスに接続された SATA ディスク、および RAID コントローラに接続されたディスク
OpenBSDが発見した順番に0から順番に番号が末尾につく
番号の後ろにつくアルファベットはパーティションを表す(a〜p まで)
ディスク速度のチューニング(クライアントPCのみ)
/etc/fstab の swap パーティション以外に以下のオプションを追加
softdep,noatime
詳細は man 8 mount の該当オプションの説明を読むこと
USBディスクの使用方法
デバイスにUSBを挿したら以下のコマンドでディスクIDを確認する
code:dmsg
$ dmesg | tail
scsibus4 at umass0: 2 targets, initiator 0
sd1 at scsibus4 targ 1 lun 0: <SMI, USB DISK, 1100> removable serial.090c10007Y2FIM4TB1D8
sd1: 15472MB, 512 bytes/sector, 31686656 sectors
この場合ディスクIDはsd1
次に以下のコマンドで disklabel を確認
code:disklabel
$ disklabel -h sd1
# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: USB DISK
duid: 0000000000000000
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 1972
total sectors: 31686656 # total bytes: 15.1G
boundstart: 34
boundend: 31686623
16 partitions:
# size offset fstype fsize bsize cpg
c: 15.1G 0 unused
i: 15.1G 2048 MSDOS
この場合、 /dev/rsd1c の c と i が認識されているが、使用するのは MSDOS の i
後は以下のコマンドでmountする
code:mount
# /dev/rsd1i (RAWデバイス)ではなく sd1i (ブロックデバイス)をマウントする
doas mount_ntfs /dev/sd1i /mnt/foo
Block device required のエラーがでたらマウントする /dev/.. を間違っている可能性が高い
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
X の設定
xconsole を切る
以下の行をコメントアウトする
${exec_prefix}/bin/xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail
以下の行を追加してビープ音をOFF
xset b off
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ネットワーク・WiFiの設定
ファームウェアのアップデート
code:fw_update
doas fw_update
ネットワークの設定は、 /etc/hostname.<IF名> で以下のような感じで設定
code:/etc/hostname.em0
inet 192.168.1.123 255.255.255.0
inet6 2001:DB8::2 64
ifconfig -a でインターフェイス名を確認(恐らく iwn0)し /etc/hostname.iwn0 を以下の内容で作成
code:hostname.iwn0
nwid <SSID名をここに> wpakey <WiFiのパスワードをここに>
dhcp
なお IPv6 の自動設定はdhcp ではなく rtsol と設定する。
rtsol を使用する場合は sysctl.conf で以下の設定が必要
code:sysctl.conf
net.inet6.ip6.forwarding=0
net.inet6.ip6.accept_rtadv=1
以下のコマンドでネットワーク設定で再起動する
code:netstart
doas sh /etc/netstart iwn0
DNSの設定は /etc/resolve.conf
code:/etc/resolve.conf
nameserver 192.168.1.1 # resolvd: iwn0
lookup file bind
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
xfce4 のインストール
code:xfce.sh
su # root になる
pkg_add xfce xfce-extras # install xfce desktop
sed -i 's/xconsole/#xconsole/' /etc/X11/xenodm/Xsetup_0 # xconcole 非表示にする
usermod -G operator <user name> # so you can use xfce to log out, reboot etc
exit # switch to your user account
echo "exec startxfce4" > ~/.xsession # auto launchs xfce4 desktop
doas reboot # restart to have a xfce default desktop
引用元: OpenBSD 7 Xfce Desktop
キーボードとマウス
手動でキーボードレイアウトを設定する場合
kbd -l | grep jp とかしてレイアウトを選択し、 kbd <レイアウト名> で設定する
レイアウト名を /etc/kbdtype に設定しておくと自動化
CapsLockをCtrlへ
code:Xmodmap
clear Lock
keycode 66 = Control_L
add Control = Control_L
.xsession に以下を xmodmap ~/.Xmodmap を追加
/etc/wsconsctl.conf に以下の行を追加して reboot すると(多分)X関係なく入れ替えされる
keyboard.map+="keysym Caps_Lock = Control_L"
もしくは .xsession に以下の設定を追加しても可能らしい
setxkbmap -option ctrl:nocaps
wsconsctl デバイス名.param で設定値の表示
wsconsctl デバイス名.param=foo:bar,buzz:piyo のようにして設定
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ブラウザ関連
OpenBSDのpkg_srcで降ってくるブラウザはunveilのパッチが当たっているらしいので、ウェブ開発をする際には以下の設定が必要になる。
/etc/{firefox,chromium}/unveil.main に以下の行を追加
~/www/ rwc のようにアクセスさせたいパスに rwc を設定。
その他の設定ファイルは
Firefox
/usr/local/lib/firefox/browser/defaults/preferences/openbsd.js
Chromium
/etc/chromium/policies/managed/openbsd.json
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
日本語環境
必要なパッケージをインストール(mozc はOpenBSD非対応なので anthy で頑張る)
code:pkg_add_jp.sh
doas pkg_add consolekit2 fcitx fcitx-anthy fcitx-configtool mixfont-mplus-ipa mplus-fonts
巨大な依存(Qt)を許容するなら pkg_add fcitx-config-qt するとGUIで設定できて楽
.xsession を編集
code:.xsession
export LANG=ja_JP.UTF-8
export XMODIFIERS="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
exec ck-launch-session startxfce4
引用元: OpenBSD6.9を実機にインストール&日本語デスクトップ環境を導入する!
フォント
code:font.sh
# フォント格納
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts
# フォントキャッシュ更新
fc-cache -rv
# フォントのリスト
fc-list
Ports
OpenBSDにサードパーティーのバイナリパッケージを提供するための以下の作業を行うMakefileの集合を総称してPortsと呼ぶ
ソースコードを取得・抽出
パッチ
設定
コンパイル
パッケージ化するための命令
普通、Portsツリーは一つのアーキテクチャで一つだけ。
自身で色々ソースコードをいじる場合は /usr/ 以下に展開する。
rgz.ee
https://romanzolotarev.com/
#OpenBSD