0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NetBSDのarmをインストールしてみた

Last updated at Posted at 2020-03-25

FreeBSDのarm(Marvell Kirkwood armv5t)が異常に遅いので、比較のためにNetBSDでも試してみるためインストールしてみた。

ターゲットは以前DebianをインストールしたARecX6です。

NetBSDはこれまで一度もインストールしてことなくてまったくの素人なので、いろいろネットを検索しました。

NetBSDなマシンは一台もないのでビルド環境を作ることができません。(NetBSDはFreeBSDなどでもビルドできるようです) NetBSDはコンパイル済みのバイナリも用意しているのでそれを使うのが良さそうです。

ftp://ftp2.jp.NetBSD.org/pub/NetBSD/NetBSD-9.0/evbarm-earm/installation/instkernel/

このパスにある

netbsd-SHEEVAPLUG_INSTALL.bin.gz

がインストーラになり、これをダウンロードしてUSBのストレージの先頭部分にFATを作り、解凍してコピーします。あとの方はNetBSDのインストール領域にするのでそのままにしておきます。

このバイナリはカーネルとインストールプログラムのsysinstと関連ファイルが入ったもののようです。

NetBSD_INST.png

u-bootからインストーラーを実行します。

=> usb start;fatload usb 0 8000 netbsd-SHEEVAPLUG_INSTALL.bin;go 8000

これでインストーラーが立ち上がるのですが、以下のエラーメッセージが連続して出力され、表示が乱れます。

sdmmc0: sdmmc_mem_enable failed with error 60

対処方法がわからないので、^Lしながら選んでインストールしています。結構な荒行です。

イメージはネットワーク越しに拾うのでEthernetをつないでおきました。

最初100MくらいのUSBメモリにインストールしたら、容量が足りなくて失敗したので、80GのUSB HDにインストールしました。

インストールはgccが必要なのでX11無しの標準でインストールしました。

2時間弱でインストールできました。

u-bootはNetBSDのfsにあるカーネルは読めないので、別途kernelを用意します。

ftp://ftp2.jp.NetBSD.org/pub/NetBSD/NetBSD-9.0/evbarm-earm/binary/kernel/

のパスにある

netbsd-SHEEVAPLUG.ub.gz

がkernelで、これをFAT部分にコピーしてu-bootから起動します。

NetBSD_BOOT.png

=> usb start;fatload usb 0 4000000 netbsd-SHEEVAPLUG.ub;bootm 4000000

これで起動して、rootfsを聞かれるのでsd0aと入力するとmountできます。

[   6.4999694] root device: sd0a
[   6.4999694] dump device (default sd0b): 
[   6.4999694] file system (default generic): 
[   6.4999694]  dumps on sd0b

initもきかれますが、そのままリターンで大丈夫です。これでloginまで行けます。

[   7.8399791] init path (default /sbin/init): 

インストール後にはrootはパスワードなしでログインできます。

rubyのパッケージのインストールはこうしました。

localhost# pkg_add ftp://ftp2.jp.netbsd.org/pub/pkgsrc/packages/NetBSD/evbarm/9.0/All/ruby26-base-2.6.5nb1.tgz

依存パッケージがなくてインストールできないパッケージもあるようです。

NetBSDのパッケージは/usr/pkgにインストールされるようです。

あとはbison-3.4.2.tgzをインストールして、mruby 2.1をビルドしてみました。

ファイルは以下の方法でダウンロードできます。

% ftp https://github.com/mruby/mruby/archive/2.1.0.tar.gz

mrubyのビルドは30分くらいかかります。結構時間かかります。

FreeBSDではmrubyのfib(32)が295秒かかったのがNetBSDは10秒でした。やっぱりFreeBSDのarmはおかしいです。

コンソールはエラーログが出続けるので、頑張ってアカウント追加して、sshで入って使えるようにしました。

10.99.2を試したら以下のように起動できませんでした。

=> bootm
## Booting kernel from Legacy Image at 04000000 ...
   Image Name:   NetBSD/sheevaplug 10.99.2
   Image Type:   ARM NetBSD Kernel Image (uncompressed)
   Data Size:    8611156 Bytes = 8.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Loading Kernel Image ... Image too large: increase CONFIG_SYS_BOOTM_LEN
Must RESET board to recover
resetting ...

カーネルコンフィグレーションからいらないデバイスを抜いたら、起動できました。

10.99.2はMRBの最初にFATがあるとインストールに失敗するのでFATを後にしました。構成は次のようになります。

# disklabel sd0
# /dev/rsd0:
type: unknown
disk: sd
label: fictious
flags:
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 76319
total sectors: 156301488
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # microseconds
track-to-track seek: 0  # microseconds
drivedata: 0 

4 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a: 154031488        64     4.2BSD      0     0     0  # (Cyl.      0*-  75210*)
 b:   1048576 154031552       swap                     # (Cyl.  75210*-  75722*)
 c: 156301488         0     unused      0     0        # (Cyl.      0 -  76319*)
 d:    610672 155690816      MSDOS                     # (Cyl.  76020*-  76319*)

d:のFATにnetbsd.ubがコピーしてある場合にはu-bootで以下のようにして起動します。

=> usb start
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 4 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found
=> fatload usb 0:2 4000000 netbsd.ub
reading netbsd.ub
3690708 bytes read in 282 ms (12.5 MiB/s)
=> bootm 4000000

NetBSDがこのドライブから起動しているとdをmount_msdosでマウントすることができないようなので、インストーラーが終った後にmount_msdosしてftpなどでファイルをコピーするのがよさそうです。ちょっと面倒です。良い方法が思いつきません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?