INDEX
OpenBSDのインストール (7.5 AMD64 on Hyper-V 版)
FreeBSD の日本語ドキュメント類はあるのですが、OpenBSD はなかなか見つからない。なので、OpenBSD 7.5 (April 5, 2024) を Hyper-V にインストールした際のメモ書き。
OpenBSD は、NetBSD からフォークされた、FreeBSD と並ぶ、BSD系のunix類の1つです。
インストールは、テキストベースのインストーラにより行う。i386/AMD64 プラットフォームでは、CD/DVD, USBドライブ, Floppy, PXE からブートが可能。また、インストールするデータ(インストールセット)は、CD-ROM, FTP, HTTP, ローカルハードディスクの別パーティション, NFS 等から取得する。
4.2 から ISOイメージが公式で配布されるようになったので、CDから起動して、インストールするのが、スタンドアローンで出来るし楽で良いかと…。
インストール前チェックリスト
インストールを行う前に以下ことを事前に確認・決めておく。
OpenBSD FAQ - Installation Guide: Pre-installation checklist から
- マシン名
- インストールそして利用可能なハードウエア
- 今回は、Hyper-V の 第一世代 仮想マシン
- 使用するインストール方法 (CD-ROM, HTTP, etc.)
- 今回は、ISOイメージから
- ディスクレイアウト
- 既存データや他のOSとの共存、は考えない。
- OpenBSD のサブパーティション
- ディスクの暗号化はしない
- ネットワーク設定 (DHCPを使用しない場合)
- ドメイン名 と ネームサーバ(DNS)
- IPアドレスとサブネットマスク (NICの数分)
- デフォルトゲートウエイアドレス
インストールメディア
- install75.iso
- ISOイメージ、インストール CD/DVD を作成する。ファイルセットを含む。
- install75.img
- ディスクイメージ、USBフラッシュドライブなどに書き込んで使用する。ファイルセットを含む。
- cd75.iso
- install75.iso と同じだが、ファイルセットを含まない。
- miniroot75.img
- install75.img と同じだが、ファイルセットを含まない。
- floppy75.img
- フロッピーディスクイメージ。CD/DVD 、USBドライブ が使えない、古い環境用。
install75.iso と install75.img 以外は、ファイルセットを含まないので、http などでほかのサーバから取得が必要になる。
PXEブート
PXE (Preboot Execution Environment) は、ネットワークのみを使用してシステムをブートする標準的な方法です。
i386 と amd64 のプラットフォームで、PXE 対応 NIC 、DHCP と TFTP サーバーなどの環境があれば、PXEブートで起動し、インストールを行うことができる。また、レスポンスファイル install.conf も用意すれば、無人インストールも可能になる。やったことないけど…
インストール
Hyper-V で、第一世代(非UEFI) の 仮想マシン を作成しておく。また、ISOイメージ install75.iso を取得して、仮想DVDドライブにセットしておく。
※Hyper-V のコンソールで、テキストをコピーできないので、画面から文字起こししている。
インストール開始
ISOイメージをセットして、仮想マシンの電源を入れる。CDから起動しない場合は、仮想マシンのBIOS設定で、スタートアップ順序を確認する。
...
root on rd0a swap on rd0b dump on rd0b
erase ^?, werase ^W, kill ^U, intr ^C, status ^T
Welcome to the OpenBSD/amd64 7.5 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell? i{Enter}
インストールするか、アップデートするかを聞かれるので、インストール(i) を選択する。
メッセージ
At any prompt except password prompts you can escape to a shell by typing '!'. Default answers are shown in []'s and are selected by pressing RETURN. You can exit this program at any time by pressing Control-C, but this can leave your system in an inconsistent state.
キーボードの設定
Choose your keyboard layout ('?' or 'L' for list) [default] ?{Enter}
Available layouts: 〜 jp jp.swapctrlcaps 〜
Choose your keyboard layout ('?' or 'L' for list) [default] jp{Enter}
キーボードマッピングを設定する。? で指定できるマッピングのリストが表示される。
日本語キーボードなので“jp”を指定する。Ctrl と Caps を入れ替えるなら“jp.swapctrlcaps”を指定する。
ホスト名の設定
System hostname? (short form, e.g. 'foo') openbsd{Enter}
対象機器のホスト名を設定する。
ネットワークの設定
設定するインターフェースの選択
Available network interfaces are: hvn0 vlan0.
Network interface to configure? (name, lladdr, '?', or 'done') [hvn0] {Enter}
自動検出されたインターフェースが列挙される。列挙されるインターフェース名は対象の機器で異なる。
デフォルトの“hvn0”を選択して進める。
IPv4 IPアドレスの設定
IPv4 address for hvn0? (or 'autoconf' or 'none') [autoconf] {Enter}
IPv4 のIPアドレスを指定する。固定ならそのアドレス、DHCPで自動設定す場合は autoconf 、設定しない場合は none を入力する。
IPv6 IPアドレスの設定
IPv6 address for hvn0? (or 'autoconf' or 'none') [none] autoconf{Enter}
IPv6 のIPアドレスを指定する。固定ならそのアドレス、自動設定す場合は autoconf 、設定しない場合は none を入力する。
他のインターフェースの設定
Available network interfaces are: hvn0 vlan0.
Network interface to configure? (name, lladdr, '?', or 'done') [done] {Enter}
必要なら他のインターフェースを選択して、ネットワーク設定を繰り返す。ネットワーク設定が終わったら、“done”を入力し、次に進む。
デフォルトゲートウェイの設定/ドメイン名の設定
固定IPアドレスを設定した場合は、ゲートウェイとドメイン名の設定を求められる。
自動設定 (autoconf) の場合は、DHCP から取得された内容が表示される。
Using DNS domainname intranet Using DNS nameservers at 192.168.0.1
rootパスワードの設定
Password for root account? (will not echo) Password for root account? (again)
管理者アカウント(root ユーザ)のログインパスワードを設定する。入力した文字は表示されないので注意。
確認の為に再入力が求められるので、同じく入力する。
sshサーバ自動起動の設定
Start sshd(8) by default? [yes]
sshサーバ (sshd) を自動起動するか聞かれるので、“yes”で進める。
X Window System の設定
Do you expect to run the X Window System? [yes] no{Enter}
Xは使わないので、“no”で。
シリアルコンソールの設定
Change the default console to com0? [no] {Enter}
シリアルポート(COMポート)があると聞かれる?設定するとシリアルコンソールでログインできるように /etc/ttys などが設定される?
使わないので、“no”で。
一般ユーザの作成
Setup a user? (enter a lower-case loginname, or 'no') [no] user01{Enter}
Full name for user user01? [user01]
Password for user user01? (will not echo)
Password for user user01? (again)
ここで1つ一般ユーザが作成出来る。作成する場合は、小文字でログイン名をいれる。必要なければ“no”を入力する。
ちなみに、ここで作成したユーザは、su コマンドで root にスイッチできる(wheel グループに追加される)。また、root 宛てのメールもこのユーザに飛ぶようになる( /root/.forward に作成したユーザ名が追加される)。
ssh での root ログインの可否の設定
WARNING: root is targeted by password guessing attacks, pubkeys are safer. Allow root ssh login? (yes, no, prohibit-password) [no]
ssh での root ログインを許すかを設定する。許可する場合は“yes”、禁止する場合は“no”、パスワード認証を禁止(公開鍵認証のみ)する場合は、“prohibit-password”を入力する。※ここで設定した値が sshd の PermitRootLogin 規定設定になるっぽい(sshd_config のコメントアウトされてる設定の記述が変わっている)。
一般的に、root でリモートログインすることはない(必要なら su なり、sudo doas すればよい)ので、禁止(no)でよい。どうしても必要であれば、公開鍵認証でのみ入れるようにすべき。この場合、/root/.ssh/authorized_keys に使用する公開鍵を入れる。
タイムゾーンの設定
What timezone are you in? ('?' for list) [Asia/Tokyo] {Enter}
タイムゾーン を聞かれるので、“Asia/Tokyo”を指定する。
パーティションの設定
ディスクの選択
Available disks are: sd0.
Which disk is the root disk? ('?' for details) [sd0] ?
sd0: Msft, Virtual Disk 1.0 naa.xxxx (127.0G)
Available disks are: sd0.
Which disk is the root disk? ('?' for details) [sd0]
インストールするディスクを指定する。“?”で詳細が表示される。
ディスクの暗号化
Encrypt the root disk with a (p)assphrase or (k)eydisk? [no]
ディスクの暗号化を行うか。必要なければ“no”を入力する。
パーティションの編集
No valid MBR or GPT. Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [whole]
MBR または GPT でディスク全体を使うか、自分で編集をして設定するか。
2TiB以下で、仮想ディスクをすべて使うので、デフォルト値(MBR ですべて使用)のまま進める。
ディスクラベルの設定
Setting OpenBSD MBR partition to whole sd0...done. The auto-allocated layout for sd0 is: # size offset fstype [fsize bsize cpg] a: 1.0G 64 4.2BSD 2048 16384 1 # / b: 8.2G 2097216 swap c: 127.0G 0 unused d: 4.0G xxxxxxxx 4.2BSD 2048 16384 1 # /tmp e: 15.2G xxxxxxxx 4.2BSD 2048 16384 1 # /var f: 13.1G xxxxxxxx 4.2BSD 2048 16384 1 # /usr g: 1.0G xxxxxxxx 4.2BSD 2048 16384 1 # /usr/X11R6 h: 18.4G xxxxxxxx 4.2BSD 2048 16384 1 # /usr/local i: 3.0G xxxxxxxx 4.2BSD 2048 16384 1 # /usr/src j: 6.0G xxxxxxxx 4.2BSD 2048 16384 1 # /usr/obj k: 57.0G xxxxxxxx 4.2BSD 2048 16384 1 # /home Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a]
自動的に割り当てられた内容が表示される。表示された内容でよければ“a”、これをベースに編集する場合は“e”、一から設定する場合は“c”を入力する。
ちなみに、MBR もしくは GPT で、OpenBSD 用に割り当てたパーティションの中での割当となる。
ディスクラベルの編集
Xは入れないし、カーネルをビルドし直す予定もないので、その辺の領域は省略して。/(ROOT) 1.0G、swap 8G、/tmp 4G、/var 16G、/usr 16G、/usr/local 16G、/home のこり で分割する。
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] c Label editor (enter '?' for help at any prompt) sd0> p G OpenBSD area: 64-266338304; size: 127.0G; free: 127.0G # size offset fstype [fsize bsize cpg] c: 127.0G 0 unused sd0> a a offset: [64] size: [xxxx] 1G FS type: [4.2BSD] mount point: [none] / sd0*> a b offset: [xxxx] size: [xxxx] 8G FS type: [swap] sd0*> a d offset: [xxxx] size: [xxxx] 4G FS type: [4.2BSD] mount point: [none] /tmp sd0*> a e offset: [xxxx] size: [xxxx] 16G FS type: [4.2BSD] mount point: [none] /var sd0*> a f offset: [xxxx] size: [xxxx] 16G FS type: [4.2BSD] mount point: [none] /usr sd0*> a g offset: [xxxx] size: [xxxx] 16G FS type: [4.2BSD] mount point: [none] /usr/local sd0*> a h offset: [xxxx] size: [xxxx] FS type: [4.2BSD] mount point: [none] /home sd0*> p G OpenBSD area: 64-266338304; size: 127.0G; free: 0.0G # size offset fstype [fsize bsize cpg] a: 1.0G 64 4.2BSD 2048 16384 1 # / b: 8.0G 2104512 swap c: 127.0G 0 unused d: 4.0G xxxxxxxx 4.2BSD 2048 16384 1 # /tmp e: 16.0G xxxxxxxx 4.2BSD 2048 16384 1 # /var f: 16.0G xxxxxxxx 4.2BSD 2048 16384 1 # /usr g: 16.0G xxxxxxxx 4.2BSD 2048 16384 1 # /usr/local h: 66.0G xxxxxxxx 4.2BSD 2048 16384 1 # /home sd0*> q Write new label?: [y]
“?”でコマンドヘルプが見られる。“a ≪ラベル≫”で追加、“d ≪ラベル≫”で削除、“p G”でGiB単位で表示、“q”で保存し終了する。
ファイルシステムの作成
:中略 /dev/rsd0e: 16386.6MB in xxxxx sectors of 512 bytes 81 cylinder groups of 202.50MB, 12960 blocks, 25920 inodes each /dev/sd0a (xxxx.a) on /mnt type ffs (rw, asynchronous, local) :中略
ディスクラベルの設定が終わると、ファイルシステムの作成が行われる。フォーマットが終わるまでしばらく待つ。
インストール
インストールセットの場所の指定
Let's install the sets! Location of sets? (cd0 disk http nfs or 'done') [cd0]
インストールセットがある場所を指定する。CDから行うので、デフォルトの“cd0”のまま進める。
http などを指定した場合は、接続に必要な情報を聞いてくる。(http だと、プロキシサーバ、接続先のサーバ)
サーバのディレクトリの指定
Server directory? [7.5/amd64]
インストールセットを取得するサーバのディレクトリパスを指定する。特に問題がなければ、デフォルト値まま進める。
インストールセットの選択
Select sets by entering a set name, a file name pattern or 'all'. De-select
sets by prepending a '-', e.g.: '-game*'. Selected sets are labelled '[X]'.
[X] bsd [X] comp75.tgz [X] xbase75.tgz [X] xserv75.tgz
[X] bsd.rd [X] man75.tgz [X] xshare75.tgz
[X] base75.tgz [X] game75.tgz [X] xfont75.tgz
Set name(s)? (or 'abort' or 'done') [done] -x*
[X] bsd [X] comp75.tgz [ ] xbase75.tgz [ ] xserv75.tgz
[X] bsd.rd [X] man75.tgz [ ] xshare75.tgz
[X] base75.tgz [X] game75.tgz [ ] xfont75.tgz
Set name(s)? (or 'abort' or 'done') [done]
インストールするものを選択する。Xは使わないので“-x*”で外す。
SHA256 ハッシュファイル
Directory does not contain SHA256.sig. Continue without verification? [no]
ファイルセットを含んだインストールイメージ install75.iso および install75.img には、SHA256.sig ファイルが含まれていない。このため、インストーラは含まれているセットの署名を確認できないというエラーがでる。
これは、インストーラがそれらを検証しても意味がないため、SHA256.sig が含まれていない。誰かが不正なインストールイメージを作成した場合、簡単に正当であると主張ができるため。
イメージが事前に検証されている場合は、“yes”で進めて問題ない。
インストール
Installing bsd 100% |**************************| 25844 KB 00:07 Installing bsd.rd 100% |**************************| 4575 KB 00:01 Installing base75.tgz 100% |**************************| 267 MB 02:03 Extracting etc.tgz 100% |**************************| 246 KB 00:01 Installing comp75.tgz 100% |**************************| 80681 KB 00:25 Installing man75.tgz 100% |**************************| 7870 KB 00:02 Installing game75.tgz 100% |**************************| 2733 KB 00:00 Location of sets? (cd0 disk http nfs or 'done') [done]
他になければ、“done”で終わり。
現在時刻
Time appears wrong. Set to 'Sun Jun 9 14:06:23 JST 2024'? [yes]
現在時刻をきいてくるのでよければそのまま進める。
ディバイスの作成
Saving configuration files... done. Making all device nodes... done. fw_update: added intel; updated none Relinking to create unique kernel... done.
完了
CONGRATULATIONS! Your OpenBSD install has been successfully completed! When you login to your new system the first time, please read your mail using the 'mail' command. Exit to (S)hell, (H)alt or (R)eboot? [reboot]
ひとまずインストールは完了。CDを取り出して、“reboot”で再起動する。
syncing disks... done rebooting...
初回起動
:≪中略≫ running rc.firsttime fw_update: added none; updated none; kept intel Checking for available binary patches... Run syspatch(8) to install: 003_licrypto starting local daemons: cron. Sun Jun 9 14:11:00 JST 2024 OpenBSD/amd64 (openbsd.intranet) (ttyC0) login:
初回の起動の時に ssh のホストキーが作成されるため起動に時間がかかる。また、fw_update(1) および syspatch(8) コマンドが実行され、ファームウェアパッケージ および 未適用のバイナリパッチの適用がされる。
インストール後のシステム設定
再起動したら、必要なサーバの設定を行う。
- 端末の設定 OpenBSD/Terminal/75-amd64
- ユーザ設定 OpenBSD/Users/75?
- サーバの設定 OpenBSD/Server/75?
- ソフトウェア OpenBSD/Software/75?
システムのアップデート
ファームウェア更新
fw_update(1) コマンドで、フリーでないファームウェアパッケージをインストール・アップデートする。OpenBSD 6.1 から提供されたっぽい
-n で、ドライラン(予行練習)、-i で、インストール済みもしくは必要となるパッケージの表示、-a で、すべてのパッケージのインストールもしくはアップデート。-v は、詳細表示。
openbsd# fw_update -v -n fw_update: add none; update none; keep intel openbsd#
バイナリパッチ
syspatch(8) コマンドで、未適用のバイナリパッチを適用する。OpenBSD 6.1 から提供されたっぽい。
あと、アーキテクチャが i386, amd64, arm64 しか提供されていないっぽい。
コマンドラインオプションで、-l を指定すると適用済みの、-c を指定すると適用可能なパッチ一覧が表示される。ダウンロード元は、/etc/installurl に記載されたミラーサーバが利用される。
openbsd# cat /etc/installurl https://cdn.openbsd.org/pub/OpenBSD openbsd# syspatch -l openbsd# syspatch -c 003_libcrypto openbsd#
アップグレード
sysupgrade(8) コマンドでアップグレードができる。このアップグレードは一つ次のリリースへのみがサポートされる。
OpenBSD/Upgrade ( 7.1 to 7.2, 7.2 to 7.3 ) へ
最終更新時間:2024年06月09日 18時20分01秒 指摘や意見などあればSandBoxのBBSへ。