OLPC なナニを x86_64 なマシンで云々な控え
.config を grep しても OLPC などという CONFIG は全然無くって不思議に思っていたのですが、arch/x86/Kconfig 確認してみたところ、どうやら x86_32 でないと有効にならない模様、ということが判明。
# x86_64 have no ISA slots, but can have ISA-style DMA. config ISA_DMA_API bool "ISA-style DMA support" if (X86_64 && EXPERT) default y help Enables ISA-style DMA support for devices requiring such controllers. If unsure, say Y. if X86_32 config ISA # 中略 config OLPC
手持ちの端末は x86_64 なんですがどうやってカーネルをクロスコンパイルするのかを忘れてたりして。とりあえず make clean して以下?
$ make CROSS_COMPILE=i686-pc-linux-gnu- ARCH=i386 menuconfig
ということで make clean して上記トライしてみることに。
ヤッてみた
出てきましたね。
$ grep OLPC .config # CONFIG_OLPC is not set
Bus options というあたりなのか。すると staging で One Laptop Per Child Display CONtroller support が出てきました。
で
make 実行したら i686-pc-linux-gnu- な gcc が無いとか言っておられるのかな。/usr/lib/gcc の中見てみたら i686-linux-gnu というナニがありますね。
つうか dpkg -L してみたら以下。
$ dpkg -L gcc /. /usr /usr/share /usr/share/doc /usr/share/doc/cpp /usr/share/man /usr/share/man/man1 /usr/share/man/man1/c89-gcc.1.gz /usr/share/man/man1/c99-gcc.1.gz /usr/bin /usr/bin/c89-gcc /usr/bin/c99-gcc /usr/share/doc/cpp/README.Bugs /usr/share/doc/gcc /usr/share/man/man1/gcc.1.gz /usr/share/man/man1/x86_64-linux-gnu-gcc.1.gz /usr/share/man/man1/gcov.1.gz /usr/bin/gcc /usr/bin/x86_64-linux-gnu-gcc /usr/bin/gcov $
i686-linux-gnu-gcc は何処へ。apt-cache search しても出てこぬ。さんざんググッて以下を発見。
む
-march=i686 という風なオプションを gcc に、というナニを発見。あるいは -m32 とか -m64 なんて方法があるよ、とか言われてる所もあります。
gcc の man 見たら確かにありますね。
つうか gcc のオプションってどうやって渡すんだろ。HOSTCFLAGS ?
HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -m32 #HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
これで make clean して再度 make menuconfig してみます。
$ make ARCH=i386 menuconfig
う。駄目だ。。そして -m32 を外したらコンパイルが通りますな。むむ、ということで KBUILD_CFLAGS 末端に付けてみました。するとパスしたな。こっちだったのか。
で、OLPC なナニがあるのかどうなのか。
出てきた
とりあえず make を kickoff してみます。終わるようであれば追記するかも。
$ make ARCH=i386 -j3
終わた
23:22
とりあえず何とかなっている模様。
$ file vmlinux vmlinux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped $
では、これベースで課題になってるソレのパッチをナニ。