基于kexec的崩溃转储机制

来源:百度文库 编辑:神马文学网 时间:2024/04/26 17:17:23
 网站首页  新闻首页  网页设计  图形动画  软件编程  网站开发  办公软件  操作系统  数据库  网络技术  认证考试  范文资料  黑客攻防  书籍教程  进入论坛
 LinuxLinux系列教程Linux应用技巧Linux技术文章  加入收藏
网站地图
书籍教程
会员注册
  
 DIY部落 >> 操作系统 >> Linux >> Linux技术文章 >> 正文基于kexec的崩溃转储机制http://www.diybl.com/ 2008-7-5  网络 点击:  [ 评论 ]
-
-
文章搜索:     【点击打包该文章】 
【本站开通在线QQ讨论群】 转载:http://blog.chinaunix.net/u/17564/showart_199223.html
内核文档:2.6.18.1/Documentation/kdump/kdump.txt===============================================设计
===    当一个内核转储发生的时候kdump使用kexec启动一个备份的内核。这个备份启动的内核只是使用少量的内存,并且这些内存由第一个内核提供。这样设计保证了第一个内核启动且正在运行中的DMA不会破坏第二个内核的运行。    在内核崩溃之前所有关于核心映像的必要信息都用ELF格式编码并存储在保留的内存区域中。ELF头所在的物理地址被作为命令行参数(fcorehdr=)传递给新启动的转储内核。    在i386体系结构上,启动的时候需要使用物理内存开始的640K,而不管操作系统内核转载在何处。因此,这个640K的区域在重新启动第二个内核的时候由kexec备份。    在第二个内核中,“前一个系统的内存”可以通过两种方式访问:    -     第一种方式是通过/dev/oldmem这个设备接口。一个“捕捉”设备可以使用“raw”(裸的)方式  “读”这个设备文件并写出到文件。这是关于内存的 “裸”的数据转储,同时这些分析/捕捉工具应该足够“智能”从而可以知道从哪里可以得到正确的信息。ELF文件头(通过命令行参数传递过来的elfcorehdr)可能会有帮助。    -    第二种方式就是通过/proc/vmcore。这个方式是将转储输出为一个ELF格式的文件,并且可以方 便使用一些文件拷贝命令(比如cp,scp等等)将信息读出来。同时,gdb可以在得到的转储文件上做一些调试(有限的)。这种方式保证了内存中的页面都以正确的途径被保存。(注意内存开始的640K被重新映射了)
安装/设置
=======
    1)使用root用户登录系统。
    2)下载upstream kexec-tools用户空间包,下载地址:
           http://www.xmission.com/~ebiederm/files/kexec/kexec-tools-1.101.tar.gz.
    3)解包:
           tar xvpzf kexec-tools-1.101.tar.gz
    4)从下列地址得到最新的kdump补丁。
           http://lse.sourceforge.net/kdump/
           如果所有关于用户空间支持kdump的补丁都已经集成到了upstream kexec-tools中那么这一步可以被省略。
    5)cd到解包得到的目录:
            cd kexec-tools-1.101
    6)使用patch命令应用补丁:
            patch -p1 < /path-to-kdump-patch/kexec-tools-1.101-kdump.patch
           (注意使用正确的补丁目录和补丁文件)
    7)配置这个包,使用如下命令:
            ./configure
    8)编译包:
            make
    9)安装这个包:
            make install
下载并构建系统内核和“转储-捕捉”内核
==============================    下载内核主版本树上的源码(从http://www.kernel.org),注意选择合适版本的内核(高于2.6.13-rc1版本)。需要编译两个内核:一个“系统内核”和一个“转储捕捉”内核。要使这个特性得以实现并工作需要相应的编译两个内核。遵照以下的步骤以配置内核使用合适的kexec和kdump功能:
系统内核
-------
    1)编译内核时要确认选中了“kexec system call”选项(在“处理器类型和功能”区域)。
            CONFIG_KEXEC=y    2)编译内核时要确认选中了“sysfs file system support”(在“文件系统”->“伪文件系统”区域)。这通常是默认选中的。
            CONFIG_SYSFS=y 
注意:在“Configure standard kernel features (for small systems)”没有被使能(在“General Setup”区域)时“sysfs file system support”可能出现在“Pseudo filesystems"菜单中。在这种情况下,检查.config文件以确保sysfs被打开。可以参考:
        grep 'CONFIG_SYSFS .config    3)在“kernel hacking”区域中选中“Compile the kernel with debug info”:
           CONFIG_DEBUG_INFO=Y
这样就可以使编译内核的时候带上调试用的符号,转储分析工具需要一个带有调试信息的vmlinux(内核文件)来调试分析转储文件。    4)编译内核和模块并安装之。更新启动管理器(比如grub,lilo,yaboot等等)的配置文件。    5)引导系统内核时使用引导参数:crashkernel=Y@X。
注意要使用合适的X和Y的值。Y的值表示要为第二个内核保留多少内存,X的值表示保留的内存区开始的物理地址。例如:crashkernel=64M@16M 告诉系统内核保留64MB内存给“转储捕捉内核”使用,这64MB内存从物理地址0x01000000开始。        在x86和x86_64平台上,使用"crashkernel=64M@16M"
        在ppc64平台上,使用"crashkernel=128M@32M"
转储捕获内核
----------    1)在“general setup”选项下,附加“-kdump”到“Local version”后面。    2)在x86平台上,在“Processor type and features”选项下使能高端内存支持:
            CONFIG_HIGHMEM64G=y
        或者:
            CONFIG_HIGHMEM4G=y    3)在x86平台上,去掉对称多处理器的支持,在“Processor type and features”:
            CONFIG_SMP=n
(如果不小心设置成了y,-
文章整理:DIY部落 http://www.diybl.com (本站)   【点击打包该文章】
[1] [2] [3]
如果图片或页面不能正常显示请点击这里 站内搜索:   
【收藏此页】【栏目页面】【发表评论】【返回顶部】【关闭】
上一篇文章:unicode编码
下一篇文章:linux内核初始化以及启动推荐文章
Linux基本命令及其详解
查看系统登陆信息设置/etc/issue
iproute2应用-GRE over IPSEC
s3c2440 串口1,串口2的使用
程序减肥三步走
^txt2regex$:正则表达式编写向导
[GNU make中文1.6]第三章 Makefile 总述
vmtools的安装vivi情景分析(一): 配置管理(一)
【Fedora core 7.0】给CDLinux增加包的方法
Linux内核中的一些基本操作
如何恢复 Linux 上删除的文件,第 2 部分
获取cpu一些信息的例子
网络安全最佳工具Top75
纪念 Slackware LOGO
linux 下虚拟机上网 文章评论
请您留言昵称:       注册会员 会员登陆
点击这里 自己制作打包的chm电子书教程  验证:              网友推荐文章[转]Linux像老婆,Windows像妓女个性化设置你的linux环境世界上最快的超级计算机运行Linux在uclinux for bf561中使用B核(4):B核代码的编写moblin develop 环境搭建如何把用户限制在特定目录下在Ubuntu 7.10下安装EVA[译]数据包的linux 2.4网络协议栈之旅
 
最新新闻
微软起诉TomTom捅马蜂窝 开源界领袖纷表不满 Novell近日宣布将与VMware开展广泛合作 HP与Sun达成一致 将帮助售卖Solaris系统 苹果称乔布斯仍将于6月底重掌大权 谷歌中国原首席战略官郭去疾创办外贸B2C公司 沃达丰将向中小企业提供微软网络服务 
相关教程文章
Linux中SysRq的使用移动版本Linux称为操作系统生力军85%的超级计算机运行Linux操作系统Linux创建基于LVM的文件系统输入法(一)mtd下nand驱动开发使用 SNMP 数据迁移到 ext4NAND FLASH ECC校验原理与实现基于MTD的NAND驱动开发nand flash 原理(三星)unicode编码基于kexec的崩溃转储机制linux内核初始化以及启动加载linux内核完毕,转入cpu_idle进程nfs配置方法 samba配置笔记MIPS TLB 的结构基于OpenVPN连接两个远程局域网段centos5.1下apache+php+mysql 总结段错误(Segmentation fault) (转)国内常见HA软件点评(ZT)linux集群安装配置排错的基本方法主要Linux 平台高可用HA集群软件简介及软件下载 本栏目热门教程
ubuntu英文环境下使用中文输入法高并发高流量网站架构 基于S3C2410平台的Linux 2.6.14内核+平台驱动的移植指南(最终版)Winxp下 gvim 编程环境搭建linux常见命令的列表跟我一起写MakefileUbuntu 实用学习教程linux查看磁盘空间查看LINUX最大线程数及最大进程数什么是tty?
频道地图
Linux
 Linux系列教程
 Linux应用技巧
 Linux技术文章
Windows xp
Vista
Windows 2003
Windows 2008
Windows 2000/NT
Linux
Mac OS X
DOS
FreeBSD
Solaris
SCO UNIX
AIXDIY部落意见反馈留言板 QQ:258622672 email:diybl@163.com  欢迎批评指正DIY部落简介 | About DIY部落 | 广告联系 | 联系我们 | 收藏本站 | 友情链接 | 网站地图 | 会员注册 | 站长主页本站文章均为网上网友上传,如果有非法内容请联系我们,我们会在第一时间删除本站招聘编辑一名:联系电话:15009259087 联系qq 258622672 陕ICP备06011157号 DIY部落 版权所有
文章出处:http://www.diybl.com/course/6_system/linux/Linuxjs/200875/130429.html