linux系统双内核的快速切换机制(kexec)

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

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

如何配置即使用快速启动机制: 
1)确定正在运行的内核是否已经选中支持kexec system call 
grep /boot/config-2.6.xxxxxxx 
如果返回值是CONFIG_KEXEC=y,则表示支持。如果是CONFIG_KEXEC=n,则需要重新编译内核,将该项选为y。 
执行make menuconfig,进入Processor type and features ,然后在kexec system call选项处按y即可,然后退出内核配置,执行make linux重新编译内核。 
将新编的内核放到/boot下,然后修改/boot/menu.lst, 以使系统启动时加载新内核。 
menu.lst 中,修改kernel /boot/lfskernel-2.6.25.4, 将kernel后的参数改为新内核的路径。也可以另写一组启动参数,在系统启动时可以选择使用不同的内核,如: 
title default kernel 
root (hd0,5) 
kernel /boot/lfs_kernel-2.6.25.4 root=/dev/sda6 ro nomce vga=0x317 
initrd xxxxxx 

title kexec_test kernel 
root (hd0,5) 
kernel /boot/kexec_kernel-2.6.25.4 root=/dev/sda6 ro nomce vga=0x317 
initrd xxxxxx 

2)加载另一个内核 

系统启动后,手动加载第二个内核 
kexec -l /boot/kexec_kernel-2.6.25.4 --args-linux --append="`cat /proc/cmdline`" --initrd=xxxxxxxxxxx 
-l 表示加载一个新内核到当前正在运行的内核中,后面跟的是新内核的路径。 
--args-linux 表示Pass linux kernel style options 
,不太明白是什么意思。 
--append 后面是内核启动参数,于menu.lst中kernel /boot/kexec_kernel-2.6.25.4 root=/dev/sda6 ro nomce vga=0x317是一样的,所以直接用cat /proc/cmdline就可以了。当然,你也可以加上其他参数,例如--append="`cat /proc/cmdline` selinux=1"  ,或者使用全新的参数,例如--append=" root=/dev/sda4 rw nomce vga=0x317"等。 

3)切换内核 
kexec -e  

系统经过热启动后,再次进入登录状态,重新登录即可。 

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux内核调试分析指南 linux内核调试分析指南--上篇 本文档已经转到下面的网址,位于zh-kernel.org的文档停止更新,请访问新网址 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级调试 ***第一部分:基础知识*** 总纲:内核世界的陷阱 源码阅读的陷阱 代码调试的陷阱 原理理解的陷阱 建立调试环境 发行版的选择和安装 安装交叉编译工具 bin工具集的使用 qemu的使用 skyeye的使用 UML的使用 vmware的使用 initrd.img的原理与制作 x86虚拟调试环境的建立 arm虚拟调试环境的建立 arm开发板调试环境的建立 gdb基础 基本命令 gdb之gui gdb技巧 gdb宏 汇编基础--X86篇 用户手册 AT&T汇编格式 内联汇编 汇编与C函数的相互调用 调用链形成和参数传递 C难点的汇编解释 优化级别的影响 汇编基础--ARM篇 用户手册 调用链形成和参数传递 源码浏览工具 调用图生成工具 find + grep wine + SI global Source-Navigator vim + cscope/ctags kscope lxr SI等与gdb的特点 调用链、调用树和调用图 理想调用链 函数指针调用 调用链的层次 非理想调用链 调用树与调用图 穿越盲区 穿越gdb的盲区 穿越交叉索引工具的盲区 工程方法 bug 与 OOPS linux内核调试分析指南--下篇 ***第二部分:内核分析*** 内核组织层次和复杂度 内核层次 内核复杂度 复杂度隔离 gdb在内核分析中的用途 数据验证 界面剥离 参数记忆 路径快照 长程跟踪 整理思路 内核编码的艺术 信息聚集 数据聚集 关系聚集 操作聚集 松散聚集 顺序聚集 链表聚集 哈希聚集 树形聚集 分层聚集 分块聚集 对象聚集 设施客户 设备驱动模型分析 linux设备子系统的组成 设备驱动模型 usb子系统分析 如何阅读分析大型子系统 btrfs文件系统分析 区间树核心代码分析 B树核心代码分析 调试相关子系统 kgdb源码分析 sysrq oprofile kprobes 驱动分析 载入模块符号 ***第三部分:其他工具*** kexec strace ltrace SystemTap MEMWATCH YAMD Magic SysRq 附录:社区交流相关 补丁提交相关文档 补丁制作与提交示范 多补丁发送工具 git使用 Git公共库创建及使用 附录:内核参考书籍文章 内核git库 书籍 子系统官方网站 必看网站 参考文章 私人备忘

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值