Vine Linux ドキュメント / Vine Linux 7.x / CUI ユーザーズガイド / カーネルのアップグレード、設定の方法
Vine Linuxのカーネルパッケージでは、<バージョン>にはカーネルのバージョン、<リリース番号>は、 0vl<Vine のリリース番号> の形になっています。
この文書では、カーネルのバージョンをVER、 リリース番号をREL、 アーキテクチャをARCとします。kernel-2.6.16-0vl60.i386 であれば、 VER を 2.6.16、REL を 0vl60、ARC を i386 と読み換えてください。
kernel 2.4 の時の kernel-headers のパッケージは、 kernel 2.6 では kernel-devel と glibc-kernheaders の 2つのパッケージになりました。
glibc-devel が必要としていた kernel-headers の中の一般的なアプリケーション用のヘッダーファイルは glibc-kernheaders のパッケージに含まれるようになりました。
glibc-kernheaders は kernel-VER-REL.src.rpm からは作成されません。 そのため、kernel の特定のバージョンに依存することはなくなりました。
Vine Linuxのカーネルパッケージは、他のパッケージと同様に RPM 形式で配布されていますが、他のパッケージのように rpm -Uvh でアップグレードすることはできません。以下の手順に従ってアップグレードしてください。
最低限必要なパッケージは、
kernel-VER-REL.ARC.rpm
です。必要なパッケージにアクセスできるようにしておいてください。/root にコピーしておくのが最も安全でしょう。
まず、新しいカーネルパッケージをインストールします。
$ sudo rpm -ivh kernel-VER-REL.ARC.rpm
または
$ sudo apt-get install kernel-VER-REL.ARC.rpm
apt-cache を使用した場合、インストール可能なカーネルパッケージの候補がインストール済みカーネルとともに表示されます。どのバージョンのパッケージがインストール済みかについては rpm コマンドの -q オプションを利用してください。
$ apt-cache show kernel kernel は以下のパッケージで提供されているバーチャルパッケージです。 kernel#2.6.16-0vl60 2.6.16-0vl60 kernel#2.6.16-0vl60 2.6.16-0vl60 kernel#2.6.16-0vl61 2.6.16-0vl61 kernel#2.6.16-0vl61 2.6.16-0vl61 kernel#2.6.16-0vl62 2.6.16-0vl62 kernel#2.6.16-0vl62 2.6.16-0vl62 表示するパッケージを明示的に選択する必要があります。 E: パッケージ kernel は複数のパッケージで提供されているバーチャルパッケージです。 E: パッケージがみつかりません $ rpm -q kernel kernel-2.6.16-0vl60
この場合、インストールするパッケージを選択する必要があります。例えば、最後のパッケージをインストールする場合、以下のようにバージョンを指定します。
$ sudo apt-get install kernel#2.6.16-0vl62 パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 以下のパッケージが新たにインストールされます: kernel#2.6.16-0vl62 アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 19 個 11.6MB のアーカイブを取得する必要があります。 展開後に 26.1MB のディスク容量が追加消費されます。 取得:1 http://updates.vinelinux.org/apt 4.1/i386/main kernel#2.6.16-0vl62 2.6.16-0vl62 [11.6MB] 11.6MB を 0s 秒で取得しました (20.8MB/s) 変更を適用しています... Preparing... ########################################### [100%] 1:kernel ########################################### [100%] 完了
インストールするパッケージを選択しなかった場合には、 まだインストールされていないものの中でバージョンの一番新しいものがインストールされます。
kernel#2.6.16-0vl62 をインストールしてなければ kernel#2.6.16-0vl62 が、 kernel#2.6.16-0vl62 をインストールしてあれば kernel#2.6.16-0vl61 がインストールされることになります。
$ sudo apt-get install kernel パッケージリストを読みこんでいます... 完了 依存情報ツリーを作成しています... 完了 'kernel' として kernel#2.6.16-0vl61 を選択しました 以下のパッケージが新たにインストールされます: kernel#2.6.16-0vl61 アップグレード: 0 個, 新規インストール: 1 個, 削除: 0 個, 保留: 1 個 11.6MB のアーカイブを取得する必要があります。 展開後に 46.1MB のディスク容量が追加消費されます。 取得:1 http://updates.vinelinux.org/apt 4.1/ARC/main kernel#2.6.16-0vl61 2.6.16-0vl61 [11.6MB] 11.6MB を 0s 秒で取得しました (20.8MB/s) 変更を適用しています... 準備中... ########################################### [100%] 1:kernel ########################################### [100%] 完了
カーネルソースやドキュメントやモジュール構築用の開発パッケージが必要ならばインストールします。
$ sudo rpm -Uvh kernel-doc-VER-REL.ARC.rpm $ sudo rpm -Uvh kernel-source-VER-REL.ARC.rpm $ sudo rpm -Uvh kernel-devel-VER-REL.ARC.rpm
または
$ sudo apt-get install kernel-{doc,source,devel}
これでパッケージのアップグレードは終了です。マシンを再起動します。
$ /sbin/shutdown -r now
Vine Linux 4.0から導入されたカーネルパッケージのアップグレード機構とブートローダGRUBの組合せにより、インストールされたままの設定であれば、特にブートローダの設定を変更する必要がありません。
なお、GRUBの設定ファイルは/boot/grub/menu.lstです。LILOと違い、設定ファイルを変更してもブートレコードの書き換えが必要ないのが特徴です。
GRUBの設定ファイルは最後にインストールしたカーネルで起動するように設計されています。
また、選択肢として、その一つ前にインストールしたカーネルがメニューにあります。
インストールした順番が基準となるので、バージョンを比較して新しいものを起動するわけではありませんが、 通常のアップグレードであれば、最後にインストールしたカーネルが最新のバージョンのカーネルとなります。
最後にインストールしたカーネル、その前にインストールしたカーネルのような指定ではなく、特定のバージョンのカーネルで起動できるようにするには、ブートローダである GRUB の設定ファイル /boot/grub/menu.lst をエディタを使って編集します。GNOME をインストールしてあれば、boot-adminコマンドを利用することもできます。menu.lst の書式などについては info grub を参照してください。
安定バージョン(STABLE KERNEL)が 2.6.16-0vl60、テストバージョン(TEST KERNEL)が 2.6.16-0vl60.1 として Grub のメニューに追加するには次のようにします。
もともとある (Current kernel) のエントリをコピーして title の行と kernel の行の vmlinuz のバージョン と initrd の行の initrd.img のバージョンを指定します。
例 IV.19-1 GRUB の設定ファイル menu.lst に新しいエントリを追加する
default=0 timeout=5 title Vine Linux (Current kernel) root (hd0,1) kernel /boot/vmlinuz ro root=/dev/hda2 resume2=swap:/dev/hda3 vga=0x314 initrd /boot/initrd.img savedefault title Vine Linux (Previous kernel) root (hd0,1) kernel /boot/vmlinuz.old ro root=/dev/hda2 resume2=swap:/dev/hda3 vga=0x314 initrd /boot/initrd.old.img savedefault 追加title Vine Linux (STABLE KERNEL) 追加 root (hd0,1) 追加 kernel /boot/vmlinuz-2.6.16-0vl60 ro root=/dev/hda2 resume2=swap:/dev/hda3 vga=0x314 追加 initrd /boot/initrd-2.6.16-0vl60.img 追加 追加title Vine Linux (TEST KERNEL) 追加 root (hd0,1) 追加 kernel /boot/vmlinuz-2.6.16-0vl60.1 ro root=/dev/hda2 resume2=swap:/dev/hda3 vga=0x314 追加 initrd /boot/initrd-2.6.16-0vl60.1.img
標準の設定ではハードウェアが動かない場合、必要なサービスが設定されてい ない場合、カーネルをシェイプアップしたい場合などには、カーネルを自分の 設定で作りなおすことができます。自分でカーネルソースを取ってきてコンパ イルすることもできますが、Vine Linux 用に配布されているカーネルパッケー ジから自分用のカーネルパッケージを作成しなおすほうが安全で簡単です。
Project Vine から配布されているカーネルパッケージから、自分で設定をしなおしたパッケージを作成することができます。生成したパッケージは、「カーネルパッケージのアップグレード」の手順に従って扱うことができます。
Vine Linuxには mkkpkg というスクリプトが含まれており、これを利用することで簡単にカーネルパッケージを作成することができます。
カーネルの設定方法はデフォルトで menuconfig です。変更したい場合は、引数の最後に「config」や「xconfig」をつけ加えることができます。
$ /usr/sbin/mkkpkg <ソースパッケージのあるディレクトリ>/kernel-VER-REL.src.rpm
このスクリプトでは、生成するパッケージのリビジョン番号を指定できます。バー ジョン管理のために、「.<自分用のリビジョン>」を付加するのがお勧め です。例えば、kernel-2.6.16-0vl2 に対しては、リビジョンを「0vl2.1」 「0vl2.2」「0vl2.3」…とするのがお勧めです。
カーネルパッケージは標準で ~/rpm/RPMS/i386/ と ~/rpm/SRPMS/ ディレクトリ内に作成され ます。
インストールされたカーネルソースや、自分で取ってきたカーネルソースを利用してカーネルを作ることもできますが、RPM の管理を壊してしまう可能性があるため、あまりお勧めできません。Vine Linuxのシステム構成やカーネルについて熟知した上で行ってください。
標準のカーネルパッケージに含まれていないパッチを利用したい場合はにこの方法がお手軽ですが、mkkpkg の途中で spec ファイルを編集してちゃんとしたパッケージを作るのが理想的です。
$ cd /usr/src/linux-VER $ sudo make menuconfig
で自分好みの設定に変えます。設定を保存したら、
$ sudo make dep clean bzImage modules modules_install
とします。
make menuconfig の前に
#!/sh $ sudo cp configs/kernel-VERSION-ARC.config .config $ sudo make oldconfig
とすると、あらかじめ Vine Linux 用に設定されたものを用いることができます。 そのあとで make menuconfig などを行って自分好みの設定を行ってください。
/ (ルートパーティション)が SCSI ディスク上や SATA のディスク上にある場合は
$ sudo /sbin/mkinitrd /boot/initrd-VER.img VER
を実行します。
最後に作成された vmlinuz と System.map を /boot にインストールします。
$ sudo make install
/boot/vmlinuz と /boot/System.map といったようにバージョンなどのつかない名前になるので、必要であれば
$ sudo cp /boot/vmlinuz /boot/vmlinuz-VER-REL $ sudo cp /boot/System.map /boot/System.map-VER-REL
のようにバージョンも付けた名前でコピーを作成してください。
以上の作業が終了したら、新しいカーネルで起動できる様に/boot/grub/menu.lstを編集してください。