导航:首页 > 操作系统 > linux内核重启

linux内核重启

发布时间:2022-08-09 14:20:02

linux内核编译rboot重启后一直这样显示,关掉再打开还是这样求大神解救

基于x86的处理器有两种操作模式:实模式和保护模式。在实模式下,用户仅可以使用1 MB内存,并且没有任何保护。保护模式要复杂得多,用户可以使用更多的高级功能(如分页)。CPU 必须中途将实模式切换为保护模式。但是,这种切换是单向的,即不能从保护模式再切换回实模式。
内核初始化的第一步是执行实模式下的汇编代码,之后执行保护模式下init/main.c文件(上一章修改的源文件)中的 start_kernel()函数。
start_kernel()函数首先会初始化CPU子系统,之后让内存和进程管理系统就位,接下来启动外部总线和 I/O设备,最后一步是激活初始化(init)程序,它是所有Linux进程的父进程。初始化进程执行启动必要的内核服务的用户空间脚本,并且最终派生控制台终端程序以及显示登录(login)提示。

⑵ 烧写linux内核后不断重启

首先,直接烧zImage是不对的,要用mkimage工具转成uImage,烧这个uboot才认识
其次,uboot参数可能要修改,照你现在的日志看是烧写0x00300000,要改成你现在需要的大小

⑶ linux内核线程死锁或死循环之后如何让系统宕机重启

在开发内核模块或驱动时,如果处理失误,导致内核线程中出现死锁或者死循环,你会发现,除了重启之外,你没有任何可以做的。这时你的输入不起任何作用,终端(不是指远程的ssh工具)只会在那重复的输出类似“BUG: soft lockup - CPU#0 stuck for 67s! [fclustertool:2043]”,更无奈的是你重启之后导致系统挂起的堆栈信息也看不到,你所能做的就是一遍遍的加调试信息,一遍遍的重启机器(这是我的经历,现在想想很傻)。 这种情况你肯定不是第一个遇到的,所以内核肯定会提供处理这种情况的一些机制。但是如何来找到这些机制在哪个地方,或者说根据什么信息去google呢?最有用的就是这句话“BUG: soft lockup - CPU#0 stuck for 67s! [fclustertool:2043]”,因为这句话提供你的信息量很大。首先,这条信息可以输出,说明即使发生死锁或者死循环,还是有代码可以执行。第二,可以通过这个日志信息,找到对应的处理函数,这个函数所在的模块就是用来处理CPU被过度使用时用到的。所以通过这个事情,可以看到内核打印出的只言片语都有可能成为你解决问题的关键,一定要从重视这些信息,从中找出有用的东西。 我经常看的内核版本是官方的2.6.32内核,这个版本中我找到的函数是softlockup_tick(),这个函数在时钟中断的处理函数run_local_timers()中调用。这个函数会首先检查watchdog线程是否被挂起,如果不是watchdog线程,会检查当前占有CPU的线程占有的时间是否超过系统配置的阈值,即softlockup_thresh。如果当前占有CPU的时间过长,则会在系统日志中输出我们上面看到的那条日志。接下来才是最关键的,就是输出模块信息、寄存器信息和堆栈信息,检查softlockup_panic的值是否为1。如果softlockup_panic为1,则调用panic()让内核挂起,输出OOPS信息。代码如下所示:/** This callback runs from the timer interrupt, and checks * whether the watchdog thread has hung or not:*/void softlockup_tick(void){int this_cpu = smp_processor_id(); unsigned long touch_timestamp = per_cpu(touch_timestamp, this_cpu); unsigned long print_timestamp; struct pt_regs *regs = get_irq_regs(); unsigned long now; /* Warn about unreasonable delays: */ if (now <= (touch_timestamp + softlockup_thresh))return; per_cpu(print_timestamp, this_cpu) = touch_timestamp; spin_lock(&print_lock); printk(KERN_ERR BUG: soft lockup - CPU#%d stuck for %lus! [%s:%d]\n, this_cpu, now - touch_timestamp, current-comm, task_pid_nr(current)); print_moles(); print_irqtrace_events(current);if (regs)show_regs(regs);elsemp_stack(); spin_unlock(&print_lock); if (softlockup_panic) panic(softlockup: hung tasks);} 但是softlockup_panic的值默认竟然是0,所以在出现死锁或者死循环的时候,会一直只输出日志信息,而不会宕机,这个真是好坑啊!所以你得手动修改/proc/sys/kernel/softlockup_panic的值,让内核可以在死锁或者死循环的时候可以宕机。如果你的机器中安装了kmp,在重启之后,你会得到一份内核的core文件,这时从core文件中查找问题就方便很多了,而且再也不用手动重启机器了。如果你的内核是标准内核的话,可以通过修改/proc/sys/kernel/softlockup_thresh来修改超时的阈值,如果是CentOS内核的话,对应的文件是/proc/sys/kernel/watchdog_thresh。CentOS内核和标准内核还有一个地方不一样,就是处理CPU占用时间过长的函数,CentOS下是watchdog_timer_fn()函数。 这里介绍下lockup的概念。lockup分为soft lockup和hard lockup。 soft lockup是指内核中有BUG导致在内核模式下一直循环的时间超过10s(根据实现和配置有所不同),而其他进程得不到运行的机会。hard softlockup是指内核已经挂起,可以通过watchdog这样的机制来获取详细信息。这两个概念比较类似。如果你想了解更多关于lockup的信息,可以参考这篇文档: 注意上面说的这些,都是在内核线程中有效,对用户态的死循环没用。如果要监视用户态的死循环,或者内存不足等资源的情况,强烈推荐软件层面的watchdog。具体的操作可以参考下面的文章,都写的非常好,非常实用:

⑷ Linux 内核启动过程 求指导

init进程之后就是各种系统服务的启动过程了,所有的服务都是init的子进程,比如终端登录mingetty,远程登录sshd,数据库mysqld、X图形服务dm等。所以linux的进程关系是单根的树形结构。
系统服务的启动有若干种方式,目前比较常见的是sysvinit这种模式,一部分服务在/etc/inittab文件中定义(比如mingetty),另一部分服务在/etc/init.d下面以脚本的形式定义,并链接到/etc/rc?.d目录下(? = 0-6,代表linux的7种运行级别),以[K|S]??Name的方式命名(S代表启动时调用,K代表停止时调用,xx从00-99,代表启动顺序)。
运行级别:0代表关机,6代表重启动,1是单用户模式,只启动一个sh进程,作为维护用的终端,2、3是字符界面下的运行模式,5是图形界面下的运行模式,4保留。2、3、5模式的区别只是各自运行的服务数量不同。
除了sysvinit外,近期有一些linux发行版采用了另一种服务体系:systemd,这种体系比sysvinit复杂得多,但启动速度大大提高,一定程序上也保留了与sysvinit的兼容性,有兴趣的话可以自己查资料。

⑸ 请问大家,linuxmint升级内核重启就这样了,该怎么办

如果kernel panic 肯定是在kernel内部出的问题。你跑的应用在某处用到的内核功能可能与实际操作系统版本的功能预期的不一致。比较彻底的办法就是分析下你应用都高频率地使用什么内核接口功能。把core mp 仔细看一下。简单快速的办法就是查下你的应用依赖什么版本的内核,把你操作系统的kernel换掉。

⑹ linux 2.6.25 内核配置 重启不了

udev 太新了。或者需要的配置没有打开。
内核的默认设置一般是肯定会出问题的。
----------
卡住的输出位置并不一定是导致错误的输出。

⑺ 在linux系统 centos 写了一个程序,运行过程中会导致内核自动重启,我换机子运行,同样有时候会重启

如果找不到异常的信息,可以考虑升级下内核。
如果依然不能解决,请将你的问题发到专门的Linux论坛,比如linuxforum,chinaunix,linuxsir,那边有经验的DX比较多,能给你比较快的解决这个问题。

阅读全文

与linux内核重启相关的资料

热点内容
鸽子为什么生成服务器没反应 浏览:490
freebsdnginxphp 浏览:215
噪声消除算法 浏览:607
vue类似电脑文件夹展示 浏览:111
后备服务器有什么功效 浏览:268
连不上服务器怎么连 浏览:600
什么构架的可以刷安卓系统 浏览:771
爱奇艺APP怎么兑换CDK 浏览:994
程序员买4k显示器还是2k显示器 浏览:144
python多进程怎么多窗口 浏览:818
电脑文件夹怎么取消类别 浏览:47
cad拉线段命令 浏览:924
如何用电脑清理手机没用的文件夹 浏览:100
储存层次结构对程序员的意义 浏览:477
微信文件夹查看器 浏览:952
android视频聊天开源 浏览:552
思科iso命令 浏览:944
手机网页源码里的视频地址 浏览:681
哈利波特魔法觉醒要怎么选服务器 浏览:993
情感交友网站php 浏览:942