INDEX
OpenBSD のインストール (7.5 ARM64 on rpi4B 版)
FreeBSD の日本語ドキュメント類はあるのですが、OpenBSD はなかなか見つからない。なので、OpenBSD 7.5 (Released Apr 5, 2024) を Raspberry Pi 4 Model B にインストールした際のメモ書き。
OpenBSD は、NetBSD からフォークされた、FreeBSD と並ぶ、BSD系のunix類の1つです。
Raspberry Pi 4B は、ARMv8 (64bit) を積んだシングルボードコンピュータです。
OpenBSD 6.3 から、arm64 プラットフォームが正式サポート対象となり、Raspberry Pi 3 がサポートされるハードウエアに乗るようになった。
必要なもの
- Raspberry Pi 本体
- https://www.raspberrypi.com/products/
- Raspberry Pi OS で、「rpi-eeprom-update」コマンドを使い EEPROM を最新にする必要がある?
- Micro SDHC カード
- OSをインストールし利用していくのに必要な容量
- OpenBSD miniroot ブートイメージ
- https://www.openbsd.org/
- アーキテクチャ arm64 の minirootNN.img を利用する
- 公式サイト https://ftp.openbsd.org/pub/OpenBSD/ または ミラーサイト から
- https://ftp.openbsd.org/pub/OpenBSD/<snapshots or version>/arm64/miniroot<ver>.img
-
Raspberry Pi 4 UEFI Firmware Images - インターネット環境
- miniroot でブートし、必要なファイルセットは、インターネットから取得する
- シリアルコンソール接続
- OSをインストールするために、3.3V のシリアルコンソールを GPIO につないで操作する
- 単純に作業するだけなら、HDMI でディスプレイ と USB キーボード をつないででもよいかと
- 母艦PC
- OpenBSD である必要はないが、SDカードにイメージの書き込みやシリアルコンソール端末が必要
- ブートイメージを書き込むソフト
- UNIX系なら dd コマンド
- Windows ならこの辺?
- balenaEtcher ( https://www.balena.io/etcher/ )
- Win32 Disk Imager ( https://sourceforge.net/projects/win32diskimager/ )
- dd for windows ( http://www.chrysocome.net/dd )
シリアルコンソール接続
シリアル通信をするには、シリアル通信のケーブル端子を GPIO に接続する。
つなぐ GPIO は、8番が TXD0 (GPIO14) なので RXD を、10番が RXD0 (GPIO15) なので TXD を接続する。GND は、隣り合う 6番のほかに 9 や 14 などでも良い。GPIO のピン配置は、SDカード側の内側が1番、外側が2番で、LAN側が 39,40番。詳細は公式サイトの GPIO and the 40-pin Header や pinout コマンドを参照のこと。
通信条件は、115200bps、データ長8ビット、ストップビット1、パリティ無し フロー制御無し。
BeagleBone Black で使用した、FTDI社の USB-TTLシリアル変換ケーブル(TTL-232R-3V3) を使用する場合、ピン配置が一致せずバラバラにもならないので、ジャンパーワイヤーなどで結線を変える必要がある。ドライバは、FTDI ( https://ftdichip.com/ ) から Virtual COM Port (VCP) Drivers をダウンロード・インストールする。
あと、Raspbean (Raspberry Pi 公式の OS) で、EEPROM の設定で「BOOT_UART=1」とすると、ブートローダのデバッグログが取れるようになる。
インストール前チェックリスト
インストールを行う前に以下ことを事前に確認・決めておく。
OpenBSD FAQ - Installation Guide: Pre-installation checklist から
- マシン名
- インストールそして利用可能なハードウエア
- 今回は、Raspberry Pi 4 Model B (4GB RAM)
- 使用するインストール方法
- SDカードにイメージを展開、ネットワーク経由でダウンロードしていく
- ディスクレイアウト
- 既存データや他のOSとの共存、は考えない。
- OpenBSD のサブパーティション
- ディスクの暗号化はしない
- ネットワーク設定 (DHCPを使用しない場合)
- ドメイン名 と ネームサーバ(DNS)
- IPアドレスとサブネットマスク (NICの数分)
- デフォルトゲートウエイアドレス
インストール準備
インストール用の miniroot イメージを書き込んだSDカードを作成する。
インストール・起動用 SDカードの作成
公式サイト または ミラーサイト から、miniroot イメージを取得して、SDカードに書き込む
balenaEtcher や Win32 Disk Imager は、管理者権限で起動し、GUIの画面で、イメージファイルを選択、書き込むドライブ(ディバイス)を選択して、書き込みを行う。
dd for windows ( http://www.chrysocome.net/dd )
管理者で実行し、"dd --list"でSDカードのディバイスを確認。以下のようにコマンドを実行しイメージを書き込む。
C:\>dd if=miniroot-am335x-60.fs of=\\?\Device\Harddisk1\Partition0 --progress rawwrite dd for windows version 0.6beta3. Written by John Newbigin <jn@it.swin.edu.au> This program is covered by terms of the GPL Version 2. 18,874,368 36864+0 records in 36864+0 records out C:\>
起動
U-Boot 2021.10 (Mar 03 2024 - 10:35:09 -0700)
DRAM: 3.9 GiB
RPI 4 Model B (0xc03112)
:≪中略≫
>> OpenBSD/arm64 BOOTAA64 1.18
boot>
cannot open sd0a:/etc/random.seed: No such file or directory
booting sd0a:/bsd: 3023768+1214656+12712936+633232 [269381+91+701664+287051]=0x13edb50
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2024 OpenBSD. All rights reserved. https://www.OpenBSD.org
OpenBSD 7.5 (RAMDISK) #124: Wed Mar 20 20:05:58 MDT 2024
deraadt@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/RAMDISK
real mem = 4124938240 (3933MB)
avail mem = 3956948992 (3773MB)
random: good seed from bootblocks
mainbus0 at root: Raspberry Pi 4 Model B Rev 1.2
efi0 at mainbus0: UEFI 2.8
efi0: Das U-Boot rev 0x20211000
:≪中略≫
WARNING: CHECK AND RESET THE DATE!
gpio at bcmgpio0 not configured
"bootloader" at mainbus0 not configured
bwfm0: failed loadfirmware of file brcmfmac43455-sdio.raspberrypi,4-model-b.bin
erase ^?, werase ^W, kill ^U, intr ^C, status ^T
インストール開始
Welcome to the OpenBSD/arm64 7.5 installation program. (I)nstall, (U)pgrade, (A)utoinstall or (S)hell? i
インストールするか、アップグレードするか聞かれるので、“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.
ターミナルの選択
Terminal type? [vt220]
ターミナル種別を聞かれるので、デフォルトのまま進める。
ホスト名の設定
System hostname? (short form, e.g. 'foo') rpi
対象機器のホスト名を設定する。
ネットワークの設定
インストールに必要なパッケージをネットワーク経由で取得するので、外部のサーバに接続出来るようにこの段階で設定を正しく行う。
設定するインターフェースの選択
Available network interfaces are: bse0 bwfm0 vlan0. Network interface to configure? (name, lladdr, '?', or 'done') [bse0]
自動検出されたインターフェースが列挙される。列挙されるインターフェース名は対象の機器で異なる。
bse0 が有線、bwfm0 が無線。デフォルトの“bse0”を選択して進める。
IPv4 IPアドレスの設定
IPv4 address for bse0? (or 'autoconf' or 'none') [autoconf]
IPv4 のIPアドレスを指定する。固定ならそのアドレス(とネットマスク)、DHCPで自動設定す場合は autoconf 、設定しない場合は none を入力する。
IPv6 IPアドレスの設定
IPv6 address for bse0? (or 'autoconf' or 'none') [none] autoconf
IPv6 のIPアドレスを指定する。固定ならそのアドレス、自動設定す場合は autoconf 、設定しない場合は none を入力する。
他のインターフェースの設定
Available network interfaces are: bse0 bwfm0 vlan0. Network interface to configure? (name, lladdr, '?', or 'done') [done]
デフォルトゲートウェイ/ドメイン名/ネームサーバーの設定
DHCPを設定した場合、DHCP から取得されたドメインとネームサーバーが表示される。
Using DNS domainname my.domain Using DNS nameservers at 192.168.0.1
固定IPアドレスの場合は、それぞれを設定していく。
add net default: gateway 192.168.0.1 DNS domain name? (e.g. 'example.com') [my.domain] intranet DNS nameservers? (IP address list or 'none') [none] 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”で進める。
一般ユーザの作成
ここで一般ユーザが作成出来る。作成する場合は、小文字でログイン名をいれる。必要なければ“no”を入力する。
ちなみに、ここで作成したユーザは、su コマンドで root にスイッチできる(wheel グループに追加される)。また、root 宛てのメールもこのユーザに飛ぶようになる( /root/.forward に作成したユーザ名が追加される)。
Setup a user? (enter a lower-case loginname, or 'no') [no] rpi Full name for user rpi? [rpi] Password for user rpi? (will not echo) Password for user rpi? (again)
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 に使用する公開鍵を入れる。
パーティションの設定
ディスクの選択
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]
インストールするディスクを暗号化するか。
パーティションの編集
Disk: sd0 geometry: 3801/255/63 [61067264 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]
ディスク全体を使うなら“W”、自分で編集する場合は“E”で編集を行う。amd64 など GPT が使える場合、GPT も選択できる。
SDカードすべて使うので、デフォルト値のまま進める。
ディスクラベルの設定
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: 1024.0M 65536 4.2BSD 2048 16384 1 # / b: 1960.4M 2162688 swap c: 29818.0M 0 unused d: 1624.3M 6177600 4.2BSD 2048 16384 1 # /tmp e: 2524.5M 9504160 4.2BSD 2048 16384 1 # /var f: 3380.4M 14674336 4.2BSD 2048 16384 1 # /usr g: 948.1M 21597376 4.2BSD 2048 16384 1 # /usr/X11R6 h: 3844.6M 23539104 4.2BSD 2048 16384 1 # /usr/local i: 16.0M 32768 MSDOS j: 1876.1M 31412800 4.2BSD 2048 16384 1 # /usr/src k: 5872.2M 35255008 4.2BSD 2048 16384 1 # /usr/obj l: 6731.5M 47281184 4.2BSD 2048 16384 1 # /home Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a]
自動的に割り当てられた内容が表示される。表示された内容でよければ“a”、これをベースに編集する場合は“e”、1から設定する場合は“c”を入力する。
ちなみに、MBR もしくは GPT で、OpenBSD 用に割り当てたパーティションの中での割当となる。
ディスクラベルの編集
本来なら、/usr, /var, /home など分けるべきだが、swap と /(ROOT) のみで構成する。
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 M OpenBSD area: 65536-61067264; size: 29786.0M; free: 29786.0M # size offset fstype [fsize bsize cpg] c: 29818.0M 0 unused i: 16.0M 32768 MSDOS sd0> a a offset: [65536] size: [61001728] 27770M FS type: [4.2BSD] mount point: [none] / sd0*> a b offset: [56950400] size: [4116864] FS type: [swap] sd0*> p M OpenBSD area: 65536-61067264; size: 29786.0M; free: 0.0M # size offset fstype [fsize bsize cpg] a: 27775.8M 65536 4.2BSD 2048 16384 1 # / b: 2010.2M 56950400 swap c: 29818.0M 0 unused i: 16.0M 32768 MSDOS sd0*> q Write new label?: [y]
“?”でコマンドヘルプが見られる。“a ≪ラベル≫”で追加、“d ≪ラベル≫”で削除、“p M”でMiB単位で表示、“q”で保存し終了する。
ファイルシステムの作成
/dev/rsd0a: 27775.8MB in 56884864 sectors of 512 bytes 138 cylinder groups of 202.50MB, 12960 blocks, 25920 inodes each
ディスクラベルの設定が終わると、ファイルシステムの作成が行われる。フォーマットが終わるまでしばらく待つ。
マウントの一覧
/dev/sd0a (35e356060523969a.a) on /mnt type ffs (rw, asynchronous, local)
インストール
インストールセットの場所の指定
Let's install the sets! Location of sets? (disk http nfs or 'done') [http]
インストールセットがある場所を指定する。ネットワーク(http)経由で取得するので、デフォルトの“http”のまま進める。
HTTP プロキシの設定
HTTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none]
プロキシを経由する必要がある場合は、プロキシサーバを指定する。ないので“none”のまま進める。
HTTP サーバの指定
(Unable to get list from openbsd.org, but that is OK) HTTP Server? (hostname or 'done') cdn.openbsd.org
インストールセットを取得するサーバを指定する。サーバリストが取得出来ていないため、リスト表示は出来ない。今回は“cdn.openbsd.org”を指定した。
他には、“www.ftp.ne.jp”(KDDI総合研究所)や“ftp.jaist.ac.jp”(北陸先端科学技術大学院大学)などを指定する。
サーバのディレクトリの指定
Server directory? [pub/OpenBSD/7.5/arm64]
インストールセットを取得するサーバのディレクトリパスを指定する。特に問題がなければ、デフォルト値まま進める。
インストールセットの選択
Unable to connect using HTTPS; using HTTP instead.
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] base75.tgz [X] game75.tgz [X] xfont75.tgz
[X] bsd.mp [X] comp75.tgz [X] xbase75.tgz [X] xserv75.tgz
[X] bsd.rd [X] man75.tgz [X] xshare75.tgz
Set name(s)? (or 'abort' or 'done') [done] -x*
[X] bsd [X] base75.tgz [X] game75.tgz [ ] xfont75.tgz
[X] bsd.mp [X] comp75.tgz [ ] xbase75.tgz [ ] xserv75.tgz
[X] bsd.rd [X] man75.tgz [ ] xshare75.tgz
Set name(s)? (or 'abort' or 'done') [done]
インストールするものを選択する。Xは使わないので「-x*」で外す。
インストール
Get/Verify SHA256.sig 100% |**************************| 1814 00:00 Signature Verified Get/Verify bsd 100% |**************************| 17144 KB 00:03 Get/Verify bsd.mp 100% |**************************| 17221 KB 00:03 Get/Verify bsd.rd 100% |**************************| 17932 KB 00:03 Get/Verify base75.tgz 100% |**************************| 303 MB 00:57 Get/Verify comp75.tgz 100% |**************************| 77812 KB 00:14 Get/Verify man75.tgz 100% |**************************| 7870 KB 00:01 Get/Verify game75.tgz 100% |**************************| 2736 KB 00:00 Installing bsd 100% |**************************| 17144 KB 00:02 Installing bsd.mp 100% |**************************| 17221 KB 00:03 Installing bsd.rd 100% |**************************| 17932 KB 00:03 Installing base75.tgz 100% |**************************| 303 MB 01:59 Extracting etc.tgz 100% |**************************| 267 KB 00:00 Installing comp75.tgz 100% |**************************| 77812 KB 01:02 Installing man75.tgz 100% |**************************| 7870 KB 00:09 Installing game75.tgz 100% |**************************| 2736 KB 00:02 Location of sets? (disk http nfs or 'done') [done]
他になければ、“done”で終わり。
タイムゾーンの設定
What timezone are you in? ('?' for list) [Canada/Mountain] Asia/Tokyo
タイムゾーン を聞かれるので、“Asia/Tokyo”指定する。
設定の保存・ディバイスの作成
Saving configuration files... done. Making all device nodes... done. Multiprocessor machine; using bsd.mp instead of bsd. fw_update: add bwfm; update 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]
ひとまずインストールは完了。
初回起動
初回の起動の時に ssh のホストキーが作成されるため起動に時間がかかる。
syncing disks... done
rebooting...
U-Boot 2021.10 (Mar 03 2024 - 10:35:09 -0700)
DRAM: 3.9 GiB
RPI 4 Model B (0xc03112)
:≪中略≫
>> OpenBSD/arm64 BOOTAA64 1.18
boot>
booting sd0a:/bsd: 11460356+2738616+301864+844464 [931384+91+1302216+805469]=0x13fe098
[ using 3039936 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2024 OpenBSD. All rights reserved. https://www.OpenBSD.org
OpenBSD 7.5 (GENERIC.MP) #138: Wed Mar 20 19:42:15 MDT 2024
deraadt@arm64.openbsd.org:/usr/src/sys/arch/arm64/compile/GENERIC.MP
:≪中略≫
pf enabled
starting network
reordering: ld.so libc libcrypto sshd.
openssl: generating isakmpd RSA keys... done.
openssl: generating iked ECDSA keys... done.
ssh-keygen: generating new host keys: RSA ECDSA ED25519
sshd: (ED25519) SHA256:h9ylBUzrLO/pMbnc9FTGt0eUyrn2tk3+KOV0AO3JaoY
starting early daemons: syslogd pflogd ntpd.
starting RPC daemons:.
savecore: no core dump
checking quotas: done.
clearing /tmp
kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
starting network daemons: sshd smtpd sndiod.
running rc.firsttime
fw_update: add none; update none; keep bwfm
Checking for available binary patches...
Run syspatch(8) to install:
003_libcrypto 004_bgpd 005_sndiod 006_cron 007_expat
008_nfs 009_readdir 010_elf 011_unbound 013_aplsmc
014_expat 015_wg 016_pffrag
starting local daemons: cron.
Sun Feb 16 15:39:33 JST 2025
OpenBSD/arm64 (rpi.my.domain) (console)
login:
インストール後のシステム設定
再起動したら、必要なサーバの設定を行う。
- 端末の設定 OpenBSD/Terminal/75-arm64
- ユーザ設定 OpenBSD/Users/75-arm64
- サーバの設定 OpenBSD/Server/75-arm64
- ソフトウェア OpenBSD/Software/75-arm64
システムのアップデート
fw_update(1) コマンドで、フリーでないファームウェアパッケージのインストール・アップデートができる。
syspatch(8) コマンドで、未適用のバイナリパッチの適用がされる。ただ、バイナリパッチは、i386, amd64, arm64 しか提供されていないっぽい。
アップグレード
sysupgrade(8) コマンドでアップグレードができる。このアップグレードは一つ次のリリースへのみがサポートされる。
最終更新時間:2025年02月16日 18時02分24秒 指摘や意見などあればSandBoxのBBSへ。