diary/Kojima

・Plamo Linuxのカーネルパッケージの更新方法.

Plamo Linuxの場合,カーネルのパッケージはバイナリイメージ本体とヘッダーファイル, ソースコードの3つに分かれており,64ビット版のPlamo-5.2の場合, バイナリイメージは 00_base/kernel-3.12.5_plamo64-x86_64-P1.txz, ヘッダーファイルは 01_minimum/devel.txz/kernel_headers-3.12.5_plamo64-i386-P1.txz, ソースコードは 09_kernel/kernelsrc-3.12.5_plamo64-noarch-P1.txz, という構成になっている.

これらのパッケージも,通常のパッケージ同様, updatepkgコマンドで更新することはできるものの, カーネル本体(バイナリイメージ)を更新した場合, ブートローダの設定ファイルを調整してやる必要がある.

また,何らかのトラブルがあって新しいカーネルでは起動しない場合に備え, カーネル本体は updatepkg で入れ替えてしまうのではなく, 動作している既存のカーネルと共存させることがお勧め. そのための方法は以下のとおり.

Plamo Linuxのパッケージ管理システムでは, インストール済みのパッケージは/var/log/packages/に パッケージのベース名(カーネル本体の場合はkernel)で記録されており, updatepkg等はこのディレクトリを調べて同じベース名のパッケージがインストール済みならば それを削除してから新しいパッケージをインストールする.

そのため,ここに記録されているパッケージのベース名を別の名前に変えてしまえば, 同じベース名の複数のパッケージを共存させることが可能になる. 例えば,以下ではファイル名にカーネルのバージョンを付記することで, ベース名が異なるようにしている.

# ls /var/log/packages | grep kernel
kernel
kernel_headers
# mv /var/log/packages{,-`uname -r`}
# ls /var/log/packages | grep kernel
kernel-3.9.3-plamo64
kernel_headers

こうしておけば,古いカーネルパッケージ(kernel-3.9.3_plamo64-x86_64-P1.txz)を削除しなくても, 新しいカーネルパッケージをインストールすることができる.

# installpkg kernel-3.12.5_plamo64-x86_64-P1.txz
kernel-3.12.5_plamo64-x86_64-P1 のインストール中 
PACKAGE DESCRIPTION:
..
# ls /var/log/packages | grep kernel
kernel
kernel-3.9.3-plamo64
kernel_headers

この結果,/boot以下にも2種のカーネルが存在することになる.

# ls /boot
System.map@                config@                diag1.img  inside.bmp    vmlinuz@
System.map-3.12.5-plamo64  config-3.12.5-plamo64  diag2.img  onlyblue.bmp  vmlinuz-3.12.5-plamo64
System.map-3.9.3-plamo64   config-3.9.3-plamo64   grub/      tuxlogo.bmp   vmlinuz-3.9.3-plamo64

起動時のカーネルを読み込むブートローダに,新しくインストールしたカーネルを読みこむ設定を追加する. ブートローダにgrubを使っている場合,設定ファイルは /boot/grub/grub.cfg. このファイルで,カーネルを読み込んでいるのは以下の部分.

63  ### BEGIN /etc/grub.d/10_linux ###
64  menuentry 'Plamo Linux' --class plamo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-3d357515-123b-4489-bb5c-034da40d0e30' {
65          load_video
66          set gfxpayload=keep
67          insmod gzio
68          insmod part_msdos
69          insmod ext2
70          set root='hd0,msdos1'
71          if [ x$feature_platform_search_hint = xy ]; then
72            search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  3d357515-123b-4489-bb5c-034da40d0e30
73          else
74            search --no-floppy --fs-uuid --set=root 3d357515-123b-4489-bb5c-034da40d0e30
75          fi
76          echo    'Linux 3.9.3-plamo64 をロード中...'
77          linux   /boot/vmlinuz-3.9.3-plamo64 root=/dev/sda1 ro  vga16 unicon=eucjp vt.default_utf8=0 panic_output=7
78  }

この部分をcut & pasteして新しいカーネル用の設定を追加する. 具体的には64行目の"menuentry.."から78行目までをコピーすることになる. viを使える人なら64行目で15yして,PすればOK.

修正が必要なのはロードするカーネルの名前(vmlinuz-3.12.5-plamo64)と, それを選択するための menuentry の名称で,修正後のgrub.cfgの該当部分はこんな感じ.

63  ### BEGIN /etc/grub.d/10_linux ###
64  menuentry 'kernel 3.12.5' --class plamo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-3d357515-123b-4489-bb5c-034da40d0e30' {
65          load_video
66          set gfxpayload=keep
67          insmod gzio
68          insmod part_msdos
69          insmod ext2
70          set root='hd0,msdos1'
71          if [ x$feature_platform_search_hint = xy ]; then
72            search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  3d357515-123b-4489-bb5c-034da40d0e30
73          else
74            search --no-floppy --fs-uuid --set=root 3d357515-123b-4489-bb5c-034da40d0e30
75          fi
76          echo    'Linux 3.12.5-plamo64 をロード中...'
77          linux   /boot/vmlinuz-3.12.5-plamo64 root=/dev/sda1 ro  vga16 unicon=eucjp vt.default_utf8=0 panic_output=7
78  }
79  menuentry 'kernel 3.9.3' --class plamo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-3d357515-123b-4489-bb5c-034da40d0e30' {
80          load_video
81          set gfxpayload=keep
82          insmod gzio
83          insmod part_msdos
84          insmod ext2
85          set root='hd0,msdos1'
86          if [ x$feature_platform_search_hint = xy ]; then
87            search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  3d357515-123b-4489-bb5c-034da40d0e30
88          else
89            search --no-floppy --fs-uuid --set=root 3d357515-123b-4489-bb5c-034da40d0e30
90          fi
91          echo    'Linux 3.9.3-plamo64 をロード中...'
92          linux   /boot/vmlinuz-3.9.3-plamo64 root=/dev/sda1 ro  vga16 unicon=eucjp vt.default_utf8=0 panic_output=7
93  }

これで再起動すると,grubのメニュー画面に"kernel 3.12.5"が出るようになり, それを選べば新しいカーネルで起動するはず.

plamo51_64_update.png

ここ長いことブートローダに lilo は使ってないので,liloの場合の方法は紹介できないのだけど, /etc/lilo.conf(だったか?) で同様に新しい設定を追加してから, "lilo"コマンドを実行することをお忘れなく.

lilo の場合は /boot/vmlinuz を見てたはずなので,lilo.conf をイジらずに lilo を実行するだけで
新しいカーネルを読み込むようになる気はする.

残りのkernel_headersとkernelsrcパッケージは特に古いのを残しておく意味もないので, updatepkgで古いパッケージは削除して更新すればいい.



添付ファイル: fileplamo51_64_update.png 190件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:42