Vine Linux 3.1で電源が切れない場合の対処

2005/05/13

Vine3.1でsmpカーネルを利用している場合、電源が自動で切れない場合があるようです。 私の身近なサーバでもこのような現象がおきました。 調べてみるとカーネル再構築が必要のようなので、その時のメモを残しておきます。

Vine本家のマニュアルにあるように、ここでは自分用のカーネルをrpmで作ることにします。 また、どうせならということで、最新版カーネルへのアップデートもかねて行いましょう。

操作上の注意として、X上で操作する場合はマウスの真中クリックがペーストになります。マウスをドラッグするとコピーです。 以下は間違えると最悪、Linuxが起動しなくなるため、できればコピー/ペーストして作業していくことをお勧めします。

なお、以下の方式ではAPMによるパワーOFFを利用するため、マザーボードによってはうまくいかないかもしれません。 あくまで自己責任でお願いいたします。


カーネル再構築に必要なパッケージのインストール

初めてカーネルの再構築を行うときのみ、以下を行います、

  1. カーネル再構築に必要なパッケージをインストールします。
    $ su
    # apt-get update
    # apt-get install mkkpkg
    # exit

最新版のkernel-sourceとkernel-headersをインストール

  1. kernel-headersの最新版をインストールします。
    Vine ftpサイトから Vine-3.1/updates/RPMS/i386 の中にある最新版のkernel-headersをダウンロードします。
    このメモを書いている時点では kernel-headers-2.4.27-0vl7.3.i386.rpm が最新版でしたので、以下ではこれについて書きます。 最新版が変わっているかもしれないので、適宜、読み替えてください。
  2. ダウンロードしたkernel-headersをインストールします。
    $ su
    # rpm -Uvh kernel-headers-2.4.27-0vl7.3.i386.rpm
  3. kernel-sourceをインストールします。
    # apt-get update
    # apt-get install kernel-source
    # exit

自分専用カーネル・パッケージの生成

  1. 一般ユーザーでログインします。
    また、以下はX上での操作なのでXが起動していなかったなら、「startx」としてXを起動してください。
  2. Vine ftpサイトから Vine-3.1/updates/SRPMS の中にある カーネルのソース・パッケージをダウンロードします。 ダウンロードするときの保存先は /home/USER/rpm/SRPMS に保存してください。(USERは現在ログインしているユーザー)
    これを書いている時点での最新版は kernel-source_2.4.27-0vl7.3_i386 でしたので、以下はこれを元に書きます。
  3. 以下のようにして、カーネルのrpmを作ります
    $ cd ~/rpm/SRPMS
    $ /usr/sbin/mkkpkg kernel-2.4.27-0vl7.3.src.rpm xconfig
    Welcome to mkkpkg
     
    ここでしばらく待ちます
    Please wait for a while "make xconfig" to be executed...
    Executing "rpmbuild -bp /home/USER/rpm/SPECS/kernel-2.4-vl.spec"...done.
     
    以下でこれから作成するカーネルの自分用バージョンを入力します。
    ここでは、kernel-2.4.27-0vl7.3.src.rpmから作るので、0vl7.3.1としました。
    Input your kernel Revision [SRPM = 0vl7.3]: 0vl7.3.1
    kernel Revision [yours = 0vl7.3.1]. OK? [y/n] y
     
    Do you want to edit kernel-2.4.27-0vl7.3.1.spec? [y/n] n
    Do you want to build SRPM? (If no, only RPMs are built) [y/n] y
    Ready for make "xconfig" by kernel-2.4.27-i386.config
    [Push enter to continue] Enterを押す
     
  4. 次のようなウィンドウが表示されます。「Load Configuration from File」をクリックします。
  5. 以下のウィンドウで、 /usr/src/linux/configs/kernel-2.4.27-i686-smp.config と入力し、OKをクリックます。
  6. 「General setup」をクリックします。
  7. 次のウィンドウが表示されるので、下のほうにある「Power Management support」の「y」をクリックします。
    また、その下にある「Advanced Power Management BIOS support」の「y」をクリックします。
    両方とも「y」に変えたら一番下の「Main Menu」をクリックします。
  8. 「Save and Exit」をクリックします。
  9. 以下で「OK」をクリックします。
  10. ターミナルに戻り、以下のように表示されるので指示のとおりにします。
    Ready for Action?
    [Push enter to continue] Enterを押す
    Started: Thu May 12 xx:xx:xx 9999
    Building...
     
    コンパイルが行われるのでかなり時間がかかります。
    Finished: Thu May 12 xx:xx:xx 9999
    [Push enter] Enterを押す
    Created:
    /home/USER/rpm/RPMS/i386/kernel-2.4.27-0vl7.3.1.i386.rpm
    /home/USER/rpm/RPMS/i386/kernel-doc-2.4.27-0vl7.3.1.i386.rpm
    /home/USER/rpm/RPMS/i386/kernel-headers-2.4.27-0vl7.3.1.i386.rpm
    /home/USER/rpm/RPMS/i386/kernel-source-2.4.27-0vl7.3.1.i386.rpm
    /home/USER/rpm/SRPMS/kernel-2.4.27-0vl7.3.1.src.rpm
     
    ログを保存するかを聞いてくるので、ここでは保存することにしています。
    How do you want kernel-mkkpkg.log in /tmp?
    m)move to /home/USER r)remove *)leave in /tmp : m
    Do you want to clean up BUILD tree and files in SOURCES? [y/n] y

上記で、 /home/USER/rpm/RPMS/i386/kernel-2.4.27-0vl7.3.1.i386.rpm という自分専用の再構築済みカーネルが出来上がります。


カーネルのインストールと設定

  1. 上記で作ったカーネルをインストールします。
    $ cd ~/rpm/RPMS/i386
    $ su
    # rpm -ivh kernel-2.4.27-0vl7.3.1.i386.rpm
  2. 「/」(ルート)がSCSIデバイスにある場合、以下を行います。SCSIを使っていなければこのステップは必要ありません。

    今回、インストールしたカーネルを確認します。
    # cd /boot
    # ls vmlinux*
    たとえばうちでは以下のように表示されました。
    vmlinux-2.4.27-0vl7      vmlinux-2.4.27-0vl7.3smp
    vmlinux-2.4.27-0vl7.3.1  vmlinux-2.4.27-0vl7smp
    ソース・パッケージのバージョン番号と照らし合わせると、今回インストールしたものは「vmlinux-2.4.27-0vl7.3.1」ですので以下のようにします。
    # /sbin/mkinitrd /boot/initrd-2.4.27-0vl7.3.1.img 2.4.27-0vl7.3.1
    上記「2.4.27-0vl7.3.1」のバージョン部分はご自身の状態にあわせてください。
  3. LILOの設定をします。
    # gedit /etc/lilo.conf
    prompt
    timeout=50
    default=linux
    boot=/dev/hdc
    map=/boot/map
    install=menu
    message=/boot/message
    vga=0x305
     
    # 以下の行を追加します。
    # 各自、環境が違うので、このHPをコピーしてもうまくいきません。
    # 最初から書かれているブロックをコピーして、修正するようにしてください。
    # -----------------------------------------------------------------
    image=/boot/vmlinuz-2.4.27-0vl7.3.1
           label=linux
    # initrdの行は、IDEドライブが「/」の時には書いてはダメです。
    # SCSIが「/」の人のみ書きます。
    #       initrd=/boot/initrd-2.4.27-0vl7smp.img
           read-only
           root=/dev/hda1
           append=" resume2=swap:/dev/hdd2"
    # -----------------------------------------------------------------
     
    # ここから下は最初からかかれている部分です。このブロックをコピーして、上記のように追加します。
    image=/boot/vmlinuz-2.4.27-0vl7smp
           label=vine31 ← 最初は「linux」となっているので適当に書き換えましょう。
           initrd=/boot/initrd-2.4.27-0vl7smp.img
           read-only
           root=/dev/hda1
           append=" resume2=swap:/dev/hdd2"
  4. LILOの更新をします。
    # /sbin/lilo
    ここでエラーになるようだと、たぶん /etc/lilo.conf の編集で間違えています。
  5. 再起動します。
    # reboot

再起動後、電源が切れるようになるはずです。

# halt -p

うちでは上記で電源が切れるのを確認しました。

Copyright©2001-2019 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org