这几天玩了一下kexec

kexec 是一个快速重启动 Linux 系统的工具,其快速主要体现在是从内核开始启动而不是从硬件初始化开始,在当今硬件越来越复杂,开机自检越来越慢的条件下,kexec 可算是提高生产力的一大发明。

kexec 的操作分为两步:

  1. 加载内核到内存
  2. 运行刚才加载的内核

第一步的语法为 kexec -l  内核文件名 –initrd=initrd文件名 –append=内核参数。注意等号必不可少,否则,虽然 kexec 不报错,但是内核启动时会失败;第二部用 kexec -e 即可。通过查看 /sys/kernel/kexec_loaded 的内容可以判断是否已经加载内核。

目前遇到的问题有这几个:

  1. cciss HP SmartArray驱动在重启内核时会失败,导致无法正常进行下去
  2. 没搞明白如何用 kexec 加载 xen hypervisor

相信很快就会搞明白的。

同时提一下,发行版提供的 kexec 软件包带有 /etc/init.d/ 脚本,可以把正常的 reboot 操作转变成 kexec 重启,从而加快速度。但是对于个人计算机、双操作系统的使用者来说,因为这样越过了 grub 阶段,所以无法正常进入另外一个操作系统。解决方法是修改 /etc/default/kexec 文件中的参数,禁止 /etc/init.d/kexec-load 脚本在关机前加载内核。

This entry was posted in 默认分类 and tagged , , , , . Bookmark the permalink.

3 Responses to 这几天玩了一下kexec

  1. suchasplus says:

    你果然玩了不少的虚拟化

  2. adoal says:

    无责任猜测,kexec无法加载xen hypervisor

  3. wilbur says:

    kexec这东西不成熟,针对特定体系的代码太多。我指的是内核里负责搬运的那块代码。 还有就是,设计到嵌入式的kexec支持,由于标准kexec工具只支持elf格式的镜像,所以对于uImage等格式,还需要额外添加gzip解压代码。我这几天正在做。

Leave a Reply

Your email address will not be published. Required fields are marked *