UNIX的技術向上計画

UNIX系のOS。主にOpenBSDとUbuntuについて、自分のメモも兼ねて書いていきます。基本的に内容及びリンク先については保証致しません。ご了承ください。

BeagleBoneBlack に OpenBSD をインストール

ARM ボードである BeagleBone Black に OpenBSD をインストールする方法です。

今回これを選んだのは比較的簡単に購入可能で、 なおかつ OpenBSD が動作するからです。 比較的有名な RaspberryPi については、 今のところ公式では対応していないようです。

手順についてはほとんどはx86系と同一です。 ただ、ディスクの設定等、いくつか注意すべき点があります。

環境

OS: OpenBSD5.4-snapshot

アーキテクチャ: ARMv7

準備

まず、必要なものは以下です。

  • BeagleBoneBlack 本体
    密林等で比較的簡単に購入できます。(5000円ぐらい)
  • 母艦
    OpenBSD機である必要はありませんが、 dd コマンドと下記のシリアルコンソール接続が可能である必要があります。
  • 3.3V 動作のシリアルコンソール接続手段
    コンソール接続のために、通常の 5V ではなく 3.3V のシリアル接続が必要です。 今回は USB シリアル変換アダプターを使用しました。
  • MicroSDHC カード
    OS等はこのカードにインストールします。 BeagleBoneBlack には基板上にも記録用のフラッシュメモリがありますが、 MicroSDHC カードが接続されている場合は、最終的にそちらでブートを行います。

MicroSDHC カードについて

MicroSDHC カードについて少し問題があったため解説します。

インストールのために「 miniroot-am335x-54.fs 」を、 MicroSD カードに書き込むのですが、 2Gの MicroSD カード(昔使っていたのが余っていたため)を使用すると、 なぜかおかしくなり正常にインストールができませんでした。

なので、最低でも4G以上の MicroSDHC カードを使用する必要があります。 (使用した 2G の MicroSD カードの方が故障している可能性もあります)

下準備

まず OpenBSD の ARMv7 のファイルから「 miniroot-am335x-54.fs 」をダウンロードします。
公式ページにもありますが、 OpenBSD5.4 から他のいくつかの ARM ボードと統合されているため、 「 /pub/OpenBSD/snapshots/armv7/ 」から取得したほうがいいです。

使用する MicroSDHC を母艦に接続し、ddコマンドでマイクロカーネルを書き込みます。

\% sudo dd if=miniroot-am335x-54.fs of=/dev/sdb

インストーラの起動

書き込みを行った MicroSDHC とUSBシリアル変換アダプターを接続してコンソール接続した後、 電源を接続して起動させます。

インストールを行うか聞いてくるので、「I」を入力します。

ターミナルのタイプを選択します。

Terminal type? [vt220] <<ENTER>>

次にホスト名を設定します。

System hostname? (short form, e.g. 'foo') host1 <<ENTER>>

NICの設定を行います。
それぞれの環境に合わせてIPアドレスとネットマスクを設定してください。

IPv6 については後々行うことにして、いまは設定しません。

Available network interfaces are: cpsw0.
Which one do you wish to configure? (or 'done') [cpsw0] <<ENTER>>
IPv4 address for cpsw0? (or 'dhcp' or 'none') [dhcp] 10.0.10.8 <<ENTER>>
Netmask? [255.0.0.0] 255.255.255.0 <<ENTER>>
IPv6 address for cpsw0? (or 'rtsol' or 'none') [none] <<ENTER>>
Available network interfaces are: cpsw0.
Which one do you wish to configure? (or 'done') [done] <<ENTER>>

ネットワークとドメイン名の設定を行います。
こちらもそれぞれの環境に合わせて行ってください。

Default IPv4 route? (IPv4 address, 'dhcp' or 'none') 10.0.10.254 <<ENTER>>
DNS domain name? (e.g. 'bar.com') [my.domain] domein.local <<ENTER>>
DNS nameservers? (IP address list or 'none') [none] 10.0.10.254 <<ENTER>>

rootのパスワードとその他の設定です。

Password for root account? (will not echo) password <<ENTER>>
Password for root account? (again) password <<ENTER>>
Start sshd(8) by default? [yes] <<ENTER>>
Start ntpd(8) by default? [no] <<ENTER>>

ユーザを作成します。
sshログイン時には基本的にこちらを使用します。

Setup a user? (enter a lower-case loginname, or 'no') [no] us01<<ENTER>>
Full user name for us01? [us01] us01<<ENTER>>
Password for us01 account? (will not echo) password <<ENTER>>
Password for us01 account? (again) password <<ENTER>>
Since you set up a user, disable sshd(8) logins to root? [yes] <<ENTER>>

時刻領域の設定を行います。

What timezone are you in? ('?' for list) [Asia/Tokyo] <<ENTER>>

次からが最大の問題であるディスクの設定です。 MicroSDHC カードを使用するので、容量の配分に注意しないと後々不具合が発生する可能性があります。

今回は4Gの MicroSDHC カードを使用しています。

Available disks are: sd0.
Which disk is the root disk? ('?' for details) [sd0] <<ENTER>>
Use DUIDs rather than device names in fstab? [yes] <<ENTER>>

Disk: sd0       geometry: 465/255/63 [7483392 Sectors]  
Offset: 0       Signature: 0xAA55  
            Starting         Ending         LBA Info:  
#: id      C   H   S -      C   H   S [       start:        size ]  
-------------------------------------------------------------------------------  
*0: 0C      0   1   1 -      1 254  63 [          63:       32067 ] 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      0   1   2 -      1 254  63 [          64:       32066 ] OpenBSD     

Use (W)hole disk or (E)dit the MBR? [whole] <<ENTER>>

Creating a FAT partition and an OpenBSD partition for rest of sd0...done.  
/dev/rsd0i: 32668 sectors in 8167 FAT16 clusters (2048 bytes/cluster)  
bps=512 spc=4 res=1 nft=2 rde=512 sec=32768 mid=0xf8 spf=32 spt=63 hds=255 hid=64  
The auto-allocated layout for sd0 is:
#                size           offset  fstype [fsize bsize  cpg]
a:           880.1M            32832  4.2BSD   2048 16384    1 # /  
b:           240.2M          1835264    swap                   
c:          3654.0M                0  unused                   
d:          2149.5M          2327200  4.2BSD   2048 16384    1 # /usr  
e:           368.1M          6729408  4.2BSD   2048 16384    1 # /home  
i:            16.0M               64   MSDOS                   

ここでデフォルトのパーティション設定が表示されますが、修正する必要があるので、 「e」を選択して編集モードに移行します。

Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] e <<ENTER>>

表示内容を見てみると「/」に880Mが割り振られていますが、これは過剰です。 また、 OpenBSD の仕様上「/bsd」がディスクの先頭 504M 以内にないと boot できないため、 将来的に問題が発生する可能性があります。

このため、4Gの容量を以下の様に配分し直します。

/           256MB
swap        256MB
/tmp        128MB
/var        512MB
/usr        1GB
/usr/local  512MB
/home       512MB

「/」が少ないように見えますが、 実際はほとんど「/usr」と「/var」が容量を消費するため、問題はありません。

今のところ(2013年12月) BeagleBoneBlack ではUSBは使用できないようなので、 容量が必要な場合は NFS 等を使用して、他のホストのストレージを使用する必要があります。

まず、ブートローダのある「MSDOS」領域以外を削除します。 (この領域を削除すると失敗するので注意してください。)

> d a
> d b
> d d
> d e

次に必要な領域を追加します。

> a a
offset: [32832]
size: [7450560] 256M
FS type: [4.2BSD]
mount point: [none] /
> a b
offset: [562272]
size: [6921120] 256M
FS type: [swap]
> a d
offset: [1076355]
size: [6407037] 128M
FS type: [4.2BSD]
mount point: [none] /tmp
> a e
offset: [1349440]
size: [6133952] 512M
FS type: [4.2BSD]
mount point: [none] /var
> a f
offset: [2393664]
size: [5089728] 1024M
FS type: [4.2BSD]
mount point: [none] /usr
> a g
offset: [4482112]
size: [3001280] 512M
FS type: [4.2BSD]
mount point: [none] /usr/local
> a h
offset: [5526336]
size: [1957056] 512M
FS type: [4.2BSD]
mount point: [none] /home

最終的には以下になりました。

> p m                                                         
OpenBSD area: 32832-7483392; size: 3638.0M; free: 445.7M
#                size           offset  fstype [fsize bsize  cpg]
  a:           258.5M            32832  4.2BSD   2048 16384    1 # /
  b:           251.0M           562272    swap                   
  c:          3654.0M                0  unused                   
  d:           133.3M          1076384  4.2BSD   2048 16384    1 # /tmp
  e:           509.9M          1349440  4.2BSD   2048 16384    1 # /var
  f:          1019.8M          2393664  4.2BSD   2048 16384    1 # /usr
  g:           509.9M          4482112  4.2BSD   2048 16384    1 # /usr/local
  h:           509.9M          5526336  4.2BSD   2048 16384    1 # /home
  i:            16.0M               64   MSDOS

最後に変更を書き込んで終了させます。

> w
> q

ファイルシステムの作成に少々時間がかかります。

最後にインストールです。

先に述べたように、今のところ BeagleBoneBlack ではUSBは使用できないため、 別途CDドライブを接続してインストールする、といったことはできません。

このため、 BeagleBoneBlack ではネットワーク上にあるサーバから必要なファイルを取得して インストールすると言う手法を使用します。

リモート上のミラーサーバを使用する事もできますが、 今回はローカル内にhttpサーバを設置し、そこに置いたファイルを使用してインストールを行います。

HTTPサーバであればいいので、 OpenBSD である必要はありません。 配布サーバの「/pub/OpenBSD/snapshots/armv7」以下のファイルをとりあえず全て設置すればいいです。 ディレクトリ階層については同じにする必要はありません(インストール時に指定可能)が、 合わせておいた方が楽です。

厳選する場合は「 OMAP 」とついたファイルと、各種 tgz ファイル、 あと必ず「index.txt」を設置してください。 (これがないとファイルを見つけられない?)

Let's install the sets! Location of sets? (disk ftp http nfs or 'done') [http] <<ENTER>>
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] <<ENTER>>
Server? (hostname, list#, 'done' or '?') [ftp.jaist.ac.jp] 10.0.10.2
Server directory? [/pub/OpenBSD/snapshots/armv7] <<ENTER>>

Select sets by entering a set name, a file name pattern or 'all'. De-select
sets by prepending a '-' to the set name, file name pattern or 'all'. Selected
sets are labelled '[X]'.
    [X] bsd.OMAP      [X] etc54.tgz     [X] game54.tgz
    [X] bsd.rd.OMAP   [X] comp54.tgz
    [X] base54.tgz    [X] man54.tgz

Set name(s)? (or 'abort' or 'done') [done] <<ENTER>>
インストール中・・・・・
Location of sets? (disk ftp http nfs or 'done') [done] <<ENTER>>
Time appears wrong. Set to '現在時刻'? [yes] <<ENTER>>
Saving configuration files...done.
Generating initial host.random file...done.
Making all device nodes...done.

これで完了です。再起動すればOSが起動し、 SSH での作業が可能になります。

# reboot

ただ、起動には少し時間がかかります。 気長に待ちましょう。

なお、インストール後のディスク使用量は以下のようになっていました。

# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd0a      253M   29.2M    211M    12%    /
/dev/sd0h      502M   18.0K    477M     0%    /home
/dev/sd0d      131M    4.0K    124M     0%    /tmp
/dev/sd0f     1001M    335M    616M    35%    /usr
/dev/sd0g      502M    212K    476M     0%    /usr/local
/dev/sd0e      502M    3.1M    474M     1%    /var

current にするのも行いましたが失敗しました。 それについては後日まとめます。

以上です。

参考資料・リンク

OpenBSD/armv7

INSTALL.armv7

使用したUSBシリアル変換アダプター

更新履歴

  • 2013/12/20 初版