- 浏览: 1468772 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
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 538这会禁用html文件的缓存,无法读取last-modifi ... -
macos 安装imagick解决php不能显示验证码的问题
2018-11-04 04:15 1267需要选安装pear,然后用pecl install imagi ... -
linux入侵检测
2018-07-07 22:58 691一、检查系统日志 l ... -
yii的安全策略
2018-07-06 04:02 442web根目录下.htaccess 写道 Options ... -
免费Web防火墙
2018-07-06 01:21 6021,modsecurity 基于apache 历史最悠久 ... -
两款免费好用的Web渗透工具
2018-07-06 01:12 10281,OWASP Zed Attack Proxy (ZAP ... -
apache2反向代理
2018-06-12 18:46 844开启以下两个模块 a2enmod proxy a2enm ... -
扩展Aws云主机磁盘大小
2018-03-05 21:17 1392进入ELASTIC BLOCK STORE-》卷 选中要修 ... -
ubuntu时区设置
2018-02-25 10:41 717查看当前时区 timedatectl 修改时区 dpk ... -
macos 10.13 dmg下载和安装盘制作
2018-02-05 19:58 10051https://bbs.feng.com/read-htm-t ... -
windows升级后 iis服务无效 IIS-W3SVC-WP 无法读取配置文件
2017-12-01 11:35 1647通过使用以管理员身份运行选项打开 Windows PowerS ... -
vmware中运行的macos连接iphone
2017-09-30 17:53 2335需要iphone插在usb2.0端口上,并且虚拟机usb兼容性 ... -
brotli压缩算法说明
2017-06-09 02:36 1313brotli是新一代的HTTP压缩算法,用于替代gzip,相 ... -
TCP Fast Open说明
2017-06-09 02:34 7080相关介绍 https://lwn.net/Article ... -
使用strongswan建立基于ikev2 eap-mschapv2的ipsec服务器
2017-04-17 23:14 3208sudo apt-get install strongsw ... -
使用strongswan/xl2tpd建立ipsec/l2tp服务器
2017-04-17 22:32 6166sudo apt-get install strongsw ... -
SecureFX中文件名乱码的解决
2014-08-28 03:23 3354原始贴子:https://forums.vandyke.c ... -
禁用htc one m7官方内核的写保护
2014-08-26 14:52 1286老外写的内核模块源码: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 1954因为国内网络问题不可能在线安装成功,所以就有了这么多麻烦。 ...
相关推荐
通常,不同版本的kexec-tools可能因为内核API的变化或者其他系统架构的差异而存在兼容性挑战,但此版本由于已经过测试,确保了在各种环境下的编译通过性,降低了用户在使用过程中遇到问题的可能性。 kexec的工作...
kexec工具一个内核转储发生的时候kdump使用kexec启动一个备份的内核。这个备份启动的内核只是使用少量的内存,并且这些内存由第一个内核提供。这样设计保证了第一个内核启动且正在运行中的DMA不会破坏第二个内核的...
Kexec 是一项重要的 Linux 内核技术,它允许在不重启硬件的情况下加载新的内核版本。这项技术最初由 Simon Horman 和 Magnus Damm 在 VALinux Systems Japan K.K. 开发,并在 2007 年的 Linux.Conf.Au 大会上进行了...
"kexec" 是一个专为Node.js设计的前端开源库,它的主要功能是能够在运行时用另一个进程替换当前的Node.js进程,这在某些场景下非常有用,比如实现进程间的平滑切换或更新服务。这个特性类似于Ruby中的`exec`函数,它...
* kexec:使用kexec工具来快速重启Linux内核。 Linux内核故障排除: Linux内核故障排除是诊断和修复Linux内核中的错误和故障的技术,包括: * dmesg:使用dmesg命令来查看Linux内核的日志信息。 * syslog:使用...
它也能在开发环境中快速测试新内核版本,无需每次修改后都进行完整的系统重启。 7. **安全与限制** 虽然kexec-tools带来了诸多便利,但也存在潜在的安全风险。例如,未经许可的内核加载可能被恶意利用。因此,在...
总结,kexec工具是Linux系统中一个强大的功能,它简化了内核切换的过程,为系统维护、故障恢复提供了便利。通过熟练掌握kexec工具的使用,我们可以更高效地管理我们的Linux系统,提升其稳定性和可靠性。而Makefile...
arm64加载kdump内核工具kexec
它利用**kexec**系统调用来快速启动另一个内核(通常称为dump-capturekernel),以便在不破坏原有内核数据的情况下捕获核心内存映像。捕获的核心内存映像可以存储在`/proc/vmcore`文件中,之后可通过专门的工具进行...
1. **kexec技术**: kexec是一种系统重启机制,它允许一个正在运行的操作系统内核加载并启动另一个内核,而无需经历完整的关机过程。这对于故障恢复、系统更新和调试非常有用,因为它减少了重启时间。 2. **实模式**...
在Android设备上,kexec-hardboot可以用于在保持数据完整性的前提下,实现更快的系统重启和恢复。这对于频繁测试不同内核或固件的开发者和高级用户来说非常实用,因为它避免了耗时的正常启动过程。 CM12是...
- **工具**:使用 `kdump-config` 工具进行配置,利用 `kexec-tools` 包收集内核崩溃转储文件。 #### 五、包管理 ##### 5.1 dpkg - **基本用法**:通过 `dpkg -i` 安装本地软件包,使用 `dpkg -r` 移除已安装的...
然后,需要下载 Linux 内核和 Xenomai 的源代码,并将其解压缩到 /usr/src 目录下。 接下来,需要 patch 内核,以便 Xenomai 可以正确地工作。 patch 的过程使用 prepare-kernel.sh 脚本来完成,该脚本将 Xenomai ...
linux内核调试分析指南--下篇 ***第二部分:内核分析*** 内核组织层次和复杂度 内核层次 内核复杂度 复杂度隔离 gdb在内核分析中的用途 数据验证 界面剥离 参数记忆 路径快照 长程跟踪 整理思路 内核编码的艺术 信息...
4. **内核层面**:在内核层,Android系统使用`reboot()`函数来实现重启,以及`power_off()`或`kexec()`来执行关机。这些函数会触发一系列的系统级回调,确保所有驱动程序和硬件模块都被安全地关闭。例如,内存管理器...
- **Kexec**:Kexec是一种快速重启内核的技术,能够在几毫秒内切换到一个新的内核镜像,极大地缩短了重启时间。 - **Kdump**:Kdump是一种崩溃转储技术,可以在系统崩溃后收集重要的调试信息,对于分析系统故障原因...
kexec-tools-2.0.15-21.el7.x86_64.rpm
通常, Meteor应用可能需要在运行时执行一些系统级别的操作,比如更新或重启应用,这时候`kexec`的能力就显得非常有用,因为它的核心是快速切换进程到新的执行环境,这在服务端重启或者更新过程中可以提高效率。...