Linuxは、OSの起動時に、ハードディスクをsda*、sdb*、sdc*1...のように認識していきます。
マザーボードのハードディスク接続ポートが変わると、OSが認識するハードディスクのデバイス名が変わり、
/や、SWAP領域が認識できず、OSの起動が途中停止する場合がでます。
OS起動時に読み込まれる (1)initrd、(2)fstab や、(3) grub.conf で変更の出た箇所を再編集すればよいですが、
ラベル(ボリュームラベル)を使うと接続ポートの変更にある程度柔軟に対応できるようになります。但し、
ユーザーが意図的に設定したものは、ユーザーが再設定しなければなりません。
【1】LABELの編集
1_1 /(root)パーティションにLABEL[ROOT]をつける
# e2label /dev/sd** ROOT
1_2 swapパーティションにLABEL[SWAP]をつける
# swapoff /dev/hd**
# mkswap -L SWAP /dev/hd**
# swapon LABEL=SWAP
【2】/etc/fstabの編集
LABEL=ROOT / ext3 defaults 1 1
LABEL=SWAP swap swap defaults 0 0
【3】initの編集
1_1 現在のinitrdイメージの展開
/boot/initrdフォルダを作りそこに展開
#cd /boot
#mkdir initrd
#cd /boot/initrd
#zcat ../initrd.img | cpio -i -c
1_2 initの編集
展開フォルダのinitファイルを編集
編集箇所は以下の部分
...
resume LABEL=SWAP
echo Trying to resume from swap:LABEL=SWAP.
echo swap:LABEL=SWAP > /sys/power/tuxonice/resume
このリダイレクトの部分にラベルを使うとハイバネードがうまく機能しないような?
そのときは echo swap:/dev/sda2 > /sys/power/tuxonice/resume のようにその時点のデバイスパスで指定
mkrootdev -t ext3 -o defaults,ro LABEL=ROOT
...
【注】
1_3 新しいinitrdイメージファイルの作成
ここまでの流れで/boot/initrdに展開されているので
/bootにinitrd-new.imgとして新しく作成
#cd /boot/initrd
#find . | cpio --quiet -c -o | gzip -c > ../initrd-new.img
既存のinitrd-3.*.**-****.imgの名前を変更し、initrd-new.imgをinitrd-3.*.**-****.imgとする。
【4】/boot/grub/grub.confの編集
...
title Vine Linux (Current kernel)
root (hd0,0)
kernel /boot/vmlinuz ro root=LABEL=ROOT resume=swap:LABEL=SWAP vga=0x314 splash=silent quiet
ルートやレジュームの指定はこの後のinitrd.imgでも指定されるので無くて...
kernel /boot/vmlinuz vga=0x314 splash=silent quiet
...これだけで、いいような?
initrd /boot/initrd.img
...
補足
以上の作業は、変更後のデバイス名(/dev/sdb2など)がわからないと設定できません。
私は、Vine Linuxの起動時にGRUB環境などからデバイス名を知る方法を知りません。
(FreeBSDのように、デバイス名認識不整合変更で起動できない場合は、
そこから認識デバイスを取得し、rootパスを変更指定して起動...というような方法)
予測がつかない場合は、VineLinux6.1のインストールディスクを起動しレスキューモードの
ターミナルを使って、fdisk -l で取得したりします。
レスキューモードのターミナルで上の設定上の作業も可能ですが、GUIのほうが楽なので、
ターミナル環境で変更後のデバイス名だけ調べて、GUIな旧環境で新環境への設定をし、
新環境のテスト起動に成功した中で本設定するという手順をとります。
|