建立一個新的起始用 RAM 磁碟映像
假如你更換了底板,或者把碟盤移至另一個系統,它可能會由於起始用的 RAM 磁碟映像(CentOS 6 用 initramfs,CentOS 5 用 initrd)內欠缺合適的驅動程式而無法啟動。
1. 在修複模式下啟動
- 以 CentOS 的安裝碟開機(例如首張 CD 或 DVD)。
在 boot: 提示符輸入 linux rescue。
- 以讀寫模式掛載所有檔案系統。
2. 建立新的 initramfs 或 initrd
把根目錄改為你硬盤上的正式根目('/')並建立新的 initramfs 或 initrd。
mount --bind /proc /mnt/sysimage/proc mount --bind /dev /mnt/sysimage/dev mount --bind /sys /mnt/sysimage/sys chroot /mnt/sysimage
在採用多路徑主目錄('/')的 CentOS7 下,請先執行以下指令,然後才 chroot 進入 '/mnt/sysimage':
mount --bind /run /mnt/sysimage/run systemctl start multipathd.service
在 CentOS 6 下:
為現有的 initramfs 建立備份:
cp -p /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
為現時採用的內核建立 initramfs:
dracut -f
假如你要針對特定的內核版本(請修改版本編號):
dracut -f /boot/initramfs-2.6.32-358.el6.x86_64.img 2.6.32-358.el6.x86_64
你可考慮加入 -H(--hostonly)輔助選項。採用它時,dracut 便只會安裝啟動你的系統時所需的東西。否則,dracut 預設會在 initramfs 內加入大量驅動程式,令 initramfs 的體積不必要地增大。你還可添加其它選項。請參閱 man dracut 及上游的部署指南。
在 CentOS 5 下:
為現有的 initrd 建立備份:
cp -p /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bak
為現時採用的內核建立 initrd:
mkinitrd -f -v /boot/initrd-$(uname -r).img $(uname -r)
假如你要針對特定的內核版本(請修改版本編號):
mkinitrd -f -v /boot/initrd-2.6.18-371.el5.img 2.6.18-371.el5
如果你要透過 Xen 監督器把一台實體機器遷移至虛擬機器,請將前一個指令改為:
mkinitrd --with-xenblk initrd-2.6.18-371.el5xen.img 2.6.18-371.el5xen
你還可添加其它選項,例如手動地增加未被載入的模塊。詳情請參閱 man mkinitrd。視乎安裝的細節,你可能會須要修改 /boot/grub/grub.conf 及/或 /etc/fstab。這關乎你在檔案內採用的是 LABEL 及/或 UUID 還是實體裝置,而它的複雜情度已不宜在一篇提示與技巧文章內詳細討論。
重新開機
cd / sync telinit 6
這頁的英文版由 PhilSchaffner 建立。歡迎其他 Wiki 貢獻者作出更正、添加或修改。
本頁的靈感來自這個 論壇議題。該議題內備有更多討論。
Translation of revision 23