Linux系统的快速启动机制(内核切换) 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26807463&id=4187846
原文地址:Linux系统的快速启动机制(内核切换) 作者:Renwen0524
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系统的快速启动机制(内核切换) 【转】的更多相关文章
- Linux系统入门---开机启动流程
目录 Linux系统入门---开机启动流程 一.centos6 二.systemd管理进程 1.查看级别 三.centos7实践案例: 1.案例1:centos7系统,单用户修改root密码 案例2: ...
- Linux系统的开机启动顺序
Linux系统的开机启动顺序加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,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 ...
- windows系统的快速失败机制---fastfail
windows系统的快速失败机制---fastfail,是一种用于“快速失败”请求的机制 — 一种潜在破坏进程请求立即终止进程的方法. 无法使用常规异常处理设施处理可能已破坏程序状态和堆栈至无法恢复的 ...
- Linux系统xinetd服务启动不了
Linux系统xinetd服务启动不了 xinetd服务时发现xinetd服务启动不了,并出现错误提示xinetd:unrecognized service,当出现这个错误提示的时候说明系统未安装xi ...
- Linux系统下,启动Tomcat有时报Address already in use
一.Linux系统下,启动Tomcat有时报Address already in use<null>... 1.那是因为你的tomcat已经启动了tomcat自带的关闭脚本,有时候关闭看上 ...
- Linux系统的数据写入机制--延迟写入
我们都知道,在Linux关机的之前都会要运行一个命令那就是sync,这个命令是同步的意思,那为什么要运行这个?而且之前的数据改变我们已经看见了,为什么还要运行这个命令?要回答这个问题就要说一下Linu ...
- Linux系统SCSI磁盘扫描机制解析及命令实例(转)
转载请在文首保留原文出处:EMC中文支持论坛 介绍 Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命 ...
- Linux系统SCSI磁盘扫描机制解析及命令实例
介绍Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命令是什么?本文总结了Linux主机对磁盘设备进行 ...
随机推荐
- 实训六(Cocos2dx游戏分享到微信朋友圈----AppID的获取)
考虑把游戏分享到微信朋友圈,前面的博文已经写到,shareSDK是一个很好的选择,但是学习了几天时间,遇到了很多问题,与其在一棵树上吊死,还不如退一步海阔天空,先暂时放一放,于是我考虑了一下既然是分享 ...
- 求二维数组联通子数组和的最大值 (联通涂色) beta!
算法十分臃肿,效率捉鸡,不知用了多少循环,还有bug...任重道远,编程之美. 思想:按行遍历,找出每行的最大子数组.若行间都联通,行最大子数组相加后,再加上独立的正数.若行间不连通,找出较大子路径, ...
- 学习电脑编码utf-8,ansi编码的基础知识等
大学时期就很好奇,我们所看到的文字在电脑里面是怎么记忆的,感觉不可能是文字本身,今天刚好学习java的io流知识,顺便补充了一下电脑编码知识,先看一下下面小王和小张的例子,然后思考电脑怎么存放文字? ...
- Linux换源
Linux换源 前言 最近学校的ipv6坏了,导致从deepin本身获取的源速度极慢,笔者实在忍无可忍,随后在同学指导下换了清华大学ipv4的源 步骤 sudo gedit /etc/apt/sour ...
- Beta 冲刺 五
团队成员 051601135 岳冠宇 031602629 刘意晗 031602248 郑智文 031602330 苏芳锃 031602234 王淇 照片 项目进展 岳冠宇 昨天的困难 数据交换比较复杂 ...
- [转帖]Git数据存储的原理浅析
Git数据存储的原理浅析 https://segmentfault.com/a/1190000016320008 写作背景 进来在闲暇的时间里在看一些关系P2P网络的拓扑发现的内容,重点关注了Ma ...
- Postgresql 简单安装过程. Study From https://www.cnblogs.com/stulzq/p/7766409.html
CentOS 下面安装 Postgresql. 的简要学习记录 1. 卸载CentOS上面自带的postgresql版本 rpm -e $(rpm -qa|grep postgre) 2. postg ...
- android管理SD卡 mksdcard
在创建Android模拟器的时候,会创建一个虚拟的sd卡.我们还可以通过mksdcard命令创建sd卡,在运行模拟器的时候,可以选择具体的sd卡. 1.创建sd卡: mksdcard [-l labl ...
- OneZero第五周第二次站立会议(2016.4.19)
1. 时间: 15:15--15:25 共计10分钟. 2. 成员: X 夏一鸣 * 组长 (博客:http://www.cnblogs.com/xiaym896/), G 郭又铭 (博客:http ...
- 阿里Java编码规范
详细,全面 很不错 阿里 Java编码规范