%================================================================= % EP サーバ トラブルカルテ % 日付 : 2008/08/30 % サーバ : REAL % 文責 : 吉田 %----------------------------------------------------------------- 本ドキュメントは 2008/08/30 に REAL を襲った悲劇からの復活の記録である. ■ 経緯 この症状はトラブルカルテ 2008/08/27 の続きでもある. 前回の対応として カーネルのバージョンを 2.6.8 から 2.6.18-6-686 をアップグレードにした. ■ 症状 起動時にシステムをインストールしてある /dev/hda1 が見当たらないとして 以下のメッセージが表示され、止まってしまう. Begin: Waiting for root file system... ... Done. Check root0 booting cat /proc/cmdline or missing modules, devices: cat /proc/modules ls /dev ALERT! /dev/hda1 does not exist. Dropping to a shell! BusyBox v1.1.3 (Debian 1:1.1.3-4) Built-in shell (ash) Enter 'help' for a list of built-in commands. /bin/sh: can't access tty; job control turned off (initramfs) ■ 原因 SATA のディスクが SCSI として認識される. 2.6 系カーネルの仕様がそうなっている. 参考: epcore-ml 6981 [Debian GNU/Linux 4.0 ("Etch" リリースノート (Intel x86 用) - etch で知っておくべき問題点 -- 2.6 系カーネルへのアップグレード] http://www.debian.org/releases/stable/i386/release-notes/ch-information.ja.html#s-upgrade-to-2.6 ■ 対応 1. /boot/grub/menu.lst を編集する menu.lst 内の 2.6.18-6-686 のところの kernel の項目を変更 =変更前= title Debian GNU/Linux, kernel 2.6.18-6-686 root (hd0,0) kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/hda1 ro initrd /boot/initrd.img-2.6.18-6-686 ^^^^ savedefault title Debian GNU/Linux, kernel 2.6.18-6-686 (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/hda1 ro single initrd /boot/initrd.img-2.6.18-6-686 ^^^^ savedefault =変更後= title Debian GNU/Linux, kernel 2.6.18-6-686 root (hd0,0) kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/sdb1 ro initrd /boot/initrd.img-2.6.18-6-686 ^^^^ savedefault title Debian GNU/Linux, kernel 2.6.18-6-686 (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.18-6-686 root=/dev/sdb1 ro single initrd /boot/initrd.img-2.6.18-6-686 ^^^^ savedefault 2. /etc/fstab を編集 hda1, hda2, hda3 を sdb1, sdb2, sdb3 に変更 =変更前= # proc /proc proc defaults 0 0 /dev/hda1 / ext3 defaults,errors=remount-ro 0 1 /dev/hdb /media/cdrom0 iso9660 ro,user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 /dev/hda2 /home ext3 defaults 0 2 /dev/sda1 /work ext3 defaults 0 2 /dev/hda3 /work.bk-2 ext3 defaults 0 2 #/dev/hdc1 /work.bk-1 ext2 defaults 0 2 =変更後= # proc /proc proc defaults 0 0 /dev/sdb1 / ext3 defaults,errors=remount-ro 0 1 /dev/hdb /media/cdrom0 iso9660 ro,user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 /dev/sdb2 /home ext3 defaults 0 2 /dev/sda1 /work ext3 defaults 0 2 /dev/sdb3 /work.bk-2 ext3 defaults 0 2 #/dev/hdc1 /work.bk-1 ext2 defaults 0 2 ■ 問題解決の糸口 dmesg で起動時のログのでバイスの認識のところを見ると, hda ではなく sdb として認識されていた. ■ 今後への課題 fstab でデバイスファイルを指定するときに UUID を用いる.