Slackware 9.0 終了時に自動的に電源を落とす

SOFTWARE REPORT


Microsoft Virtual PC 2005 で Slackware 9.0 を動かしてみる

Microsoft Virtual PC 2005 は、Windows 上で仮想 PC を動かすことが出来るソフトウェアです。

このソフトウェアを利用するとコンピュータ上にまるで本物の PC が何台かあるような複数の PC を同時実行させることができるので、プログラムの開発をしてみたりとか、ときどき Linux を利用したいなどといった場合になかなか重宝します。

 

今回は Microsoft Virtual PC 2005 上で、Linux ディストリビューションのひとつである Slackware を動かしてみました。インストールしたバージョンは FTP 版ではなく、パッケージ版として販売されていた Slackware Linux 9.0 です。

Slackware は、http://www.slackware.com/ から入手できる Linux ディストリビューションのひとつで、有名なものではありませんけど、個人的に初めて使ってみた Linux がこれだったこともあってお気に入りなのでした。何かと苦労も多いですけど、シンプルでわかりやすいような気がします。

 

今回のお話は、システムを終了させたときのお話しです。

全てのパッケージをフルインストールしてみたのですけど、Linux システムをシャットダウンしたときに "Power down." の文字が表示された段階までしか自動では進まずに、最後に電源を手動で切らないといけない状態でした。

大きな不具合ではないのですけど自動的に電源が落ちてくれた方が何かと都合が良いので、そのあたりの調整をしてみることにします。

 

BIOS の確認

PC 自身が電源周りの管理を行うためには APM (Advanced Power Management BIOS) か ACPI (Advanced Configuration and Power Interface) という機能を利用しますので、まずはその機能を Microsoft Virtual PC 2005 が備えているかどうかを調べてみることにしました。

Virtual PC 2005 の場合は、仮想 PC を起動した最初の黒い画面で [Del] キーを押すことで BIOS 画面へ移ることができます。そこの [Power] メニューの中を覗いてみると、"Power Management/APM" が [Enable] に、"ACPI Aware OS" が [Yes] に設定されていました。

これならば機能的になんら問題はなさそうですので、続いて Linux カーネルの調整を行います。

 

Slackware 9 のカーネルを再構築する

自動的な電源ダウンを行うために、Linux カーネルの再構築を行ってみます。

カーネルのコンパイルは少し失敗するだけでもすぐに Linux が起動しなくなったりすることが多々あるので、十分注意して行ってください。Linux が起動できなくなったときに復旧できるくらいの知識がない場合は行わない方が良いかもしれないです。

ソースファイルのインストール

Linux カーネルの再構築を行うためには、Linux のソースファイルが必要です。

Slackware Linux 9.0 の CD-ROM からインストールした場合はフルインストールでもカーネルのソースファイルはインストールされないみたいですので、まずはそれをインストールすることから始めてみます。

 

カーネルソースは Slackware Linux 9.0 の Disk 2 に収録されているようなので、それをインストールします。

mount /dev/cdrom

このようにして /mnt/cdrom へ CD-ROM をマウントしたら、次のように "/mnt/cdrom/slackware/k" ディレクトリへ移動して、パッケージのインストールツールを起動します。

cd /mnt/cdrom/slackware/k

pkgtool

パッケージツールが起動したら "Current" を選択して、現在のディレクトリにあるパッケージ "kernel-source-2.4.20-noarch-5" をインストールします。

これでしばらく放っておくとそのうちパッケージツールが終了して、コンソールに戻りました。けっこう時間がかかりましたけど、これで /usr/src ディレクトリにソースファイルが保存されました。

 

そうしたら、インストールしたソースファイルを既存のカーネルに見合ったものにします。

今回は Slackware を IDE 構成である "bare.i" のカーネルイメージでインストールしてあったので、スムーズにカーネルの再構築が行えるように、その設定内容を反映させておきます。

設定内容は CD-ROM の 1 枚目にあるようなので、CD-ROM を 1 枚目に交換したら、"/mnt/cdrom/kernels" ディレクトリへ移動して、その中にあるインストールしたカーネルに合ったディレクトリを選択します。今回の場合は "bare.i/" です。この中にある "config" ファイルがカーネルの設定ファイルなので、これを "/usr/src/linux/.config" としてコピーしてあげます。

cd /mnt/cdrom/kernels

cd bare.i/

 

cp config /usr/src/linux/.config

これでソースファイルの準備は完了しました。

 

カーネルをコンパイルする

終了時に自動的に電源が落ちるようにするために、カーネルのコンパイルを行います。

まずはカーネルソースが保存されているディレクトリへ移動したら、次のようにしてカーネルの設定メニューを表示します。

cd /usr/src/linux

make menuconfig

そしてメニューの中から "General setup" へ移動して、その中の "ACPI" サポートを有効にします。

General setup ->

[*] ACPI support

[ ] ACPI Debug Statements

<*> ACPI Bus Manager

<*> System

< > Processor

< > Button

< > AC Adapter

< > Embedded Controller

とりあえず今回の目的を達成するためには、この "ACPI Bus Manager" の "System" を有効にすれば問題なさそうです。

もうひとつ APM での電源管理もありますけど、Virtual PC 2005 は ACPI に対応しているようなので、APM は使用しなくても良さそうです。APM で設定を行う必要がある場合は、"Advanced Power Management BIOS support" を有効にした上で "Use real mode APM BIOS call to power off" も組み込んであげれば大丈夫なはずです。

 

設定が完了したらメニューを終了しつつ変更内容を保存し、次のようにしてカーネルのコンパイルおよびブートイメージのインストールを行います。

make dep

make clean

make install

これでカーネルの再構築は完了です。

 

新しいカーネルイメージに切り替える

構築したカーネル情報は、"make install" ではルートディレクトリ ( / ) にインストールされるようです。

けれど Slackware 9.0 は /boot ディレクトリにカーネルイメージがインストールされていることを想定しているようですので、新しいカーネルを有効にするにはもう少し調整が必要そうです。

調整には、そのたび毎に /boot ディレクトリへ "vmlinuz" および "System.map" をインストールする方法もありますけど、今回はルートディレクトリにあるそれで起動できるように "/etc/lilo.conf" ファイルを書き換えることにします。

 

"/etc/lilo.conf" ファイルを開いて、次のような行を見つけます。

image = /boot/vmlinuz

root = /dev/hda2

label = Linux

read-only

ここの "image" の部分を "/boot/vmlinuz" から "/vmlinuz" に変更します。

ここでの指定を間違えると Linux が起動しなくなることが多いので変更には注意が必要です。この情報は "label" の文字列さえ異なれば複数登録することが出来るので、カーネルの再構築に失敗した場合にも備えて別のラベルで既存の設定も残しておくと良いかもしれません。

なお、複数登録した場合は "default = ラベル名" にて、起動させたいカーネルイメージにつけたラベル名を指定します。

image = /vmlinuz

root = /dev/hda2

label = Linux

read-only

このような感じに設定したら、次のようにしてブートローダーに変更したことを伝えます。

lilo

これで全ての準備は完了しました。間違いがなければ再起動後には ACPI が有効になり、システム終了時には自動的に電源が切れるようになるはずです。