OpenBSD6.5をuEFI対応PCにインストールする方法
TL;DR
-
OpenBSDのインストール記事が少ないということで、ちょうど6.5がリリースされたのでインストール記事を書いておく。 と思ったら、「OpenBSD 6.5 のインストール」という良記事があった。以下の3点以外同じなので、そちらを参照のこと。
-
OpenBSDはuEFIからのブートをサポートしている。パーティションの作成時に、
Use (W)hole disk MBR, whole disk (G)PT, or (E)dit? [W]
``
と聞かれたら、G
を選べばよい。
-
ネットワークインターフェースのファームウェアがインストーラーに含まれていない場合でも、インストールが可能である。 インストール完了後に、別途ダウンロードしてファームウェアをUSBメモリ等で転送し、
fw_update
コマンドでインストールすれば良い。 -
今となっては、信じられないくらいチョー不親切に見えるCUIベースのインストーラーなので、VierualBox等の仮想マシンにインストールしてみると、練習ができて安心。
0. インストールメディアの作成
まずはインストールに必要なメディアを作成する。 イメージは、https://www.openbsd.org/faq/faq4.html#Download にリンクがある。 installXX.fsのamd64のリンクをクリックすればダウンロード可能である。 また、SHA256ファイルもダウンロードしておく。
wget https://cdn.openbsd.org/pub/OpenBSD/6.5/amd64/install65.fs
wget https://cdn.openbsd.org/pub/OpenBSD/6.5/amd64/SHA256
ダウンロードしたイメージがダウンロードに成功しているか確認する。
ha256sum -c SHA256 --ignore-missing
install65.fs: 完了
成功!
あとは、USBメモリにダウンロードしたイメージを書き込む。
dd if=install65.fs of=/dev/sdb
1. インストーラーの実行
作成したUSBメモリをPCに差し、USBメモリから起動するとインストーラーが起動する。 OpenBSDのインストーラーはテキストベースで、GUIのインストーラーなど存在しないので注意。
まず最初に、
Welcome to the OpenBSD/amd64 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell
と聞かれるので、I
を押してインストールを選択する。
1.1 キーボード選択
Choose your keyboard layout (? or 'L' for list) [default]
キーボードレイアウトを選択する。英語キーボードを使っている人はdefaultで良ので、Enterキーを押下する。
日本語キーボードの人は、jp
と入力する。
1.2 ホストネーム設定
System hostname? (short form, e.g. 'foo')
ホスト名を入力する。個人で使用する場合は、適当なPC名を入力する。 会社など、誰かが管理しているネットワークで使用する場合は、ネットワーク管理者の指示を仰ぐ。
1.3 ネットワークの設定
1.3.1 設定するインターフェースの選択
Available network interfaces are: iwm0 vlan0.
Which network interface do you wish to configure? (or 'done')[iwm0]
インストーラーが自動検出したネットワークインターフェースを列挙して、 どのインターフェースを設定するか聞いてくる。
iwm0とvlan0が検出できたようだ。ここはインストールするPCで異なるだろう。 私がインストールしているPCのネットワークインターフェースは、有線LANがなくWiFiだけしか持っていない。 iwm0がWiFiのインターフェースだろう。ということで、iwm0を選択する。
有線LANがある人は、有線LANで設定した方が楽だろう。
1.3.2 WiFiの設定
Access point? (ESSID, 'any' list# or '?')[any]
WiFiのESSIDを入力する。
Security protocol? (O)pen, (W)ep, WPA-(P)SK [O]
WPA-PSKであれば、P
を、WEPであれば、W
を選択する。
WPA passphrase? (will echo)
WPA-PSKを選択すれば、WPAパスフレーズを、WEPを選択するとWEPキーを聞かれるので、入力する。
1.3.3 IPアドレスの設定
IPv4 address for iwm0? (or 'dhcp' or 'none')[dhcp]
選択したネットワークインターフェースのIPアドレスを設定する。
固定IPを設定するのであれば、192.0.2.123
のように入力する。DHCPで自動設定す場合は、dhcp
、
アドレスを付けない場合は、none
を入力する。
iwm0: could not read firmware iwm-8265-22 (error 2)
iwm0: fail to load init firmware
iwm0: aquiring device failed
iwm0: aquiring device failed
iwm0: aquiring device failed
iwm0: SIOCSIFFLAGS: No such file or directory
iwm0: no link ........ sleeping
げげげっ ファームウェアがないのでネットワークに接続できないと言われてしまった…orz
しょうがないので、インストールさ行を続けて、インストール後にファームウェアを入れることにしよう。 追加のファームウェアが必要ない場合は、普通にアドレスが設定されます。
IPv6 address for iwm0? (or 'autoconf' or 'none')[none]
IPv6のアドレスを指定する。IPv6を使わないのであれば、none
を、自動設定を行うならautoconf
を選択する。
固定のIPv6アドレスを使う場合は、2001:db8::1
のように指定する。
Available network interfaces are: iwm0 vlan0.
Whitch network interface do you wish to configure? (or 'done')[iwm0]
とまた聞かれるので、必要なら他のインターフェースを選択して、ネットワーク設定を繰り返す。
ネットワーク設定が終わったら、done
を入力し、ドメイン名の設定に進む。
1.3.4 ドメイン名の設定
DNS domain name? (e.g. `example.com`)[my.domain]
PCのドメイン名を入力する。
ホスト名同様、会社など、誰かが管理しているネットワークで使用する場合は、ネットワーク管理者の指示を仰ぐ。
個人で自分のドメインを持っていない人は、デフォルトのmy.domain
でよいでしょう。
1.3.5 DNSサーバの設定
DNS servers? (IP address list or 'none')[none]
DHCPでIPv4アドレスの設定に成功していれば、取得したアドレスがデフォルト値に設定されているはず。
なので、Enterキーを押下するだけで良いと思う。
私は失敗したので、8.8.8.8
を入力した。
1.4 rootパスワードの設定
Password for root account? (will not echo)
管理者アカウントのログインパスワードを設定する。入力した文字は表示されないので注意。
1.5 sshサーバ自動起動の設定
Start sshd(8) by default? [yes]
sshサーバを自動起動するか聞かれる。サーバ用途の場合は起動しても良いだろう。 デスクトップといった、リモートログインが必要ない用途であれば起動する必要はない。
1.6 デスクトップマネージャー自動起動の設定
Do you want the X Window System to be started by xenodm(1)? [no]
xenodmというデスクトップマネージャーを使ってX Wondow Systemを自動起動するかと聞かれる。
yes
にすると、起動時にGUIのログイン画面が表示される。サーバ用途ではno
にする。
1.7 一般ユーザの作成
Setup a user? (enter a lower-case login name or `no`)
ここで一般ユーザーを作成する場合は、小文字でログイン名を、必要なければno
を入力する。
1.8 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
を入力する。一般にrootでリモートログインする理由はないので、no
で良いだろう。
なんらかの理由でrootによるリモートログインが必要なら、prohibit-password
を設定して、公開鍵認証を使用すべきである。
1.9 パーティションの設定
Available disks are: sd0 sd1
Which disk is the root disk? ('?' for details)[sd0]
OpenBSDをインストールするディスクを指定する。’?‘を入力するとsd0,sd1が何を指しているかが表示される。 私のPCの場合、sd0がハードディスクで、sd1がUSBメモリだった。
インストールするディスクを指定すると、指定したディスクのパーティションテーブルが表示され、その後に
Use (W)hole disk MBR, whole disk (G)PT, or (E)dit? [W]
と聞かれる。ディスク全体を使う場合はG
を指定する。ここでG
を指定しないとuEFIでは起動できない。
G
を選択すると、パーティションを自動設定した場合のレイアウトが表示されたあと、
自動設定を採用するか、変更するか聞かれる。
# size offset fstype [fsize bsize cpg]
a: 2097152 1024 4.2BSD 2048 16384 12958 # /
b: 33598688 2098176 swap # none
c: 1953525168 0 unused
d: 8388608 35696864 4.2BSD 2048 16384 12958 # /tmp
e: 74537408 44085472 4.2BSD 2048 16384 12958 # /var
f: 4194304 118622880 4.2BSD 2048 16384 12958 # /usr
g: 2097152 122817184 4.2BSD 2048 16384 12958 # /usr/X11R6
h: 41943040 124914336 4.2BSD 2048 16384 12958 # /usr/local
i: 960 64 MSDOS
j: 4194304 166857376 4.2BSD 2048 16384 12958 # /usr/src
k: 12582912 171051680 4.2BSD 2048 16384 12958 # /usr/obj
l: 629145536 183634624 4.2BSD 4096 32768 26062 # /home
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout?[a]
自動で良ければa
を、自動設定をベースに変更するならE
を、カスタムなレイアウトにする場合はC
を入力する。
パーティションの設定が終わると、パーティションを作成してフォーマットを始める。
特に確認はないので、マルチブートをするときなど、既存のシステムを消さないように注意する。
ファイルシステムの作成が終わったら、
Available disks are: sd1
Which disk do you wish to initialize? (or 'done')[done]
と聞かれる。これ以上初期化するディスクが無ければdone
を入力する。
1.10 インストールセットの指定
Let's install the sets!
Location of sets? (disk http or done)[http]
ネットワーク設定に成功した人は、httpを指定する。今回、私はファームウェアが足りずネットワーク設定に失敗したためdisk
を
選択することにする。
Is the disk partition already mounted? [yes]
ディスクパーティションが既にマウントされているかだと?ディスクパーティションとは何を指すのかな。よくわからんので、デフォルトのyes
で。
Pathname to the sets? (or 'done')[6.5/amd64]
しらんがな。ひとまずデフォルトで。
The directory '6.5/amd64' dose not exist.
デスヨネー
Pathname to the sets? (or 'done')[6.5/amd64]
では、done
で逃げる。
Location of sets? (disk http or done)[disk]
もどった。disk
を選択。
Is the disk partition already mounted? [yes]
さっきはyesでダメだったので、no
にする。
Available disks are: sd0 sd1
Which is disj contains the install media? (or 'done') [sd1]
sd1
がUSBメモリだったので、sd1
を指定。
a: 920512 1024 4.2BSD 2048 16384 16142
i: 960 64 MSDOS
Available sd1 partitions are: a i
Which sd1 partition has the install sets? (or 'done')[a]
インストールメディアのUSBメモリは2つのパーティションに分かれているのか。
まぁインストールセットが入っているのは、きっとa
でしょう。
パーティションタイプが4.2BSDだし、なによりもサイズがでかい。
Pathname to the sets? (or 'done')[6.5/amd64]
これはデフォルトの6.5/amd64
で。
1.11 インストールセットの選択
Select sets by entering a set name, a file name pattern or 'all'. De-select
sets by prepending a '-'. e.g.: '-games*'. Selected sets are labeled '[X]'.
[X] bsd [X] base65.tgz [X] game65.tgz [X] xfont65.tgz
[X] bsd.mp [X] comp65.tgz [X] xbase65.tgz [X] xserv65.tgz
[X] bsd.rd [X] man65.tgz [X] xshare65.tgz
Set name(s)? (or 'abort' or 'done)[done]
ここでは、インストールするセットを選択する。
例えばサーバー用途で、X Window Systemがいらない場合は、-x*
と入力すると、X関連のインストールセットが除外される。
インストールするセットの指定がおわったら、done
と入力するとインストールが始まる。
ネットワークに接続できない状態でインストールすると、
Directory dose not contain SHA256.sig. Continue without verification? [no]
と言われるが、無い物は無いので、yes
と回答する。
1.12 タイムゾーンの設定
What timezone are you in? [Canada/Mountain]
タイムゾーンを聞かれるので、Asia/Tokyo
と入力する。
すると、
CONGRATIRATIONS! 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]
ひとまずインストールは成功したようだ。よかったよかった。
rebootを選択して再起動しよう。
2. インストール後の設定
2.1 ファームウェアのインストール
2.1.1 ファームウェアの取得
インストーラーに入っていないファームウェアをインストールする。 今回は、ネットワークに接続していないので、手動でファームウェアをダウンロード・インストールする。 まず、fw_updateコマンドで不足しているファームウェアを列挙する。
# fw_update -i
Missing: inteldrm-firmware iwm-firmware vmm-firmware intel-firmware
http://firmware.openbsd.org/firmware/6.5 にある、不足しているファームウェアおよび、SHA256.sigをダウンロードし、 USBメモリにコピーする。
2.1.2 USBメモリのマウント
他のPCでダウンロードしたファームウェアをUSBメモリ経由でインストールするために、USBメモリをマウントする。 まずdisklabelコマンドで使用されているパーティションを調べる。
# /dev/rsd1c:
type: SCSI
disk: SCSI disk
label: USB FLASH DRIVE
duid: 0000000000000000
flags:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 255
sectors/cylinder: 16065
cylinders: 7528
total sectors: 120938496
boundstart: 0
boundend: 120938496
drivedata: 0
16 partitions:
# size offset fstype [fsize bsize cpg]
c: 120938496 0 unused
i: 120930432 8064 MSDOS
どうやらi
が、FATのパーティションのようである。
# mount /dev/sd1i /mnt
# cd /mnt
# ls
SHA256.sig iwm-firmware-0.20170105.tgz
intel-firmware-20190514p0v0.tgz vmm-firmware-1.11.0p1.tgz
inteldrm-firmware-20181218.tgz
とすると、/mntにUSBメモリがマウントされる。
2.1.3 署名の検証
ダウロードしたファイルが改竄されていないか、signifyコマンドで検証する。
# signify -C -x SHA256.sig *.tgz
Signature Verified
intel-firmware-20190514p0v0.tgz: OK
inteldrm-firmware-20181218.tgz: OK
iwm-firmware-0.20170105.tgz: OK
vmm-firmware-1.11.0p1.tgz: OK
signifyコマンドは、プリインストールされた公開鍵を使って、SHA256.sigに付されている電子署名を検証する。 その後各ファイルのSHA256ハッシュを計算し、検証することで改竄されていないことを検証することができる。
2.1.4 ファームウェアのインストール
fw_updateコマンドに、ダウンロードしたファームウェアパッケージがあるディレクトリを指定すると
自動的にインストールしてくれる。
例えば、/mnt
にあるならな、以下のようになる。
fw_update -p /mnt
intel-firmware-20190514p0v0.tgz: OK
inteldrm-firmware-20181218.tgz: OK
iwm-firmware-0.20170105.tgz: OK
vmm-firmware-1.11.0p1.tgz: OK
インストールに成功したら、rebootしてファームウェアを有効にしよう。
shutdown -r now
2.2 システムのアップデート
リリース後に公開されたパッチを適用する。
syspatch
コマンドを実行すると、自動で未適用のパッチを調べ、ダウンロードし、適用してくれる。
syspatch
パッケージの更新は、
pkg_add -u
で自動で行われる。
Have Fun!