世界初 Raspberry Pi 512MB + FreeBSD clang world

2014/10/26 追記:
FreeBSD 11-CURRENTバージョンに移行したのでこちらの作業は終了しました。
続きはこちらからどうぞ。http://shell.peach.ne.jp/aoyama/archives/2931

過去データはhttp://www.peach.ne.jp/archives/rpi/old10/
より参照可能です。
2014/10/26 追記:

ここのところずっと clangやらkernelやらライブラリやらのバグ追求をしていて、
ついに本日、clang で動きました!
クロスビルド環境は 10.0-CURRENT r243937 amd64/clang です。

補足:ESXi上のamd64/clangでクロス用armv6/clangを作って、それを使ってカーネルとワールドを全部作成しています。クロスgccは一切使っていません。(ただし、gasにはまだ依存しています)

追記:
2013/01/23 ↓新しいページはこちらになります。
http://shell.peach.ne.jp/aoyama/archives/2467

追記:
2012/12/28 安定化を行ったtest10カーネル版をアップしました。

追記:
カーネルとワールドを修正した版をアップしました。
ついでにNetBSD からセットアップ処理部分を持って来てくっつけました(謎
というかFreeBSDのARMコードってNetBSD由来なので楽に移植できるみたい。
↓ソースパッチはここからどうぞ、
http://www.peach.ne.jp/archives/rpi/patch/

make.conf for RPI:

# For clang
WITH_CLANG=yes
WITH_CLANG_IS_CC=yes

CC=clang
CXX=clang++
CPP=clang-cpp

FreeBSD armv6/clang/RPI-B-test6:
http://www.peach.ne.jp/archives/rpi/freebsd-pi-clang-20121209.img.gz

FreeBSD armv6z/clang/RPI-B-test8:
http://www.peach.ne.jp/archives/rpi/freebsd-pi-clang-20121213.img.gz

FreeBSD armv6z/clang/RPI-B-test9:
http://www.peach.ne.jp/archives/rpi/freebsd-pi-clang-20121225.img.gz

FreeBSD armv6z/clang/RPI-B-test10:
http://www.peach.ne.jp/archives/rpi/freebsd-pi-clang-20121228.img.gz

SHA256 (freebsd-pi-clang-20121209.img.gz) = 2edc540c457af038fdc9ab26d4694c64aed2c8480d1c619bf7d2d3ecaccfdc05
SHA256 (freebsd-pi-clang-20121213.img.gz) = 8e03791ee24dacda1d67d880b643e02d31c8d5f466e0973c683eae72eb7b31ab
SHA256 (freebsd-pi-clang-20121225.img.gz) = f563627c665c6b547b7d54de35dbed76e6bcfc20033c84cb1c41166a03f70de7
SHA256 (freebsd-pi-clang-20121228.img.gz) = 946c4a6032353cd16189401d882d3d8a8f34c479301efddbbdbecd31e726ed5a

ダウンロードしたらGZIP圧縮されているので解凍して4GB以上のSDカードに展開してください。
内蔵LANが時々死ぬので、追加用にaxe(ASIX AX88x7x/760)ドライバを入れてあります。
これ以降の版はすべて cc = clang になります。

追記:
test10用パッチ src-244663-20121228.patch.gz でたぶん直ったと思う。

root@raspberry-pi:~ # uname -a
FreeBSD raspberry-pi.local 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r243946M: Sun Dec  9 19:30:22 JST 2012     aoyama@fbs.local:/usr/obj-rpi-clang/arm.armv6/usr/src/sys/RPI-B-test6  arm
root@raspberry-pi:~ # cc -v
FreeBSD clang version 3.2 (branches/release_32 168974) 20121130
Target: armv6-unknown-freebsd10.0
Thread model: posix

現在カーネルに問題がある為、事実上まだ使えません。更新しました。
RPI-B-test9カーネルをどうぞ。
これから順次修正していく予定です。
ソース差分はクリーンナップが完了した時点で作成する予定です。

※HDMIにも出力しますがシリアル優先なのでHDMI優先したい場合は、
set console=comconsole の行を /boot/loader.rc から削除してください。

初期設定:
MEM 496MB/GPU 16MB/SWAP 512MB
I/O: マルチコンソール(シリアル優先)
IP アドレス: 192.168.1.240
デフォルトルータ: 192.168.1.1
DNS: 192.168.1.1
sshd: 有効

ユーザ: pi
パスワード: raspberry
パスワード(root): raspberry

参考用 /etc/make.conf

WITHOUT_X11=yes

WITH_CLANG=yes
WITH_CLANG_IS_CC=yes

# Now cc = clang is default
#CC=clang
#CXX=clang++
#CPP=clang-cpp

# For clang
NO_WERROR=
WERROR=

CFLAGS=-O2 -fno-strict-aliasing -pipe -march=armv6z -mtune=arm1176jzf-s -mfloat-abi=soft
COPTFLAGS=-O1 -fno-strict-aliasing -pipe -march=armv6z -mtune=arm1176jzf-s -mfloat-abi=soft

# For gcc
#CC=gcc
#CXX=g++
#CPP=cpp

GPTパーテイションのUSBメモリの作り方とか:

(if you use something, delete/destory it before doing)
# gpart delete -i NN da0
# gpart destroy -F da0

(create new partition and format)
# gpart create -s gpt da0
# gpart add -t freebsd-ufs da0
# gpart show
# newfs -U -j /dev/da0p1

(mount it)
# mount /dev/da0p1 /mnt

「世界初 Raspberry Pi 512MB + FreeBSD clang world」への11件のフィードバック

  1. 素晴らしいです!
    イメージをダウンロードしRaspberry Piで起動させてみました。
    scpでPythonのソースをコピーしてコンパイルしてみました
    WSGIサーバーとして動かしたり、Twitterに自IPをつぶやくBOTを
    動作させています(気が早いですが(^^;)

    きちんと動くようになればいいなと願っています。
    頑張ってください

  2. Can you please post result from:
    time echo “scale=2000;4*a(1)” | bc -l
    For non overclocked device

  3. I’ve noticed that there is not /boot/loader.conf and no /boot/defaults/loader.conf. What is the recommended way to include modules at boot with these files missing? I created both in hope one location or the other would allow me to add ‘if_urtw_load=”YES”‘, but it didn’t work, nor show in ‘kldstat -v’. Seeing as that lsusb recognizes my realtek RTL8187B, what should I try next to get the kernel to load this wireless module?

  4. You must load a kernel before a module in loader.rc.
    I don’t know whether it works or not:

    load kernel
    load if_urtw.ko

    (in your case, add to /boot/loader.rc)

    BTW, wireless module support is my todo list :)

  5. 256MBytes MemoryのRaspberry PIを持っていますが、こちらのimageが使えますか?またはどこかのconfigを変えてkernel作り直しなど必要でしょうか?

  6. うちの256MBメモリ版で動いてますよ
    起動してくれない場合、SDカードか電源周りでNGな事があるけど
    色々試すとClass10のSDで、スマートフォンに付いてくるmicroUSBアダプタが
    安定していますが、年明けくらいのバージョンから、Class4のmicroSD+SDアダプタで
    普通に起動するようになったと思います。

    というか、Wi-Fiのドライバも載ったんですね!(Ralinkだろうか?
    早速試してみないと!

  7. 情報有り難うございます > yasnari-san
    近日中に試してみます(SDは焼いたので、あとは動かすだけですが…)

  8. 訪問&レスありがとうございます。
    上に書かれていますが、メモリサイズの取得が自動判別になったおかげで
    256MBでも512MBでも動作はすると思います。

    SDカードによっては動かない事がありましたが、今は回避策をとっているので、
    少なくとも手持ちのカード(SDもmicroSDも)ではすべて動いています。

    添付のドライバはUSB系LANおよび無線LANドライバのほぼすべてです。
    完全なソースも/usr/srcにいれてあるので、もし足りない場合は自分でもすぐに作れます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>