arm なカーネルの DeviceTree を確認すべく (2)
early work にて確認再開。昨晩の現象を再度確認。
当初の起動コマンドラインは以下。
$ sudo qemu-system-arm -M vexpress-a9 -kernel /opt/kernel/zImage \ -append "root=/dev/nfs rw nfsroot=10.0.2.2:/opt/export/armel/root ip=dhcp"
で、コンソールなメセジが以下。一応 dhcp サーバから IP 取れてて _Mounted root_ な出力も確認できてます。
で、ちなみに以下な形で起動しても同様な現象です。$ sudo qemu-system-arm -M vexpress-a9 -kernel /opt/kernel/zImage \ -append "root=/dev/nfs rw nfsroot=10.0.2.2:/opt/export/armel/root \ ip=dhcp init=/sbin/init"
パラメータの渡し方が違うのかなぁ。ちなみにカーネルですが linux-next の、ほぼ最新のソースを
$ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabihf- $ make vexpress_defconfig
で make したもの (のはず) です。
そして
@tetsu_koba さんからフォロー頂いてます。曰く、
nfs rootのmountが成功しているならば、initrdはもう関係ないでしょう。initが見つからないと言われるのならば、init=/sbin/init とかカーネルパラメータで明示的に指定してみる?
とのこと。とりあえず朝メシまで 50min というあたりでググり着手、なのか。
確認ログ
起動パラメータ自体に問題無いのかどうか。反則ワザだけど /bin/sh でヤッてみるか。
$ sudo qemu-system-arm -M vexpress-a9 -kernel /opt/kernel/zImage \ -append "root=/dev/nfs rw nfsroot=10.0.2.2:/opt/export/armel/root \ ip=dhcp init=/bin/"
挙動変わらず。Documentation/init.txt 見れとか出とるな。うーん、kmc さんのこのエントリの .config なナニを確認すべきなのかどうか。
ええと、NFS-Root mini-HOWTO の 5.1 に以下な記述が。
A common problem with /sbin/init is that some distributions (e.g., Red Hat Linux) come with /sbin/init dynamically linked. So you have to provide a correct /lib setup to the client. An easy thing one could try is replacing /sbin/init (for the client) with a statically linked ``Hello World'' program. This way you know if it is something more basic, or ``just'' a problem with dynamic linking.
NFS-Root mini-HOWTO の 5.1 より引用
確認してみたら以下。
$ file /opt/export/armel/root/sbin/init /opt/export/armel/root/sbin/init: ELF 64-bit LSB shared object, x86-64, \ version 1 (SYSV), dynamically linked (uses shared libs), \ for GNU/Linux 2.6.15, BuildID[sha1]=0x477792050d1d0ca988b25a651768b715c385cbb7, stripped
(適宜折り返し)
あーこれ、原因分かりました。バイナリが x86-64 用じゃんorz