備えあれば,憂い無し: 不測の事態に備え,予備カーネルを用意する. (ArchLinux)

概要

カーネルアップデートに失敗して,Linuxが起動できない,という状況を回避するため,

予備のカーネルを用意する.

カーネルの調達方法はいくつかあるが,今回はABSを利用して,自分でビルドすることを考える.

予備カーネルを用意する方法

3つ方法を知っている.

1) パッケージにあるkernel26-ltsを利用する.

2) 自分でABSを利用してビルドする.

2.5) 自分でABSを利用しないでビルドする.

3) /boot にあるファイルをバックアップしおく.例えば,kernel26.img → kernel26-backup.imgなど.

可能ならば,1) の方法を利用すべき.一番簡単(カーネルの再コンパイルが不要)で,安全だと思う.

ただ,kernelのヴァージョンが2.6.27なのが,自分にとっては都合が悪い.現在使用しているファイルシステム(squashfs)をサポートしてない.よって,結局パッチをあてて,カーネルを再コンパイルが必要.

どうせ,再コンパイルするならば,現在快調に動作している2.6.32を再コンパイルする.楽をするために,ABSを利用する.

3) の方法は試したことがないので,本当に大丈夫か定かではない.ただ,個人的には問題ないのではと高をくくっている.

step 1: copy and eidt files

cp -r /var/abs/core/kernel26 .
mv kernel26 kernel26-second
cd kernel26-second

PKGBUILDを編集する.パッケージ名はkernel26-secondにした.

% diff PKGBUILD PKGBUILD.original
5c5

< pkgname=('kernel26-second' 'kernel26-firmware' 'kernel26-second-headers') # Build stock -ARCH kernel

> pkgname=('kernel26' 'kernel26-firmware' 'kernel26-headers') # Build stock -ARCH kernel 55c60

< package_kernel26-second() {

> package_kernel26() { 102,103c107,108 < package_kernel26-second-headers() {

< pkgdesc="Header files and scripts for building modules for kernel26-second"

> package_kernel26-headers() { > pkgdesc="Header files and scripts for building modules for kernel26"

step 2: kernel config

必須ではない.しかし,どうせ再コンパイルするなら,少しは設定を変更しないと損した気分になる.

makepkg -o
cd src/linux-2.6.32
cp ../config ./.config
make prepare
make gconfig

make menuconfigでも良い.自分はヘルプが常時,下に表示される gconfigが良い.

再設定した .config は もとの場所に config という名前(もとの名前)で戻しておく.

Processor Type and features

  • Processor family を Core 2/newer Xeon に.
  • Maximum number of CUPs を 2 に.
  • Preemption Model を Voluntary Kernel Preemption に.
  • Toshiba Laptop support, Dell laptop support を N に.

Networking support

  • IrDA (infrared) subsystem support (赤外線) は N に.
  • Plan 9 Resource Sharing Support を N に.

Device Drivers

  • Misc devices を N に.
  • ATA/ATAPI/MFM/RLL support を N に(多分,SATAだけで大丈夫だと思う).
  • Multiple devices driver support
    • RAID support を N に.
  • <li>
      Network device support <ul>
        <li>
          Ethernet (10 or 100Mbit) を N に.
        </li>
        <li>
          Ethernet (1000 Mbit) は,Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support (E1000E)以外 N に.
        </li>
        <li>
          Ethernet (10000 Mbit) を N に.
        </li>
        <li>
          Wireless は ATH5K 以外 N に.
        </li>
      </ul>
    </li>
    
    <li>
      Hardware Monitoring support <ul>
        <li>
          Intel core 2 以外 N に.
        </li>
      </ul>
    </li>
    
    <li>
      X86 Platform Specific Device Drivers は N に.
    </li>
    

configが変更されたので,PKGBUILDのmd5sumを対応して変更する

cd ../..
makepkg -g >> PKGBUILD
vim PKGBUILD

step 3: build and install

makepkgして、pacman -Uすれば良い.

最後に/boot/grub/menu.listに予備のカーネルを追加しておく.

title  Arch Linux Second Kernel
root   (hd0,2)
kernel /vmlinuz26-second root=/dev/sda6 resume=/dev/sda5 ro vga=792 i915.modeset=0
initrd /kernel26-second.img

一応,再起動して,予備のカーネルが正常に動作するかチェックする.