今ならXeonも搭載可能なPCサーバー「PowerEdge SC440」が2万円台から買える!

マウスコンピューター」ならWindows抜きでもPCが買える。Linuxサーバーとしての利用に最適!

トップページ

  • tarの使い方
  • rpmの使い方
  • psコマンドでプロセスを確認
  • /etc/crontabを編集してアプリを自動実行
  • chkconfigコマンドでプロセスを自動起動

カーネルのバージョンを上げる

2006年6月25日 掲載

カーネルのバージョンアップが必要なときとは

 「パッケージを最新のものに更新する」の手順でapt-get upgradeを実行したときに、「以下のパッケージが新たにインストールされます:kernel××」と表示されることがあります。これは新しいバージョンのカーネルがリリースされたことを表しています。カーネルはファイルがダウンロードされるだけであり、新しいバージョンのカーネルを利用するには設定を変更する必要があります。

 カーネルにセキュリティホールが発見されたときなど、カーネルのバージョンを上げる必要があります。そのまま使い続けると、セキュリティホールを悪用した攻撃を受ける可能性があるため、「以下のパッケージが新たにインストールされます:kernel××」のメッセージが表示されたときは注意が必要です。

# apt-get update ←最新のパッケージリストを入手
取得:1 http://updates.vinelinux.org 3.2/i386 release [2535B]
取得:1 http://updates.vinelinux.org 3.2/i386/main pkglist [228kB]
取得:2 http://updates.vinelinux.org 3.2/i386/main release [158B]
取得:3 http://updates.vinelinux.org 3.2/i386/plus pkglist [393kB]
取得:4 http://updates.vinelinux.org 3.2/i386/plus release [166B]
取得:5 http://updates.vinelinux.org 3.2/i386/updates pkglist [181kB]
取得:6 http://updates.vinelinux.org 3.2/i386/updates release [171B]
取得:7 http://updates.vinelinux.org 3.2/i386/main srclist [110kB]
取得:8 http://updates.vinelinux.org 3.2/i386/plus srclist [180kB]
取得:9 http://updates.vinelinux.org 3.2/i386/updates srclist [41.2kB]
1165kB を 3s 秒で取得しました (294kB/s)
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
# apt-get upgrade ←新しいパッケージをインストールする
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージがアップグレードされます:
  bzip2 cyrus-sasl glibc glibc-common gnupg gzip openssl
以下のパッケージが新たにインストールされます:
  kernel#2.4.31-0vl1.12 ←この行があるときはカーネルのバージョンアップが必要
アップグレード: 7 個, 新規インストール: 1 個, 削除: 0 個, 保留: 0 個
53.6MB のアーカイブを取得する必要があります。
展開後に 21.4MB のディスク容量が追加消費されます。
続行しますか? [Y/n]y
取得:1 http://updates.vinelinux.org 3.2/i386/updates glibc-common 2.3.3-3vl1.3 [14.7MB]
取得:2 http://updates.vinelinux.org 3.2/i386/updates glibc 2.3.3-3vl1.3 [4111kB]
取得:3 http://updates.vinelinux.org 3.2/i386/updates bzip2 1.0.2-0vl2.1 [78.7kB]
取得:4 http://updates.vinelinux.org 3.2/i386/updates gnupg 1.2.6-0vl4 [1724kB]
取得:5 http://updates.vinelinux.org 3.2/i386/updates openssl 0.9.7d-0vl3.2 [1166kB]
取得:6 http://updates.vinelinux.org 3.2/i386/updates cyrus-sasl 2.1.18-0vl5 [222kB]
取得:7 http://updates.vinelinux.org 3.2/i386/updates gzip 1.3.2-2vl5 [92.3kB]
取得:8 http://updates.vinelinux.org 3.2/i386/updates kernel#2.4.31-0vl1.12 [10.6MB]
53.6MB を 16s 秒で取得しました (3256kB/s)
変更を適用しています...
準備中...                   ########################################### [100%]
   1:kernel                 ########################################### [  5%]
   2:glibc-common           ########################################### [ 10%]
   3:glibc                  ########################################### [ 15%]
   4:bzip2                  ########################################### [ 21%]
   5:gnupg                  ########################################### [ 26%]
   6:openssl                ########################################### [ 31%]
   7:cyrus-sasl             ########################################### [ 36%]
   8:gzip                   ########################################### [ 42%]
完了
#

 なお、「パッケージの更新を自動化する」の手順でcronを使ってapt-get upgradeを実行している場合、rootのメールアドレスあてに送られてくるcronの結果のメールをチェックするか、lsコマンドを使って/bootディレクトリの内容を確認してください。もしくはVine Linuxのサイト(http://www.vinelinux.org/)にアクセスし、セキュリティ情報をチェックします。

カーネルをバージョンアップする

 ほかのパッケージはapt-get upgradeでダウンロードからインストールまですべて自動で行われます。しかし、カーネルだけはダウンロードが行われるだけで、バージョンアップするには手動で設定変更が必要です。これはカーネルのバージョンアップによって不具合が発生する可能性があるため、ユーザーが手動で設定するようになっているためです。

 新しいカーネルを使って起動するには、/etc/lilo.confを編集します。その前に/bootディレクトリをチェックして、新しいカーネルが正しくダウンロードされているかを確認してください。そして、新しいカーネルのファイル名をメモしておきます。vmlinuz-××というファイル名がカーネルです(××はバージョン番号。数値が大きいほど新しい)。下の例ではvmlinuz-2.4.31-0v11.8が古いカーネル、vmlinuz-2.4.31-0v11.12がダウンロードされた新しいカーネルです。

# ls /boot ←/bootディレクトリのファイルリストを表示
System.map@                   boot.0300                 module-info@
System.map-2.4.31-0vl1.12     diag1.img                 module-info-2.4.31-0vl1.12
System.map-2.4.31-0vl1.8      diag2.img                 module-info-2.4.31-0vl1.8
System.map.old@               initrd-2.4.31-0vl1.8.img  module-info.old@
autoconf-up.h@                kernel.h                  vmlinuz@
autoconf-up.h-2.4.31-0vl1.12  lost+found/               vmlinuz-2.4.31-0vl1.12
autoconf-up.h-2.4.31-0vl1.8   map                       vmlinuz-2.4.31-0vl1.8
autoconf-up.h.old@            message                   vmlinuz.old@
#

 viで/etc/lilo.confを開いて、次のような記述を追加します。image=から始まる行は新しいカーネルのファイル名を指定します。その他の行は従来の設定をそのままコピーしてください。initrd=で始まる行は省略してもかまいません。また、vga=で始まる行は「フレームバッファコンソールの設定」のページを参考にして設定してください。

 古いカーネルの設定ではlavel=から始まる行をlinux.oldなど別のラベルに書き換えます。もし新しいカーネルで起動したときに不具合が発生したときは、linux.oldで指定した古いカーネルで起動して復旧作業を行います。

prompt
timeout=50
# VESA framebuffer console
#  ex. 0x301=640x480x8, 0x314=800x600x16, 0x317=1024x768x16, 0x31A=1280x1024x16
# vga=0x314
vga=0x317 ←必要に応じて設定する
default=linux
boot=/dev/hda
map=/boot/map
install=menu
message=/boot/message

image=/boot/vmlinuz-2.4.31-0vl1.12 ←ここから5行を追加する
        label=linux
        read-only
        root=/dev/hda2
        append=" resume2=swap:/dev/hda3"

image=/boot/vmlinuz-2.4.31-0vl1.8 ←これまでのカーネルの設定
        label=linux.old ←「linux.old」に変更
        initrd=/boot/initrd-2.4.31-0vl1.8.img
        read-only
        root=/dev/hda2
        append=" resume2=swap:/dev/hda3"

 /etc/lilo.confの編集が終わったら、liloコマンドを実行して設定変更を反映させ、システムを再起動します。新しいカーネルでシステムが起動するはずです。

# /sbin/lilo ←liloコマンドを実行
Added linux *
Added linux.old
# shutdown -r now ←再起動する

 再起動に成功したときは、念のためにカーネルのバージョンを確認します。unameコマンドを使うと動作中のカーネルのバージョンを確認することができます。unameコマンドは一般ユーザーで実行してもかまいません。

$ uname -a
Linux linux 2.4.31-0vl1.12 #1 Mon Dec 26 22:22:09 JST 2005 i686 unknown
$

再起動に失敗したときは

 もし再起動に失敗するなら、古いカーネルで起動します。下の写真のような起動画面で「linux.old」をカーソルキーで選択し、Enterキーを押すと以前のバージョンのカーネルで起動することができます。その後、/etc/lilo.confの記述に間違いがないかを確認してください。間違いがないのに起動に失敗するときは、ハードウェアと新しいカーネルの相性が合わないと考えられます。


 
掲示板 管理者のサイト トップページへ

お問い合わせや間違いのご指摘はyasu@center-left.comまでメールください。