!!! OpenBSDのインストール (6.8 ARMv7 on BBB 版) {{category OpenBSD,nolink}}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 本体 ** 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製)== * シリアルコンソール接続 ** OSをインストールするために 3.3V のシリアルコンソールの接続が必要となる *** FTDI社の USB-TTLシリアル変換ケーブル(TTL-232R-3V3) が、ピン配置と一致するので便利 *** 秋月電子通商 [M-05840|http://akizukidenshi.com/catalog/g/gM-05840/] *** ドライバは、FTDI ( http://www.ftdichip.com/ ) から [Virtual COM Port (VCP) Drivers|https://www.ftdichip.com/Drivers/VCP.htm] をダウンロード・インストールする ** 通信条件は、115200bps、データ長8ビット、ストップビット1、パリティ無し フロー制御無し * Micro SDHC カード ** OSをインストールし利用していくのに必要な容量 * 母艦PC ** OpenBSD である必要はないが、SDカードにイメージの書き込みやシリアルコンソール端末が必要 * miniroot イメージ ** アーキテクチャ armv7 の BeagleBone 用の miniroot-am335x-.fs を利用する *** OpenBSD//armv7/miniroot-am335x-57.fs * 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 ) !! インストール前チェックリスト インストールを行う前に以下ことを事前に確認・決めておく。 OpenBSD FAQ - Installation Guide: [Pre-installation checklist|http://www.openbsd.org/faq/faq4.html#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 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/Terminal]] 、 [[OpenBSD/Users]] へ !!! システムのアップデート !!ファームウェア更新 [fw_update(1)|https://man.openbsd.org/fw_update] コマンドで、フリーでないファームウェアパッケージをインストールする。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)|https://man.openbsd.org/syspatch] コマンドで、未適用のバイナリパッチを適用する。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)|https://man.openbsd.org/sysupgrade] コマンドでアップグレードができる。 このアップグレードは一つ次のリリースへのみがサポートされる。 [[OpenBSD/Upgrade]] ( [[6.8 to 6.9|OpenBSD/Upgrade/69-armv7]], [[6.9 to 7.0|OpenBSD/Upgrade/70-armv7]] )