OpenBSD6.5をuEFI対応PCにインストールする方法

TL;DR

  1. OpenBSDのインストール記事が少ないということで、ちょうど6.5がリリースされたのでインストール記事を書いておく。 と思ったら、「OpenBSD 6.5 のインストール」という良記事があった。以下の3点以外同じなので、そちらを参照のこと。

  2. OpenBSDはuEFIからのブートをサポートしている。パーティションの作成時に、

    Use (W)hole disk MBR, whole disk (G)PT, or (E)dit? [W]
    

    ``

と聞かれたら、Gを選べばよい。

  1. ネットワークインターフェースのファームウェアがインストーラーに含まれていない場合でも、インストールが可能である。 インストール完了後に、別途ダウンロードしてファームウェアをUSBメモリ等で転送し、fw_updateコマンドでインストールすれば良い。

  2. 今となっては、信じられないくらいチョー不親切に見える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!


OpenBSD

5003 Words

2019-06-08 21:24 +0900