トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

OpenBSD/Install/75-arm64

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 がサポートされるハードウエアに乗るようになった。

  必要なもの

シリアルコンソール接続

シリアル通信をするには、シリアル通信のケーブル端子を 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:

インストール後のシステム設定

再起動したら、必要なサーバの設定を行う。

システムのアップデート

fw_update(1) コマンドで、フリーでないファームウェアパッケージのインストール・アップデートができる。

syspatch(8) コマンドで、未適用のバイナリパッチの適用がされる。ただ、バイナリパッチは、i386, amd64, arm64 しか提供されていないっぽい。

OpenBSD/Patches/75-arm64

アップグレード

sysupgrade(8) コマンドでアップグレードができる。このアップグレードは一つ次のリリースへのみがサポートされる。

OpenBSD/Upgrade ( 7.5 to 7.6)

最終更新時間:2025年02月16日 18時02分24秒 指摘や意見などあればSandBoxのBBSへ。