转自: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. golang yaml配置文件解析

    yaml文件语法 此模块内容转自:http://www.ruanyifeng.com/blog/2016/07/yaml.html 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使 ...

  2. array_column 函数, 以及在PHP5.5之下的替代方法

    array_column 函数, 是能够根据多维数组中共有的一个键值来提取多维数组中属于这个键的值 例如下面的数组: $test = array( 0 => array( 'id' => ...

  3. CentOS下搭建Hive

    目录 下载解压hive mysql驱动 配置文件 hive-env.sh hive-site.xml 首次启动hive 使用schemaTool初始化mysql数据库 错误总结 警告汇总 参考:htt ...

  4. ubuntu系统创建新用户并赋予sudo权限

    1.创建新用户 创建新用户有两种方式:adduser和useradd adduser会为用户创建組./home目录下同名文件夹,密码,而useradd不会 因此推荐使用adduser创建用户,例: s ...

  5. c# DataGridView绑定DataTable对象之后总会多一行

    DataGridView 属性 AllowUserToAddRows = false

  6. 【CF912E】Prime Game(meet in the middle)

    [CF912E]Prime Game(meet in the middle) 题面 CF 懒得翻译了. 题解 一眼题. \(meet\ in\ the\ middle\)分别爆算所有可行的两组质数,然 ...

  7. (转)Maven学习总结(三)——使用Maven构建项目

    孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(三)——使用Maven构建项目 maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的 ...

  8. maven的三种工程pom、jar、war的区别

    转: maven的三种工程pom.jar.war的区别 2018年09月03日 10:02:53 houjx3 阅读数:2918更多 个人分类: maven   1.pom工程:用在父级工程或聚合工程 ...

  9. python(27) 抓取淘宝买家秀

    selenium 是Web应用测试工具,可以利用selenium和python,以及chromedriver等工具实现一些动态加密网站的抓取.本文利用这些工具抓取淘宝内衣评价买家秀图片. 准备工作 下 ...

  10. sql查询结果存入DataTable,然后从DataTable取数据

    public static DataTable SqlConnectionInformation() { string connstr = ConfigurationManager.Connectio ...