Shino's Bar

お家で使うLinuxtux

電源ボタンでshutdown

8 Nov 2003 (初出:14 Oct 2000)

Linuxでマシンの電源を落とすにはroot権限になってpoweroff あるいは shutdown -h nowと入力・・・。 しかしもっと簡単にできないか。電源を落とすことは誰でもできるようにしたいという場合もあります。 Vine Linux 2.xでは/usr/bin/poweroff コマンドが用意されており、rootパスワードがなくても一般ユーザーのパスワードでシャットダウンを実行できます。もちろんこれはマシンに登録されたLinuxユーザーでなければ実行できません。 ここではだれでも簡単操作でLinuxマシンのシャットダウン動作をさせる方法をいくつか紹介します。ホームサーバーなどでキーボードやディスプレイを繋がなくても操作できるのでとても便利です。

電源ボタンでshutdown(ACPI編)

ATX電源のパワー・ボタンを押すだけでシャットダウン・シーケンスを実行します。 電源をコントロールする方法にAPM(Advanced Power Management)と ACPI(Advanced Configuration and Power Interface) というのとがあって、これらは競合します。 次項では apmdによる電源制御を紹介しますが、 最近のACPIを有効にしたカーネルではカーネルパラメーターで ACPIを禁止し、APMを選択するようにしないとapmdが動いてくれません。ACPIのほうを使う場合はapmdではなくacpidを使います。
  1. BIOSの設定
  2. PowerSWを短時間押すとsuspendモードあるいは不動作、4-5秒押しつづけると強制offとなるようにBIOSで設定しておきます。 またBIOSでのsuspend機能を禁止(disable)できる場合は禁止しておきます。

  3. acpidの導入
  4. ACPIのほうを使う場合はapmdではなくacpidを使います。 acpidのページから acpid-1.0.2-1.src.rpm を取って来てリビルドするか、 Vine Linux 2.5/2.6 では VinePlusに acpid-1.0.2-1vl1 があるのでそちらが使えます。

  5. acpidの設定
  6. /etc/acpi/events に次の内容を例えば power という名前で保存します。

    # /etc/acpi/events/power
    
    event=button.power.*
    action=/sbin/poweroff

    # /etc/rc.d/init.d/acpid start で acpidを起動させれば設定は終りです。 うまくいけば電源ボタンを押すと所定の終了動作のあと電源が自動的に切れるはずです。

  7. トラブル・シュート
acpidでは他にもいろいろできます。--> ハイバネーションの設定

電源ボタンでshutdown(APM編)

ATX電源のパワー・ボタンを押すだけでシャットダウン・シーケンスを実行するという究極の簡便システムです。


  1. マザーボードBIOSの設定
    ATX電源でPowerSWを短時間押すとsuspendモードあるいは不動作、4-5秒押しつづけると強制offとなるようにBIOSで設定できるシステムであることを前提とします。 最近のATX規格に沿ったシステムではほとんど使えると思います。
    ここでもうひとつの設定が必要です。suspend機能を禁止(disable)します。 マザーボードによっては設定できない場合があるかもしれません。

  2. apmの組み込み
    root権限で /sbin/poweroff と入力してシャットダウン動作後に自動的に電源が切れるならばすでにこの設定はなされているはずです。 自動で電源が切れない場合は /etc/liloconf の中に append="apm=on" という行があるか確認し、無ければ追加します。変更後は /sbin/lilo と入力してliloをディスクに書き込みます。リブート後APM機能が組み込まれます。 あるいは最近のACPIを有効にしたカーネルでは append="acpi=off apm=on" としなければならないかもしれません。 それでも駄目ならBIOSの設定が悪いか、そもそもマザー・ボードにその機能が無いのかもしれません。

  3. apmdのインストール
    rpm -q apmd と入力して、これがインストールされているか調べてください。rpmを使わないシステムでは ls /proc/apm で調べられる(のかな?)。 apmdはノート・パソコンなどで主にバッテリの監視を行うために使われるので、 デスクトップ用としてインストールした場合、これは組み込まれていないことが多いです。 無ければVineのインストールディスクやftpなどで apmdのrpmを持ってきて、root権限になってインストールします。
     rpm -ivh apmd-*.i386.rpm


  4. apmdの設定


  5. apmdの再起動 (Vine Linux 2.5/2.6/Red Hat 7.2 では必要ありません。)
  6. 設定を有効にするため
      /etc/rc.d/init.d/apmd restart
    と入力します。最後が[OK]となるはず。 ps x | grep apmd と入力してみて apmd -s /sbin/poweroff が確認できれば準備が揃いました。

  7. テストとトラブル・シュート
    電源ボタンを押してみてください。所定の終了動作のあと電源が自動的に切れるはずです。
    • シャットダウン処理をせずいきなり電源が切れるのはBIOSの設定の問題でしょう。
    • また終了動作に入ろうとして途中で止まり、 Shiftキーなどを押すとまた動きだして終了動作を完了するのはBIOSのsuspend機能が生きている場合。
    • 立ち上げに支障が出た場合は LILO: のプロンプトの後に linux 1 と入力しシングル・ユーザー・モードで立ち上げ、/etc/sysconfig/apmdをいったん別の名前に変更してリブートすれば大丈夫です。その後間違いを探してください。

  8. オリジナルのシャットダウンスクリプト
  9. シャットダウン時に実行したい作業があれば 、次のようなシャットダウンスクリプトを作成し、 実行属性を付けて、たとえば/usr/local/sbin/pwroff などの名前で作成し、 さきの '/sbin/poweroff' のところを '/usr/local/sbin/pwroff ' に置き換えます。
    #!/bin/bash
    …ここに処理を記述
     /sbin/poweroff
    ここで作成したスクリプトはroot権限で /usr/local/sbin/pwroff と入力してみてその動作を確認してください。実行権限が付いていなければその旨エラーメッセージが出るはずです。

電源ボタンでshutdown(suspend機能付き)

電源ボタンでshutdownをsuspendと両立させる方法は土村展之さんのページにあります。 ノート・パソコンなどバッテリーを使用するシステムでは有用でしょう。

bye byeでshutdown

ログイン画面でbye, パスワード入力でもbyeと入力すれば 直ちにシャットダウンされるようにします。--> bye byeでshutdown マザーボードや電源SWの機能がATX適合しない場合などに有用です。

アドバイスは E-mail で マスターまで
Shino's Bar goto [シノバー店内案内] [PRIVATE ROOM マスターの部屋] [DOS/Vマシンの自作] [MPEG2最前線!] [Linux奮戦記]