转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4187846

快速启动机制:允许通过已经运行的Linux内核的上下文启动另一个Linux内核,不需要经过BIOS。BIOS可能会消耗很多时间,特别是带有众多数量的外设的大型服务器。这种办法可以为经常启动机器的开发者节省很多时间。

1.使用该机制要满足两个基本条件
1)内核版本必需为2.6.13以上,因为自该版本起,linux内核中加入了kexec system call模块。
2)系统需要安装 kexec-tools工具,提供用户空间的kexec命令。
    $sudo apt-get install kexec-tools

2.如何配置快速启动机制
1)确定正在运行的内核是否已经选中支持kexec system call
    $grep -F CONFIG_KEXEC /boot/config-`uname -r`
如果返回值是CONFIG_KEXEC=y,则表示支持。如果是CONFIG_KEXEC=n,则需要重新编译内核,将该项选为y。
2)配置内核
    $sudo make menuconfig,
    #进入Processor type and features ,然后在kexec system call选项处按y即可。
3)编译内核 
    $sudo make 
4)把内核装到/lib/modules/下
    $sudo make modules_install
5)执行该命令后,会在/boot/下生成内核映像和文件系统
    $sudo make install
在sudo make install后,/boot/grub/grub.cfg文件已经被更新,显示如下:
menuentry 'Ubuntu,Linux 3.2.0-60-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos7)'
    search --no-floppy --fs-uuid --set=root 7883ab54-521c-444d-b59f-32c08a843e3a
    linux    /boot/vmlinuz-3.2.0-60-generic root=UUID=7883ab54-521c-444d-b59f-32c08a843e3a ro   crashkernel=384M-2G:64M,2G-:128M quiet splash $vt_handoff
    initrd    /boot/initrd.img-3.2.0-60-generic
}
menuentry 'Ubuntu, with Linux 3.2.0-60-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos7)'
    search --no-floppy --fs-uuid --set=root 7883ab54-521c-444d-b59f-32c08a843e3a
    echo    '载入 Linux 3.2.0-60-generic ...'
    linux    /boot/vmlinuz-3.2.0-60-generic root=UUID=7883ab54-521c-444d-b59f-32c08a843e3a ro recovery nomodeset 
    echo    '载入初始化内存盘...'
    initrd    /boot/initrd.img-3.2.0-60-generic
}

3.kexec装载内核的语法如下:
kexec -l --append="" --initrd=
说明:
是要重新启动后的内核文件
是要传递到新内核的命令行参数。为确保合法值传递到重新启动的内核,安全方法是传递/proc/cmdline的内容。
是新内核使用的文件系统
例如:
原内核映像(正在运行的内核)/boot/vmlinuz-3.2.0-24-generic
原文件系统(正在运行的文件系统)/boot/initrd.img-3.2.0-24-generic
新内核映像(要加载的内核)/boot/vmlinuz-3.2.0-60-generic
新文件系统(要加载的文件系统)/boot/initrd.img-3.2.0-60-generic
1)装载内核的命令:
    $sudo kexec -l /boot/vmlinuz-3.2.0-60-generic --append="`cat /proc/cmdline`" --initrd=/boot/initrd.img-3.2.0-60-generic
2)重启已装载的内核:
    $sudo kexec -e
系统将立即重新启动。不同于正常的重新启动过程,在重新启动之前,kexec 不去执行彻底停止系统。需要您在尝试进行 kexec 重新启动之前去杀死所有应用程序并加载文件系统。

4.补充
新加载的内核可以是当前内核本身/boot/vmlinuz-3.2.0-24-generic,这样可以不停的加载切换。如果加载的是没有编入kexec system call的内核,那么切换之后就不能再次切换了,因为正在运行的内核不支持kexec。

Linux系统的快速启动机制(内核切换) 【转】的更多相关文章

  1. Linux系统入门---开机启动流程

    目录 Linux系统入门---开机启动流程 一.centos6 二.systemd管理进程 1.查看级别 三.centos7实践案例: 1.案例1:centos7系统,单用户修改root密码 案例2: ...

  2. Linux系统的开机启动顺序

    Linux系统的开机启动顺序加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,3是多用 ...

  3. 不同linux系统添加开机启动程序的命令

    see http://phpcj.org/blog/%E4%B8%8D%E5%90%8Clinux%E7%B3%BB%E7%BB%9F%E6%B7%BB%E5%8A%A0%E5%BC%80%E6%9C ...

  4. windows系统的快速失败机制---fastfail

    windows系统的快速失败机制---fastfail,是一种用于“快速失败”请求的机制 — 一种潜在破坏进程请求立即终止进程的方法. 无法使用常规异常处理设施处理可能已破坏程序状态和堆栈至无法恢复的 ...

  5. Linux系统xinetd服务启动不了

    Linux系统xinetd服务启动不了 xinetd服务时发现xinetd服务启动不了,并出现错误提示xinetd:unrecognized service,当出现这个错误提示的时候说明系统未安装xi ...

  6. Linux系统下,启动Tomcat有时报Address already in use

    一.Linux系统下,启动Tomcat有时报Address already in use<null>... 1.那是因为你的tomcat已经启动了tomcat自带的关闭脚本,有时候关闭看上 ...

  7. Linux系统的数据写入机制--延迟写入

    我们都知道,在Linux关机的之前都会要运行一个命令那就是sync,这个命令是同步的意思,那为什么要运行这个?而且之前的数据改变我们已经看见了,为什么还要运行这个命令?要回答这个问题就要说一下Linu ...

  8. Linux系统SCSI磁盘扫描机制解析及命令实例(转)

    转载请在文首保留原文出处:EMC中文支持论坛 介绍 Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命 ...

  9. Linux系统SCSI磁盘扫描机制解析及命令实例

    介绍Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命令是什么?本文总结了Linux主机对磁盘设备进行 ...

随机推荐

  1. Daily Scrum - 12/07

    Meeting Minutes 确认基本完成了UI组件的基本功能的动画实现: 准备开始实行UI组件的合并: 讨论了长期计划算法的难点,以及简单版本的实现方案. 督促大家更新TFS: Burndown ...

  2. RYU 灭龙战 third day

    RYU 灭龙战 third day 前言 传统的交换机有自学习能力.然而你知道在SDN的世界里,脑子空空的OpenFlow交换机是如何学习的吗?今日说法带你领略SDN的mac学习能力. RYUBook ...

  3. Beta版本冲刺(五)

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:恺琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  4. 微信小程序简易table组件实现

    前提:微信小程序自1.6.3基础库版本库开始支持简洁组件,之前的版本因不支持,故在引用组件处默认为空节点.关于微信小程序已有模板为何还需构建组件?一是因为组件可以更方便的自定义并绑定行为,二是在其他页 ...

  5. 获取所有选中框的ids值

    var os = $("input[name='rec_ids[]']:checked"); var ids = []; os.each(function(i){ ids.push ...

  6. CentOS下搭建Hadoop

    目录 安装配置jdk 安装Hadoop 下载解压 配置文件 启动hadoop 格式化HDFS 停止hdfs和yarn 参考:Hadoop官网文档 版本:hadoop-3.2.0 安装配置jdk 因ha ...

  7. Dos命令大全完整版

    DOS(磁盘操作系统)命令,是DOS操作系统的命令,是一种面向磁盘的操作命令,主要包括目录操作类命令.磁盘操作类命令.文件操作类命令和其它命令. 使用技巧 DOS命令不区分大小写,比如C盘的Progr ...

  8. spring 事务-support 有事务得开启就参加 没有就不参加

    spring 事务-support 有事务得开启就参加 没有就不参加

  9. pgm9

    这部分介绍 sampling 方法,书上也称为 particle-based method,这是因为每一个从分布中采集到的样本可以看成是一个 particle(instantiation of r.v ...

  10. 【转】电源芯片选型,容易忽略的“QC”

    某公司自主研发的智能水表刚上市半年,随后此产品陆续接到用户投诉没电的情况,公司售后不得不花大量人力到用户现场更换电池,处理异常,导致公司损失惨重.但是该产品说明书中标称电池可以工作三年,为何半年左右电 ...