Linux内核错误(引导系统)Deepin用户手册在/etc/sysctl.conf文件中加入kernel.panic = 20,在/etc/sysctl.conf中kernel.sysrq=1内存
Linux内核错误(引导系统)- 系统管理 -Deepin深度系统用户手册
Power By Baidu Ai
00:00
00:00
目录
1 简介
2 问题分析
3 案例分析
此文章约为4327字,阅读需要10 分钟
简介
内核错误(Kernel panic)是指操作系统在监测到内部的致命错误,并无法安全处理此错误时采取的动作。这个概念主要被限定在Unix以及类Unix系统中;对于Microsoft Windows系统,等同的概念通常被称为蓝屏死机。
操作系统内核中处理Kernel panic的子程序(在AT&T派生类以及BSD类Unix中,通常称为panic())通常被设计用来向控制台输出错误信息,向磁盘保存一份内核内存的转储,以便事后的调试,然后等待系统被手动重新引导,或自动重新引导。该程序提供的技术性信息通常是用来帮助系统管理员或者软件开发者诊断问题的。 操作系统试图读写无效或不允许的内存地址是导致内核错误的一个常见原因。内核错误也有可能在遇到硬件错误或操作系统BUG时发生。在许多情况中,操作系统可以在内存访问违例发生时继续运行。然而,系统处于不稳定状态时,操作系统通常会停止工作以避免造成破坏安全和数据损坏的风险,并提供错误的诊断信息。
问题分析
kernel panic错误表现 kernel panic 主要有以下几个出错提示:
Kernel panic-not syncing fatal exception in interrupt kernel panic - not syncing: Attempted to kill the idle task! kernel panic - not syncing: killing interrupt handler! Kernel Panic - not syncing:Attempted to kill init !
查看了一下 linux的源码文件,找到相关位置
kernel/panic.c NORET_TYPE void panic(const char * fmt, ...) { stATIc char buf[1024]; va_list args; bust_spinlocks(1); va_start(args, fmt); vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); printk(KERN_EMERG "Kernel panic - not syncing: %s/n",buf); bust_spinlocks(0); kernel/exit.c if (unlikely(in_interrupt())) panic("Aiee, killing interrupt handler!"); #中断处理 if (unlikely(!tsk->pid)) panic("Attempted to kill the idle task!"); #空任务 if (unlikely(tsk->pid == 1)) panic("Attempted to kill init!"); #初始化
从其他源文件和相关文档看到应该有几种原因:
1.硬件问题
使用了 SCSI-device 并且使用了未知命令
#WDIOS_TEMPPANIC Kernel panic on temperature trip # # The SETOPTIONS call can be used to enable and disable the card # and to ask the driver to call panic if the system overheats. # # If one uses a SCSI-device of unsupported type/commands, one # immediately runs into a kernel-panic caused by Command Error. To better # understand which SCSI-command caused the problem, I extended this # specific panic-message slightly. # #read/write causes a command error from # the subsystem and this causes kernel-panic
2.系统过热
如果系统过热会调用panci,系统挂起
#WDIOS_TEMPPANIC Kernel panic on temperature trip # # The SETOPTIONS call can be used to enable and disable the card # and to ask the driver to call panic if the system overheats.
3.文件系统引起
#A variety of panics and hangs with /tmp on a reiserfs filesystem #Any other panic, hang, or strange behavior # # It turns out that there's a limit of six environment variables on the # kernel command line. When that limit is reached or exceeded, argument # processing stops, which means that the 'root=' argument that UML # usually adds is not seen. So, the filesystem has no idea what the # root device is, so it panics. # The fix is to put less stuff on the command line. Glomming all your # setup variables into one is probably the best way to go.
Linux内核命令行有6个环境变量。如果即将达到或者已经超过了的话 root= 参数会没有传进去 启动时会引发panics错误。
vi grub.conf ##################### title Red Hat Enterprise Linux AS (2.6.9-67.0.15.ELsmp) root (hd0,0) kernel /boot/vmlinuz-2.6.9-67.0.15.ELsmp ro root=LABEL=/ initrd /boot/initrd-2.6.9-67.0.15.ELsmp.img title Red Hat Enterprise Linux AS-up (2.6.9-67.EL) root (hd0,0) kernel /boot/vmlinuz-2.6.9-67.EL ro root=LABEL=/ initrd /boot/initrd-2.6.9-67.EL.img
应该是 其中的 root=LABEL=/ 没有起作用。
4.内核更新
网上相关文档多半是因为升级内核引起的,建议使用官方标准版、稳定版 另外还有使用磁盘的lvm 逻辑卷,添加cpu和内存。可在BIOS中禁掉声卡驱动等不必要的设备。 也有报是ext3文件系统的问题。
解决: 手工编译内核,把 ext3相关的模块都编译进去。
5.处理panic后的系统自动重启
panic.c源文件有个方法,当panic挂起后,指定超时时间,可以重新启动机器
if (panic_timeout > 0) { int i; /* * Delay timeout seconds before rebooting the machine. * We can't use the "normal" timers since we just panicked.. */ printk(KERN_EMERG "Rebooting in %d seconds..",panic_timeout); for (i = 0; i < panic_timeout; i++) { touch_nmi_watchdog(); mdelay(1000); }
修改方法: /etc/sysctl.conf文件中加入
kernel.panic = 30 #panic错误中自动重启,等待时间为30秒 kernel.sysrq=1 #激活Magic SysRq! 否则,键盘鼠标没有响应
内核错误之后的解决办法
Linux的稳定性勿容置疑,但是有些时候一些Kernel的致命错误还是会发生(有些时候甚至是因为硬件的原因或驱动故障),Kernel Panic会导致系统crash,并且默认的系统会一直hung在那里,直到你去把它重新启动! 不过你可以在/etc/sysctl.conf文件中加入
kernel.panic = 20
来告诉系统从Panic错误中自动重启,等待时间为20秒!这个由管理员自己设定! 另外一个讨厌的事情是系统hung住之后,键盘鼠标没有响应,这个可以通过设置Magic SysRq来试着解决,也是在/etc/sysctl.conf中
kernel.sysrq=1
来激活Magic SysRq! 这样在挂住的时候至少还有一招可以使, 按住 [ALT]+[SysRq]+[COMMAND], 这里SysRq是Print SCR键,而COMMAND按以下来解释!
b - 立即重启 e - 发送SIGTERM给init之外的系统进程 o - 关机 s - sync同步所有的文件系统 u - 试图重新挂载文件系统
当然,谁也不希望经常用到这些招数!:O,有备无患而已
Kernel panic问题如何调试 Linux kernel panic是很难定位和排查的重大故障,一旦系统发生了kernel panic,相关的日志信息非常少,而一种常见的排查方法—重现法–又很难实现,因此遇到kernel panic的问题,一般比较头疼。
没有一个万能和完美的方法来解决所有的kernel panic问题,这篇文章仅仅只是给出一些思路,一来如何解决kernel panic的问题,二来可以尽可能减少发生kernel panic的机会。
案例分析
Kernel Panic -- not syncing: attempted to kill idle task
出现这种错误是进入不了操作系统的,kernel panic的成因有多种多样,但这种情况是比较奇特的一种,因为它很可能不是软件的问题,而是硬件的问题。几年前我用带奔三的旧主板时遇到过,当时不知道如何解决,只知道它偶尔出现,放一放也会自行消失,所以当初没有重视。现在,当我重新用上旧主板,这种情况又出现了,而且这一次比较顽固,无论怎样重启,总是这条错误,不但硬盘上现有的两个操作系统都进不去,而且连光驱里的LiveCD也进不去了,这显然不是硬盘的问题,也不是内核的问题。以前我就明白应该是主板的问题,可能是主板太旧,电路信号不太通畅的原因,但不知道怎么办,害得我一天一宿没上网。今天早上去网吧,查了点资料,大体上有几种说法:
第一种是在grub作内核引导时添加idle参数,这一种是国内网常见的一种说法;
第二个方法是注意一下bios中显示的cpu或者内存条的温度;
第三种是重新作initrd,即mkinitrd;
第四种是在grub中启动memtest86来测试内存,
这几个是外国人的论坛上说的。我回到家以后,先试了第一种,加了idle的各种参数后,毫无效果,关于第二种方法,我在bios中看到似乎硬件的温度不是可以调节的,但我从这个思路出发,考虑到,如果与内存有关,不妨把三个内存条互换一下位置,也许有效,于是,我把我的三个SD内存换了位置,然后开机,一切正常了。(可能是内存引起飞凌主板原子程序2022.10.24)
Kernel Panic -- not syncing: attempted to kill init
这一种情况的表现是系统的极不稳定。或者进入不了系统,syslog停止于kernel panic;或者重启后可以进入系统,但不久就死机,键盘上的Caps-Lock与Scroll-Lock两个灯在闪。这种错误与上面那个有相同的成因,解决方法也相同。
Deepin深度系统用户手册 | |
安装&卸载 | 如何在桌面新建文件夹/文档 |
原生安装教程 | |
Deepin深度系统体验安装教程 - 安装&卸载 | |
Deepin深度系统系统卸载教程 | |
Deepin深度系统安装器 | |
基本操作 | 新建文件夹/文档、排列方式、设置显示器、热区、壁纸 |
任务栏图标、切换显示模式、设置任务栏位置、大小、显示隐藏、回收站 | |
账户管理(创建,更改账户头像,密码,删除账户) | |
显示设置(单屏设置,多屏设置,自定义设置) | |
默认程序设置(选中、添加、删除默认程序设置) | |
个性化设置(主题、字体设置) | |
硬件资源设备管理 | 蓝牙设置(蓝牙开关、蓝牙名称、蓝牙设备) |
网络设置(有线,无限,移动,宽带,vpn,代理网络设置) | |
声音设置(设置扬声器、耳机、音效、高级设置) | |
日期和时间(设置日期时间、时区、自动同步) | |
电源管理(设置显示器休眠、设置锁屏时间) | |
设备管理(鼠标、键盘、触控板、语言) | |
系统管理(系统信息、协议、系统更新) | |
窗口管理器(打开,添加,切换,命名,桌面窗口等) | |
桌面操作 | 新手入门(概述、打开,关闭)文件 |
文件(夹)功能(新建,重命名,复制,压缩,删除等) | |
磁盘以及选项管理(显示、卸载、弹出磁盘) | |
常用操作(搜索文件、管理标签、书签、共享、网上邻居、创建链接等) | |
应用商店(运行,关闭,以及主界面) | |
应用管理(搜索,下载,安装,更新,升级,卸载) | |
看图管理(介绍,运行,关闭) | |
图片操作(复制,打印,删除,旋转,设置为壁纸) | |
图片管理(时间线、相册管理) | |
系统管理 | 启动管理(系统启动流程) |
引导系统(系统引导器) | |
Linux内核(引导系统) | |
Linux内核错误(引导系统) | |
Linux初始化(初始化) | |
开机动画 (初始化) | |
电源管理(待机,休眠,关机,重启) | |
电源管理(能耗、节能、亮度,CPU频率,内核等) | |
用户管理 | 用户管理(用户类型,添加,修改,删除用户) |
群组管理(分组,群组密码,身份切换,常见问题) | |
文件管理 | 文件与目录(命名,路径,目录,图形管理,命令管理) |
文件与目录权限(文件、目录权限) | |
管理文件权限(图形、命令、改变文件权限、umask介绍等) | |
文件系统(本地,网络文件系统) | |
磁盘管理 | 挂载(挂载点,FHS,挂载文件系统(图形管理,命令管理)) |
挂载点管理 - 文件管理 | |
磁盘管理(分区,格式化,维护,写入,配额) | |
软件管理 | 源代码与程序 、进程分类、属性、父进程和子进程 |
配置文件目录,备份、删除、清理残余等 | |
开机启动配置文件管理 | |
快捷方式原理 - Desktop Entry 文件 | |
软件源(文件,修改,同步软件源) | |
源代码包(修改,获取,编译安装,删除) | |
包管理命令(dpkg,apt,apt-cache,apt-file,aptitude,dselcet) | |
系统服务 | deepin深度系统常见服务 |
服务(分类,窗口类型,工作形态的类型,命名,启动方式) | |
服务管理(chkconfig,service) | |
登录管理器(类型,设置,切换登录管理器,登录出错)桌面组件 | |
Shell(命令Shell,图形Shell)桌面组件 | |
常见问题 | 为什么要自定义多个分区? |
为什么不默认开机挂载Win分区 | |
不能挂载特定的win分区? | |
Linux系统盘分区太小,不够用,问是不是要重装系统? | |
为什么不把软件全部转换成deb包? | |
如何删除APT缓存? | |
如何删除软件配置? | |
添加PPA? | |
无法解析或打开软件包的列表或是状态文件 | |
出现Unable to correct problems, you have held broken packages的解决办法 | |
dpkg 被中断,您必须手工运行 sudo dpkg --configure -a解决此问题 | |
下列签名无法进行验证: NO_PUBKEY 06EA41DE4F6C1E86 | |
出现They have been ignored, or old ones used instead的解决办法 | |
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? | |
无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) | |
如何删除卸载软件包? | |
为什么不能同时安装一个以上的软件 | |
无法下载bzip2, Hash 校验和不符 | |
在deepin系统中如何设置GTK主题和窗口主题? | |
在deepin系统中如何安装与设置图标主题? | |
在deepin系统中如何安装与设置光标(鼠标)主题? | |
在deepin系统中如何设置开机音乐? | |
在deepin系统中如何安装系统字体? | |
在deepin系统中如何设置系统语言? |
Linux内核错误(引导系统)- 系统管理 -Deepin深度系统用户手册_其他教程_uc电脑园
Linux内核错误(引导系统)Deepin用户手册在/etc/sysctl.conf文件中加入kernel.panic = 20,在/etc/sysctl.conf中kernel.sysrq=1内存相关推荐
- 学习 Linux,101: 引导系统
2019独角兽企业重金招聘Python工程师标准>>> 系列文章: http://www.ibm.com/developerworks/cn/views/linux/libraryv ...
- BootLoader简介——linux内核的引导
1.BootLoader 在CPU上电启动时,一般连内存控制器都没有初始化过,根本无法在主存中运行程序,更不可能处在Linux内核启动环境中,为了初始化CPU及其他外设,使得Linux内核可以在系统主 ...
- YOCTO项目介绍:通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统
目录 YOCTO项目介绍 配置内核 build配套 Yocto ,是一个开源社区.它通过提供模版.工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (3 ...
- 双核Linux内核的引导
最后再整一篇多核的引导,称热打铁 Linux内核的引导 引导Linux系统的过程包括很多阶段,这里将以引导ARM Linux为例来进行讲解(见图3.11). 一般的SoC内嵌入了bootrom,上电时 ...
- Linux内核之时间系统
Linux内核之时间系统 1.Linux时间系统 (1)CMOS时钟 (2)系统时钟 (3)节拍数(jiffies) (4)墙上时间(xtime) 2.重要数据结构 (1)struct tk_read ...
- 【操作系统】Linux内核和Windows系统的内核有什么区别?
本文内容转载自"拉勾教育"的讲义,更多课程信息请关注拉勾教育.本人在学习之余记记笔记,顺便当当搬运工! 目录 Linux内核和Windows系统的内核有什么区别? 什么是内核? 内 ...
- 话说linux内核-uboot和系统移植第14部分-朱有鹏-专题视频课程
话说linux内核-uboot和系统移植第14部分-5304人已学习 课程介绍 本课程为linux kernel移植的第1部分,主要内容是对linux内核有关的知识和概念的补充.认识清 ...
- 编译linux内核3.0系统出现的警告信息(原创)
编译linux内核3.0系统出现的警告信息(原创) 余超 yuchao86@gmail.com [yuchao@yuchao-Latitude-E5410 linux-3.0]$gcc --ver ...
- 安卓学习日记(一):了解安卓架构(linux内核层、系统运行库层、应用框架层、应用层)
首先为了理解安卓系统是怎么工作的,就先来看一下android的系统架构,其架构大至可以分为四层:linux内核层.系统运行库层.应用框架层和应用层,那就先说说这几层. 1.linux内核层: Andr ...
最新文章
- css属性选择符的应用
- 什么样的python程序员好找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...
- 1.2.3 TCP/PI参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较
- springboot的yml配置文件绑定时必须和相应的类中的属性类型对应,不然启动报错
- C语言查找单链列表的第k个元素的算法(附完整源码)
- 广义Fibonacci数列找循环节
- Hadoop学习---Zookeeper+Hbase配置学习
- java 获取图片路径_Java获取文件路径的几种方式
- 发光二极管pcb封装图画法_干货 | 从焊接角度谈画PCB图时应注意的问题
- 只用最适合的!全面对比主流 .NET 报表控件
- Win7 XP双系统安装
- 【建议收藏】六个免费的在线OCR识别网站,显著提高你的工作效率!
- RocketMQ集群(2主2从)搭建详细步骤
- 学会感谢--谈辞职信的写法
- html5的canvas实现中国象棋
- 笔记本通过扩展坞扩展显示器,显示器显示无信号
- 解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HO问题
- 解决chrome系浏览器ime-mode问题
- 湖南大学的计算机网络,林亚平-湖大信息科学与工程学院
- AutoSAR系列讲解(入门篇)2.2-SWC的类型