- 浏览: 1474031 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
getelephantbyid:
make 无法通过.....
php-5.3,php-5.4的thttpd2.25b补丁,及编译方法 -
getelephantbyid:
patch -p1 ../php-5.4.7_thttpd-2 ...
php-5.3,php-5.4的thttpd2.25b补丁,及编译方法 -
zander:
zander 写道c 语言是静态类型语言还是动态类型语言阅读理 ...
什么是动态语言和静态语言? -
zander:
c 语言是静态类型语言还是动态类型语言
什么是动态语言和静态语言? -
lunajiayou:
很有道理,赞一个
跟着苍蝇会找到厕所,跟着蜜蜂会找到花朵
最近由于需要经常和内核打交道,所以发现老是重启感觉巨麻烦,这时想起上次RSS上看到一个将有方法可以不用重启而切换内核的。以前倒是觉得没有什么作用,但现在发现有用了。所以学习下
1.kexec
kexec是要使用到的工具,怎么说呢?在kernel2.6.13及以后版本都支持kexec了,编译时有一个选项
Processor type and features --->
[*]kexec system call (EXPERIMENTAL)
另外,可以使用下面命令来查看当前内核是否是否支持kexec系统调用
$grep -i "kexec" /boot/config-2.6.28-15-generic
我电脑上输出
CONFIG_KEXEC=y
CONFIG_KEXEC_JUMP=y
只要看到是y就可以了。
2.安装kexec-tools
这里要安装一个用户空间工具kexec-tools来使用kexec系统调用,kexec-tools很好安装,如果使用源码安装,即是经典的configure,make,make install三部曲,这里我使用
$sudo apt-get install kexec-tools命令来安装
3.kexec-tools用法
$sudo kexec -l /boot/vmlinuz-2.6.28-13.generic --append="root=/dev/sda7 ro"
$sudo kexec -e
执行上面命令后,系统会瞬间僵死,不要惊慌,等待一小会儿就会重新到gdm登录界面,重新登录。
部骤
首先,有两个先要满足条件(Pre-requisites):
1. 内核版本必需为 2.6.13 或以上,因为自该版本起内置了 kexec 系统呼叫的程序。
2. 系统需要安装 kexec-tools
内核方面,主流发行版的内核其实都已加入支持,所以用发行版内核的话,基本不用担心支援问题。
只要检查 /boot/config-2.6.xxxxxxxx 就知道了
egrep KEXEC /boot/config-2.6.xxxxxxx
或者
cat /boot/config-2.6.xxxxxxx |grep KEXEC
答案是 y 便行。
如果内核是自己动手编译的话,请谨记加入 kexec 系统呼叫的支援:
Processor type and features --->
[*] kexec system call (EXPERIMENTAL)
至於安装 kexec-tools 方面,可以编译源码或者用发行版提供的:
如要编译就先下载 kexec-tools 源码,可以到内核官方网站,路径是:
http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/
今天为止,最新版本是 2.0.0:
http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/kexec-tools-2.0.0.tar.bz2
tar xf kexec-tools-2.0.0.tar.bz2
cd kexec-tools-2.0.0
./configure --prefix=/usr
make
再以 root 身分执行
make install
以上会把下列东西安装:
/usr/lib/kexec-tools/kexec_test
/usr/sbin/kdump
/usr/sbin/kexec
一般发行版或教材都是将命令放在 /sbin 里的,没关系,就移一下吧:
mv /usr/sbin/kdump /sbin/kdump
mv /usr/sbin/kexec /sbin/kexec
如果用发行版的就简单一点,直接 apt-get,yum 回来,比如:
apt-get install kexec-tools 或 emerge -av kexec-tools 之类,总之就是为了加入 /sbin/kexec 这个系统命令。
如果一切顺利,现在就有戏了。先检查一下 /boot 里安装了哪些内核:
d00m3d@BlackMesa:~$ ll /boot
total 11224
-rw-rw-r-- 1 root root 794675 Sep 24 2007 System.map-2.6.22.7
-rw-rw-r-- 1 root root 853714 Jan 26 2008 System.map-2.6.24
-rw-rw-r-- 1 root root 858565 Sep 16 16:13 System.map-2.6.25.14
-rw-rw-r-- 1 root root 856752 May 27 13:15 System.map-2.6.25.4
-rw-rw-r-- 1 root root 44436 Sep 24 2007 config-2.6.22.7
-rw-rw-r-- 1 root root 47026 Jan 26 2008 config-2.6.24
-rw-rw-r-- 1 root root 54631 Sep 16 16:13 config-2.6.25.14
-rw-rw-r-- 1 root root 54581 May 21 10:49 config-2.6.25.4
drwxr-xr-x 2 root root 4096 May 28 09:06 grub
-rw-rw-r-- 1 root root 1866424 Sep 24 2007 lfskernel-2.6.22.7
-rw-rw-r-- 1 root root 1947800 Jan 26 2008 lfskernel-2.6.24
-rw-rw-r-- 1 root root 2024732 Sep 16 16:13 lfskernel-2.6.25.14
-rw-rw-r-- 1 root root 2017244 May 27 13:15 lfskernel-2.6.25.4
d00m3d@BlackMesa:~$
再检查下 /boot/grub/menu.lst 里加载内核的语句,如:
title LFS-SVN-20060528, kernel 2.6.25.4
root (hd0,5)
kernel /boot/lfskernel-2.6.25.4 root=/dev/sda6 ro nomce vga=0x317
boot
这是待加载内核 2.6.25.4 的内容及相关选项。
要用 /sbin/kexec 加载另一内核,语法是:
kexec -l <kernel-image> --append="<command-line-options>"
也就是将内核映像的名称跟选项对号入座,我的情况就写成:
kexec -l /boot/lfskernel-2.6.25.4 --append="root=/dev/sda6 ro nomce vga=0x317"
即可加载。
我一直不喜欢使用 ramdisk 或者 initramfs 之类,所以没有 initrd,如果系统需要使用 initrd,就将其正确路径加入便行,如:
kexec -l /boot/lfskernel-2.6.25.4 --append="root=/dev/sda6 ro nomce vga=0x317" --initrd=xxxxxxxxxxx
想重启内核,就以 kexec -e 来切换。执行情况如下:
d00m3d@BlackMesa:~$
d00m3d@BlackMesa:~$ su -
Password:
root@BlackMesa:~#
root@BlackMesa:~# kexec -l /boot/lfskernel-2.6.25.4 --append="root=/dev/sda6 ro nomce vga=0x317"
setup_linux_vesafb: 1024x768x16 @ e0000000 +300000
root@BlackMesa:~# cat /proc/version
Linux version 2.6.25.14 (d00m3d@BlackMesa) (gcc version 4.3.2 (GCC) ) #1 SMP PREEMPT Tue Sep 16 16:10:50 HKT 2008
root@BlackMesa:~#
当前内核是 2.6.25.14,准备切换成 2.6.25.4
root@BlackMesa:~# kexec -e
经过一轮热起动系统设置後,系统会再次进入登陆状态。重新登陆:
BlackMesa login: root
Password:
Last login: Wed May 28 09:40:34 +0800 2008 on tty1.
No mail.
root@BlackMesa:~#
root@BlackMesa:~# cat /proc/version
Linux version 2.6.25.4 (d00m3d@BlackMesa) (gcc version 4.3.1 20080523
(prerelease) (GCC) ) #1 SMP PREEMPT Tue May 27 12:33:36 HKT 2008
root@BlackMesa:~#
嘿嘿,大功告成!
补充一句,新加载的内核也可以是:
1. 当前内核本身,不停变更都可以的
2. 或者是旧版没有编入 kexec 系统呼叫支援的内核,只不过 warm boot 启动後再无法执行 /sbin/kexec 去变更另一版了
结语
很多时候,冷启动重启系统是很讨厌的,花时甚长,有了 /sbin/kexec,只要当前内核加入了 kexec 系统呼叫的支援,就能随意切换另一版本的内核,对经常调试内核或想尝鲜的人提供了方便,好不快哉!
发表评论
-
google pagespeed禁用改写html文件的cache头
2019-09-04 19:51 570这会禁用html文件的缓存,无法读取last-modifi ... -
macos 安装imagick解决php不能显示验证码的问题
2018-11-04 04:15 1298需要选安装pear,然后用pecl install imagi ... -
linux入侵检测
2018-07-07 22:58 697一、检查系统日志 l ... -
yii的安全策略
2018-07-06 04:02 447web根目录下.htaccess 写道 Options ... -
免费Web防火墙
2018-07-06 01:21 6061,modsecurity 基于apache 历史最悠久 ... -
两款免费好用的Web渗透工具
2018-07-06 01:12 10471,OWASP Zed Attack Proxy (ZAP ... -
apache2反向代理
2018-06-12 18:46 849开启以下两个模块 a2enmod proxy a2enm ... -
扩展Aws云主机磁盘大小
2018-03-05 21:17 1410进入ELASTIC BLOCK STORE-》卷 选中要修 ... -
ubuntu时区设置
2018-02-25 10:41 725查看当前时区 timedatectl 修改时区 dpk ... -
macos 10.13 dmg下载和安装盘制作
2018-02-05 19:58 10069https://bbs.feng.com/read-htm-t ... -
windows升级后 iis服务无效 IIS-W3SVC-WP 无法读取配置文件
2017-12-01 11:35 1652通过使用以管理员身份运行选项打开 Windows PowerS ... -
vmware中运行的macos连接iphone
2017-09-30 17:53 2352需要iphone插在usb2.0端口上,并且虚拟机usb兼容性 ... -
brotli压缩算法说明
2017-06-09 02:36 1332brotli是新一代的HTTP压缩算法,用于替代gzip,相 ... -
TCP Fast Open说明
2017-06-09 02:34 7089相关介绍 https://lwn.net/Article ... -
使用strongswan建立基于ikev2 eap-mschapv2的ipsec服务器
2017-04-17 23:14 3226sudo apt-get install strongsw ... -
使用strongswan/xl2tpd建立ipsec/l2tp服务器
2017-04-17 22:32 6180sudo apt-get install strongsw ... -
SecureFX中文件名乱码的解决
2014-08-28 03:23 3359原始贴子:https://forums.vandyke.c ... -
禁用htc one m7官方内核的写保护
2014-08-26 14:52 1291老外写的内核模块源码:https://github.com ... -
windows和office的kms激活方法(windows 企业版,office vl版可用)
2013-03-17 19:28 21windows 激活windows 8slmgr.vbs /i ... -
windows 8 64bit 离线官安装 .net framework 3.5
2013-01-23 11:32 1960因为国内网络问题不可能在线安装成功,所以就有了这么多麻烦。 ...
相关推荐
基于Php语言设计并实现了微信小程序的社区门诊管理系统。该小程序基于B/S即所谓浏览器/服务器模式,选择MySQL作为后台数据库去开发并实现一个以微信小程序的社区门诊为核心的系统以及对系统的简易介绍。 用户注册,在用户注册页面通过填写账号、密码、确认密码、姓名、性别、手机、等信息进行注册操作; 用户登录,用户通过登录页面输入账号和密码,并点击登录进行小程序登录操作。 用户登陆微信端后,可以对首页、门诊信息、我的等功能进行详细操作 门诊信息,在门诊信息页面可以查看科室名称、科室类型、医生编号、医生姓名、 职称、坐诊时间、科室图片、点击次数、科室介绍等信息进行预约挂号操作 检查信息,在检查信息页面可以查看检查项目、检查地点、检查时间、检查费用、账号、姓名、医生编号、医生姓名、是否支付、审核回复、审核状态等信息进行支付操作
白色大气风格的设计师作品模板下载.zip
工程经济学自考必备软件下载
UML课程设计报告.doc
白色大气风格响应式彩绘精品水果网站模板.zip
白色简洁风格的别墅整站网站模板.zip
白色简洁风格的APP展示动态源码下载.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
白色大气风格的雪山旅游景区CSS3网站模板.zip
介绍 基于python开发的大模型调用基础框架(源码) 使用说明 修改配置文件 cd config vim __init__.py # 在配置文件中添加大模型调用地址,模型名称,API_KEY等配置 启动应用 应用启动分为两种模式,命令行模式和web模式 命令行模式 python main.py cli web模式 python main.py api
基于JavaWeb的小区物业管理系统源代码+数据库 负责数据库的设计和界面的设计和实现; 界面使用 BootStrap 框架,页面自适应效果,修改页面后实现各个功能模块的布局; 负责实现用户登录注册,查看小区活动公告、水电费查询、车费查询信息; 采用的技术:采用 MVC 架构,数据库用 MySql;
白色简单风格的商务企业网站模板下载.zip
1. 平台在家电和电子产品方面的营运情况如何? 2. 哪些品牌和类别销量最高? 3. 用户消费规律 4. 哪些是我们的重点用户? 5. 平台有哪些优势和不足,需要如何改进?
全平台数据库管理工具, 支持 ClickHouse, Presto, Trino, MySQL, PostgreSQL, Apache Druid, ElasticSearch...
白色大气风格的旅游整站网站模板.zip
1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用KEIL 标准库开发,当前在STM32F030C8T6运行,如果是STM32F030其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 3、软件下载时,请注意keil选择项是jlink还是stlink。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、编译时请注意提示,请选择合适的编译器版本。
Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
白色大气风格的红唇少女女性类网站模板.zip
白色简洁风格的UIDesign设计公司企业网站模板.rar
Linux期末考试试题.doc