linuxカーネルをアップデートする時のメモ
今回はlinux-3.2.12-gentooからlinux-3.2.21-gentooに移行します
それではそのやり方を書いていきます
前提
linux-3.2.21-gentooなどの最新のカーネルと現在のカーネルのソースが
/usr/src
にあることが前提です
# emerge "sys-kernel/gentoo-sources"
などをしていれば通常はここに入っているはずです
シンボリックリンクの貼り直し
# sudo eselect kernel list Available kernel symlink targets: [1] linux-3.2.12 [2] linux-3.2.12-gentoo * [3] linux-3.2.21 [4] linux-3.2.21-gentoo
現在はlinux-3.2.12-gentooになっているらしいですが
linux-3.2.21-gentooにしたいので
左に書いてある[4]の数字を指定します
# sudo eselect kernel set 4
そして変更されているか確認します
# eselect kernel list Available kernel symlink targets: [1] linux-3.2.12 [2] linux-3.2.12-gentoo [3] linux-3.2.21 [4] linux-3.2.21-gentoo *
表示では設定できていますが念の為確認します
% ls -ld /usr/src/linux lrwxrwxrwx 1 root root 19 Jul 15 02:00 /usr/src/linux -> linux-3.2.21-gentoo
makeをする
それではカーネルソースのあるディレクトリに移動して
コピーした設定ファイルを最新のに合わせます
% cd /usr/src/linux # make oldconfig
今回は特に設定が変更なかったようなので何も出ませんでした
変更があった場合は出るらしいですがまだ遭遇したことがないので
出た場合は各自調べて下さい
次はコンパイルをします
# make
をするだけで色々とコンパイルができますが
私はccacheを使いたいのと、かかった時間も知りたいので
# time sudo sh -c 'CCACHE_DIR="/var/tmp/ccache" make -j2 CC="ccache gcc" HOSTCC="ccache gcc" HOSTCXX="ccache g++"'
こんな感じでやることにしてます*1
後は色々と出来上がったら色々と配置させます
# make modules_install
これでモジュールを配置できます
後は必要に応じて/bootをマウントします
私の場合は以下のようになります
# mount /dev/sda1 /boot
カーネルも配置しますがi386のCPUの種類の表記やファイル名などは個人に合わせてください
# cp ./arch/i386/boot/bzImage /boot/linux-3.2.21-gentoo
後はブートローダーの設定にこのカーネルを追加しておきます
私はgrubを使っているのでgrubの説明になりますが
liloなどを使っている人は各自、既にある設定を参考にいじってください
# vim /boot/grub/grub.conf
vimと書かれているのはエディタであれば何に置き換えてもいいです
ここでは以前の私のgrub.confを例に説明します
timeout 10 default 0 fallback 1 splashimage=(hd0,0)/grub/splash.xpm.gz title Gentoo Linux (linux-3.2.12-gentoo) 1280x1024-32 splash off root (hd0,0) kernel /linux-3.2.12-gentoo root=/dev/sda3 video=uvesafb:1280x1024-32,mtrr:3,ywrap title Gentoo Linux (linux-3.2.12-gentoo) 1280x1024-32 splash on root (hd0,0) kernel /linux-3.2.12-gentoo root=/dev/sda3 video=uvesafb:1280x1024-32,mtrr:3,ywrap splash=silent,theme:natural_gentoo console=tty1 initrd /initrd-splash.gz title Gentoo Linux (linux-3.2.12-gentoo) old root (hd0,0) kernel /linux-3.2.12-gentoo-old root=/dev/sda3 video=uvesafb:1280x1024-32,mtrr:3,ywrap
簡単に説明すると
timeoutはカウントダウンの時間
defaultはカウントダウン終了後に自動で起動するカーネル。この数字はtitle〜を上から順番に0,1,2,3,4...としたもの
fallbackはdefaultのカーネルの起動に失敗した場合に起動するカーネル。これもdefaultと同じように数字を指定する
splashimageは背景を指定する
次にカーネルの設定をするのだけれどこれらは空改行をして区切る
titleは選択する時に出る名前
rootはhddの場所
kernelはカーネルの場所とその他オプション
それで、今回のケースだと問題があった場合に困るから過去のカーネルは残したまま
新しいカーネルを追加します
なので既にある今起動しているカーネルの設定をコピーして
kernel /ほにゃらら
の箇所だけをいじれば大抵はこれで良いです
timeout 10 default 0 fallback 1 splashimage=(hd0,0)/grub/splash.xpm.gz title Gentoo Linux (linux-3.2.21-gentoo) 1280x1024-32 splash off root (hd0,0) kernel /linux-3.2.21-gentoo root=/dev/sda3 video=uvesafb:1280x1024-32,mtrr:3,ywrap title Gentoo Linux (linux-3.2.12-gentoo) 1280x1024-32 splash off root (hd0,0) kernel /linux-3.2.12-gentoo root=/dev/sda3 video=uvesafb:1280x1024-32,mtrr:3,ywrap title Gentoo Linux (linux-3.2.12-gentoo) 1280x1024-32 splash on root (hd0,0) kernel /linux-3.2.12-gentoo root=/dev/sda3 video=uvesafb:1280x1024-32,mtrr:3,ywrap splash=silent,theme:natural_gentoo console=tty1 initrd /initrd-splash.gz title Gentoo Linux (linux-3.2.12-gentoo) old root (hd0,0) kernel /linux-3.2.12-gentoo-old root=/dev/sda3 video=uvesafb:1280x1024-32,mtrr:3,ywrap
私の場合はこのようになります
最初のtitle〜から3行を追加しました
ちなみに後ろのパラメータを説明すると
rootで/ディレクトリを指定して
videoで解像度や使うドライバを指定してます
後は再起動をして新しいカーネルで起動したら
% uname -a
これでバージョンが新しいものに変わっているか確認するだけです
*1:これで正しいのかしりません