haruka0606
2014年2月20日 11時24分
いつもお世話になっております。中井と申します。
Atmark-distでデバイスドライバ追加の動作確認を行っているのですが、
下記ページにある「サンプルプログラム」のビルドでエラーになります。
●atmark-dist開発者ガイド->第11章 新規デバイスドライバの追加方法
http://manual.atmark-techno.com/dist/atmark-dist_developers_guide_ja-1…
■事前準備
1.atmark-distの環境を構築
2.プログラムコードとメイクファイルは公開されているものを流用
(正しMakefileは指示に従って一部変更)
■実施手順
1. 端末から 'make modules' を実行
⇒下記のエラーが発生するが .o/.ko/.mod.o の各ファイルは生成されている。
make[2]: *** [silentoldconfig] エラー 1
make[1]: *** [silentoldconfig] エラー 2
2. 端末から 'make romfs' を実行
⇒下記のエラーが発生し、makeが失敗する。
make[2]: *** [silentoldconfig] エラー 1
make[1]: *** [silentoldconfig] エラー 2
make: ../atmark-dist-20140131/user/busybox/examples/depmod.pl: コマンドが見つかりませんでした
atmark-distのフォルダ構成を確認したところ、examplesフォルダ自体が
存在していませんでした。
このdepmodというファイルはどこから入手すればよいのでしょうか。
ファイル名をキーワードに検索してみましたが、これといった情報が
見当たりませんでした。
尚、silentoldconfigのエラーは全てのオプション(cleanとか)でも発生する
ため、別の要因と推測されます。
以上、よろしくお願いいたします。
コメント
y.nakamura
中村です。
> depmod.plのありかは見つかった(busybox/busybox-1.20.2)のですが、Makefileで
> そのフォルダを指定すると
....
> 使用している環境は、下記になります。
> ・仮想ファイル : atde5-amd64-20140131
> ・ディストリビューション : atmark-dist-20140131
> ・カーネル : linux-3.4-at6
Armadillo-8x0での話だったんですね。
そのあたりはatmark-dist開発者ガイドの説明と変わってしまっています。
以前、810にドライバを入れようとしたとき私もちょっとはまりました。
私がやった範囲では...ですが、depmod.pl実行は不要、つまり、
Makefileの次の2行は削除してしまってOKのようです。
$(ROOTDIR)/user/busybox/examples/depmod.pl -b \
$(ROMFSDIR)/lib/modules/$(KERNELRELEASE) &> /dev/null
depmod.plをやらなくても、モジュールは正しく入ってくれているようです。
--
なかむら
haruka0606
ohshimayyyy
大島と申します。
1年近く前にfixした投稿に、横槍ですみません。
私も、Armadillo-810で上記を試してみたのですが、
同じ症状が発生しており、同様の対応をしましたが、
下記のエラーメッセージが出力されてしまいます。
> make[2]: *** [silentoldconfig] エラー 1
> make[1]: *** [silentoldconfig] エラー 2
但し、make後、下記のファイルも出力されており、
異常終了しているのか、正常終了しているのか分かりません。
message.mod.c
message.o
Module.symvers
message.ko
message.mod.o
modules.order
エラーを防止する方法をご教示頂きたいです。
環境は下記の通りです。
・仮想ファイル : atde5-amd64-20130927
・ディストリビューション : atmark-dist-20131018
・カーネル : linux-3.4-at5
ご対応の程、宜しくお願い致します。
y.nakamura
中村です。
1年前のやりとりで、
> > make[2]: *** [silentoldconfig] エラー 1
> > make[1]: *** [silentoldconfig] エラー 2
この部分は解決していませんでしたね。
というか、depmod.pl問題と一緒にこの問題にも気づいていましたので、
私の書き忘れです。
atmark-dist開発者ガイド->第11章 新規デバイスドライバの追加方法
http://manual.atmark-techno.com/dist/atmark-dist_developers_guide_ja-1…
のMakefileにある次の行
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}
ここを次に様にすれば、このエラーは出なくなります。
KERNELRELEASE = 3.4-at5
Makefileに"3.4-at5"を埋め込んでしまうのは避けたいところですが、
とりあえず、ということで、私はこれで回避してます。
もうちょっと説明すると・・・・
(私の作業メモによると、当時、同じat5で調べていました)
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}
を実行したとき、Armadillo-8x0の開発環境(ATDE5)では、
KERNELRELEASE に次の文字列が代入されてしまいます。
(実際は改行なしの1行です)
* * Restart config... * * * General setup * Prompt for development and/or incomp lete code/drivers (EXPERIMENTAL) [Y/n/?] y Cross-compiler tool prefix (CROSS_COM PILE) [] Local version - append to kernel release (LOCALVERSION) [] Automatica lly append version information to the version string (LOCALVERSION_AUTO) [N/y/?] n Kernel compression mode > 1. Gzip (KERNEL_GZIP) 2. Bzip2 (KERNEL_BZIP2) (NE W) 3. LZMA (KERNEL_LZMA) 4. XZ (KERNEL_XZ) 5. LZO (KERNEL_LZO) choice[1-5? ]: aborted! Console input/output is redirected. Run 'make oldconfig' to update configuration. 3.4-at5
KERNELRELEASEにこういう文字列がセットされた状態で、
modulesターゲットの
$(MAKEARCH) -C $(ROOTDIR)/$(LINUXDIR) M=${shell pwd} modules
を実行すると、そのときに、
> > make[2]: *** [silentoldconfig] エラー 1
> > make[1]: *** [silentoldconfig] エラー 2
のエラーがでるようです。
atmark-dist開発者ガイドが書かれたころ(ATDE3かな?)は、
Linuxのバージョン文字列だけがKERNELRELEASEに
入っていたのですが、ATDE5では、上のようになるように
なってしまったため、この不具合が発生します。
--
なかむら
y.nakamura
中村です。
すみません。訂正です。
> KERNELRELEASEにこういう文字列がセットされた状態で、
> modulesターゲットの
> $(MAKEARCH) -C $(ROOTDIR)/$(LINUXDIR) M=${shell pwd} modules
> を実行すると、そのときに、
> > > make[2]: *** [silentoldconfig] エラー 1
> > > make[1]: *** [silentoldconfig] エラー 2
> のエラーがでるようです。
この部分、間違いです。
別の作業メモがありました。
> modulesターゲットの
> $(MAKEARCH) -C $(ROOTDIR)/$(LINUXDIR) M=${shell pwd} modules
は関係なくて、
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}
を実行するときにこのエラーが出ています。
この行を
KERNELRELEASE := ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}
と変更し("="を":="に変更です)、
Makefileに何もしない
hoge:
というターゲットを作って
make hoge
すると、同じエラーが出ます。
$ make hoge make[2]: *** [silentoldconfig] エラー 1 make[1]: *** [silentoldconfig] エラー 2 make: `hoge' に対して行うべき事はありません.
--
なかむら
y.nakamura
中村です。
たびたび、すみません。
depmod.pl問題の解決策として、
Makefileの次の2行を削除してしまっています。
$(ROOTDIR)/user/busybox/examples/depmod.pl -b \
$(ROMFSDIR)/lib/modules/$(KERNELRELEASE) &> /dev/null
ですので、Makefileの
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}
この行は不要みたいです。
--
なかむら
ohshimayyyy
大島です。
お世話になります。
早速のご対応、有難う御座いました。
上記の通り、
Makefileの下記3行を削除(コメントアウト)し、
----------------------------------------------------------------------------------------------------
$(ROOTDIR)/user/busybox/examples/depmod.pl -b \
$(ROMFSDIR)/lib/modules/$(KERNELRELEASE) &> /dev/null
KERNELRELEASE = ${shell make -sC $(ROOTDIR)/$(LINUXDIR) kernelrelease}
----------------------------------------------------------------------------------------------------
makeを実行してみたところ、エラーなく完了しました。
下記のファイルも出力されており、
----------------------------------------
message.mod.c
message.o
Module.symvers
message.ko
message.mod.o
modules.order
----------------------------------------
makeが正常終了している認識です。
make modulesのみの実行確認ですので、
ドライバの動作確認までに、何か解決不能な障害が発生した場合は、
別途、投稿させて頂こうと思います。
有難う御座いました。
以上です。
haruka0606
2014年2月24日 10時02分
中井です。
状況が少しだけ進展しましたので、改めて質問いたします。
depmod.plのありかは見つかった(busybox/busybox-1.20.2)のですが、Makefileで
そのフォルダを指定すると
../atmark-dist-20140131/user/busybox/busybox-1.20.2/examples/depmod.pl -b \
../atmark-dist-20140131/user/busybox/busybox-1.20.2/examples/depmod.pl -b basedir { -k | -F } [options]...
Where:
-h --help : Show this help screen
-b --basedir : Modules base directory (e.g /lib/modules/<2.x.y>)
-k --kernel : Kernel binary for the target (e.g. vmlinux)
-F --kernelsyms : Kernel symbol file (e.g. System.map)
-n --stdout : Write to stdout instead of /modules.dep
-v --verbose : Print out lots of debugging stuff
-P --symbol-prefix : Symbol prefix
-a --all : Probe all modules (default/only thing supported)
-e --errsyms : Report any symbols not supplied by modules/kernel
make: *** [romfs] エラー 2
というエラーが発生します。そこで depmod.plのbオプションに作成したkoファイルがある
フォルダ(/home/atmark/message)を指定してみましたが、やはり結果は同じでした。
今度は何が悪いのでしょうか?
使用している環境は、下記になります。
・仮想ファイル : atde5-amd64-20140131
・ディストリビューション : atmark-dist-20140131
・カーネル : linux-3.4-at6