Linux核心重編譯常見故障及其解決方法(轉)
Linux核心重編譯常見故障及其解決方法(轉)[@more@]核心重編譯對很多Linux愛好者來說是一個不小的挑戰。筆者認為,很多Linux使用者對核心通常有一種誤解,他們認為普通使用者是不能調整核心的。其實,就實際情況而言,這種認識是不全面的。應該說,核心重編譯是具有一定深度和複雜性的,同時也是易失敗的配置工作。
如果大家留意那些比較權威的Linux參考工具書的話,就會發現很多原版書籍都把核心重編譯作為一個很重要的章節進行介紹。本文將要向讀者介紹的並不是如何去一步步的對Linux核心進行重編譯,而是收集整理了幾個在Linux核心重編譯中最常見的故障及其解決方法,如果您在編譯核心過程中遇到了類似的故障,那麼本文將會對您有所幫助。
Linux核心重編譯常見故障介紹
在介紹Linux核心重編譯常見故障前,假設我們已經按照參考工具書上的步驟對Linux核心進行了相應的配置。
Linux核心重編譯通常包括了許多步驟。如果“幸運”的話,Linux核心重編譯是可以一次性編譯成功的。如果在編譯完成後,啟動計算機或者核心的時候系統有錯誤資訊的提示,那麼最有可能出現的是以下5個:1.核心不能啟動;2.異常I/O錯誤;3.核心反映緩慢;4.核心不能正確編譯;5.系統重複啟動。
故障分析及其解決方法
核心不能啟動
當我們重新建立Linux核心時,主要是選擇使用者需要或不需要在系統中使用的裝置及服務。從2.0版核心開始,Linux引入了一個全新的設計特徵到核心中並提供了折中方案:元件可以動態的、隨時的調入和調出核心。例如我們在修改/etc/lilo.conf之後都要重新啟動系統,如果你的核心不能啟動,並且在螢幕上看到了下面的資訊:
Warning: unable to open an initial console Kernel panic: no init found. Try passing init= option to kernel
這個錯誤最大的可能就是我們沒有正確的給/etc/lilo.conf 中的“root=”提供引數。例如,在一個Linux系統中有root=dev/hdc5這樣的配置方式,那麼這是錯誤的,正確的應該是root=/dev/hdc5,不要小看只是多了一個 “/”,這是給root提供的重要引數。沒有“/”則Linux核心無法確認root到底該從哪裡啟動。很多朋友往往忽略了這個小細節而造成核心引導失敗。下面給出/etc/lilo.conf的一個正確的配置清單,僅供參考。
/etc/lilo.conf示例
―――――――――――
boot=/dev/hdc5
map=/boot/map
prompt
timeout=50
image=/boot/vmlinuz-2.2.2-1
label=Linux
root=/dev/hdc5
inirtd=/boot/initrd-2.2.2-1.img
read-only
other=/dev/hda1
label=dos
table=/dev/hda
異常I/O錯誤
如果您重新建立了一個Linux核心,並且能正確啟動,但在使用新核心過程中,系統經常出現崩潰、當機等異常現象。那麼很可能是I/O出現了問題。I/O異常除了使得系統頻繁出現莫名其妙的故障之外,更重要的是會使Linux核心降級,導致整個系統系能嚴重下降。
究其異常I/O錯誤的原因,是使用者在編譯Linux核心結束的時候沒有執行“make dep clean”這一步驟。一般來說,我們在儲存Kernel configuration選項中的“menuconfig”或“xconfig”時並不包含“make dep clean”這個步驟。因此,這裡建議使用者在儲存配置後的Kernel configuration選項時注意確認是否已經進行了“make dep clean”這一步。
核心反映緩慢
目前很多計算機都採用了高速的CPU和大容量記憶體。可有時候在建立新核心後系統顯得比沒有配置核心之前的反映速度慢得多。出現這個情況,很可能是使用者在修改Kernel configuration options的時候,在“menuconfig”或者“xconfig”選擇了過多的選項。這樣不僅使得計算機在編譯新核心的時候要花費更多的時間,也使得系統在工作的時候佔用了太多的記憶體。由於很多記憶體都是被無用的選項所佔用,這就導致了系統執行的緩慢。解決方法很簡單,儘量選擇我們需要的選項,那些無用的,太過於複雜的選項就無需去修改了,有時候使用預設的引數效果會顯得更好。
核心不能編譯
當使用者輸入“make bzImage modules”並按下輸入鍵的時候,出現了核心不能編譯或者其他的奇怪現象。此時最好的方法就是重新啟動系統,然後使用“rpm -e”命令移除Kernel configuration tools這個核心配置工具。接著再重新安裝這個工具(請使用“rpm -I”或“rpm -Uvh”命令來安裝),如果能正確安裝,那麼問題就簡單多了,此時再重新配置核心和再編譯應該就能成功。如果還是不能編譯核心,請檢查硬體裝置是不是有問題。
系統重複啟動
出現這種情況,十有八九是因為在對核心做完修改之後忘記使用LILO來註冊新的映象到啟動載入程式。LILO需要核心的扇區位置,因此即使是複製映象也會將其遷移到新的扇區中,這將使得LILO儲存的老指標掛在一個深淵上。
為了解決這個問題,請從軟碟機啟動並執行LILO命令,或使用挽救磁碟啟動並安裝啟動分割槽到“/mnt”,同時使用如下命令:lilo -r /mnt。
如果大家留意那些比較權威的Linux參考工具書的話,就會發現很多原版書籍都把核心重編譯作為一個很重要的章節進行介紹。本文將要向讀者介紹的並不是如何去一步步的對Linux核心進行重編譯,而是收集整理了幾個在Linux核心重編譯中最常見的故障及其解決方法,如果您在編譯核心過程中遇到了類似的故障,那麼本文將會對您有所幫助。
Linux核心重編譯常見故障介紹
在介紹Linux核心重編譯常見故障前,假設我們已經按照參考工具書上的步驟對Linux核心進行了相應的配置。
Linux核心重編譯通常包括了許多步驟。如果“幸運”的話,Linux核心重編譯是可以一次性編譯成功的。如果在編譯完成後,啟動計算機或者核心的時候系統有錯誤資訊的提示,那麼最有可能出現的是以下5個:1.核心不能啟動;2.異常I/O錯誤;3.核心反映緩慢;4.核心不能正確編譯;5.系統重複啟動。
故障分析及其解決方法
核心不能啟動
當我們重新建立Linux核心時,主要是選擇使用者需要或不需要在系統中使用的裝置及服務。從2.0版核心開始,Linux引入了一個全新的設計特徵到核心中並提供了折中方案:元件可以動態的、隨時的調入和調出核心。例如我們在修改/etc/lilo.conf之後都要重新啟動系統,如果你的核心不能啟動,並且在螢幕上看到了下面的資訊:
Warning: unable to open an initial console Kernel panic: no init found. Try passing init= option to kernel
這個錯誤最大的可能就是我們沒有正確的給/etc/lilo.conf 中的“root=”提供引數。例如,在一個Linux系統中有root=dev/hdc5這樣的配置方式,那麼這是錯誤的,正確的應該是root=/dev/hdc5,不要小看只是多了一個 “/”,這是給root提供的重要引數。沒有“/”則Linux核心無法確認root到底該從哪裡啟動。很多朋友往往忽略了這個小細節而造成核心引導失敗。下面給出/etc/lilo.conf的一個正確的配置清單,僅供參考。
/etc/lilo.conf示例
―――――――――――
boot=/dev/hdc5
map=/boot/map
prompt
timeout=50
image=/boot/vmlinuz-2.2.2-1
label=Linux
root=/dev/hdc5
inirtd=/boot/initrd-2.2.2-1.img
read-only
other=/dev/hda1
label=dos
table=/dev/hda
異常I/O錯誤
如果您重新建立了一個Linux核心,並且能正確啟動,但在使用新核心過程中,系統經常出現崩潰、當機等異常現象。那麼很可能是I/O出現了問題。I/O異常除了使得系統頻繁出現莫名其妙的故障之外,更重要的是會使Linux核心降級,導致整個系統系能嚴重下降。
究其異常I/O錯誤的原因,是使用者在編譯Linux核心結束的時候沒有執行“make dep clean”這一步驟。一般來說,我們在儲存Kernel configuration選項中的“menuconfig”或“xconfig”時並不包含“make dep clean”這個步驟。因此,這裡建議使用者在儲存配置後的Kernel configuration選項時注意確認是否已經進行了“make dep clean”這一步。
核心反映緩慢
目前很多計算機都採用了高速的CPU和大容量記憶體。可有時候在建立新核心後系統顯得比沒有配置核心之前的反映速度慢得多。出現這個情況,很可能是使用者在修改Kernel configuration options的時候,在“menuconfig”或者“xconfig”選擇了過多的選項。這樣不僅使得計算機在編譯新核心的時候要花費更多的時間,也使得系統在工作的時候佔用了太多的記憶體。由於很多記憶體都是被無用的選項所佔用,這就導致了系統執行的緩慢。解決方法很簡單,儘量選擇我們需要的選項,那些無用的,太過於複雜的選項就無需去修改了,有時候使用預設的引數效果會顯得更好。
核心不能編譯
當使用者輸入“make bzImage modules”並按下輸入鍵的時候,出現了核心不能編譯或者其他的奇怪現象。此時最好的方法就是重新啟動系統,然後使用“rpm -e”命令移除Kernel configuration tools這個核心配置工具。接著再重新安裝這個工具(請使用“rpm -I”或“rpm -Uvh”命令來安裝),如果能正確安裝,那麼問題就簡單多了,此時再重新配置核心和再編譯應該就能成功。如果還是不能編譯核心,請檢查硬體裝置是不是有問題。
系統重複啟動
出現這種情況,十有八九是因為在對核心做完修改之後忘記使用LILO來註冊新的映象到啟動載入程式。LILO需要核心的扇區位置,因此即使是複製映象也會將其遷移到新的扇區中,這將使得LILO儲存的老指標掛在一個深淵上。
為了解決這個問題,請從軟碟機啟動並執行LILO命令,或使用挽救磁碟啟動並安裝啟動分割槽到“/mnt”,同時使用如下命令:lilo -r /mnt。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-950664/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP編譯安裝時常見錯誤解決辦法,php編譯常見錯誤PHP編譯
- 網路交換機常見故障及解決方法
- DNS故障的幾種常見原因及解決方法DNS
- 光纖收發器常見故障及對應解決方法
- 常見的幾種IE6 BUG及其解決的方法
- linux 故障解決方法彙總Linux
- Java™ 教程(常見問題及其解決方案)Java
- As常見問題解決方法
- 普通raid常見故障解和決方案彙總AI
- 伺服器常見故障及解決辦法伺服器
- 4 個常見的軟體安全開發問題及其解決方法
- opencv 編譯常見錯誤OpenCV編譯
- Linux 常見編輯器Linux
- 網站常見反爬解決方法網站
- Nacos 常見問題及解決方法
- Centos編譯Python3.10解決openssl異常CentOS編譯Python
- JavaScript中的bind方法及其常見應用JavaScript
- 新手linux系統常見問題解決方案Linux
- AndroidStudio之NDK常見編譯錯誤Android編譯
- 三菱PLC常見故障及遠端維護解決方案
- 常見BUG解決
- 常見的死鎖情況及解決方法
- oracle資料庫常見故障和解決難度Oracle資料庫
- 解如何避免雲遷移故障及其預防方法
- 程式設計師筆記|常見的SpringMVC故障排查及解決方案程式設計師筆記SpringMVC
- 庫卡機器人KR3R540電源模組常見故障維修解決方法機器人
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- 統信UOS系統常見故障及處理方法
- 【MySQL】六、常見slave 延遲原因以及解決方法MySql
- Windows共享資料夾常見問題解決方法Windows
- 玩轉html2canvas以及常見問題解決HTMLCanvas
- keepalived 1.3.5常見配置以及常見問題解決
- Sentinel哨兵模式解決故障轉移模式
- PHP編譯configure時常見錯誤,和PHP7.1.4 編譯安裝PHP編譯
- CUDA常見編譯器配置問題一覽編譯
- 【綜合評價方法】常見綜合評價方法及其實現
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- 交叉編譯庫依賴問題的解決方法編譯
- kaldi的編譯安裝與報錯解決方法編譯