Raspberry Pi 3 Model B+ 上に OpenBSD 7.0 の環境を構築する手順です。
インストール後の基本的な設定までを行います。
Raspberry Pi に OpenBSD をインストールする場合はシリアルコンソール接続が必須となるため環境を準備します。
Raspberry Pi の UART 端子 (GPIO ピン) と PC の USB ポートを接続する変換アダプタを用意します。
本稿では CP2102 Chipset を搭載した変換アダプタを使用します。
SILICON LABS 社のサイトから CP210x Universal Windows Driver を取得します。
CP210xVCPInstaller_x64.exe を実行して CP2102 ドライバをインストールします。
miniroot70.img を取得します。
※miniroot70.img はインストーラならびにその関連ファイルが含まれたイメージファイルとなります。
『SD カードイメージファイルの書き込み』を参照して SD カードイメージファイル (miniroot70.img) を SD カードに書き込みます。
書き込みを行った SD カードを Raspberry Pi に挿入します。
本稿ではネットワーク機器へは有線での接続を行うこととします。
LAN ケーブルを Raspberry Pi に接続します。
変換アダプタを PC の USB ポートに接続します。
『デバイスマネージャ』画面内の『ポート (COM と LPT)』を展開して、『Silicon Labs CP210x USB to UART Bridge』に表示される COM の番号を確認します。
UART-USB 変換アダプタを Raspberry Pi に接続します。
使用する GPIO ピンは以下の通りとなります。
※GPIO ピンの配置図は Raspberry Pi の DOCUMENTATION に掲載されています。
以下例の情報の通りターミナルソフトのシリアルポートの設定を行います。
ポート | ※『デバイスマネージャ』で確認した COM の番号 |
---|---|
スピード | 115200 |
データ | 8 bit |
パリティ | none |
ストップビット | 1 bit |
フロー制御 | none |
Raspberry Pi に OpenBSD をインストールする手順の概要は以下の通りとなります。
Raspberry Pi の電源を投入 (micro USB ケーブルを接続) します。
ブートローダ画面が表示されます。
そのまま Enter を押下します。
U-Boot 2021.07 (Aug 12 2021 - 02:45:29 -0600)
DRAM: 948 MiB
RPI 3 Model B+ (0xa020d3)
MMC: mmc@7e202000: 0, mmcnr@7e300000: 1
Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1...
In: serial
Out: vidconsole
Err: vidconsole
Net: No ethernet found.
starting USB...
Bus usb@7e980000: usb dr_mode not found
USB DWC2
scanning bus usb@7e980000 for devices... 4 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
Scanning disk mmc@7e202000.blk...
** Unrecognized filesystem type **
Card did not respond to voltage select! : -110
Scanning disk mmcnr@7e300000.blk...
Disk mmcnr@7e300000.blk not ready
Found 3 disks
Missing RNG device for EFI_RNG_PROTOCOL
No EFI system partition
BootOrder not defined
EFI boot manager: Cannot load any image
Found EFI removable media binary efi/boot/bootaa64.efi
170694 bytes read in 20 ms (8.1 MiB/s)
libfdt fdt_check_header(): FDT_ERR_BADMAGIC
Booting /efi\boot\bootaa64.efi
disks: sd0*
>> OpenBSD/arm64 BOOTAA64 1.6
boot>
インストール種別選択のプロンプトが表示されます。
『I』を入力 (『Install』を選択) して Enter を押下します。
Welcome to the OpenBSD/arm64 7.0 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell? I
ターミナル種別選択のプロンプトが表示されます。
そのまま Enter を押下 (『vt220』を選択) します。
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.
Terminal type? [vt220]
ホスト名入力のプロンプトが表示されます。
ホスト名を入力して Enter を押下します。
System hostname? (short form, e.g. 'foo') raspberrypi
設定対象とするネットワークインタフェース選択のプロンプトが表示されます。
『mue0』を入力して Enter を押下します。
Available network interfaces are: bwfm0 mue0 vlan0.
Which network interface do you wish to configure? (or 'done') [bwfm0] mue0
IPv4 アドレス入力のプロンプトが表示されます。
IP アドレスを入力して Enter を押下します。
IPv4 address for mue0? (or 'autoconf' or 'none') [autoconf] 172.16.0.220
ネットマスク入力のプロンプトが表示されます。
ネットマスクを入力して Enter を押下します。
Netmask for mue0? [255.255.255.0] 255.255.255.0
IPv6 アドレス入力のプロンプトが表示されます。
本稿では IPv6 の設定は行わないこととします。
そのまま Enter を押下 (『none』を選択) します。
IPv6 address for mue0? (or 'autoconf' or 'none') [none]
設定対象とするネットワークインタフェース選択のプロンプトが再度表示されます。
そのまま Enter を押下 (『done』を選択) します。
Available network interfaces are: bwfm0 mue0 vlan0.
Which network interface do you wish to configure? (or 'done') [done]
IPv4 ゲートウェイ入力のプロンプトが表示されます。
ゲートウェイの IP アドレスを入力して Enter を押下します。
Default IPv4 route? (IPv4 address or none) 172.16.0.1
DNS ドメイン名入力のプロンプトが表示されます。
本項では一旦デフォルトの『my.domain』を設定することとします。
そのまま Enter を押下します。
DNS domain name? (e.g. 'example.com') [my.domain]
DNS サーバ入力のプロンプトが表示されます。
DNS サーバの情報を入力して Enter を押下します。
DNS nameservers? (IP address list or 'none') [none] 8.8.8.8 8.8.4.4
root ユーザのパスワード設定画面が表示されます。
パスワードを 2 回入力します。
Password for root account? (will not echo)
Password for root account? (again)
sshd 起動選択のプロンプトが表示されます。
インストール後は SSH 接続でのログインを想定して、本稿では sshd の起動を行うこととします。
そのまま Enter を押下 (『yes』を選択) します。
Start sshd(8) by default? [yes]
一般ユーザ作成のプロンプトが表示されます。
Setup a user? (enter a lower-case loginname, or 'no') [no]
本稿では以下例の情報の通り一般ユーザの作成を行うこととします。
ユーザ名 | admin |
---|---|
フルネーム | admin |
wheel グループに所属 | ※OpenBSD ではインストールの際に作成するユーザはデフォルトで wheel グループに所属 |
shell | ※OpenBSD ではインストールの際に作成するユーザはデフォルトで /bin/ksh に設定 |
作成するユーザ名を入力して Enter を押下します。
Setup a user? (enter a lower-case loginname, or 'no') [no] admin
フルネーム入力のプロンプトが表示されます。
フルネームを入力して Enter を押下します。
Full name for user admin? [admin]
パスワード設定画面が表示されます。
パスワードを 2 回入力します。
Password for user admin? (will not echo)
Password for user admin? (again)
root ユーザの SSH 接続でのログイン設定のプロンプトが表示されます。
本項ではパスワード認証と公開鍵認証の何れも禁止することとします。
そのまま Enter を押下 (『no』を選択) します。
WARNING: root is targeted by password guessing attacks, pubkeys are safer.
Allow root ssh login? (yes, no, prohibit-password) [no]
ルートディスク選択のプロンプトが表示されます。
そのまま Enter を押下 (『sd0』を選択) します。
Available disks are: sd0.
Which disk is the root disk? ('?' for details) [sd0]
ディスクパーティション選択のプロンプトが表示されます。
そのまま Enter を押下 (『Whole disk』を選択) します。
Disk: sd0 geometry: 1927/255/63 [30965760 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: size ]
-------------------------------------------------------------------------------
*0: 0C 2 10 9 - 3 15 12 [ 32768: 16384 ] Win95 FAT32L
1: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
2: 00 0 0 0 - 0 0 0 [ 0: 0 ] unused
3: A6 3 15 13 - 5 122 53 [ 49152: 38912 ] OpenBSD
Use (W)hole disk or (E)dit the MBR? [whole]
パーティションレイアウトの設定画面が表示されます。
本稿ではディスクパーティションは自動分割を行うこととします。
そのまま Enter を押下 (『Auto layout』を選択) します。
Creating a msdos partition and an OpenBSD partition for rest of sd0...done.
The auto-allocated layout for sd0 is:
# size offset fstype [fsize bsize cpg]
a: 365.3M 65536 4.2BSD 2048 16384 1 # /
b: 510.6M 813664 swap
c: 15120.0M 0 unused
d: 464.5M 1859392 4.2BSD 2048 16384 1 # /tmp
e: 639.8M 2810592 4.2BSD 2048 16384 1 # /var
f: 1930.6M 4120832 4.2BSD 2048 16384 1 # /usr
g: 513.2M 8074688 4.2BSD 2048 16384 1 # /usr/X11R6
h: 1669.9M 9125664 4.2BSD 2048 16384 1 # /usr/local
i: 16.0M 32768 MSDOS
j: 1386.1M 12545600 4.2BSD 2048 16384 1 # /usr/src
k: 5292.2M 15384352 4.2BSD 2048 16384 1 # /usr/obj
l: 2315.9M 26222848 4.2BSD 2048 16384 1 # /home
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a]
ファイルセットの取得元選択のプロンプトが表示されます。
そのまま Enter を押下 (『http』を選択) します。
Let's install the sets!
Location of sets? (disk http nfs or 'done') [http]
Proxy サーバ入力のプロンプトが表示されます。
本稿では Proxy サーバは使用しないこととします。
そのまま Enter を押下 (『none』を選択) します。
HTTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
ファイルセット取得元サーバ入力のプロンプトが表示されます。
サーバの一覧は OpenBSD Mirrors に掲載されています。
本稿では Japan (Wako-City, Saitama) から取得を行うこととします。
『ftp.riken.jp』を入力して Enter を押下します。
HTTP Server? (hostname or 'done') ftp.riken.jp
ファイルセットのパス名選択のプロンプトが表示されます。
そのまま Enter を押下 (『pub/OpenBSD/7.0/arm64』を選択) します。
Server directory? [pub/OpenBSD/7.0/arm64]
ファイルセットの一覧画面が表示されます。
本稿ではファイルセットは最小構成を行う (『bsd』『bsd.mp』『base70.tgz』を選択) こととします。
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] base70.tgz [X] game70.tgz [X] xfont70.tgz
[X] bsd.mp [X] comp70.tgz [X] xbase70.tgz [X] xserv70.tgz
[X] bsd.rd [X] man70.tgz [X] xshare70.tgz
Set name(s)? (or 'abort' or 'done') [done]
radmdisk kernel の選択を解除します。
『-bsd.rd』を入力して Enter を押下します。
[X] bsd [X] base70.tgz [X] game70.tgz [X] xfont70.tgz
[X] bsd.mp [X] comp70.tgz [X] xbase70.tgz [X] xserv70.tgz
[X] bsd.rd [X] man70.tgz [X] xshare70.tgz
Set name(s)? (or 'abort' or 'done') [done] -bsd.rd
コンパイラ関連の選択を解除します。
『-comp*』を入力して Enter を押下します。
[X] bsd [X] base70.tgz [X] game70.tgz [X] xfont70.tgz
[X] bsd.mp [X] comp70.tgz [X] xbase70.tgz [X] xserv70.tgz
[ ] bsd.rd [X] man70.tgz [X] xshare70.tgz
Set name(s)? (or 'abort' or 'done') [done] -comp*
マニュアルページの選択を解除します。
『-man*』を入力して Enter を押下します。
[X] bsd [X] base70.tgz [X] game70.tgz [X] xfont70.tgz
[X] bsd.mp [ ] comp70.tgz [X] xbase70.tgz [X] xserv70.tgz
[ ] bsd.rd [X] man70.tgz [X] xshare70.tgz
Set name(s)? (or 'abort' or 'done') [done] -man*
ゲームの選択を解除します。
『-game*』を入力して Enter を押下します。
[X] bsd [X] base70.tgz [X] game70.tgz [X] xfont70.tgz
[X] bsd.mp [ ] comp70.tgz [X] xbase70.tgz [X] xserv70.tgz
[ ] bsd.rd [ ] man70.tgz [X] xshare70.tgz
Set name(s)? (or 'abort' or 'done') [done] -game*
X11 関連の選択を解除します。
『-x*』を入力して Enter を押下します。
[X] bsd [X] base70.tgz [ ] game70.tgz [X] xfont70.tgz
[X] bsd.mp [ ] comp70.tgz [X] xbase70.tgz [X] xserv70.tgz
[ ] bsd.rd [ ] man70.tgz [X] xshare70.tgz
Set name(s)? (or 'abort' or 'done') [done] -x*
選択解除を終了します。
そのまま Enter を押下 (『done』を選択) します。
[X] bsd [X] base70.tgz [ ] game70.tgz [ ] xfont70.tgz
[X] bsd.mp [ ] comp70.tgz [ ] xbase70.tgz [ ] xserv70.tgz
[ ] bsd.rd [ ] man70.tgz [ ] xshare70.tgz
Set name(s)? (or 'abort' or 'done') [done]
ファイルセットの取得が行われます。
Get/Verify SHA256.sig 100% |**************************| 1544 00:00
Signature Verified
Get/Verify bsd 100% |**************************| 13720 KB 00:59
Get/Verify bsd.mp 100% |**************************| 13782 KB 01:11
Get/Verify base70.tgz 16% |**** | 39040 KB 15:35 ETA
アーカイブの展開が行われます。
Installing bsd 100% |**************************| 13720 KB 00:03
Installing bsd.mp 100% |**************************| 13782 KB 00:02
Installing base70.tgz 22% |***** | 51456 KB 01:49 ETA
ファイルセットの取得元選択のプロンプトが再度表示されます。
そのまま Enter を押下 (『done』を選択) します。
Location of sets? (disk http nfs or 'done') [done]
タイムゾーン選択のプロンプトが表示されます。
『Asia/Tokyo』を入力して Enter を押下します。
What timezone are you in? ('?' for list) [Canada/Mountain] Asia/Tokyo
インストール完了画面が表示されます。
そのまま Enter を押下 (『Reboot』を選択) します。
Saving configuration files... done.
Making all device nodes... done.
Multiprocessor machine; using bsd.mp instead of bsd.
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]
本稿では以降の手順はリモート接続でログインした状態で行うこととします。
SSH 接続でログインします。 以下のプロンプトが表示されます。
raspberrypi$
root ユーザにスイッチします。
raspberrypi$ su -
Password:
raspberrypi#
/etc/myname の設定を変更します。
以下はドメイン名『my.domain』を除去してホスト名を『raspberrypi』のみとする場合の例となります。
#raspberrypi.my.domain
raspberrypi
なお /etc/hosts にも設定したドメイン名を含むエントリが存在するため、適宜設定を変更します。
#172.16.0.220 raspberrypi.my.domain raspberrypi
172.16.0.220 raspberrypi
設定の反映を行うため OpenBSD を再起動します。
raspberrypi# shutdown -r now
OpenBSD では ntpd (openntpd) は自動起動が行われます。
また ntpd の起動時に TLS 通信による時刻補正も行われます。
よって時刻補正と時刻同期を行うための対応は不要となります。
本稿では時刻同期先をインターネットマルチフィード株式会社の PUBLIC NTP サーバに変更を行うこととします。
/etc/ntpd.conf の時刻同期先サーバの設定を変更します。
#servers pool.ntp.org
#server time.cloudflare.com
server ntp1.jst.mfeed.ad.jp
server ntp2.jst.mfeed.ad.jp
server ntp3.jst.mfeed.ad.jp
設定の反映を行うため ntpd を再起動します。
raspberrypi# rcctl restart ntpd
本稿では操作例として bash のインストールを行うこととします。
インストールするパッケージを検索します。
raspberrypi# pkg_info -Q bash
bash-5.1.8
bash-completion-2.11
bashunit-20140327p0
checkbashisms-2.0.0.2p0
debug-bash-5.1.8
パッケージをインストールします。
pkg_add コマンドを実行します。
raspberrypi# pkg_add bash
本稿では操作例として UTF-8 への変更を行うこととします。
~/.profile に『export LANG=ja_JP.UTF-8』の設定を追加します。
export LANG=ja_JP.UTF-8
本稿では操作例として bash への変更を行うこととします。
chpass コマンドを実行します。
raspberrypi$ chpass -s /usr/local/bin/bash
『SD カード全体のバックアップ』を参照して適宜 OpenBSD 環境のシステムバックアップを行います。