search
LoginSignup
0

More than 1 year has passed since last update.

posted at

updated at

ACPIの復習

今日は冬至です。寒い裏日本の町からの投稿です。

Windows 95の頃の電源制御はAPM(Advanced Power Management)という仕組みでしたが、Windows 98の頃からACPIという仕組みが利用されるようになりました。FreeBSDでも5くらいからACPIのサポートが入りました。

ACPIはBIOSの頃にできたものですが、現在のUEFIでも使われています。FreeBSDでACPIがサポートされているのはi386とamd64だけです。

ACPIはAdvanced Configuration and Power Interfaceの略称で、パワーマネージメントだけでなく、デバイスのコンフィグレーションの機能もあります。近年arm環境などで利用されているDTSに似ています。

しかしながらDTSはコンフィグレーションを取得して実際のコンフィグレーションはデバイスを直接叩くよう仕組みですがACPIはそれ自体にも設定機能があります。

電源周りについては、ACPIはノートパソコンのリジュームやハイバネーションまたパソコン一般の電源のOFF機能などに利用されます。

ACPIはOSが起動してマシンが保持しているAMLといわれるバイナリを取得して解釈して、それの方法に従って処理を行います。

FreeBSDではacpicaというintelが主導しているリファレンス実装をカーネルに入れて、FreeBSD固有の処理を行っています。

なぜACPIのことを調べていたかというと、FreeBSD/i386をインストールした、VALUESTARがWOLできないためです。AC電源入れたあとはWOLできるのですが、FreeBSDでpoweroffした後はWOLできません。ACPIまわりの問題のような気がしていますが、まだ解決できてません。

sys/dev/acpica/acpi.cのacpi_shutdown_final(void *arg, int howto)という関数があって、i386やamd64の場合最後の処理になるのではないかと思います。

2000年くらいには日本ではFreeBSDをノートパソコンで使うための環境のPAOがありました。結構利用されていた方も多かったのではないでしょうか。PAOは主にAPMとPCMCIAをカスタマイズしていました。当初のACPIサポートはノートパソコンが先行していて、PAOの流れだったのかFreeBSDのACPIサポートは日本の開発者の方々が主導していたようです。PAOのもう一つの機能のPCMCIA/CardBusのサポートはメインラインに取り入れられず、それにより日本ではFreeBSDの開発者のモチベーションが低下して、ユーザーが減っていく事になりました。

代わりに入ったPCMCIAサポートも13Rで消されてしまうようで、昔の事を思い出しました。

復習としたのは昔初代VAIO C1でFreeBSDを使っていて、この頃はいろいろAMLをいじっていたからでした。C1はACPI過渡期のWindows 98のマシンでAMLはぐちゃぐちゃでした。SONYがこんな製品作るんだとがっかりした記憶があります。

C1のようにACPIのサポートが不完全なものはFreeBSDではブラックリストでACPIが使われないようになっていました。このため修正したAMLをオーバーライトしていました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0