因為有公告今天停電的關係,
昨天特別把其中一台更新比較頻繁的 Gentoo 試重開,
結果開不起來,
今天跑去看了一下發現 /dev/sd* 全部消失了,
開機開到 fsck 的時候出現 cannot open device xxx 這樣,
因為以前也被 udev 炸過所以大概猜得出是 udev 更新的問題。
解決方法大致上是:
- 先用 udevadm test /sys/block/xxx 把 /dev/xxx 重新生出來,大致上的下法就是:
udevadm test /sys/block/sda
udevadm test /sys/block/sda/sda1
udevadm test /sys/block/sda/sda2
udevadm test /sys/block/sda/sda3
... - 用 mount -a 把全部的 partitions 掛上去。
要是 / 還是唯讀,輸入 mount -o remount,rw / 把它掛成可以寫入。 - 去 /etc/init.d 下把沒打開的東西通通開一開,像是網路跟 sshd。
- 更新 kernel 設定檔,用老方法 make menuconfig 進入文字模式選單,然後:
- 聽說換成這種新設定以後,hda hdb 這類命名方式都會被改成 sda sdb,必須去更新一下 grub.conf 和 fstab 等等的設定檔。
不過這應該是單顆 PATA/SATA 硬碟才會遇到,我是 hardware RAID 所以原本都是 sda sdb 這種命名規則不必動它。 - 重開機,應該就會抓到了。
取消萬惡的 CONFIG_SYSFS_DEPRECATED_V2:
General setup --->
[ ] enable deprecated sysfs features which may confuse old userspace tool
把舊的 CONFIG_IDE 拔掉換成新的 CONFIG_ATA (在 2.6.33 版之後的 kernel 會正式把 CONFIG_IDE 給 deprecated 掉):
Device Drivers --->
< > ATA/ATAPI/MFM/RLL support --->
<*> Serial ATA (prod) and Parallel ATA (experimental) drivers --->
然後進去 CONFIG_ATA 的子選單把認為該勾的勾一勾就能存檔出去重編 kernel 安裝了。