创建一个新的初始化用 RAM 磁盘映像

假如你更换了底板,或者把碟盘转到另一个系统,它可能会由于初始化用的 RAM 磁盘映像(initrd)内欠缺合适的驱动程序而不能引导。

<!> 注:此文章只适用于 CentOS-5 或更早版本。CentOS-6 采用 dracutinitramfs。请参阅 man dracut上游的部署指南

在修复模式下引导

请执行以下步骤:

  1. 以 CentOS 的安装碟开机(例如首张 CD 或 DVD)。
  2. boot: 提示符输入 linux rescue

  3. 以读写模式挂载所有文件系统。

创建新的 initrd

  1. 把根目录改为你硬盘上的正式根目('/')并创建 initrd。(这个样例采用截至本文最新版的 CentOS 5.5 内核。请按你现有的内核作出修改。)
    mount --bind /proc /mnt/sysimage/proc
    mount --bind /dev /mnt/sysimage/dev
    mount --bind /sys /mnt/sysimage/sys
    chroot /mnt/sysimage
    cd /boot
    mv initrd-2.6.18-194.32.1.el5.img initrd-2.6.18-194.32.1.el5.old.img
    mkinitrd initrd-2.6.18-194.32.1.el5.img 2.6.18-194.32.1.el5
     
    要是你正在利用 Xen 监督器把一台实体机器迁转到虚拟机器,请将上述最后一个指令改为:
    mkinitrd --with-xenblk initrd-2.6.18-194.32.1.el5xen.img 2.6.18-194.32.1.el5xen
     

    还有很多选项可供应用,例如手动地加入为未被装入的模块。详情请参阅 man mkinitrd。视乎安装的细节,你可能会须要修改 /boot/grub/grub.conf 及/或 /etc/fstab。这关乎你在文件内采用的是 LABEL 及/或 UUID 还是实体设备,而它的复杂情度已不宜在一篇提示与技巧文章内详细讨论。

  2. 重新开机
    cd /
    sync; sync; sync
    telinit 6
     


这页的英文版由 PhilSchaffner 创建及维护。欢迎其它 Wiki 贡献者作出更正、添加或修改。

本页的灵感来自这个 论坛议题。该议题内备有更多讨论。

Translation of revision 8

zh/TipsAndTricks/CreateNewInitrd (last edited 2012-03-28 02:23:58 by TimothyLee)