導航:首頁 > 操作系統 > 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內核重啟相關的資料

熱點內容
pdf降低大小 瀏覽:230
魔獸世界中文如何外服伺服器 瀏覽:924
kindle轉pdf格式 瀏覽:60
單片機自動控制 瀏覽:673
需要很多文件夾怎麼快速的新建啊 瀏覽:67
演算法申請著作權 瀏覽:213
以前手機號換了要怎麼登錄農行app 瀏覽:192
線切割編程系統怎麼繪畫 瀏覽:234
如何搭建雲伺服器異地容災 瀏覽:923
黃金拐點指標源碼 瀏覽:92
演算法導論第九章 瀏覽:277
鴿子為什麼生成伺服器沒反應 瀏覽:491
freebsdnginxphp 瀏覽:216
雜訊消除演算法 瀏覽:608
vue類似電腦文件夾展示 瀏覽:112
後備伺服器有什麼功效 瀏覽:269
連不上伺服器怎麼連 瀏覽:601
什麼構架的可以刷安卓系統 瀏覽:771
愛奇藝APP怎麼兌換CDK 瀏覽:995
程序員買4k顯示器還是2k顯示器 瀏覽:144