13.2. カーネルパッケージのアップグレード

Vine Linuxのカーネルパッケージは、他のパッケージと同様に RPM 形式で配 布されていますが、他のパッケージのように rpm -Uvhでアップグレードする ことはできません。以下の手順に従ってアップグレードしてください。

最低限必要なパッケージは、

です。必要なパッケージにアクセスできるようにしておいてください。/root にコピーしておくのが最も安全でしょう。

もし,SMPカーネルを必要とする場合は, kernel-VER-REL.i386.rpm ではなく, kernel-smp-VER-REL.i386.rpmをお使い下さい.また,以下では適宜読み変えて下さい.

まず、新しいカーネルパッケージをインストールします。

# rpm -ivh kernel-VER-REL.i386.rpm

または,

# apt-get install kernel

apt-getを使用した場合,インストール可能なカーネルパッケージの候補がインストール済カーネルとともに表示されます。

# apt-get install kernel
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
kernel は以下のパッケージで提供されているバーチャルパッケージです。
  kernel#2.4.27-0vl1 2.4.27-0vl1 [インストール済]
  kernel-smp#2.4.27-0vl1 2.4.27-0vl1 [インストール済]
  kernel#2.4.27-0vl4 2.4.27-0vl4
  kernel-smp#2.4.27-0vl4 2.4.27-0vl4
インストールするパッケージを明示的に選択する必要があります。
E: パッケージ kernel は複数で提供されているバーチャルパッケージです。

この場合,インストールするパッケージを選択する必要があります.例えば,最後のパッケージをインストールする場合,以下のようにバージョンを指定します.

# apt-get install kernel-smp#2.4.27-0vl4
パッケージリストを読みこんでいます... 完了
依存情報ツリーを作成しています... 完了
以下のパッケージが新たにインストールされます:
  kernel-smp#2.4.27-0vl4
アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 19 個
11.6MB のアーカイブを取得する必要があります。
展開後に 26.1MB のディスク容量が追加消費されます。
取得:1 http://updates.vinelinux.org/apt 3.1/i386/main kernel-smp#2.4.27-0vl4 2.4.27-0vl4 [11.6MB]
11.6MB を 0s 秒で取得しました (20.8MB/s)
変更を適用しています...
Preparing...                ########################################### [100%]
   1:kernel                 ########################################### [100%]
完了

■LILOの設定

インストールされたカーネルで起動できるように、ブートローダである LILO の設定をします。LILO の設定ファイルは /etc/lilo.conf ですので、これを編集します。詳しくは jman lilo.conf を参照してください。

このファイルの編集は、シングルユーザモードに移行する前に行っていてもかまいません。

       boot=/dev/hda
       map=/boot/map
       install=/boot/boot.b
       prompt
       timeout=50
       message=/boot/message
       default=linux

追加   image = /boot/vmlinuz-VER-REL
追加	  label = linux
追加	  read-only
追加	  root = /dev/hda5
# mkinitrd した場合は次の1行を追加
追加	  initrd=/boot/initrd-VER-REL.img

       image = /boot/vmlinuz-2.4.27-0vl1smp
変更      label = Linux.old
          initrd=/boot/initrd-2.4.27-0vl1smp.img
          read-only
          root = /dev/hda5

       other=/dev/hda1
          label=dos
  

次に LILO を有効にします。ここでエラーが出たら、lilo.conf を見直しましょう。

# /sbin/lilo
  

■アップグレード作業の終了

ヘッダファイルをインストールします。

# rpm -Uvh kernel-headers-VER-REL.i386.rpm
  

または

# apt-get install kernel-headers
  

カーネルソースやドキュメントが必要ならばインストールします。

# rpm -Uvh kernel-doc-VER-REL.i386.rpm
# rpm -Uvh kernel-source-VER-REL.i386.rpm
  

または

# apt-get install kernel-{doc,source}
  

これでパッケージのアップグレードは終了です。マシンを再起動します。

# /sbin/shutdown -r now
  

13.2.1. カーネルを自分の設定で作り直す

標準の設定ではハードウェアが動かない場合、必要なサービスが設定されてい ない場合、カーネルをシェイプアップしたい場合などには、カーネルを自分の 設定で作りなおすことができます。自分でカーネルソースを取ってきてコンパ イルすることもできますが、Vine Linux 用に配布されているカーネルパッケー ジから自分用のカーネルパッケージを作成しなおすほうが安全で簡単です。

■カーネルパッケージを作り直す

Project Vine から配布されているカーネルパッケージから、自分で設定をしなおしたパッケージを作成することができます。生成したパッケージは、「カーネルパッケージのアップグレード」の手順に従って扱うことができます。

Vine Linuxには mkkpkg というスクリプトが含まれており、これを利用することで簡単にカーネルパッケージを作成することができます。

カーネルの設定方法はデフォルトで menuconfig です。変更したい場合は、引数の最後に「config」や「xconfig」をつけ加えることができます。

$ /usr/sbin/mkkpkg <ソースパッケージのあるディレクトリ>/kernel-VER-REL.src.rpm

このスクリプトでは、生成するパッケージのリビジョン番号を指定できます。バー ジョン管理のために、「.<自分用のリビジョン>」を付加するのがお勧め です。例えば、kernel-2.2.17-0vl8 に対しては、リビジョンを「0vl8.1」 「0vl8.2」「0vl8.3」…とするのがお勧めです。

カーネルパッケージは標準で ~/rpm/RPMS/i386/~/rpm/SRPMS/ ディレクトリ内に作成され ます。

■ソースツリーから作成する

インストールされたカーネルソースや、自分で取ってきたカーネルソースを利用してカーネルを作ることもできますが、RPM の管理を壊してしまう可能性があるため、あまりお勧めできません。Vine Linuxのシステム構成やカーネルについて熟知した上で行ってください。

標準のカーネルパッケージに含まれていないパッチを利用したい場合はにこの方法がお手軽ですが、mkkpkg の途中で spec ファイルを編集してちゃんとしたパッケージを作るのが理想的です。

# cd /usr/src/linux
# make menuconfig

で自分好みの設定に変えます。設定を保存したら、

# make dep clean bzImage modules modules_install

とします.

  • /が SCSI ディスク上にある場合

    / (ルートパーティション)が SCSI ディスク上にある場合は

    # /sbin/mkinitrd /boot/initrd-VER.img VER
        

    を実行します。

■仕上げ

最後に作成された vmlinuz-VER/boot にコピーします。

# /sbin/installkernel VER arch/i386/boot/bzImage System.map

あとは、/etc/lilo.conf を編集して /sbin/lilo を実行してください。