1. gzyueqian
      18078865874

      Linux內(nèi)核重編譯常見(jiàn)故障及其解決方法

      更新時(shí)間: 2005-12-24 10:34:15來(lái)源: 粵嵌教育瀏覽量:3695

        內(nèi)核重編譯對(duì)很多Linux愛(ài)好者來(lái)說(shuō)是一個(gè)不小的挑戰(zhàn)。筆者認(rèn)為,很多Linux用戶對(duì)內(nèi)核通常有一種誤解,他們認(rèn)為普通用戶是不能調(diào)整內(nèi)核的。其實(shí),就實(shí)際情況而言,這種認(rèn)識(shí)是不全面的。應(yīng)該說(shuō),內(nèi)核重編譯是具有一定深度和復(fù)雜性的,同時(shí)也是易失敗的配置工作。

        如果大家留意那些比較權(quán)威的Linux參考工具書(shū)的話,就會(huì)發(fā)現(xiàn)很多原版書(shū)籍都把內(nèi)核重編譯作為一個(gè)很重要的章節(jié)進(jìn)行介紹。本文將要向讀者介紹的并不是如何去一步步的對(duì)Linux內(nèi)核進(jìn)行重編譯,而是收集整理了幾個(gè)在Linux內(nèi)核重編譯中常見(jiàn)的故障及其解決方法,如果您在編譯內(nèi)核過(guò)程中遇到了類似的故障,那么本文將會(huì)對(duì)您有所幫助。

        Linux內(nèi)核重編譯常見(jiàn)故障介紹

        在介紹Linux內(nèi)核重編譯常見(jiàn)故障前,假設(shè)我們已經(jīng)按照參考工具書(shū)上的步驟對(duì)Linux內(nèi)核進(jìn)行了相應(yīng)的配置。

        Linux內(nèi)核重編譯通常包括了許多步驟。如果“幸運(yùn)”的話,Linux內(nèi)核重編譯是可以一次性編譯成功的。如果在編譯完成后,啟動(dòng)計(jì)算機(jī)或者內(nèi)核的時(shí)候系統(tǒng)有錯(cuò)誤信息的提示,那么有可能出現(xiàn)的是以下5個(gè):1.內(nèi)核不能啟動(dòng);2.異常I/O錯(cuò)誤;3.內(nèi)核反映緩慢;4.內(nèi)核不能正確編譯;5.系統(tǒng)重復(fù)啟動(dòng)。

        故障分析及其解決方法

        內(nèi)核不能啟動(dòng)

        當(dāng)我們重新創(chuàng)建Linux內(nèi)核時(shí),主要是選擇用戶需要或不需要在系統(tǒng)中使用的設(shè)備及服務(wù)。從2.0版內(nèi)核開(kāi)始,Linux引入了一個(gè)全新的設(shè)計(jì)特征到內(nèi)核中并提供了折中方案:組件可以動(dòng)態(tài)的、隨時(shí)的調(diào)入和調(diào)出內(nèi)核。例如我們?cè)谛薷?etc/lilo.conf之后都要重新啟動(dòng)系統(tǒng),如果你的內(nèi)核不能啟動(dòng),并且在屏幕上看到了下面的信息:

      Warning: unable to open an initial console Kernel panic: no init found. Try passing init= option to kernel

        這個(gè)錯(cuò)誤的可能就是我們沒(méi)有正確的給/etc/lilo.conf 中的“root=”提供參數(shù)。例如,在一個(gè)Linux系統(tǒng)中有root=dev/hdc5這樣的配置方式,那么這是錯(cuò)誤的,正確的應(yīng)該是root=/dev/hdc5,不要小看只是多了一個(gè) “/”,這是給root提供的重要參數(shù)。沒(méi)有“/”則Linux內(nèi)核無(wú)法確認(rèn)root到底該從哪里啟動(dòng)。很多朋友往往忽略了這個(gè)小細(xì)節(jié)而造成內(nèi)核引導(dǎo)失敗。下面給出/etc/lilo.conf的一個(gè)正確的配置清單,僅供參考。

      /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錯(cuò)誤

        如果您重新創(chuàng)建了一個(gè)Linux內(nèi)核,并且能正確啟動(dòng),但在使用新內(nèi)核過(guò)程中,系統(tǒng)經(jīng)常出現(xiàn)崩潰、死機(jī)等異常現(xiàn)象。那么很可能是I/O出現(xiàn)了問(wèn)題。I/O異常除了使得系統(tǒng)頻繁出現(xiàn)莫名其妙的故障之外,更重要的是會(huì)使Linux內(nèi)核降級(jí),導(dǎo)致整個(gè)系統(tǒng)系能嚴(yán)重下降。


        究其異常I/O錯(cuò)誤的原因,是用戶在編譯Linux內(nèi)核結(jié)束的時(shí)候沒(méi)有執(zhí)行“make dep clean”這一步驟。一般來(lái)說(shuō),我們?cè)诒4鍷ernel configuration選項(xiàng)中的“menuconfig”或“xconfig”時(shí)并不包含“make dep clean”這個(gè)步驟。因此,這里建議用戶在保存配置后的Kernel configuration選項(xiàng)時(shí)注意確認(rèn)是否已經(jīng)進(jìn)行了“make dep clean”這一步。

        內(nèi)核反映緩慢

        目前很多計(jì)算機(jī)都采用了高速的CPU和大容量?jī)?nèi)存。可有時(shí)候在創(chuàng)建新內(nèi)核后系統(tǒng)顯得比沒(méi)有配置內(nèi)核之前的反映速度慢得多。出現(xiàn)這個(gè)情況,很可能是用戶在修改Kernel configuration options的時(shí)候,在“menuconfig”或者“xconfig”選擇了過(guò)多的選項(xiàng)。這樣不僅使得計(jì)算機(jī)在編譯新內(nèi)核的時(shí)候要花費(fèi)更多的時(shí)間,也使得系統(tǒng)在工作的時(shí)候占用了太多的內(nèi)存。由于很多內(nèi)存都是被無(wú)用的選項(xiàng)所占用,這就導(dǎo)致了系統(tǒng)運(yùn)行的緩慢。解決方法很簡(jiǎn)單,盡量選擇我們需要的選項(xiàng),那些無(wú)用的,太過(guò)于復(fù)雜的選項(xiàng)就無(wú)需去修改了,有時(shí)候使用默認(rèn)的參數(shù)效果會(huì)顯得更好。

        內(nèi)核不能編譯

        當(dāng)用戶輸入“make bzImage modules”并按下輸入鍵的時(shí)候,出現(xiàn)了內(nèi)核不能編譯或者其他的奇怪現(xiàn)象。此時(shí)的方法就是重新啟動(dòng)系統(tǒng),然后使用“rpm -e”命令移除Kernel configuration tools這個(gè)內(nèi)核配置工具。接著再重新安裝這個(gè)工具(請(qǐng)使用“rpm -I”或“rpm -Uvh”命令來(lái)安裝),如果能正確安裝,那么問(wèn)題就簡(jiǎn)單多了,此時(shí)再重新配置內(nèi)核和再編譯應(yīng)該就能成功。如果還是不能編譯內(nèi)核,請(qǐng)檢查硬件設(shè)備是不是有問(wèn)題。

        系統(tǒng)重復(fù)啟動(dòng)


        出現(xiàn)這種情況,十有八九是因?yàn)樵趯?duì)內(nèi)核做完修改之后忘記使用LILO來(lái)注冊(cè)新的映象到啟動(dòng)加載程序。LILO需要內(nèi)核的扇區(qū)位置,因此即使是拷貝映象也會(huì)將其遷移到新的扇區(qū)中,這將使得LILO存儲(chǔ)的老指針掛在一個(gè)深淵上。


        為了解決這個(gè)問(wèn)題,請(qǐng)從軟驅(qū)啟動(dòng)并運(yùn)行LILO命令,或使用挽救磁盤(pán)啟動(dòng)并安裝啟動(dòng)分區(qū)到“/mnt”,同時(shí)使用如下命令:lilo -r /mnt。 內(nèi)核重編譯對(duì)很多Linux愛(ài)好者來(lái)說(shuō)是一個(gè)不小的挑戰(zhàn)。筆者認(rèn)為,很多Linux用戶對(duì)內(nèi)核通常有一種誤解,他們認(rèn)為普通用戶是不能調(diào)整內(nèi)核的。其實(shí),就實(shí)際情況而言,這種認(rèn)識(shí)是不全面的。應(yīng)該說(shuō),內(nèi)核重編譯是具有一定深度和復(fù)雜性的,同時(shí)也是易失敗的配置工作。


        如果大家留意那些比較權(quán)威的Linux參考工具書(shū)的話,就會(huì)發(fā)現(xiàn)很多原版書(shū)籍都把內(nèi)核重編譯作為一個(gè)很重要的章節(jié)進(jìn)行介紹。本文將要向讀者介紹的并不是如何去一步步的對(duì)Linux內(nèi)核進(jìn)行重編譯,而是收集整理了幾個(gè)在Linux內(nèi)核重編譯中常見(jiàn)的故障及其解決方法,如果您在編譯內(nèi)核過(guò)程中遇到了類似的故障,那么本文將會(huì)對(duì)您有所幫助。


        Linux內(nèi)核重編譯常見(jiàn)故障介紹


        在介紹Linux內(nèi)核重編譯常見(jiàn)故障前,假設(shè)我們已經(jīng)按照參考工具書(shū)上的步驟對(duì)Linux內(nèi)核進(jìn)行了相應(yīng)的配置。


        Linux內(nèi)核重編譯通常包括了許多步驟。如果“幸運(yùn)”的話,Linux內(nèi)核重編譯是可以一次性編譯成功的。如果在編譯完成后,啟動(dòng)計(jì)算機(jī)或者內(nèi)核的時(shí)候系統(tǒng)有錯(cuò)誤信息的提示,那么有可能出現(xiàn)的是以下5個(gè):1.內(nèi)核不能啟動(dòng);2.異常I/O錯(cuò)誤;3.內(nèi)核反映緩慢;4.內(nèi)核不能正確編譯;5.系統(tǒng)重復(fù)啟動(dòng)。


        故障分析及其解決方法

        內(nèi)核不能啟動(dòng)

        當(dāng)我們重新創(chuàng)建Linux內(nèi)核時(shí),主要是選擇用戶需要或不需要在系統(tǒng)中使用的設(shè)備及服務(wù)。從2.0版內(nèi)核開(kāi)始,Linux引入了一個(gè)全新的設(shè)計(jì)特征到內(nèi)核中并提供了折中方案:組件可以動(dòng)態(tài)的、隨時(shí)的調(diào)入和調(diào)出內(nèi)核。例如我們?cè)谛薷?etc/lilo.conf之后都要重新啟動(dòng)系統(tǒng),如果你的內(nèi)核不能啟動(dòng),并且在屏幕上看到了下面的信息:

      Warning: unable to open an initial console Kernel panic: no init found. Try passing init= option to kernel

        這個(gè)錯(cuò)誤的可能就是我們沒(méi)有正確的給/etc/lilo.conf 中的“root=”提供參數(shù)。例如,在一個(gè)Linux系統(tǒng)中有root=dev/hdc5這樣的配置方式,那么這是錯(cuò)誤的,正確的應(yīng)該是root=/dev/hdc5,不要小看只是多了一個(gè) “/”,這是給root提供的重要參數(shù)。沒(méi)有“/”則Linux內(nèi)核無(wú)法確認(rèn)root到底該從哪里啟動(dòng)。很多朋友往往忽略了這個(gè)小細(xì)節(jié)而造成內(nèi)核引導(dǎo)失敗。下面給出/etc/lilo.conf的一個(gè)正確的配置清單,僅供參考。

      /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錯(cuò)誤

        如果您重新創(chuàng)建了一個(gè)Linux內(nèi)核,并且能正確啟動(dòng),但在使用新內(nèi)核過(guò)程中,系統(tǒng)經(jīng)常出現(xiàn)崩潰、死機(jī)等異常現(xiàn)象。那么很可能是I/O出現(xiàn)了問(wèn)題。I/O異常除了使得系統(tǒng)頻繁出現(xiàn)莫名其妙的故障之外,更重要的是會(huì)使Linux內(nèi)核降級(jí),導(dǎo)致整個(gè)系統(tǒng)系能嚴(yán)重下降。

        究其異常I/O錯(cuò)誤的原因,是用戶在編譯Linux內(nèi)核結(jié)束的時(shí)候沒(méi)有執(zhí)行“make dep clean”這一步驟。一般來(lái)說(shuō),我們?cè)诒4鍷ernel configuration選項(xiàng)中的“menuconfig”或“xconfig”時(shí)并不包含“make dep clean”這個(gè)步驟。因此,這里建議用戶在保存配置后的Kernel configuration選項(xiàng)時(shí)注意確認(rèn)是否已經(jīng)進(jìn)行了“make dep clean”這一步。

        內(nèi)核反映緩慢

        目前很多計(jì)算機(jī)都采用了高速的CPU和大容量?jī)?nèi)存。可有時(shí)候在創(chuàng)建新內(nèi)核后系統(tǒng)顯得比沒(méi)有配置內(nèi)核之前的反映速度慢得多。出現(xiàn)這個(gè)情況,很可能是用戶在修改Kernel configuration options的時(shí)候,在“menuconfig”或者“xconfig”選擇了過(guò)多的選項(xiàng)。這樣不僅使得計(jì)算機(jī)在編譯新內(nèi)核的時(shí)候要花費(fèi)更多的時(shí)間,也使得系統(tǒng)在工作的時(shí)候占用了太多的內(nèi)存。由于很多內(nèi)存都是被無(wú)用的選項(xiàng)所占用,這就導(dǎo)致了系統(tǒng)運(yùn)行的緩慢。解決方法很簡(jiǎn)單,盡量選擇我們需要的選項(xiàng),那些無(wú)用的,太過(guò)于復(fù)雜的選項(xiàng)就無(wú)需去修改了,有時(shí)候使用默認(rèn)的參數(shù)效果會(huì)顯得更好。

        內(nèi)核不能編譯

        當(dāng)用戶輸入“make bzImage modules”并按下輸入鍵的時(shí)候,出現(xiàn)了內(nèi)核不能編譯或者其他的奇怪現(xiàn)象。此時(shí)的方法就是重新啟動(dòng)系統(tǒng),然后使用“rpm -e”命令移除Kernel configuration tools這個(gè)內(nèi)核配置工具。接著再重新安裝這個(gè)工具(請(qǐng)使用“rpm -I”或“rpm -Uvh”命令來(lái)安裝),如果能正確安裝,那么問(wèn)題就簡(jiǎn)單多了,此時(shí)再重新配置內(nèi)核和再編譯應(yīng)該就能成功。如果還是不能編譯內(nèi)核,請(qǐng)檢查硬件設(shè)備是不是有問(wèn)題。

        系統(tǒng)重復(fù)啟動(dòng)

        出現(xiàn)這種情況,十有八九是因?yàn)樵趯?duì)內(nèi)核做完修改之后忘記使用LILO來(lái)注冊(cè)新的映象到啟動(dòng)加載程序。LILO需要內(nèi)核的扇區(qū)位置,因此即使是拷貝映象也會(huì)將其遷移到新的扇區(qū)中,這將使得LILO存儲(chǔ)的老指針掛在一個(gè)深淵上。


        為了解決這個(gè)問(wèn)題,請(qǐng)從軟驅(qū)啟動(dòng)并運(yùn)行LILO命令,或使用挽救磁盤(pán)啟動(dòng)并安裝啟動(dòng)分區(qū)到“/mnt”,同時(shí)使用如下命令:lilo -r /mnt。

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 久久97精品久久久久久久不卡 | 日本人妖一区视频 | 亚洲美女在线免费视频 | 九九精品国产99精品 | 日韩一区二区三区中文 | 日本欧美亚洲高清在线观看 |