FreeBSD/arm Raspberry Pi 2 ModelB で動作確認 たかのゆ~じ [email protected] http://running-dog.net/ 発表者紹介 • running-dog.net の著者 • • FreeBSD-2.0.0(PC98)からのFreeBSD利用者 基本的にはユーザランドの人(Xバリバリだぜぃ;-) • 最近のvesaはなかなかやるよ。 • JKUG(Japan KDE Usres GroupのFreeBSD担当 • もしくはただ単に宴会参加者;-) • • [email protected]ではなく、どちらかというとkde.orgとかopendesktop.orgに加担 • 一時期はKDEの日本語化を押してた。 • 最近は翻訳系が楽しい カーネルだけでなく、ユーザランドも楽しいですよ;-)。 そんな人が本日発表するのは? • FreeBSD/arm です。 • 持っている人? • Portsコンパイルしてね・・。 インストール • Raspberry Pi 2 ModelBを購入;-)。 • isoイメージをダウンロード。 • http://ftp.iij.ad.jp/pub/FreeBSD/releases/arm/armv6/ISO-IMAGES/10.2/ • FreeBSD-10.2-RC1-arm-armv6-RPI-B.img.xz $ unxz FreeBSD-10.2-RC1-arm-armv6-RPI-B.img.xz $ ls –l FreeBSD-10.2-RC1-arm-armv6-RPI-B.img -rw-r--r-- 1 root ftp 503316480 Jul 24 23:21 FreeBSD-10.2-RC1-arm-armv6-RPI-B.img • もとは81MByteのimg.xzですが、500MByte のイメージができました。 インストール (2) • これを MicroSD カードに焼き付けます。 # dd if=FreeBSD-10.2-RC1-arm-armv6-RPI-B.img of=/dev/da0 bs=10240 • 準備完了。 • MicroSDをRaspberry Pi 2 ModelBにセットしHDMIかシリアルコンソールを接 続して電源投入。 • MicroSDのサイズはどれくらいでも良いです。 • • 2/4/8GByte程度あればぐー。 一発目の起動でgtppartが動き出しメディアサイズにパーティションを調 整してくれます。(すげー。) インストール (3) • 僕の環境。 Filesystem 1024-blocks /dev/mmcsd0s2a 7466396 devfs 1 /dev/msdosfs/MSDOSBOOT 51128 /dev/md0 29340 /dev/md1 14492 /dev/md2 11420 • Used 960724 1 7320 24 280 8 Avail Capacity 5908364 14% 0 100% 43808 14% 26972 0% 13056 2% 10500 0% Mounted on / /dev /boot/msdos /tmp /var/log /var/tmp /tmpと/var/log、/var/tmpはmdを利用しているので再起動後は毎回消えてなく なる。 使ってみる • 遅いけど、フツーに動くFreeBSD。 • しかし、portsが無いと「わーい。起動したー。いじょ。」な状態。 • portsツリーは他のFreeBSDからNFSする。 • CPUの動作クロックは600MHz (実際は900MHzで動作可能なCPU) • Linux方面では1GHzで動作するパッチがあるらしい。 dev.cpu.0.temperature: 49.7C dev.cpu.0.freq_levels: 900/-1 600/-1 dev.cpu.0.freq: 600 使ってみる (2) • NICは40Mbpsまでしか出ないUSB接続のNIC。 • ハードウェア的な制限がかかっている smsc0: <vendor 0x0424 product 0xec00, rev 2.00/2.00, addr 3> on usbus0 smsc0: chip 0xec00, rev. 0002 miibus0: <MII bus> on smsc0 ukphy0: <Generic IEEE 802.3u media interface> PHY 1 on miibus0 ukphy0: none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto ue0: <USB Ethernet> on smsc0 ue0: Ethernet address: b8:27:eb:46:24:b6 使ってみる (3) • OTG 対応のUSB HUBのようだ。電源供給に利用? • USBに色々刺すとFreeBSDの実装で動作するモノがある。 • rum0 / run0 / urtwn0 / ubt0 / cuse4bsd (UVCカメラ) • PCI BUSは無いようだ。 # usbconfig list ugen0.1: <OTG Root HUB DWCOTG> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (0mA) ugen0.2: <product 0x9514 vendor 0x0424> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE (2mA) ugen0.3: <product 0xec00 vendor 0x0424> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (2mA) ugen0.4: <802.11 n WLAN Ralink> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (450mA) ugen0.5: <CSR8510 A10 vendor 0x0a12> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA) # pciconf -lv pciconf: /dev/pci: No such file or directory 何に使う? • ウェブカメラは一応使える。 • cuse4bsd-kmod • webcamd • v4l_compat • mjpg-streamer • UVC (USB Video Class) は何とか動くよ。 • svgalibはFreeBSD/armではコンパイルできないのが痛い・・。 • pwcview は必要なライブラリが揃わないので動作しないのよ・・。 何に使う? (2) • マルチメディア系はどんな感じか? • mplayer-1.1 はコンパイル通したけど、再生ができない (video 部分は省き) • • • • • • • ffmpeg faac x265 sdl xvid lame mp4v2 • 結局動いたのはmpg123のみ・・。orz • 音楽再生はLinuxのvolmioのほうが遥かに良い感じ。 その他のOS • Windows10 IoTが動作するですよ。 • デベロッパ登録する。 • imgをダウンロードする。 • • IOT Core Rpi.ISOが必要 開発環境(MicroSD書き込みツール含む)をWindows8.1にインストール。 • ISOイメージの中のWindows_10_IoT_Core_RPi2.msiを実行 • MicroSDに書き込みRaspberry Pi 2にセット。 • Raspberry Pi 2にHDMIとUSBマウスを接続する。 • 電源オン。うりゃーっ!! • 画面が現れる。やったぁ。 • マウスを2,3箇所クリックしてしゅーりょー。orz • 開発しましょう;-)。 その他のOS (2) • • Volmioってなんか良いらしい。 • ubuntuベースの音楽配信・再生に特化したOS。 • NFSマウントした音楽データやUSBメモリの音楽データを再生できる。 • defaultでBluetoothに対応してないのでA2DP経由のスピーカが利用できないのが 痛い。 他にも色々あるようです。(僕はまだ使ったことがないf(^^;;) • Light MPD • runeaudio portsのコンパイル • NFS mountした/usr/ports配下でmakeを走らせひたすら待つ。 • NICが40Mbpsしか出ないのでソースの展開が遅い。 • 母艦(nfsd)側で make patch すると良い • make installと叩いたら扇風機で風を送りつつひたすら待つ・・。 • CPUが四つとはいえずいぶんと遅い・・。 orz • Atom270 (FreeBSD/i386)よりはるかに遅い・・。orz portsのコンパイル (2) • portsのmake installが正しく動作しないモノもあるよ・・。 • 特にperlモジュールのstage環境が悲惨。ほぼ100%の割合。 • make installしてもstageの中は空っぽなので実際のmake installに失敗する。 • pkg-plistを確認しつつwork/source-code/の中からコンパイルが完了したものを stage/の中に手動で移してからmake install。 • • net-mgmt/mrtg/ イヤになる・・。 orz portsのクロスコンパイル環境構築 • やりたいこと。 • FreeBSD/amd64上でFreeBSD/armのコンパイルを行う • 色々試してみた。 • nkfやslなどちっこいのはコンパイルが通り、pkgもでけた。ふぅ。 • しかし、ヘビーなやつはほぼ不可能。 • Xなんて動かそうと思わない・・。 • jail一発でできる環境とか知りたいところ。 portsのクロスコンパイル環境構築 (2) mkdir /home/armv6/armv6-root mkdir /home/armv6/obj cp -pr /usr/src /home/armv6 cd /home/armv6/src make -DNO_CLEAN TARGET=arm TARGET_ARCH=armv6 MAKEOBJDIRPREFIX=/home/armv6/obj buildworld make -DNO_CLEAN TARGET=arm TARGET_ARCH=armv6 MAKEOBJDIRPREFIX=/home/armv6/obj DESTDIR=/home/armv6/armv6root installworld make -j6 -DNO_CLEAN TARGET=arm TARGET_ARCH=armv6 kernel-toolchain toolchain setenv setenv setenv setenv setenv setenv setenv setenv setenv setenv setenv setenv setenv CC /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/cc CPP /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/cpp CXX /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/c++ AS /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/as NM /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/nm RANLIB /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/gnu-ranlib LD /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/ld OBJCOPY /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/objcopy SIZE /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/size AR /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/gnu-ar STRIPBIN /home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/bin/strip MACHINE arm MACHINE_ARCH armv6 portsのクロスコンパイル環境構築 (3) make TARGET=arm TARGET_ARCH=armv6 buildenv make xdev XDEV=arm XDEV_ARCH=armv6 setenv setenv setenv setenv setenv TARGET arm TARGET_ARCH armv6 MAKEOBJDIRPREFIX $HOME/obj DESTDIR /home/armv6/armv6-root BUILDPATH /home/armv6/obj setenv XDEV arm setenv XDEV_ARCH armv6 make -DNO_CLEAN PREFIX=/home/arm/portinstall WRKDIRPREFIX=/home/arm/portwork CONFIGURE_ARGS+="--host=arm -prefix=/home/arm/portinstall" LDFLAGS+="rpath=/home/armv6/obj/arm.armv6/home/armv6/src/tmp/lib:/home/armv6/obj/arm.armv6/home/armv6/src/tmp/usr/li b:/home/arm/portinstall/lib:/home/armv6/obj/arm.armv6/home/armv6/src/lib L/home/armv6/obj/arm.armv6/home/armv6/src/tmp/lib -L/home/armv6/obj/arm.armv6/home/armv6/src /tmp/usr/lib -L/home/arm/portinstall/lib -L/home/armv6/obj/arm.armv6/home/armv6/src/lib" NO_PKG_REGISTER=1 clean install portsのクロスコンパイル環境構築 (4) • 結局本体で地道にmake installもしくはpkgサイトから拾ってくる。 • 僕の見つけたpkgサイト • • http://www.peach.ne.jp/archives/oc1/ports/packages/All/ • http://freebsd-current.os-hackers.jp/pub/FreeBSD/ports/arm/armv6/packages-11-current/All/ 僕が用意したpkgサイト • http://distfiles.icmpv6.org/distfiles/packages/All.armv6/ と、いうことでまとめ • FreeBSD/arm は「わーい。動いたー。」で終わる感が強い・・。 • • NetBSD なみ? (失礼;-) FreeBSD/arm CURRENTは生物なので日々進化している。 • 僕が一番最初にインストールした FreeBSD-11.0-CURRENT-arm-armv6-RPI2-20150618-r284544.img は一発目の起動時に/etc/fstabを編集する必要があったが今はそれもなくなっている • ddすれば即起動 • pkg install hogeしても無いものが多い。あたたたた。 • とりあえずportsのクロスコンパイル環境が無いとお話にならない。 • Linux方面だと色々利用価値はありそう。 • 今日はとりあえずここまで・・。 Demo 君は Raspberry Pi 2 ModelB を本当に欲しいと思うか? 完。 ご清聴ありがとうございました。
© Copyright 2024 ExpyDoc