一、升級背景
前段時間公司有個項目用到了簡訊收發的業務,採購了兩台16口的Wavecom USB簡訊貓裝置,伺服器作業系統是ReadHat5.4,核心2.6.18,插上裝置後,作業系統無法自動識別該裝置,原因是沒有預裝該裝置USB轉串口的驅動程式,可能是只有這個產品不能識別,因為曾經我用過單口的GSM
MODEM簡訊貓測試,可以自動識別出來。後來從供應商處得到資訊,說是他們這個產品比較新,版本低的核心沒有預裝新的USB轉串口驅動程式,但現在2.6.32以上核心都內建了USB轉串口的驅動,所以最後通過升級系統核心的方式解決了這個問題。
二、升級測試環境
宿主機:Window xp
虛擬機器:VM8.0.2
OS:CentOS 5.8 Final
核心(升級前):2.6.18
所有操作步聚使用root許可權
三、升級步聚
1、下載核心
到www.kernel.org下載一個新版本核心源碼,當前最新穩定版為3.3.4。這裡下載的是:http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.35/linux-2.6.35.13.tar.bz2
2、解壓核心檔案
將linux-2.6.35.13.tar.bz2上傳到/usr/local/src目錄下,使用tar -jxvf linux-2.6.35.13.tar.bz2命令解壓,得到linux-2.6.35.13目錄
3、清除檔案
cd linux-2.6.35.13(下面所有操作都是在此目錄,除非切換了新的目錄)
make distclean
清除以前編譯核心產生的所有檔案(除了清除可執行檔和目標檔案外,configure所產生的Makefile也會清除掉)
如果是第一次編譯,這步聚可以省略
4、複製設定檔
將系統預設的核心設定檔複製到linux-2.6.35.13目錄下,並命名.config
cp /boot/config-2.6.18-308.el5 .config
5、核心配置(make menuconfig)
核心配置,有三種方式:
a)、make config:基於文本的最為傳統的配置介面,不推薦使用
b)、make menuconfig:基於文本選單的配置介面,字元終端下推薦使用。
注意:使用make menuconfig 需要安裝ncurses(yum -y install ncurses-devel) ,如果未安裝會報如下錯誤:
解決方式:在連網的情況下,在終端輸入yum -y install ncurses-devel,自動安裝ncurses-devel包,如所示:
c)、make xconfig:基於圖形視窗模式的配置介面,Xwindow下推薦使用
注意:如果要用make xconfig,則要先安裝QT3開發包,並配置。如果未安裝會報如下錯誤:
解決方案:安裝QT3開發包,再執行make xconfig。
1)、以make menuconfig為例配置核心編譯環境,在終端輸入make menuconfig,進入如所示介面:
2)、在,用上下鍵移動到菜單倒數第二項(Load an Alternate Configuration File),再用左右鍵移動到(Select),按斷行符號進入介面:
3)、在,移動游標至(OK),按斷行符號鍵,儲存設定檔。回到所示介面:
4)、在中,用上下鍵移動到菜單最後一項(Save an Alternate Configuration File),用左右鍵移動到(Select),按斷行符號鍵,儲存設定檔。
5)、選中(Exit),按斷行符號鍵,退出配置。
6、修改.config設定檔
在.config檔案搜尋CONFIG_SYSFS_DEPRECATED_V2,會發現# CONFIG_SYSFS_DEPRECATED_V2 is not set這一行,將該行修改為CONFIG_SYSFS_DEPRECATED_V2=y。假如不修改該行,在升級重新啟動後會報如下的錯,導致啟動失敗:
Volume group "VolGroup00" not foundUnalbe to access resume device (/dev/VolGroup00/LogVol00)mount: could not find filesystem '/dev/root'setuproot:moving /dev failed: No such file or directorysetuproot:error mounting /proc: No such file or directorysetuproot:error mounting /sys: No such file or directoryswitchroot: mount failed: No such file or directoryKernel panic - not syncing:Attempted to kill init!
7、編譯核心
make all
大概需要30至60分鐘左右,具體時間看機子的效能
8、編譯模組
make modules_install
9、安裝
make install
10、修改initrd檔案
假如升級重啟後會報“insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits”錯誤,這是由於initrd裡面重複載入dm-region-hash.ko這個模組了,因此需要修改產生的initrd檔案(不是所有的機器都會出現這個錯),修改的方式如下:
a)、解壓initrd檔案
#cp /boot/initrd-2.6.35.13.img /tmp
#cd /tmp
#ls
initrd-2.6.35.13.img
#mkdir newinitrd
#cd newinitrd
#zcat ../initrd-2.6.35.13.img | cpio -i
#ls
b)、編輯init檔案,重複資料刪除中的其中兩行c)、重新打包核心檔案#find . | cpio -c -o > ../initrd#cd ..#gzip -9 < initrd > initrd-2.6.35.13.img
d)、將核心檔案( initrd-2.6.35.13.img)重新複製到/boot目錄下
#cp initrd-2.6.35.13.img /boot
11、修改grub.conf,讓引導程式預設從新的核心啟動
vi /boot/grub/grub.conf
grub.conf檔案如所示:
將中將的default=1改成default=0
12、重啟系統
#uname -r
2.6.35.13