萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> 詳解對Linux內核進行升級的步驟

詳解對Linux內核進行升級的步驟

   Linux的內核是系統的核心,所以升級內核是Linux系統管理員的一項基本技能,所以我就分享了系統運維實務上的一篇文章,當然我對源文件稍做了一些內容的增加,就是把遇到的問題及解決方案也加上了,希望對各位Linux系統管理員有所幫助!

  1.下載內核

  代碼如下:

  cd /usr/src

wget linux/kernel/v2.6/linux-2.6.38.tar.gz">http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.gz

tar zxvf linux-2.6.38.tar.gz

cd linux-2.6.38

  2.下載熱點內核標准配置文件

  代碼如下:

  wget http://vbets.googlecode.com/files/config

mv config .config

  3.編譯內核

  代碼如下:

  make menuconfig

  選中Load an Alternate Configuration File ,然後選擇剛下載的。config

  另外,要特別選中:

  1)、通過make menuconfig選中以下對應的選項

  代碼如下:

  General setup –>

[*] enable deprecated sysfs features to support old userspace tools

  2)、修改。config文件

  修改。config文件中CONFIG_SYSFS_DEPRECATED_V2,將原本被注釋掉的

  代碼如下:

  CONFIG_SYSFS_DEPRECATED_V2 改成CONFIG_SYSFS_DEPRECATED_V2=y

  注: 修改這項是因為舊版的mkinitrd及其nash在內核沒有CONFIG_SYSFS_DEPRECATED_V2參數時默認使用舊版sysfs路徑格式,從而在新內核下無法正確訪問/sys內的硬盤信息節點。

  主要是解決"mount:could not find filesystem '/dev/root'"這樣的錯誤

  代碼如下:

  make bzImage

make modules

make modules_install

make install

  4.解壓修改內核

  代碼如下:

  cp /boot/initrd-2.6.38.img /tmp

cd /tmp/

mkdir newinitrd

cd newinitrd/

  zcat /initrd-2.6.38.img |cpio -i

  rm -rf /tmp/initrd-2.6.38.img

  vi init[/code]

  找到這2行一樣的,去掉1行

  代碼如下:

  echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

echo "Loading dm-region-hash.ko module"

insmod /lib/dm-region-hash.ko

  這主要是解決:"insmod: error inserting '/lib/dm-region-hash.ko': -1 File exists"這樣的錯誤

  5.從新打包內核

  代碼如下:

  find .|cpio -c -o > /initrd

cd /

gzip -9 < initrd > initrd-2.6.38img

rm -rf /boot/initrd-2.6.38.img

cp initrd-2.6.38.img /boot

rm -rf /cd /usr/src/linux-2.6.38.tar.gz

rm -rf /cd /usr/src/linux-2.6.38

  6.設置從新內核啟動

  代碼如下:

  vi /boot/grub/grub.conf

  把default=1改為default=0

  7.重新啟動系統

  代碼如下:

  reboot

copyright © 萬盛學電腦網 all rights reserved