NetBSD on Raspberry Pi 2

Raspberry Pi 2 が届きました。

購入の決め手は Raspberry Pi 2 用の Windows 10 が無償提供されるってところですが、明確な提供時期が不明なので、とりあえず NetBSD を入れて遊んでみることにしました。

先代との互換性がって話を見かけてたのでさっくり NetBSD も動くだろうとタカをくくっていたのですが SoC が ARMv6 から ARMv7 になっている関係か、何度試しても起動しない…。というのも先代は SD カードの DOS パーティションにある kernel.img を読み込んでブートしてたのですが、 RPI2 は kernel7.img を読み込んでブートする仕組みみたいなので、それがない以上動くわけはないんですな(笑

で、3 月上旬に RPI2 をサポートするコードが入ったようで2015/3/13 以降のイメージであれば kernel7.img も入ってるので問題なく動くようになりました。

インストールそのものは @ebijun さんの紹介ページ読んだままに実行すれば問題なく終わるので、引っかかったところだけメモ。

  • ディスクイメージ作成
    OS X でやっているのですが、

    goro@serena:~$ diskutil list                                  
    /dev/disk0
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *1.0 TB     disk0
       1:                        EFI EFI                     209.7 MB   disk0s1
       2:          Apple_CoreStorage                         999.7 GB   disk0s2
       3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
    /dev/disk1
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:                  Apple_HFS Macintosh HD           *999.3 GB   disk1
                                     Logical Volume on disk0s2
                                     48465300-0000-11AA-AA11-00306543ECAC
                                     Unencrypted
    /dev/disk2
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:     FDisk_partition_scheme                        *15.8 GB    disk2
       1:                 DOS_FAT_16 NO NAME                 58.7 MB    disk2s1

    とかやると刺さってる SD が /dev/disk2 だってことがわかるので

    goro@serena:~$ diskutil umount /Volumes/NO\ NAME

    てな感じでマウント解除して

    goro@serena:~$ sudo dd if=./2015-03-13-netbsd-raspi-earmv6hf.img of=/dev/rdisk2 bs=1m

    とかやるとめでたく SD カードにイメージが焼かれます。この時進捗状況を確認しようと kill -USR1 とかやるとサクっと dd が死ぬので気をつけましょうw

  • 無線 LAN
    RPI2 用に USB の無線 LAN ドングル? を買っておいたのですが、NetBSD で無線 LAN を弄ってたのは NetBSD/hpcmips の頃だったので正に隔世の感がありました(笑 。 刺したところ urtwn0 と認識したので試行錯誤して以下のように落ち着きました。

    • /etc/rc.conf
      critical_filesystems_local="/var /usr"
      dhcpcd_flags="-q -b"
      wpa_supplicant=YES
      wpa_supplicant_flags="-i urtwn0 -c /etc/wpa_supplicant.conf"
    • /etc/ifconfig.urtwn0
      up
      dhcp
    • /etc/wpa_supplicant.conf
      ap_scan=1
      ctrl_interface=/var/run/wpa_supplicant
      ctrl_interface_group=0
      
      network={
              scan_ssid=1
              proto=RSN WPA
              key_mgmt=WPA-PSK
              pairwise=CCMP TKIP
              group=CCMP TKIP
              ssid="your ssid"
              #psk="your ssid key"
              psk=b831168171cb1e94059064d7ea39d06789ff70fc1f2f262dd51d4138c116b94b
      }
      

    ちなみに wpa_supplicant.conf の書き方は how to use wpa supplicant に大体書いてあるはずですが、 psk は

    wpa_passphrase 'your ssid' 'your ssid key'
    network={
        ssid="your ssid"
        #psk="your ssid key"
        psk=b831168171cb1e94059064d7ea39d06789ff70fc1f2f262dd51d4138c116b94b
    }
    

    とか出力されるので、これを wpa_supplicant.conf にコピペです。ちなみに ssid や ssid key にスペースが入ってない場合はクォート不要です。

  • キーボード配列
    普段から英語配列でしか使ってないので気にしたことなかったんですが、 RPI2 の配布イメージは日本語キーボード前提だったので、途方にくれてしまいました(笑 ということで

    • /etc/wscons.conf
      #encoding jp

    とコメントアウトすると解決です

dmesg.boot は以下のように流れました。さて、これを何に使おうか…(ぇー

Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 7.99.6 (RPI2.201503081520Z) #0: Sun Mar  8 17:11:19 UTC 2015
    builds@b44.netbsd.org:/home/builds/ab/HEAD/evbarm-earmv7hf/201503081520Z-obj/home/source/ab/HEAD/src/sys/arch/evbarm/compile/RPI2
total memory = 944 MB
avail memory = 929 MB
sysctl_createv: sysctl_create(machine_arch) returned 17
timecounter: Timecounters tick every 10.000 msec
mainbus0 (root)
cpu0 at mainbus0 core 0: 600 MHz Cortex-A7 r0p5 (Cortex V7A core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: isar: [0]=0x2101110 [1]=0x13112111 [2]=0x21232041 [3]=0x11112131, [4]=0x10011142, [5]=0
cpu0: mmfr: [0]=0x10101105 [1]=0x40000000 [2]=0x1240000 [3]=0x2102211
cpu0: pfr: [0]=0x1131 [1]=0x11011
cpu0: 32KB/32B 2-way L1 VIPT Instruction cache
cpu0: 32KB/64B 4-way write-back-locking-C L1 PIPT Data cache
cpu0: 512KB/64B 8-way write-through L2 PIPT Unified cache
vfp0 at cpu0: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
vfp0: mvfr: [0]=0x10110222 [1]=0x11111111
cpu1 at mainbus0 core 1: disabled (unresponsive)
cpu2 at mainbus0 core 2: disabled (unresponsive)
cpu3 at mainbus0 core 3: disabled (unresponsive)
obio0 at mainbus0
bcmicu0 at obio0
armgtmr0 at obio0: ARMv7 Generic 64-bit Timer (19200 kHz)
armgtmr0: interrupting on irq 99
timecounter: Timecounter "armgtmr0" frequency 19200000 Hz quality 500
bcmmbox0 at obio0 intr 65: VC mailbox
vcmbox0 at bcmmbox0
vchiq0 at obio0 intr 66: BCM2835 VCHIQ
bcmpm0 at obio0: Power management, Reset and Watchdog controller
bcmdmac0 at obio0: DMA0 DMA2 DMA4 DMA5 DMA8 DMA9 DMA10
bcmrng0 at obio0: RNG
plcom0 at obio0 intr 57
plcom0: txfifo disabled
plcom0: console
genfb0 at obio0: switching to framebuffer console
genfb0: framebuffer at 0x3bc56000, size 2400x1200, depth 32, stride 15360
wsdisplay0 at genfb0 kbdmux 1: console (default, vt100 emulation)
wsmux1: connecting to wsdisplay0
wsdisplay0: screen 1-3 added (default, vt100 emulation)
sdhc0 at obio0 intr 62: SDHC controller
sdhc0: interrupting on intr 62
dwctwo0 at obio0 intr 9: USB controller
bcmspi0 at obio0 intr 54: SPI
spi0 at bcmspi0: SPI bus
bsciic0 at obio0 intr 53: BSC0
iic0 at bsciic0: I2C bus
bsciic1 at obio0 intr 53: BSC1
iic1 at bsciic1: I2C bus
bcmgpio0 at obio0: GPIO [0...31]
gpio0 at bcmgpio0: 32 pins
bcmgpio1 at obio0: GPIO [32...53]
gpio1 at bcmgpio1: 22 pins
usb0 at dwctwo0: USB revision 2.0
timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
sdhc0: SD Host Specification 3.0, rev.153
sdhc0: using DMA transfer
sdmmc0 at sdhc0 slot 0
uhub0 at usb0: vendor 0000 DWC2 root hub, class 9/0, rev 2.00/1.00, addr 1
uhub0: 1 port with 1 removable, self powered
ld0 at sdmmc0: 
ld0: 15079 MB, 7659 cyl, 64 head, 63 sec, 512 bytes/sect x 30881792 sectors
ld0: 4-bit width, bus clock 50.000 MHz
uhub1 at uhub0 port 1: vendor 0424 product 9514, class 9/0, rev 2.00/2.00, addr 2
uhub1: multiple transaction translators
uhub1: 5 ports with 4 removable, self powered
usmsc0 at uhub1 port 1
usmsc0: vendor 0424 product ec00, rev 2.00/2.00, addr 3
usmsc0: Ethernet address b8:27:eb:dc:4e:af
ukphy0 at usmsc0 phy 1: OUI 0x00800f, model 0x000c, rev. 3
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
uhidev0 at uhub1 port 3 configuration 1 interface 0
uhidev0: vendor 05af USB Keyboard, rev 2.00/1.40, addr 4, iclass 3/1
ukbd0 at uhidev0: 8 modifier keys, 6 key codes
wskbd0 at ukbd0: console keyboard, using wsdisplay0
uhidev1 at uhub1 port 3 configuration 1 interface 1
uhidev1: vendor 05af USB Keyboard, rev 2.00/1.40, addr 4, iclass 3/0
uhidev1: 2 report ids
uhid0 at uhidev1 reportid 1: input=1, output=0, feature=0
uhid1 at uhidev1 reportid 2: input=4, output=0, feature=1
urtwn0 at uhub1 port 4
urtwn0: Realtek 802.11n WLAN Adapter, rev 2.00/2.00, addr 5
urtwn0: MAC/BB RTL8188CUS, RF 6052 1T1R, address 80:1f:02:6e:dc:64
urtwn0: 1 rx pipe, 2 tx pipes
urtwn0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
urtwn0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
uhidev2 at uhub1 port 5 configuration 1 interface 0
uhidev2: Logitech USB Receiver, rev 2.00/22.01, addr 6, iclass 3/1
ums0 at uhidev2: 16 buttons, W and Z dirs
wsmouse0 at ums0 mux 0
uhidev3 at uhub1 port 5 configuration 1 interface 1
uhidev3: Logitech USB Receiver, rev 2.00/22.01, addr 6, iclass 3/0
uhidev3: 17 report ids
uhid2 at uhidev3 reportid 3: input=4, output=0, feature=0
uhid3 at uhidev3 reportid 16: input=6, output=6, feature=0
uhid4 at uhidev3 reportid 17: input=19, output=19, feature=0
boot device: ld0
root on ld0a dumps on ld0b
mountroot: trying nfs...
mountroot: trying msdos...
mountroot: trying ext2fs...
mountroot: trying ffs...
root file system type: ffs
kern.module.path=/stand/evbarm/7.99.6/modules
vchiq: local ver 6 (min 3), remote ver 6.
vcaudio0 at vchiq0: auds
vchiq_get_state: g_state.remote->initialised != 1 (0)
vchiq: vchiq_initialise: videocore initialized after 1 retries

WARNING: no TOD clock present
WARNING: using filesystem time
WARNING: CHECK AND RESET THE DATE!
audio0 at vcaudio0: half duplex, playback, capture, independent
init: copying out path `/sbin/init' 11
WARNING: module error: vfs load failed for `com', error 2
WARNING: module error: vfs load failed for `com', error 2
usmsc0: link state DOWN (was UNKNOWN)
wsdisplay0: screen 4 added (default, vt100 emulation)

1 thought on “NetBSD on Raspberry Pi 2

コメントを残す