!!! OpenBSDのインストール (7.1 ARMv7 on BBB 版) {{category OpenBSD,nolink}}FreeBSD の日本語ドキュメント類はあるのですが、OpenBSD はなかなか見つからない。 なので、[OpenBSD|https://www.openbsd.org/] [7.1 (Apr 21, 2022)|https://www.openbsd.org/71.html] を [BeagleBone Black|https://beagleboard.org/black] にインストールした際のメモ書き。 OpenBSD は、NetBSD からフォークされた、FreeBSD と並ぶ、BSD系のunix類の1つです。 BeagleBone は、Raspberry Pi と同じく ARM を積んだシングルボードコンピュータで、後継機となる BeagleBone Black は機能強化とコストダウンが行われてる。 BBB は eMMC に Linux OS (Debian) がインストールされているが、SDメモリカードをセットし、そこへ OpenBSD をインストールしてサーバとして利用出来るようにしてていく。 BBB を選ぶ理由は、以前から OpenBSD が動作・サポートされ、当時比較的手に入れやすかったため。 OpenBSD 6.3 から arm64 プラットフォームが正式サポート対象となり、Raspberry Pi 3 がサポートされるハードウエアに乗るようになった。 それ以前から、armv7 はサポートされており、BeagleBone もサポートされるハードウエアとなっていた。 !! 必要なもの * BeagleBone Black 本体 ** https://beagleboard.org/black ** Rev.C もしくは、eMMC の更新を推奨 *** 新しいものは、SDカードが刺さっていれば、SDカードから起動する *** 古いものは USER/BOOT ボタンを押さないとSDカードから起動しない *** [BeagleBoard.org Latest Firmware Images|https://beagleboard.org/latest-images] の Flasher images をSDカードに入れて起動すると eMMC のアップデートが行われる。 ** ==秋月電子通商 [M-06867|http://akizukidenshi.com/catalog/g/gM-06867/]== ** ==秋月電子通商 [M-09914|http://akizukidenshi.com/catalog/g/gM-09914/] (Element14製)== * Micro SDHC カード ** OSをインストールし利用していくのに必要な容量 * OpenBSD miniroot イメージ ** https://www.openbsd.org/ ** アーキテクチャ armv7 の BeagleBone 用の miniroot-am335x-.fs を利用する ** 公式サイト https://ftp.openbsd.org/pub/OpenBSD/ または [ミラーサイト|https://www.openbsd.org/ftp.html] から *** https://ftp.openbsd.org/pub/OpenBSD//armv7/miniroot-am335x-.img * インターネット環境 ** miniroot でブートし、必要なファイルセットは、インターネットから取得する * シリアルコンソール接続 ** OSをインストールするために、3.3V のシリアルコンソールをつないで操作する ** 単純に作業するだけなら、HDMI でディスプレイ と USB キーボード をつないででもよいかと * 母艦PC ** OpenBSD である必要はないが、SDカードにイメージの書き込みやシリアルコンソール端末が必要 * miniroot イメージを書き込むソフト ** 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 ) ! シリアルコンソール接続 シリアル通信をするには、シリアル通信のケーブル端子をシリアル通信のピンに接続する。 通信条件は、115200bps、データ長8ビット、ストップビット1、パリティ無し フロー制御無し。 FTDI社の USB-TTLシリアル変換ケーブル(TTL-232R-3V3) が、ピン配置と一致するので便利。 ドライバは、FTDI ( https://ftdichip.com/ ) から [Virtual COM Port (VCP) Drivers|https://ftdichip.com/drivers/vcp-drivers/] をダウンロード・インストールする。 * FTDI社 USB-TTLシリアル変換ケーブル(TTL-232R-3V3) ** 秋月電子通商 [M-05840|https://akizukidenshi.com/catalog/g/gM-05840/] !! インストール前チェックリスト インストールを行う前に以下ことを事前に確認・決めておく。 OpenBSD FAQ - Installation Guide: [Pre-installation checklist|http://www.openbsd.org/faq/faq4.html#Checklist] から * マシン名 * インストールそして利用可能なハードウエア ** 今回は、BeagleBone Black * 使用するインストール方法 ** SDカードにイメージを展開、ネットワーク経由でダウンロードしていく * ディスクレイアウト ** 既存データや他のOSとの共存、は考えない。 ** OpenBSD のサブパーティション ** ディスクの暗号化はしない * ネットワーク設定 (DHCPを使用しない場合) ** ドメイン名 と ネームサーバ(DNS) ** IPアドレスとサブネットマスク (NICの数分) ** デフォルトゲートウエイアドレス ////////////////////////////////////////////////// !!! インストール準備 インストール用の miniroot イメージを書き込んだSDカードを作成する。 !! インストール・起動用 SDカードの作成 [公式サイト|https://ftp.openbsd.org/pub/OpenBSD/] または [ミラーサイト|https://www.openbsd.org/ftp.html] から、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 This program is covered by terms of the GPL Version 2. 18,874,368 36864+0 records in 36864+0 records out C:\> ////////////////////////////////////////////////// !!! インストール miniroot イメージを書き込んだSDカードをセットして、シリアルケーブルをつなぎコンソールを立ち上げて、LAN電源をつないで起動する。 !! 起動 U-Boot SPL 2018.09-00002-g0b54a51eee (Sep 10 2018 - 19:41:39 -0500) Trying to boot from MMC2 Loading Environment from EXT4... ** Unable to use mmc 0:1 for loading the env ** U-Boot 2018.09-00002-g0b54a51eee (Sep 10 2018 - 19:41:39 -0500), Build: jenkins-github_Bootloader-Builder-65 CPU : AM335X-GP rev 2.1 I2C: ready DRAM: 512 MiB  :≪中略≫ ## Starting EFI application at 82000000 ... disks: sd0* sd1 >> OpenBSD/armv7 BOOTARM 1.19 boot>  :≪中略≫ Copyright (c) 1995-2022 OpenBSD. All rights reserved. https://www.OpenBSD.org OpenBSD 7.1 (RAMDISK) #25: Thu Apr 14 16:04:01 MDT 2022 deraadt@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/RAMDISK  :≪中略≫ bootfile: sd0a:/bsd boot device: sd0 root on rd0a swap on rd0b dump on rd0b WARNING: CHECK AND RESET THE DATE! erase ^?, werase ^W, kill ^U, intr ^C, status ^T !! インストール開始 Welcome to the OpenBSD/armv7 7.1 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') bbb 対象機器のホスト名を設定する。 !! ネットワークの設定 インストールに必要なパッケージをネットワーク経由で取得するので、外部のサーバに接続出来るようにこの段階で設定を正しく行う。 ! 設定するインターフェースの選択 Available network interfaces are: cpsw0 vlan0. Which network interface do you wish to configure? (or 'done') [cpsw0] 自動検出されたインターフェースが列挙される。 列挙されるインターフェース名は対象の機器で異なる。 デフォルトの“cpsw0”を選択して進める。 ! IPv4 IPアドレスの設定 IPv4 address for cpsw0? (or 'autoconf' or 'none') [autoconf] 192.168.0.253 IPv4 のIPアドレスを指定する。 固定ならそのアドレス、DHCPで自動設定す場合は autoconf 、設定しない場合は none を入力する。 Netmask for cpsw0? [255.255.255.0] 固定IPアドレスの場合、ネットワークマスクも指定する。 ! IPv6 IPアドレスの設定 IPv6 address for cpsw0? (or 'autoconf' or 'none') [none] autoconf IPv6 のIPアドレスを指定する。 固定ならそのアドレス、自動設定す場合は autoconf 、設定しない場合は none を入力する。 ! 他のインターフェースの設定 Available network interfaces are: cpsw0 vlan0. Which network interface do you wish to configure? (or 'done') [done] 必要なら他のインターフェースを選択して、ネットワーク設定を繰り返す。 ネットワーク設定が終わったら、“done”を入力し、次に進む。 ! IPv4 デフォルトゲートウェイの設定 Default IPv4 route? (IPv4 address or none) 192.168.0.1 固定IPアドレスの場合、デフォルトゲートウェイの設定を設定する add net default: gateway 192.168.0.1 ! ドメイン名の設定 DNS domain name? (e.g. 'example.com') [my.domain] intranet ネットワークのドメイン名を設定する。 ! DNSサーバの設定 DNS nameservers? (IP address list or 'none') [none] 192.168.0.1 DNSサーバのIPアドレスを設定する。 DHCP の場合、正しく取得出来ていれば、それがデフォルト値になる。 !! rootパスワードの設定 Password for root account? (will not echo) Password for root account? (again) 管理者アカウント(root ユーザ)のログインパスワードを設定する。 入力した文字は表示されないので注意。 確認の為に再入力が求められるので、同じく入力する。 !! sshサーバ自動起動の設定 Start sshd(8) by default? [yes] sshサーバ(sshd)を自動起動するか聞かれるので、“yes”で進める。 !! 一般ユーザの作成 ここで1つ一般ユーザが作成出来る。作成する場合は、小文字でログイン名をいれる。必要なければ“no”を入力する。 ちなみに、ここで作成したユーザは、su コマンドで root にスイッチできる(wheel グループに追加される)。 また、root 宛てのメールもこのユーザに飛ぶようになる( /root/.forward に作成したユーザ名が追加される)。 Setup a user? (enter a lower-case loginname, or 'no') [no] bbb Full name for user bbb? [bbb] Password for user bbb? (will not echo) Password for user bbb? (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 sd1. Which disk is the root disk? ('?' for details) [sd0] ? sd0: SD/MMC, SD32G, 0020 (29.8G) sd1: Kingston, MMC04G, 0000 (3.6G) Available disks are: sd0 sd1. Which disk is the root disk? ('?' for details) [sd0] インストールするディスクを指定する。“?”で詳細が表示される。 ! パーティションの編集 Disk: sd0 geometry: 3884/255/63 [62410752 Sectors] Offset: 0 Signature: 0xAA55 Starting Ending LBA Info: #: id C H S - C H S [ start: size ] ------------------------------------------------------------------------------- *0: 0C 2 10 9 - 2 140 10 [ 32768: 8192 ] 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 2 140 11 - 4 113 45 [ 40960: 30464 ] 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. newfs_msdos: /dev/r0000000000000000.i: No such file or directory The auto-allocated layout for sd0 is: # size offset fstype [fsize bsize cpg] a: 1024.0M 65536 4.2BSD 2048 16384 1 # / b: 717.7M 2162688 swap c: 30474.0M 0 unused d: 1676.8M 3632544 4.2BSD 2048 16384 1 # /tmp e: 2609.8M 7066592 4.2BSD 2048 16384 1 # /var f: 3446.0M 12411424 4.2BSD 2048 16384 1 # /usr g: 967.8M 19468800 4.2BSD 2048 16384 1 # /usr/X11R6 h: 3943.0M 21450848 4.2BSD 2048 16384 1 # /usr/local i: 16.0M 32768 MSDOS j: 1889.2M 29526080 4.2BSD 2048 16384 1 # /usr/src k: 5898.4M 33395136 4.2BSD 2048 16384 1 # /usr/obj l: 8269.4M 45475040 4.2BSD 2048 16384 1 # /home Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] 自動的に割り当てられた内容が表示される。 表示された内容でよければ“a”、これをベースに編集する場合は“e”、一から設定する場合は“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-62410752; size: 30442.0M; free: 30442.0M # size offset fstype [fsize bsize cpg] c: 30474.0M 0 unused i: 16.0M 32768 MSDOS sd0> a a offset: [65536] size: [62345216] 28393M FS type: [4.2BSD] mount point: [none] / sd0*> a b offset: [58219552] size: [4191200] FS type: [swap] sd0*> p M OpenBSD area: 65536-62410752; size: 30442.0M; free: 0.0M # size offset fstype [fsize bsize cpg] a: 28395.5M 65536 4.2BSD 2048 16384 1 # / b: 2046.5M 58219552 swap c: 30474.0M 0 unused i: 16.0M 32768 MSDOS sd0*> q Write new label?: [y] “?”でコマンドヘルプが見られる。“a ≪ラベル≫”で追加、“d ≪ラベル≫”で削除、“p M”でMiB単位で表示、“q”で保存し終了する。 ! ファイルシステムの作成 /dev/rsd0a: 28395.5MB in 58154016 sectors of 512 bytes 141 cylinder groups of 202.50MB, 12960 blocks, 25920 inodes each ディスクラベルの設定が終わると、ファイルシステムの作成が行われる。フォーマットが終わるまでしばらく待つ。 ! 他のディスクの初期化 Available disks are: sd1. Which disk do you wish to initialize? (or 'done') [done] 他に初期化するディスクがあるか聞かれるので、なければ“done”で進める。 /dev/sd0a (45e94596e747951b.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') ftp.jaist.ac.jp インストールセットを取得するサーバを指定する。 今回は“ftp.jaist.ac.jp”を指定する。 ---- “www.ftp.ne.jp”(KDDI総合研究所)だと、インストールセットがミラーされていない。 “ftp.jaist.ac.jp”(北陸先端科学技術大学院大学)だと、インストールセットの選択に行く前に下記のように https 接続ができないと言われる… Unable to connect using HTTPS; using HTTP instead. って思ったけど、 ftp.openbsd.org や cdn.openbsd.org でも HTTPS が使えないな… ※arm64 では、インストールセット選択(ディスクラベル編集)前にタイムゾーンの設定を聞いてくるので、 armv7 は、時刻設定がされずに、https 接続に失敗してるかな…。 ! サーバのディレクトリの指定 Server directory? [pub/OpenBSD/7.1/armv7] インストールセットを取得するサーバのディレクトリパスを指定する。 特に問題がなければ、デフォルト値まま進める。 ! インストールセットの選択 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] comp71.tgz [X] xbase71.tgz [X] xserv71.tgz [X] bsd.rd [X] man71.tgz [X] xshare71.tgz [X] base71.tgz [X] game71.tgz [X] xfont71.tgz Set name(s)? (or 'abort' or 'done') [done] -x* [X] bsd [X] comp71.tgz [ ] xbase71.tgz [ ] xserv71.tgz [X] bsd.rd [X] man71.tgz [ ] xshare71.tgz [X] base71.tgz [X] game71.tgz [ ] xfont71.tgz Set name(s)? (or 'abort' or 'done') [done] インストールするものを選択する。Xは使わないので「-x*」で外す。 ! インストール Get/Verify SHA256.sig 100% |**************************| 1875 00:00 Signature Verified Get/Verify bsd 100% |**************************| 6709 KB 00:02 Get/Verify bsd.rd 100% |**************************| 14954 KB 00:12 Get/Verify base71.tgz 100% |**************************| 131 MB 01:19 Get/Verify comp71.tgz 100% |**************************| 39635 KB 00:23 Get/Verify man71.tgz 100% |**************************| 7602 KB 00:04 Get/Verify game71.tgz 100% |**************************| 2698 KB 00:01 Installing bsd 100% |**************************| 6709 KB 00:01 Installing bsd.rd 100% |**************************| 14954 KB 00:04 Installing base71.tgz 100% |**************************| 131 MB 01:27 Extracting etc.tgz 100% |**************************| 246 KB 00:00 Installing comp71.tgz 100% |**************************| 39635 KB 00:37 Installing man71.tgz 100% |**************************| 7602 KB 00:10 Installing game71.tgz 100% |**************************| 2698 KB 00:01 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. fw_update: added none; updated none; kept 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] ひとまずインストールは完了。“reboot”で再起動する。 syncing disks... done rebooting... !!初回起動 初回の起動の時に ssh のホストキーが作成されるため起動に時間がかかる。 OpenBSD 7.1 (GENERIC) #31: Thu Apr 14 15:08:33 MDT 2022 deraadt@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/GENERIC  :≪中略≫ bootfile: sd0a:/bsd boot device: sd0 root on sd0a (45e94596e747951b.a) swap on sd0b dump on sd0b WARNING: CHECK AND RESET THE DATE! Automatic boot in progress: starting file system checks. /dev/sd0a (45e94596e747951b.a): file system is clean; not checking pf enabled starting network reordering libraries: done. openssl: generating isakmpd/iked RSA keys... done. ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519 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: added none; updated none; kept none starting local daemons: cron. Tue May 3 12:06:22 JST 2022 OpenBSD/armv7 (bbb.intranet) (console) login: !!! インストール後のシステム設定 再起動したら、必要なサーバの設定を行う。 * 端末の設定 [[OpenBSD/Terminal/71-armv7]] * ユーザ設定 [[OpenBSD/Users/71]] * サーバの設定 [[OpenBSD/Server/71-armv7]] * ソフトウェア [[OpenBSD/Software/71-armv7]] !!! システムのアップデート [fw_update(1)|https://man.openbsd.org/fw_update] コマンドで、フリーでないファームウェアパッケージのインストール・アップデートができる。 [syspatch(8)|https://man.openbsd.org/syspatch] コマンドで、未適用のバイナリパッチの適用がされる。 ただ、バイナリパッチは、i386, amd64, arm64 しか提供されていないっぽい。 [[OpenBSD/Patches/71-armv7]] へ !!! アップグレード [sysupgrade(8)|https://man.openbsd.org/sysupgrade] コマンドでアップグレードができる。 このアップグレードは一つ次のリリースへのみがサポートされる。 ==[[OpenBSD/Upgrade]] ( [[7.1 to 7.2|OpenBSD/Upgrade/72-armv7]] ) へ==