hwclockのbusyboxの実装は利用できません。

hwclockのbusyboxの実装は利用できません。

x86デバイスで実行されるビルドルート生成カーネル(3.6.11)とルートファイルシステムがあります。これはbusyboxを使用し、それを使用してBIOSハードウェアクロックを設定しようとしますhwclock。電話をかけるたびに、次のエラーが発生しますhwclock

can't open '/dev/misc/rtc': No such file or directory

/dev/rtc私のシステムにはデバイスファイルが1つしかないので、これを理解しています。ただし、使用して開こうとしましたが、メッセージで失敗したことがstraceわかります。hwclock/dev/rtc

open("/dev/rtc",O_READONLY|O_LARGEFILE) = -1 ENODEV (No such device)

/dev/rtcN/proc/driver/rtcカーネル設定のデバイスドライバセクションで、リアルタイムクロックのカーネル設定を確認した後、(文字デバイス)と(rtc0のprocfs)オプションが有効になっていることがわかります。また、PCスタイルの「CMOS」プラットフォームRTCドライバのみを選択しました。しかし、ここのヘルプセクションで以下を読んでいます。

すべてのPCまたはACPIベースのシステムだけでなく、他のマザーボードのリアルタイムクロックの直接サポートを受けるには、ここで「はい」を選択してください。特にPCサウスブリッジ、DS12887またはM48T86、いくつかの多機能またはLPCバスチップなどと互換性のあるオリジナルMC146818です。

システムは、このドライバが使用するプラットフォームデバイスを定義する必要があります。そうしないと、そのデバイスにアクセスできなくなります。

なぜ "/dev/rtc"ファイルを開くことができないのか混乱しています。それは存在し、私が電話すると出力を取得します。

cat /proc/driver/rtc

デバイスを登録するために実行する必要がある他のタスクはありますか?ドライバをモジュールに変更してinsmod起動後に作業を実行することもできますが、それが良いアイデアかどうかはわかりません。誰もがこの問題を解決する方法を提案したり、問題が何であるかについての詳細を得ることができますか?

編集するオンラインで読んで実行して、dmesg | grep -i rtc次のような結果を得ました。

[ ... ] RTC time: 16:01:07, date 09/24/13
[ ... ] rtc_cmos 00:02: RTC can wake from S4
[ ... ] rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0
[ ... ] rtc0: alarms up to one year, y3k, 114 bytes nvram

/dev/rtc0これは私がなぜ静的デバイステーブルを使用しているのか疑問に思います。それでは、それを使用しないので、デバイスノードをbuildroot提供するために変更する必要がありますか?/dev/rtc0udev

答え1

症状のいくつかは説明できますが、出勤方法についてはお話できませんhwclock

言葉の意味を混同することが多い。装備Unix環境で。これは次のことを意味できます。

  • 文字またはブロックデバイスタイプのファイルシステムエントリ。
  • このファイルシステムノードの背後にあるカーネルエンティティ。
  • ハードウェアバスに接続された論理オブジェクトです。
  • ハードウェアコンポーネントを物理的に分離します。

[No such device] メッセージに次の単語が表示されます。装備カーネルエンティティを表します。デバイスを登録したカーネルエンティティがないようです/dev/rtc。 dmesg 出力によると、CMOS RTC ドライバがカーネルに存在し、RTC が見つかり、番号が 0 に指定されました。

デバイス(カーネルエンティティの意味でも)はデバイスファイル(上記の最初の意味)を介してアクセスされ、識別するタイプ(文字またはデバイス)、キー番号、マイナー番号で識別されます。名前はカーネルとは関係がないため、正しいファイルが見つかる限り、/dev/rtcvsには問題ありません。デバイス番号が正しいことを確認してください。/dev/rtc0hwclock/dev/rtc

crw------- 1 root root 254, 0 Sep 24 13:29 /dev/rtc

/dev/rtcシンボリックリンクの場合はへのリンクでなければならず、rtc0上記のようにデバイス番号(254,0)を持たなければなりません。

関連情報