当前位置:首页 » 编程软件 » kdump内核编译配置

kdump内核编译配置

发布时间: 2022-08-06 21:37:45

㈠ 在linux中,如没有足够内存配置kmp,会出现什么情况

kmp是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务,打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,在这个时候将由kmp产生一个用于capture当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个mp core文件中以便于Red Hat工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。这和以前的diskmp,netmp是同样道理。只不过kmp是RHEL5特有的。

所以这个系统没有足够的内存分配给进程了可能会导致kmp,kmp本身是不需要分配内存的。

㈡ Kmp 在linux系统中是什么意思 具体做什么用

kmp是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务。
打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,在这个时候将由kmp产生一个用于capture当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个mp
core文件中以便于RedHat工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。这和以前的diskmp,netmp是同样道理。只不过kmp是RHEL6特有的。
查看Linux系统是否打开kmp:
执行命令:ulimit -c 如果输出为 0 ,则代表没有打开。如果为unlimited则已经打开。
临时打开/关闭Linux的Kmp方法:
ulimit-c unlimited 打开;
ulimit-c 0 关闭;
修改配置文件进行打开/关闭kmp方法:
1.vi/ect/profile文件在文件末尾加入新行,ulimit-s-c unlimited>/dev/null 2>&1
2.保存退出:wq!
3.执行source/etc/profile 使当期设置生效
4.通过ulimit-c 查看下是否已经成功打开。

㈢ 在Linux开启kmp转储机制后,在内核崩溃时kmp会转储哪些有用的信息

主要是注册内部数据和管理账户的数据 其他估计重启之后系统将会自动检测数据是否发生错误

㈣ virtualbox里的linux在启动的时候提示说memory for crash kernel(0*0 to 0*0)notwithin permissible range

解决办法:
这个信息由于没有配置kmp服务的原因,并没有什么危害可以忽略。
kmp是一个新的,而且非常可信赖的内核崩溃转储机制。崩溃转储数据可以从一个新启动的内核的上下文中获取,而不是从已经崩溃的内核的上下文。当系统崩溃时,kmp使用kexec启动到第二个内核。第二个内核通常叫做捕获内核(capture kernel),以很小内存启动,并且捕获转储镜像。

方法一,在图形模式下配置:
我们可以采用下面的图形界面进行配置和启用,步骤如下:
----配置kmp。
选择菜单“Applications”——“system tools”——“kmp”,弹出“Kernel Dump Configuration”窗口,选中Enable kmp,设置New kmp Memory(MB): 128MB(推荐大小)
----重新启动系统。

方法二: 编辑/etc/grub.conf,在内核行的末尾添加 crashkernel=128@16M。
举例:
kernel /boot/vmlinuz-2.6.17-1.2519.4.21.el5 ro root=LABEL=/ rhgb quiet crashkernel=128M@16M
修改之后,重启系统。128M内存(从16M开始)不被正常的系统使用,为捕获内核保留。
现在,保留内存已经设置了,打开kmp初始脚本,启动服务:
# chkconfig kmp on
# service kmp start

试试以上的方法,不行的话,再跟问!!!

㈤ kmp如何配置使用呀

linux的不知道,WINDOWS的知道。。。。

㈥ linux下的root,bin, cdrom,etc,initrd,lib分别主要放哪些文件的啊

总体的,不好归类的

/media 用来挂载usb存储设备,DVD, CD-ROM等
/mnt 用来临时挂载文件系统,可插拔的设备应该挂载到/media上去
/home 除root之外的用户目录的默认所在地
/root root用户目录
/bin 最常用的命令
/sbin 系统管理员使用的命令(sbin=system bin)
/usr/local 使用源码安装的话,一般把prefix目录指定到这里,如/usr/local/ruby
/usr/share/applications desktop文件是桌面的菜单项
~/.gnome*,~/.gconf* gnome面板的个人配置信息,当gnome面板乱了,可以尝试删除这些文件来恢复默认面板

/boot目录,kernel相关部分

/boot/symvers-%{KRELEASE}.gz 保存着内核中所有符号的crc值
/boot/System.map-%{KRELEASE} 给kernel使用的符号表(symbol table)
/boot/vmlinuz-%{KRELEASE} 可引导的、压缩的内核
/boot/initrd-%{KRELEASE}.img 包含了支持 Linux 系统两阶段引导过程所需要的必要可执行程序和系统文件
/boot/config-%{KRELEASE} 包括kernel的make config
/boot/message cpio格式的打包文件,存放Grub的配置信息,里面包括了图片,文字说明等内容
/boot目录,grub配置

/boot/grub/menu.lst 一个链接文件,真实文件是grub.conf
/boot/grub/grub.conf grub的配置文件
/boot/grub/device.map 设备的映射文件
/boot/grub/splash.xpm.gz grub开机画面的gzip压缩包
/boot/grub/stageN 一般有stage1和stage2,是grub的核心,受限于mbr512字节的大小限制,所以切开成几个,stage1是用来加载stage2的
/boot/grub/XXX_stage1_5 stage2文件较大,一般存放于文件系统中,需要XXX_stage1_5来识别各种各样的文件系统
/etc目录,系统用户/用户组

/etc/passwd 存放所有系统用户及相关信息
/etc/shadow 存放所有系统用户的密码信息
/etc/group 存放所有系统用户组及相关信息
/etc/gshadow 存放所有系统用户组的密码信息
/etc目录,系统启动流程相关

/etc/issue 发行版信息
/etc/redhat-release redhat版本信息

/etc/inittab 系统初始化配置
/etc/init.d 存放服务脚本的地方
/etc/rc[0-6S].d 每个运行级别对应的服务,里边的脚本都是链接到/etc/init.d目录
/etc/rc rc启动脚本
/etc/rc.local 在所有init脚本结束后调用
/etc/rc.sysinit 在系统启动时运行一次
/etc/profile 环境变量配置
/etc/profile.d 保存一些脚本,可在/etc/profile中调用
~/.bash_profile 针对某个用户的配置,会调用.bash_rc
~/.bashrc 针对某个用户的配置,会调用/etc/bashrc
/etc/bashrc 使用bash时,可设置全局环境配置
~/.bash_history 命令的历史记录
~/.bash_logout 用户退出时执行
/etc/xinetd.conf xinetd的配置文件
/etc/xinetd.d 存放xinetd服务的地方
/etc目录,基本应用配置相关

/etc/skel 存放用户文件的“骨架”,当一个用户创建的时候,里边的文件就会拷贝到相应的home目录
/etc/X11 存放X Window的系统配置文件,例如xorg.conf
/etc/DIR_COLORS ls的时候,文件/文件夹显示的颜色
/etc/mtab 记录目前挂载的文件系统信息
/etc/fastboot 由shutdown -f 所产生的 ,在重启之后, 系统会去检查这个文件是否存在以决定是否要执行fsck
/etc/nologin 系统关闭的时候自动产生,里边放着shutdown message。在这个时候如果有用户企图登录,就会打印出这个文件存放的message,然后阻止你登录
/etc/fstab 默认的文件系统挂载情况
/etc/virc vi的配置

/etc/vimrc vim的配置

/etc/wgetrc wget的配置
/etc/yum.conf yum的配置

/etc/yum.repos.d yum源的存放位置
/etc/kmp.conf kmp内核的配置文件

/etc/my.cnf mysql的配置文件

/etc/ssh ssh的配置文件目录,重要的有sshd_config

/etc/syslog.conf syslog的配置文件

/etc/updatedb.conf updatedb的配置文件

/etc/mtools.conf mtools配置,用于在*UNIX系统中直接访问dos/win文件系统
/etc/sysctl.conf sysctl预加载的配置文件
/etc/moprobe.conf modprobe的配置文件
/etc/ld.so.conf 加载动态链接库的配置文件,默认会加载ld.so.conf.d里边的配置
/etc/ld.so.conf.d 存放动态链接库的配置文件
/etc/ld.so.cache 动态链接库的缓存,二进制文件,可以通过ldconfig --print-cache查看
/etc/services 网络服务列表(服务名,端口,协议等)
/etc目录,域名解析,主机访问控制

/etc/host.conf 定义DNS客户端主机发出域名解析的处理顺序,默认是先查看/etc/hosts文件,再发送远程请求
/etc/hosts 自定义ip-域名解析
/etc/resolv.conf DNS服务器地址
/etc/hosts.allow 和hosts.deny一起用来作为tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问。hosts.allow控制可以访问本机的IP地址
/etc/hosts.deny 控制禁止访问本机的IP。如果和hosts.allow的配置有冲突,以hosts.deny为准
/etc目录,定时任务控制

/etc/crontab cron任务的配置文件,一般在里边配置有cron.hourly,cron.daily,cron.weekly和cron.monthly
/etc/cron.d 如果你要在特殊的时间使用crontab,可以把配置放到文件夹里边,配置的格式和/etc/crontab一样
/etc /cron.daily 每天定时任务
/etc/cron.hourly 每小时定时任务
/etc/cron.monthly 每月定时任务
/etc/cron.weekly 每星期定时任务
/etc/cron.allow 指定那些用户可以使用crontab
/etc/cron.deny 指定哪些用户禁止使用crontab,如果文件存在且为空,所有人都可以使用,如果文件不存在,那么只有root可以使用
/etc/at.allow 指定那些用户可以使用at
/etc/at.deny 指定哪些用户禁止使用at,如果文件存在且为空,所有人都可以使用,如果文件不存在,那么只有root可以使用
/dev目录 硬件设备信息
/dev/hd[a-z] 第几个IDE硬盘
/dev/tty[0-9] 第几个虚拟控制台
/dev/sd[a-z] 第几个SCSI或SATA硬盘
/dev/zero 一个无穷尽地提 供0(NULL)的设备,可以用来初始化文件
/dev/null 一个空设备,可以向它输出任何数据,而任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶
/dev/stderr 链接文件,指向/proc/self/fd/2(标准错误)
/dev/stdin 链接文件,指向/proc/self/fd/0(标准输入)
/dev/stdout 链接文件,指向/proc/self/fd/1(标准输出)
/dev/console 系统控制台,也就是直接和系统连接的监视器。如果你用cat查看该设备,并敲入一些内容,可以看到在屏幕上回显
/dev/fd[0-9] 第几个软驱设备
/dev/st SCSI磁带驱动器
/dev/pty 提供远程登陆伪终端支持。在进行Telnet登录时就要用到该设备
/dev/ttys 计算机串行接口,对于DOS来说就是com1口

/dev/cua 计算机串行接口,与调制解调器一起使用的设备
/proc目录 虚拟文件系统

/proc/apm Advanced Power Management(APM)系统信息,与apm命令相关
/proc/buddyinfo 每个内存区中的每个order有多少块可用,和内存碎片问题有关
/proc/cmdline 启动时传递给kernel的参数信息
/proc/cpuinfo cpu的信息
/proc/crypto 内核使用的所有已安装的加密密码及细节
/proc/devices 已经加载的设备并分类
/proc/dma 已注册使用的ISA DMA频道列表
/proc/execdomains Linux内核当前支持的execution domains
/proc/fb 帧缓冲设备列表,包括数量和控制它的驱动
/proc/filesystems 内核当前支持的文件系统类型
/proc/interrupts x86架构中的每个IRQ中断数
/proc/iomem 每个物理设备当前在系统内存中的映射
/proc/ioports 一个设备的输入输出所使用的注册端口范围
/proc/kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb
/proc/kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理
/proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关
/proc/locks 内核锁住的文件列表
/proc/mdstat 多硬盘,RAID配置信息(md=multiple disks)
/proc/meminfo RAM使用的相关信息
/proc/misc 其他的主要设备(设备号为10)上注册的驱动
/proc/moles 所有加载到内核的模块列表
/proc/mounts 系统中使用的所有挂载
/proc/mtrr 系统使用的Memory Type Range Registers (MTRRs)
/proc/partitions 分区中的块分配信息
/proc/pci 系统中的PCI设备列表
/proc/slabinfo 系统中所有活动的 slab 缓存信息
/proc/stat 所有的CPU活动信息
/proc/sysrq-trigger 使用echo命令来写这个文件的时候,远程root用户可以执行大多数的系统请求关键命令,就好像在本地终端执行一样。要写入这个文件,需要把/proc/sys/kernel/sysrq不能设置为0。这个文件对root也是不可读的
/proc/uptime 系统已经运行了多久
/proc/swaps 交换空间的使用情况
/proc/version Linux内核版本和gcc版本
/proc/bus 系统总线(Bus)信息,例如pci/usb等

/proc/driver 驱动信息
/proc/fs 文件系统信息
/proc/ide ide设备信息
/proc/irq 中断请求设备信息
/proc/net 网卡设备信息
/proc/scsi scsi设备信息
/proc/tty tty设备信息
/proc/net/dev 显示网络适配器及统计信息
/proc/vmstat 虚拟内存统计信息
/proc/vmcore 内核panic时的内存映像
/proc/diskstats 取得磁盘信息
/proc/schedstat kernel调度器的统计信息

/proc/zoneinfo 显示内存空间的统计信息,对分析虚拟内存行为很有用

/proc目录, 进程N的信息

/proc/N pid为N的进程信息
/proc/N/cmdline 进程启动命令
/proc/N/cwd 链接到进程当前工作目录
/proc/N/environ 进程环境变量列表
/proc/N/exe 链接到进程的执行命令文件
/proc/N/fd 包含进程相关的所有的文件描述符
/proc/N/maps 与进程相关的内存映射信息
/proc/N/mem 指代进程持有的内存,不可读
/proc/N/root 链接到进程的根目录
/proc/N/stat 进程的状态
/proc/N/statm 进程使用的内存的状态
/proc/N/status 进程状态信息,比stat/statm更具可读性
/proc/self 链接到当前正在运行的进程
/var目录 存放经常变化数据的地方

/var/lib/rpm 存放大多数rpm相关的文件
/var/cache/yum yum升级时下载的rpm文件的临时存放地,还包括系统中rpm包的头信息
/var/spool/cron/$username 每个用户自定义的cron任务,可以使用crontab或vi来操作
/var/lock 一般用来存放文件锁

/var/log 一般用来存放日志文件
/var/run 一般用来存放pid文件
/var/crash 一般是存放系统崩溃时产生的信息

/var/cache 一般用来存放缓存信息,例如yum package的缓存

/etc/sysconfig目录 系统基本配置

/etc/sysconfig/amd 为amd提供操作参数,用来自动mount/unmount文件系统
/etc/sysconfig/apmd 由apmd使用来配置电源设置

/etc/sysconfig/arpwatch 在启动的时候传递给arpwatch守护进程的参数
/etc/sysconfig/authconfig 设置主机使用的验证方式
/etc/sysconfig/autofs 自动挂载设备的自定义选项
/etc/sysconfig/clock 系统硬件时钟的设置
/etc/sysconfig/desktop 设置新用户的桌面和进入运行级别5所使用的显示管理器
/etc/sysconfig/dhcpd 在启动的时候传递给dhcpd守护进程的参数
/etc/sysconfig/gpm 在启动的时候传递给gpm守护进程的参数
/etc/sysconfig/hwconf 列出kudzu检测到的所有硬件
/etc/sysconfig/i18n 默认系统语言,系统支持的所有语言,默认系统字体
/etc/sysconfig/init 系统启动时的显示方式
/etc/sysconfig/ip6tables-config 在系统启动或者ip6tables服务启动时,内核用来设置IPv6包过滤

/etc/sysconfig/iptables-config 在系统启动或者iptables服务启动时,内核用来设置包过滤
/etc/sysconfig/keyboard 控制键盘的行为
/etc/sysconfig/kudzu 在启动的时候通过kudzu触发一次安全的系统硬件探查
/etc/sysconfig/named 在启动的时候传递给named守护进程的参数
/etc/sysconfig/netmp netmp服务的配置文件
/etc/sysconfig/network 网络的配置信息
/etc/sysconfig/ntpd 在启动的时候传递给ntpd守护进程的参数
/etc/sysconfig/radvd 在启动的时候传递给radvd守护进程的参数
/etc/sysconfig/samba 在启动的时候传递给smbd/nmbd守护进程的参数
/etc/sysconfig/selinux selinux的基本控制选项
/etc/sysconfig/spamassassin 在启动的时候传递给spamd守护进程的参数
/etc/sysconfig/squid 在启动的时候传递给squid守护进程的参数
/etc/sysconfig/vncservers 配置vnc服务启动的方式
/etc/sysconfig/xinetd 在启动的时候传递给xinetd守护进程的参数
/proc/sys目录 系统重要配置参数,涉及众多内核参数
/proc/sys/fs/file-max 可以分配的文件句柄的最大数目
/proc/sys/fs/file-nr 已分配文件句柄的数目、已使用文件句柄的数目、文件句柄的最大数目
/proc/sys/fs/inode-* 任何以名称“inode”开头的文件所执行的操作与上面那些以名称“file”开头的文件所执行的操作一样,但所执行的操作与索引节点有关,而与文件句柄无关
/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid 这两个文件分别保存那些支持 16 位用户标识和组标识的任何文件系统的用户标识(UID)和组标识(GID)
/proc/sys/fs/super-max 该文件指定超级块处理程序的最大数目。挂装的任何文件系统需要使用超级块,所以如果挂装了大量文件系统,则可能会用尽超级块处理程序
/proc/sys/fs/super-nr 显示当前已分配超级块的数目
/proc/sys/kernel/acct 该文件有三个可配置值,根据包含日志的文件系统上可用空间的数量(以百分比表示),这些值控制何时开始进行进程记帐:如果可用空间低于这个百分比值,则停止进程记帐/如果可用空间高于这个百分比值,则开始进程记帐/检查上面两个值的频率(以秒为单位)
/proc/sys/kernel/ctrl-alt-del 该值控制系统在接收到 ctrl+alt+delete 按键组合时如何反应
/proc/sys/kernel/domainname 配置网络域名
/proc/sys/kernel/hostname 主机名
/proc/sys/kernel/msgmax 指定了从一个进程发送到另一个进程的消息的最大长度
/proc/sys/kernel/msgmnb 指定在一个消息队列中最大的字节数
/proc/sys/kernel/msgmni 指定消息队列标识的最大数目
/proc/sys/kernel/panic 如果发生“内核严重错误(kernel panic)”,内核在重新引导之前等待的时间
/proc/sys/kernel/printk 该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处
/proc/sys/kernel/shmall 在任何给定时刻系统上可以使用的共享内存的总量(以字节为单位)
/proc/sys/kernel/shmax 内核所允许的最大共享内存段的大小(以字节为单位)
/proc/sys/kernel/shmmni 用于整个系统共享内存段的最大数目
/proc/sys/kernel/sysrq 如果该文件指定的值为非零,则激活 System Request Key
/proc/sys/kernel/threads-max 内核所能使用的线程的最大数目
/proc/sys/net/core/message_burst 写新的警告消息所需的时间(以 1/10 秒为单位);在这个时间内所接收到的其它警告消息会被丢弃。这用于防止某些企图用消息“淹没”您系统的人所使用的拒绝服务攻击
/proc/sys/net/core/message_cost 存有与每个警告消息相关的成本值。该值越大,越有可能忽略警告消息
/proc/sys/net/core/netdev_max_backlog 在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
/proc/sys/net/core/optmem_max 每个套接字所允许的最大缓冲区的大小
/proc/sys/net/core/rmem_default 接收套接字缓冲区大小的缺省值(以字节为单位)
/proc/sys/net/core/rmem_max 接收套接字缓冲区大小的最大值(以字节为单位)。

/proc/sys/net/core/wmem_default 发送套接字缓冲区大小的缺省值(以字节为单位)。

/proc/sys/net/core/wmem_max 发送套接字缓冲区大小的最大值(以字节为单位)

/proc/sys/net/ipv4/ip_forward ip转发是否生效
/proc/sys/net/ipv4/tcp_retrans_collapse 控制TCP双方窗口协商出现错误的时候的一些重传的行为。但是在老的2.6的核 (<2.6.18)里头,这个重传会导致kernel oops,kernel panic,所以如果出现有 tcp_retrans_*样子的kernel panic,可以把这个参数给设置成0

/proc/sys/vm/buffermem 控制用于缓冲区内存的整个系统内存的数量(以百分比表示)。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。用于缓冲区的内存的最低百分比/如果发生所剩系统内存不多,而且系统内存正在减少这种情况,系统将试图维护缓冲区内存的数量/用于缓冲区的内存的最高百分比
/proc/sys/vm/freepages 控制系统如何应对各种级别的可用内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值。如果系统中可用页面的数目达到了最低限制,则只允许内核分配一些内存/如果系统中可用页面的数目低于这一限制,则内核将以较积极的方式启动交换,以释放内存,从而维持系统性能/内核将试图保持这个数量的系统内存可用。低于这个值将启动内核交换
/proc/sys/vm/kswapd 控制允许内核如何交换内存。它有三个值,通过把用空格相隔的一串数字写入该文件来设置这三个值:内核试图一次释放的最大页面数目。如果想增加内存交换过程中的带宽,则需要增加该值/内核在每次交换中试图释放页面的最少次数/内核在一次交换中所写页面的数目。这对系统性能影响最大。这个值越大,交换的数据越多,花在磁盘寻道上的时间越少。然而,这个值太大会因“淹没”请求队列而反过来影响系统性能

/proc/sys/vm/pagecache 该文件与/proc/sys/vm/buffermem 的工作内容一样,但它是针对文件的内存映射和一般高速缓存

/proc/sys/vm/dirty_background_ratio 记录当所有被更改页面总大小占工作内存超过某个限制时,pdflush 会开始写回工作,默认是10%
/proc/sys/vm/dirty_ratio 控制文件系统的文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。默认是40%
/proc/sys/vm/dirty_writeback_centisecs 记录pdflush进程把page cache里边的内容写入磁盘的时间周期,默认是5秒
/proc/sys/vm/dirty_expire_centisecs 控制一个更改过的页面经过多长时间后被认为是过期的、必须被写回的页面,默认是30秒
/proc/sys/vm/laptop_mode 是否使用笔记本模式,在kernel2.6之后支持

㈦ linux内核驱动占用时间多久会导致内核崩溃

设置
1.安装kexec-tools工具,至于如何安装,在此不再多 说。
2.编译支持kmp的系统内核,我们叫他primary kernel。
确认以下内核选项已经被打开并重编内核。
1) 使能"kexec system call => Processor type and features." ,使内核支持kexec系统调用
CONFIG_KEXEC=y
2) 使能"Filesystem" => "Pseudo
filesystems."=> "sysfs file system support"
CONFIG_SYSFS=y
注意:如果"General Setup."=>"Configure standard kernel features (for small system)" 没有打开的话,"sysfs file system support"可能并不会在"Pseudo
filesystems."中出现,如果是 这种情况,可以直接检nfig文件,确认CONFIG_SYSFS是不是已经开启。
grep 'CONFIG_SYSFS'nfig
3)使能"Kernel hacking."=>"Compile the kernel with debug info" ,保证编译出的内核带有调试符号。因为mp分析工具在读取和分析mp文件时需要这些调试符号。
CONFIG_DEBUG_INFO=Y
3. 编译mp-capture kernel
针对不同的架构,内核选项也有不同,但是不论哪种架构,以下两个选项是必选的
"Processor type and features"=> "kernel crash mps"
CONFIG_CRASH_DUMP=y
"Filesystems" => "Pseudo filesystems"=>"/proc/vmcore support"
CONFIG_PROC_VMCORE=y
(当 CONFIG_CRASH_DUMP 被选中时,CONFIG_PROC_VMCORE会被自动选中)
下面我们看一下针对不同的架构,编 译内核还有哪些特殊的选项
1)i386 和x86_64
*在i386上,使能高内存支持"Processor type and features"=>"high memory support"
CONFIG_HIGHMEM64G=y
or
CONFIG_HIGHMEM4G
* 在i386 和x86_64上,关闭"Processor type and features"=>"symmetric multi-processing support"
CONFIG_SMP=n
如果没有将该选项设为n,则需要在加载mp- capture kernel时指定参数maxcpus=1。
*如果想编译一个加载地址可浮动的内核,则选中"Processor type and features"=>"Build a relocatable kernel"
CONFIG_RELOCATABLE=y
* 设置合适的值给"Processor type and features"=>"Physical address where the kernel is loaded"
该值的设置与内核加载地址是否是可浮动的(即是否选中CONFIG_RELOCATABLE)有关。
如 果内核加载地址不可浮动, 则该值必须与crashkernel=Y@X中的X相同(至于crashkernel=Y@X的含义即如何使用将在后面讲到),例 如:crashkernel=64M@16M,则CONFIG_PHYSICAL_START=0x100000
0。
如果内核加载地址可 浮动,则CONFIG_PHYSICAL_START的值便可不必在意,使用默认的即可。不过为了保险起见,为了能使kmp正确执 行,CONFIG_PHYSICAL_START的值不论在何时,都要于X的值相同。
2)ppc64
除了前面两个必须的选项,其 余选项默认即可。
3)ia64
除了前面两个必须的选项,其余选项默认即可。
4.准备好两个内核后,即可按如下步 骤使用kmp
1)使用primary kernel启动系统,但是要在启动参数中加入“crashkernel=Y@X”,Y表示为mp-capture kernel 预留了多少内存空间,X该段空间的起始地址,即内核选项中CONFIG_PHYSICAL_START的值。
对于x86和x86_64架构,一般 使用crashkernel=64M@16M,CONFIG_PHYSICAL_START=0x1000000
对于ppc64架构,一般使用 crashkernel=128M@32M,CONFIG_PHYSICAL_START=0x2000000
对于ia64架构,通常使用 crashkernel=256M@256M。
2)加载mp-capture kernel
系统启动后,即可加载mp- capture kernle。
不同的架构,可以选择使用为压缩的mp-capture kernle (vmlinux) 或者压缩过的mp-capture kernle(bzImage/vmlinuz)。
i386 和x86_64:
如果mp-capture kernel编译时未选中CONFIG_RELOCATABLE,则只能使用vmlinux
如果mp-capture kernel编译时打开了CONFIG_RELOCATABLE,则可以使用bzImage/vmlinuz
ppc64 :
只能使用vmlinux
ia64:
可以使用vmlinux或者vmlinuz.gz
加载方法:
kexec -p <mp-capture-kernel-vmlinux-image> \
--initrd=<initrd-for-mp-capture-kernel> --args-linux \
--append="root=<root-dev> <arch-specific-options>"
mp- capture-kernel-vmlinux-image:表示存放mp-capture kernel 的路径
initrd-for- mp-capture-kernel:表示initrd的路径,如果没有,可以省略该参数
--args-linux:表示Pass linux kernel style options,没看明白什么意思,但是ia64架构不需要加这个参数,其他架构都要有。
--append: 该参数后跟内核启动参数。
arch-specific-options:内核启动参数的一部分,该处根据不同架构,填写不同参数。 i386, x86_64 和 ia64 填"1 irqpoll maxcpus=1 reset_devices",ppc64填"1 maxcpus=1 noirqdistrib reset_devices"。
注:
默认情况下,ELF文件头采用ELF64格式存储以支持那些拥有超过 4GB内存的系统。但是可以指定“--elf32-core-headers”标志以 强制使用ELF32格式的ELF文件头。这个标志是有必要注意的,一个重要的原因就是:当前版本的GDB不能在一个32位系统上打开一个使用ELF64格 式的vmcore文件。ELF32格式的文件头不能使用在一个“没有物理地址扩展”(non-PAE)的系统上。(即是说,少于4GB内存的系统)
1 这个参数,将启动“转储捕捉内核”到一个没有网络支持的单用户模式。如果你希望有网络支持,那么使用“init 3”
maxcpus=1,这个前 面说过,如果CONFIG_SMP=n,则需要在启动参数中加入maxcpus=1。
irqpoll 的启动参数可以减低由于在“转储捕获内核”中使用了“共享中断”技术而导致出现驱动初始化失败这种情况发生的概率。
举例:
kexec -p /boot/vmlinux_capture --args-linux --append="root=/dev/nfs rw nfsroot=128.224.149.6:/tftpboot/cxu/15554/rootfs ip=dhcp console=ttyS0,115200 1 maxcpus=1 noirqdistrib reset_devices"
3)测试 kmp是否成功
手动产生一个crash:echo c > /proc/sysrq-trigger。
或者可以些一个强制产生 crash的模块。
如果成功,系统将会进入热启动过程,系统启动完成后,可以执行一下uname -a ,看看内核的名字是不是有-kmp的标签呢?
然后就可以把生成的转储文件vmcore拷贝出来了,直接cp即可:
cp /proc/vmcore <anywhere>
也可以通过/dev/oldmem这个设备将其考出:
cd ~
mknod /dev/oldmem c 1 12
dd if=/dev/oldmem of=oldmem.001
成功将vmcore 拷贝出来后即可重启系统了。
4)分析vmcore文件
在开始分析“转储文件”之前,应该确定重启到一个稳定的内核。
可以 使用GDB在‘转储文件’上做有限的分析。分析的时候需要“带有调试信息的vmlinux文件”(编译的时候带有-g选项),运行如下命令:
gdb vmlinux vmcore
注意:GDB不能分析x86平台上以ELF64格式产生的“内核转储文件”。在一个最大内存为4GB的系统上,可 以通过在“转储捕捉内核”上指定“--elf32-core-headers”标志来使用ELF32格式的文件头。
也可以使用Crash工具集来 分析Kmp产生的“内核转储文件”,crash 工具可以到网上下载:
~anderson/
以上文档主要是翻译自内核自带文档linux/Documentation/kmp/kmp.txt,部分使用自己的语言表达。如有错误,请指正。
标签: 内核崩溃转储机制 Linux

㈧ 说Kexec是基于kexec机制工作的,但关于Kmp到底是怎么实现的

kmp是一种先进的基于kexec的内核崩溃转储机制。当系统崩溃时,kmp使用kexec启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用。由于kmp利用kexec启动捕获内核,绕过了BIOS,所以第一个内核的内存得以保留。这是内核崩溃转储的本质。kmp需要两个不同目的的内核,生产内核和捕获内核。生产内核是捕获内核服务的对像。捕获内核会在生产内核崩溃时启动起来,与相应的ramdisk一起组建一个微环境,用以对生产内核下的内存进行收集和转存。注意,在启动时,kmp保留了一定数量的重要的内存,为了计算系统需要的真正最小内存,加上kmp使用的内存数量,以决定真正的最小内存的需求。为了更好的容错,这个机制最好还是启用

㈨ 在安装虚拟机的时候,那个kmp是个什么东西

1,什么是java虚拟机 Java虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。 2,为什么使用Java虚拟机? Java语言最重要的特点就是可以在任何操作系统中运行。使用Java虚拟机就是为了支持与操作系统无关,在任何系统中都可以运行。 3,Java虚拟机的基本原理 Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。 我们上网时,有些网页是用java语言写的,以及一些java程序脚本等等都需要系统中有Java虚拟机时才能打开察看。不过,有些恶意网页有带病毒的java脚本程序,使电脑中毒。但毕竟是少数。如果不装的话可能中的毒就少一些,但这个虚拟机还是很实用的,很多地方都要用到,建议安装。

㈩ Centos 在欢迎界面的kmp这步骤时,无论点什么vmbox 都死机 ,哥们能帮忙吗

就是提示你的内存太小,无法自动设置KDUMP,你可以把勾去掉,再finish等到系统安装结束进到系统手动设置。到终端输入system-config-kmp或“系统”-“管理”-“内核崩溃转储”。不过没什么作用,你的系统不崩溃就用不上,一般禁用因为要分一部分内存单独给kmp而且其他进程不能去使用这部分内存,当然如果你是系统内核开发人员就例外了

热点内容
编程与实战 发布:2024-05-03 12:54:30 浏览:38
电脑开机有密码rpc服务器不可用 发布:2024-05-03 12:40:54 浏览:471
硬件的算法 发布:2024-05-03 12:34:28 浏览:388
支付密码为什么就六位 发布:2024-05-03 12:29:17 浏览:920
脚本找书 发布:2024-05-03 12:02:17 浏览:493
境外服务器租用怎么办 发布:2024-05-03 11:45:34 浏览:943
我的世界服务器怎么设置到重生点 发布:2024-05-03 11:33:04 浏览:752
mysqllinux安装包下载 发布:2024-05-03 11:32:07 浏览:934
以太算法的币 发布:2024-05-03 11:30:45 浏览:383
编译nfs 发布:2024-05-03 11:30:40 浏览:432