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

OpenBSD/Install/68-armv7

INDEX

OpenBSDのインストール (6.8 ARMv7 on BBB 版)

FreeBSD の日本語ドキュメント類はあるのですが、OpenBSD はなかなかないので、6.8 (Released Oct 18, 2020.) を BBB にインストールした際のメモ書き。

BBB は eMMC に Linux OS (Debian) がインストールされているが、SDメモリカードをセットし、そこへ OpenBSD をインストールしてサーバとして利用出来るようにしてていく。BBB を選ぶ理由は、以前から OpenBSD が動作・サポートされ、比較的手に入れやすかったため。

OpenBSD は、FreeBSD や NetBSD と並ぶ、BSD系のunix類の1つです。いちばんの特徴としては、セキュリティを重視しているということが挙げられる。

BeagleBone は、Raspberry Pi と同じく ARM を積んだシングルボードコンピュータで、後継機となる BeagleBone Black は機能強化とコストダウンが行われてる。

arm64 プラットフォームが 6.3 から正式サポート対象となり、Raspberry Pi 3 がサポートされるハードウエアに乗るようになった。それ以前から、armv7 はサポートされており、BeagleBone もサポートされるハードウエアとなっていた。

  必要なもの

  • BeagleBone Black 本体
    • https://beagleboard.org/black
    • Rev.C もしくは、eMMC の更新を推奨
      • 新しいものは、SDカードが刺さっていれば、SDカードから起動する
      • 古いものは USER/BOOT ボタンを押さないとSDカードから起動しない
      • BeagleBoard.org Latest Firmware Images の Flasher images をSDカードに入れて起動すると eMMC のアップデートが行われる。
    • 秋月電子通商 M-06867
    • 秋月電子通商 M-09914 (Element14製)
  • シリアルコンソール接続
    • OSをインストールするために 3.3V のシリアルコンソールの接続が必要となる
    • 通信条件は、115200bps、データ長8ビット、ストップビット1、パリティ無し フロー制御無し
  • Micro SDHC カード
    • OSをインストールし利用していくのに必要な容量
  • 母艦PC
    • OpenBSD である必要はないが、SDカードにイメージの書き込みやシリアルコンソール端末が必要
  • miniroot イメージ
    • アーキテクチャ armv7 の BeagleBone 用の miniroot-am335x-<ver>.fs を利用する
      • OpenBSD/<snapshots or version>/armv7/miniroot-am335x-57.fs
  • miniroot イメージを書き込むソフト

  インストール前チェックリスト

インストールを行う前に以下ことを事前に確認・決めておく。

OpenBSD FAQ - Installation Guide: Pre-installation checklist から

  • マシン名
  • インストールそして利用可能なハードウエア
    • 今回は、BeagleBone Black
  • 使用するインストール方法
    • SDカードにイメージを展開、ネットワーク経由でダウンロードしていく
  • ディスクレイアウト
    • 既存データや他のOSとの共存、は考えない。
    • OpenBSD のサブパーティション
    • ディスクの暗号化はしない
  • ネットワーク設定 (DHCPを使用しない場合)
    • ドメイン名 と ネームサーバ(DNS)
    • IPアドレスとサブネットマスク (NICの数分)
    • デフォルトゲートウエイアドレス

  インストール・起動用 SDカードの作成

公式サイトまたは FTP サイトから、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:\>

インストール

miniroot イメージを書き込んだSDカードをセットして、シリアルケーブルをつなぎコンソールを立ち上げて、電源をいれて起動する。

  起動

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 **

 :≪中略≫
>> OpenBSD/armv7 BOOTARM 1.15
boot> 
 :≪中略≫
pmap Copyright (c) 1982, 1986, 1989, 1991, 1993
	The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2020 OpenBSD. All rights reserved.  https://www.OpenBSD.org

OpenBSD 6.8 (RAMDISK) #301: Wed Oct  7 02:32:09 MDT 2020
    deraadt@armv7.openbsd.org:/usr/src/sys/arch/armv7/compile/RAMDISK
 :≪中略≫
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 6.8 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 'dhcp' or 'none') [dhcp] 192.168.0.253

IPv4 のIPアドレスを指定する。固定ならそのアドレス、DHCPで自動設定す場合は dhcp 、設定しない場合は 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”で進める。

  一般ユーザの作成

ここで一般ユーザが作成出来る。作成する場合は、小文字でログイン名をいれる。必要なければ“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 すればよい)ので、禁止(no)でよい。どうしても必要であれば、公開鍵認証でのみ入れるようにすべき。この場合、/root/.ssh/authorized_keys に使用する公開鍵を入れる。

  パーティションの設定

ディスクの選択

Available disks are: sd0 sd1.
Which disk is the root disk? ('?' for details) [sd0] ?
sd0: Kingston, MMC04G, 0000  (3.6G)
sd1: SD/MMC, SU16G, 0080  (14.8G)
Available disks are: sd0 sd1.
Which disk is the root disk? ('?' for details) [sd0] sd1

インストールするディスクを指定する。“?”で詳細が表示される。

パーティションの編集

Disk: sd1	geometry: 1936/255/63 [31116288 Sectors]
Offset: 0	Signature: 0xAA55
            Starting         Ending         LBA Info:
 #: id      C   H   S -      C   H   S [       start:        size ]
-------------------------------------------------------------------------------
*0: 0C      2  10   9 -      2  75   9 [       32768:        4096 ] 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  75  10 -      4  52  48 [       36864:       30720 ] 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 sd1...done.
/dev/rsd1i: 32668 sectors in 8167 FAT16 clusters (2048 bytes/cluster)
bps=512 spc=4 res=1 nft=2 rde=512 mid=0xf8 spf=32 spt=63 hds=255 hid=32768 bsec=32768
The auto-allocated layout for sd1 is:
#                size           offset  fstype [fsize bsize   cpg]
  a:           369.0M            65536  4.2BSD   2048 16384     1 # /
  b:           517.9M           821184    swap                    
  c:         15193.5M                0  unused                    
  d:           470.3M          1881952  4.2BSD   2048 16384     1 # /tmp
  e:           649.3M          2845216  4.2BSD   2048 16384     1 # /var
  f:          1937.9M          4175040  4.2BSD   2048 16384     1 # /usr
  g:           515.4M          8143936  4.2BSD   2048 16384     1 # /usr/X11R6
  h:          1680.9M          9199424  4.2BSD   2048 16384     1 # /usr/local
  i:            16.0M            32768   MSDOS                    
  j:          1387.6M         12641952  4.2BSD   2048 16384     1 # /usr/src
  k:          5295.2M         15483712  4.2BSD   2048 16384     1 # /usr/obj
  l:          2337.9M         26328224  4.2BSD   2048 16384     1 # /home
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] 

自動的に割り当てられた内容が表示される。表示された内容でよければ“a”、これをベースに編集する場合は“e”、一から設定する場合は“c”を入力する。

ちなみに、i386,amd64 などで、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)
sd1> p M
OpenBSD area: 65536-31116288; size: 15161.5M; free: 15161.5M
#                size           offset  fstype [fsize bsize   cpg]
  c:         15193.5M                0  unused                    
  i:            16.0M            32768   MSDOS                    
sd1> a a
offset: [65536] 
size: [31050752] 14170M
FS type: [4.2BSD] 
mount point: [none] /
sd1*> a b
offset: [29093696] 
size: [2022592] 
FS type: [swap] 
sd1*> p M
OpenBSD area: 65536-31116288; size: 15161.5M; free: 0.0M
#                size           offset  fstype [fsize bsize   cpg]
  a:         14173.9M            65536  4.2BSD   2048 16384     1 # /
  b:           987.6M         29093696    swap                    
  c:         15193.5M                0  unused                    
  i:            16.0M            32768   MSDOS                    
sd1*> q
Write new label?: [y] 

“?”でコマンドヘルプが見られる。“a ≪ラベル≫”で追加、“d ≪ラベル≫”で削除、“p M”でMiB単位で表示、“q”で保存し終了する。

ファイルシステムの作成

/dev/rsd1a: 14173.9MB in 29028160 sectors of 512 bytes
70 cylinder groups of 202.50MB, 12960 blocks, 25920 inodes each

ディスクラベルの設定が終わると、ファイルシステムの作成が行われる。フォーマットが終わるまでしばらく待つ。

他のディスクの初期化

Available disks are: sd0.
Which disk do you wish to initialize? (or 'done') [done] 

他に初期化するディスクがあるか聞かれるので、なければ“done”で進める。

/dev/sd1a (4cd804583c526979.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 ftp.openbsd.org, but that is OK)
HTTP Server? (hostname or 'done') ftp.jaist.ac.jp

インストールセットを取得するサーバを指定する。今回は“ftp.jaist.ac.jp”を指定する。

サーバのディレクトリの指定

Server directory? [pub/OpenBSD/6.8/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] comp68.tgz    [X] xbase68.tgz   [X] xserv68.tgz
    [X] bsd.rd        [X] man68.tgz     [X] xshare68.tgz
    [X] base68.tgz    [X] game68.tgz    [X] xfont68.tgz
Set name(s)? (or 'abort' or 'done') [done] -x*
    [X] bsd           [X] comp68.tgz    [ ] xbase68.tgz   [ ] xserv68.tgz
    [X] bsd.rd        [X] man68.tgz     [ ] xshare68.tgz
    [X] base68.tgz    [X] game68.tgz    [ ] xfont68.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% |**************************|  6524 KB    00:05    
Get/Verify bsd.rd       100% |**************************| 12613 KB    00:09    
Get/Verify base68.tgz   100% |**************************|   123 MB    01:09    
Get/Verify comp68.tgz   100% |**************************| 54806 KB    00:29    
Get/Verify man68.tgz    100% |**************************|  7484 KB    00:04    
Get/Verify game68.tgz   100% |**************************|  2688 KB    00:01    
Installing bsd          100% |**************************|  6524 KB    00:02    
Installing bsd.rd       100% |**************************| 12613 KB    00:05    
Installing base68.tgz   100% |**************************|   123 MB    02:52    
Extracting etc.tgz      100% |**************************|   260 KB    00:00    
Installing comp68.tgz   100% |**************************| 54806 KB    01:43    
Installing man68.tgz    100% |**************************|  7484 KB    00:25    
Installing game68.tgz   100% |**************************|  2688 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.
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] 
syncing disks... done
rebooting...

ひとまずインストールは完了。“reboot”で再起動して、必要なサーバの設定を行う。初回の起動の時に ssh のホストキーが作成されるため起動に時間がかかる。

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

OpenBSD/TerminalOpenBSD/Users

システムのアップデート

 ファームウェア更新

fw_update(1) コマンドで、フリーでないファームウェアパッケージをインストールする。6.1 から提供されたっぽい

bbb# fw_update -v -n
Path to firmware: http://firmware.openbsd.org/firmware/6.8/
No devices found which need firmware files to be downloaded.

-n で、ドライラン(予行練習)、-i で、インストール済みもしくは必要となるパッケージの表示、-a で、すべてのパッケージのインストールもしくはアップデート。-v は、詳細表示。

 バイナリパッチ

syspatch(8) コマンドで、未適用のバイナリパッチを適用する。6.1 から提供されたっぽい

bbb# cat /etc/installurl
https://ftp.jaist.ac.jp/pub/OpenBSD
bbb# syspatch -l
bbb# syspatch -c
ftp: Error retrieving file: 404 Not Found
bbb# syspatch
ftp: Error retrieving file: 404 Not Found
bbb#

適用すべきパッチがない場合、404 Not Found となるっぽい(6.6, released Oct 17, 2019. で 2019-10-22 時点で、上記のようになる)。というか、i386, amd64, arm64 しか提供されていないっぽい。

ダウンロード元

/etc/installurl にダウンロード元となるサーバのURLを記載する。インストール時に HTTP で行っていれば、そのときのサーバが記載されてる。

パッチの確認

コマンドラインオプションで、-l を指定すると適用済みの、-c を指定すると適用可能なパッチ一覧が表示される。

アップグレード

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

OpenBSD/Upgrade ( 6.8 to 6.9, 6.9 to 7.0 )

最終更新時間:2022年04月17日 10時01分00秒 指摘や意見などあればSandBoxのBBSへ。