実機でのLLVM compileはlinkがメモリを要求するので256MBでは無理ならしい。なので、QEMU上でメモリ増やしてやればよいんじゃないかと。
qemu 自体は brew install qemu で簡単。で、raspberrypi のkernelとboot imageを取ってくればよい。
そのあとは、結局、
http://www.linux-mitterteich.de/fileadmin/datafile/papers/2013/qemu_raspiemu_lug_18_sep_2013.pdf
これがわかりやすいみたい。initの代わりに sh を指定して、いくつかファイルを修正して boot と。
結論から言うと、だめでした。Emergeny shell mode まではいくが、systemd の load module でこけてしまう。
さらに、
raspbian のメモリ256MBは hard coded で変えられない
https://bugs.launchpad.net/ubuntu/+source/rootstock/+bug/570588
らしい。つまり、この方向で LLVM をコンパイルすることはできないらしいです。
なので、残った方法はcross compile だな。
上の方法を試す前に、fuse で boot image を OS X で mount するってのもやりました。brew で fuse-ext2 はないので、自分で作る必要があるのだが、結構、複雑。
http://apple.stackexchange.com/questions/226981/how-do-i-install-fuse-ext2-to-use-with-osxfuse
ここかな。結論的には、
CFLAGS="-idirafter/usr/local/Cellar/e2fsprogs/1.42.13/include -idirafter/usr/local/include/osxfuse/" LDFLAGS="-L/usr/local/lib -L/usr/local/Cellar/e2fsp
rogs/1.42.13/lib" ./configure --sbindir=/usr/local/sbin\n
で config できるみたいです。
fuse-ext2 -o force boot.img /mnt
すれば良いのかと思うとそうはいかなくて、いちど boot.img を DiskUtility で開けます。そうすると、vfat な boot partition が開きます。partitoin 2は、
% diskutil list
/dev/disk2 (disk image):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme +4.4 GB disk2
1: Windows_FAT_32 boot 66.1 MB disk2s1
2: Linux 4.3 GB disk2s2
ここにあるので、
# fuse-ext2 -o force /dev/disk2s2 /mnt
で mount できます。これで書き換え可能になります。SD card でも可能なはず。
ここまで、できたので、これを cross compileの環境に使えるはずだな。
No comments:
Post a Comment