免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
升級Red Hat 9.0(Kernel 2.4.20-8) 至 Linux Kernel2.6.18
***********************************
一、安裝必要工具
***********************************
1. 安裝module-init-tools-3.2.tar.gz
下載地址:http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/

安裝方法:
#tar zxvf module-init-tools-3.2.tar.gz
#cd modules-init-tools-3.2
#./configure --prefix=/    #非常關(guān)鍵,因為系統(tǒng)原來的命令都在/sbin下面
#make moveold        #系統(tǒng)兼容性
#make all install
#./generate-modprobe.conf /etc/modprobe.conf
#-----------以下步驟我沒有選擇,不需要————————
2. 升級mkinitrd
下載地址:我沒有升級mkinitrd,下載地址到goole里搜吧。

說明:
如果你啟動,加載模塊沒有給出模塊與內(nèi)核版本不兼容的信息,就不用重新下載mkinitrd程序來編譯模塊生成initrd。因為2.6相對于2.4來說,模塊不是每個都改動,
如果你使用的模塊沒有改動,就什么都不用做.

具體的:
1)如果你不使用lvm2或使用lvm來做volume management,你就無需下載新版mkinitrd
2)如果你沒有使用2.6中新的模塊,或者新的模塊已經(jīng)編譯進內(nèi)核,就意味著與2.4使用的initrd.img沒有變化,就連initrd.img也無需生成

initrd.img是由bootload加載入內(nèi)存的,ext3編成模塊加在initrd中照樣可以啟動,按我的理解,ext3并非要編譯進內(nèi)核中,但具體實踐中,
如果沒編譯進內(nèi)核中,會出現(xiàn)類似如下錯誤:
mount: error 19 mounting ext3
pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2
umount /initrd/proc fail: 2
Freeing unused kernel memory: 244k freed
Kernel panic – not syncing: No init found. Try passing init = option to kernel.
而這可以通過重新生成initrd.img來解決。所謂在grub.conf中root=LABLE=\必須修改成絕對分區(qū)編號,其實也就是因為沒有生成重新生成initrd.img的問題造成。


如果需要安裝最新的mkinitrd,請注意:新的mkinitrd, 它需要lvm2 和device-mapper
用 rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm 進行安裝

安裝lvm2-2.00.25-1.01.i386.rpm時請用rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm

3. 安裝hotplug工具,如果沒有此工具,則USB鼠標即使在啟動顯示ok 加載上了也不能用,2.6.15內(nèi)核可使用hotplug-2004_09_23.tar.gz
下載地址:http://www.kernel.org/pub/linux/utils/kernel/hotplug/

安裝方法:
#tar zxvf hotplug-2004_09_23.tar.gz
#cd hotplug-2004_09_23
#make install

#————————————————————這中間都沒有選擇——————————————————

4. 下載Kernel源代碼2.6.18
下載地址:http://www.kernel.org/pub/linux/kernel/


***********************************
二、準備Kernel源代碼樹
***********************************
1、下載到tarball包之后,將內(nèi)核tarball包復(fù)制到/usr/src目錄下,假定包在當(dāng)前目錄中,運行以下命令:
#cp linux-2.6.18.tar.gz /usr/src

2、轉(zhuǎn)到/usr/src目錄并解開tarball包,
#cd /usr/src
#tar xvzf linux-2.6.18.tar.gz

默認情況下(使用Intel x86 CPU系列),下面這一步可以省略。
3、將/usr/include/asm、/usr/inlude/linux、/usr/include/scsi鏈接到/usr/src/linux/include目錄下的對應(yīng)目錄中。
# cd /usr/include
# rm -Rf asm linux
# ln -s /usr/src/linux/include/asm-i386 asm  (如果你使用其它CPU比如PPC,那就需要連接到相應(yīng)的目錄)
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi

4、如果你還下載了補丁包,則打上補丁,你也可以運行scripts/patch-kernel腳本文件自動打上補丁(準備好補丁包)或 #zcat patch-2.6.0.gz|patch -p1(我偷懶不打補丁的)。

5、修改內(nèi)核源代碼 (升級2.6就是為了優(yōu)化,干脆連源代碼也改了吧)
   
    1)修改/usr/src/linux/include/linux/posix_types.h
      設(shè)置fd_set支持的最大數(shù)量  
      #define __FD_SETSIZE 1024 --->; 65536     
   
    2)修改/usr/src/linux/include/linux/fs.h
      設(shè)置最大打開文件數(shù)量(TCP連接數(shù)量)
      #define INR_OPEN 1024 --->; 65536
      #define NR_FILE 8192 --->; 65536
      #define NR_RESERVED_FILES 10 --->; 128
     
    3)修改/usr/src/linux/include/net/tcp.h
      設(shè)置TIMEOUT的時間為1秒
      #define TCP_TIMEWAIT_LEN (60*HZ) 60 --->; 1*HZ
      設(shè)置在backlog隊列里的半連接的重試次數(shù),每次都會花相應(yīng)的時間,本質(zhì)上 也是減少重試時間
      #define TCP_SYNACK_RETRIES  5 --->; 3

***********************************
三、定制內(nèi)核
***********************************
配制內(nèi)核之前請清理源代碼樹,如果還沒有進入/usr/src/linux-2.6.0目錄,請進入此目錄,命令如下:
#make clean
#make mrproper (這步是為確保原代碼目錄下沒有不正確的.o文件及文件的相互依賴,剛解開的tarball包不需此步驟)

注: 可以使用make help來查看幫助。

然后可以使用以下四個命令來配置內(nèi)核:
#make gconfig  (需要Gtk開發(fā)庫的支持)
#make xconfig  (需要Qt開發(fā)庫的支持)
#make config
#make menuconfig (推薦)

配置核心選項
#make menuconfig
基本上保持默認選項就可以了,但是要注意的是必須把ext2和ext3文件系統(tǒng)支持編進內(nèi)核,否則升級內(nèi)核重新啟動是會有錯誤:
Kernel panic: No init found. Try passing init= option to kernel

ext2和ext3文件系統(tǒng)配置為: (全部選擇)
File systems --->
  <*>Second extended fs support
      Ext2 extended attributes
      Ext2 POSIX Access Control Lists
      Ext2 Security Labels
  <*>Ext3 journalling file system support
      Ext3 extended attributes
      Ext3 POSIX Access Control Lists
      Ext3 Security Labels
  JBB (ext3) debugging support

注意:
   如果你是ext3文件系統(tǒng),則在定制內(nèi)核配置文件時把對Ext3、Ext2文件的支持直接編譯進內(nèi)核,否則,等你啟用新內(nèi)核時機器就會當(dāng)?shù)?,出錯信息如下:
      kernel panic : no init found ,try passing init = option to kernel......
  或者是:
      kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)
  把對Ext3、Ext2文件系統(tǒng)的支持直接編譯進內(nèi)核,可解決此問題,還有把對“Module unloading“選項也選上,否則的話,你在新內(nèi)核環(huán)境下將無法卸載
內(nèi)核模塊(rmmod命令不能用)。

***********************************
四、編譯內(nèi)核及模塊
***********************************
配置完內(nèi)核后,開始編譯:
#make dep  (編譯2.6內(nèi)核無需此步驟)

#make -jn (n代表同時編譯的進程,可以加快編譯速度,n由你的配置決定,我的配置用15-25)

注意: 此命令已完成make bzImage及make modules的工作, 生成的bzImage內(nèi)核文件在arch/i386/boot目錄中,你的CPU不同內(nèi)核文件存放位置也不同

注: 這一步比較耗時,根據(jù)機器配置,可能會消耗30分鐘或更長時間。
   
***********************************
五、編譯可加載模塊和安裝新內(nèi)核
***********************************
如果用戶在配置內(nèi)核時設(shè)置了可加載模塊,則需要對這些模塊進行編譯,以便將來使用insmod命令進行加載。
# make modules -j25
# make modules_install (安裝內(nèi)核模塊到/lib/modules/2.x.x下)
# make install         (完成mkinitrd命令及內(nèi)核(bzImage)和System.map的拷貝)

完成后,請查看/boot目錄,文件名是有區(qū)別的,如是GRUB引導(dǎo),make install命令已幫你自動修改了引導(dǎo)選項,對于LILO則要手工修改,重寫引導(dǎo)記錄。
這里,我的硬件是250G的服務(wù)器,裝了兩個系統(tǒng),有兩個Grub,所以需要留心,必要時需要grub-install


***********************************
六、修改相應(yīng)文件已適應(yīng)2.6內(nèi)核
***********************************
1.內(nèi)核2.6 的usb 設(shè)備名與內(nèi)核2.4 大不相同。所以我們要改一下哈哈。

在安裝module-init-tools程序包時生成的/etc/modprobe.conf配置文件卻仍然使用usb-ohci這個名字

alias usb-controller usb-ohci
alias usb-controller1 ehci-hcd

因此, 要把它改為:

alias usb-controller ohci-hcd
alias usb-controller1 ehci-hcd

2.需要改一個最重要的文件/etc/rc.sysconfig 這是一個ln 連接。正真的文件在/etc/rc.d/里

#vi /etc/rc.sysinit

把/proc/ksyms 改為如下所示(注:用于配置了HOTPLUG的支持)

KSYMS=/proc/ksyms

改為:

KSYMS=/proc/kallsyms

3.把所有mount -f -t usbdevfs usbdevfs 改為mount -f -t usbfs usbfs 我查看了就二個。

4.建立一個/sys系統(tǒng)這部我也不知道為啥,但你是用默認的/proc/bus/usb 下就提示找不到drivers 文件。暈死了。
# mkdir /sys

6.修改rc.sysconfig 文件

在mount -f /proc 下加入
mount -f /sys 這一行


7.# Mount /proc (done here so volume labels can work with fsck)
action $"Mounting proc filesystem: " mount -n -t proc /proc /proc
action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
加入上面這行

8.修改fstab
#vi /etc/fstab 加入如下
none    /sys  sysfs   defaults  0 0
.

9.修改/etc/init.d/halt 為如下
awk ‘$2 ~ /^\/$|^\/proc|^\/dev/{next}
改為
awk ‘$2 ~ /^\/$|^\/proc|^\/sys|^\/dev/{next}


10.把needusbstorage=這段改成如下

needusbstorage=
if [ $usb = "1" ]; then
    needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /proc/bus/usb/devices 2>/dev/null`
    LC_ALL=C grep ‘hid‘ /proc/bus/usb/drivers || action $"Initializing USB HID interface: " modprobe hid 2> /dev/null
    action $"Initializing USB keyboard: " modprobe keybdev 2> /dev/null
    action $"Initializing USB mouse: " modprobe mousedev 2> /dev/null
fi

改成如下:
needusbstorage=
if [ $usb = "1" ]; then
    needusbstorage=`LC_ALL=C grep -e "^I.*Cls=08" /sys/bus/usb/devices 2>/dev/null`
    action $"Initializing USB HID interface: " modprobe usbhid 2> /dev/null
    action $"Initializing USB keyboard: " modprobe usbkbd 2> /dev/null
    action $"Initializing USB mouse: " modprobe usbmouse 2> /dev/null
fi

這些完成就reboot吧! 希望在啟動時全是ok.

補充:
***********************************
七、手動安裝新內(nèi)核和System.map
***********************************
1、將新內(nèi)核和System.map文件拷貝到/boot目錄下
# cp /usr/src/linux-2.6/arch/i386/boot/bzImage  /boot/vmlinuz-2.6.15-10custom
# cp /usr/src/linux-2.6/System.map  /boot/System.map-2.6.15-10custom
# cd /boot
# rm -f System.map   (刪除原來的連接)
# ln -s System.map-2.6.15-10custom  System.map  (重新建立連接)

***********************************
八、配置LILO
***********************************
1.配置/etc/lilo.conf文件,在該文件中加入下面幾行:
image=/boot/vmlinuz-2.6.15-10custom
label=linux-custom
initrd=/boot/initrd-2.6.15-10.img
read-only
root=/dev/hda3     (這與你的具體配置有關(guān))
并把default=linux改為default=linux-custom

2.使新配置生效
# /sbin/lilo

***********************************
九、配置grub使用2.6的I/O調(diào)度器
***********************************
    設(shè)置之前先介紹一下2.6的I/O調(diào)度器
        2.6包含的四個I/O調(diào)度器分別是No-op I/O scheduler、Anticipatory I/O scheduler、Deadline I/O scheduler與CFQ I/O scheduler。
    在后文中分別簡稱為ns、as、ds與cfq。

        ns是一個簡化的調(diào)度程序它只作最基本的合并與排序。與桌面系統(tǒng)的關(guān)系不是很大,主要用在一些特殊的軟件
    與硬件環(huán)境下,這些軟件與硬件一般都擁有自己的調(diào)度機制對內(nèi)核支持的要求很小,這很適合一些嵌入式系統(tǒng)環(huán)境。作為桌面用戶我們一般不會選擇它。

        as是當(dāng)前內(nèi)核中默認的I/O調(diào)度器。它擁有非常好的性能,在2.5中它就相當(dāng)引人注意。在與2.4內(nèi)核進行的對比測試中,在2.4中多項以分鐘為單位
    完成的任務(wù),它則是以秒為單位來完成的。正因為如此它成為目前2.6測試版中默認的I/O調(diào)度器。但它也存在著弱點,它本身是比較龐大與復(fù)雜的,
    在一些特殊的情況下,特別是在數(shù)據(jù)吞吐量非常大的數(shù)據(jù)庫系統(tǒng)中它會變的比較緩慢。

        ds就是針對as的缺點進行改善而來的,還處于測試階段,但已經(jīng)很穩(wěn)定了。目前表現(xiàn)出的性能幾乎與as一樣好。加之比as更加小巧,
    是相當(dāng)有前途的調(diào)度器,值得一試:)

        cfq為系統(tǒng)內(nèi)的所有任務(wù)分配相同的帶寬,提供一個公平的工作環(huán)境,它比較適合桌面環(huán)境。事實上在測試中它也有不錯的表現(xiàn),
    mplayer xmms等多媒體播放器與它配合的相當(dāng)好,回放平滑幾乎沒有因訪問磁盤而出現(xiàn)的跳幀現(xiàn)象。對于喜歡在Linux下聽音樂看電影的朋友不妨嘗試一下。
   
    好了,下面說說怎么設(shè)置:參數(shù)的格式為elevator=調(diào)度器名

    修改/boot/grub/grub.conf,在kernel那行后門加入elevator=deadline
   
    例如:kernel /boot/vmlinuz-2.6.10-bk4 ro root=/dev/你的根分區(qū) elevator=deadline

***********************************
使用新內(nèi)核可能出現(xiàn)的問題及對策
***********************************
1. RedHat用戶rpm命令不能使用,解決辦法:請把變量在全局配置文件中聲明。
這是RPM的一個Bug,特別是對于RH9的用戶,請打開/etc/profile文件,命令如下:
#vi /etc/profile (在文件的末尾加上幾句如下)
if [`uname -r`="2.6.18" ];then
export LD_ASSUME_KERNEL=2.2.5
fi
也就是給系統(tǒng)加上一個全局的環(huán)境變量,也可直接鍵入#export LD_ASSUME_KERNEL=2.2.5。


2. 新內(nèi)核根本起不來,解決方法:重新配置內(nèi)核(學(xué)問挺大),也許還根引導(dǎo)記錄有關(guān)(很少了);
我遇到的情況是雙Grub的問題

3. 新內(nèi)核模塊無法加載,會導(dǎo)致很多問題,比如了防火墻沒法工作了,mount不上光盤和vfat及ntfs文件系統(tǒng),其解決方法:升級module-init-tools軟件包,
   RedHat的用戶可能還要修改/etc/rc.d/rc.sysinit文件; 
1. 編譯完后不啟動,報以下錯誤:
VFS: Cannot open root device "LABEL=/" or 0.0
>; Please append a correct "root=" boot option
>; kernel panic: VFS: Unable to mount root fs
如果是上面的錯誤,請確認你把如下選項配置進kernel
(1) 如果/使用了EXT3 文件系統(tǒng),在內(nèi)核中要加入EXT3的支持
(2)如果是IDE的硬盤必須要IDE的驅(qū)動加載
(3)在block devices--RAM disk support 中選取 Initial disk(initrd) support,有時在mount / 之前
需要加載一些模塊,這些modules 被做到一個鏡像文件中--kernel-ver.img 中,這個文件位于/boot.舉個例子,如果EXT3 的是以模塊加載的話,在mount / 時就需要用到它,所以系統(tǒng)就在initrd.kernel-ver.img 中尋找它.
使用命令 mkinitrd initrd.kernel-ver.img kernel-ver 可以生成initrd.kernel-ver.img
2. 系統(tǒng)啟動過程中加載iptables時報錯的處理方法
修改/etc/rc.sysinit文件:
將其中所有的/proc/ksyms替換為/proc/kallsyms。
將其中所有的/proc/sys/kernel/modprobe 替換為/sbin/modprobe
在文件中mount -f /proc這一句下添加mount -f /sys
在文件中的action $"Mounting proc filesystem: " mount -n -t proc /proc /proc 這一句的下面添加 action $"Mounting sysfs filesystem: " mount -n -t sysfs /sys /sys
修改/etc/fstab文件:
加入none /sys sysfs defaults 0 0
修改/etc/init.d/halt文件:
將halt_get_remaining函數(shù)內(nèi)的awk ‘$2 ~ /^\/$|^\/proc|^\/dev/{next}改為
awk ‘$2 ~ /^\/$|^\/proc|^\/sys|^\/dev/{next}
創(chuàng)建目錄:
mkdir /sys
然后重啟機器,模塊的問題應(yīng)該解決的差不多了。
到這里編譯工作順利結(jié)束了.以上是本人在編譯內(nèi)核過程中遇到的問題以及解決方法,有些問題沒有遇到,就沒有寫進去,希望大家給予補充指正,充分弘揚Linux精神!??!
3.RPM問題
進入編譯好的內(nèi)核后,與RPM相關(guān)的命令有些不能使用,并出現(xiàn)下列錯誤:
rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
no packages
解決方法是執(zhí)行“export LD_ASSUME_KERNEL=2.2.25”命令,也可以將其寫入/etc/bashrc。

                 **************************** 全文完 **************************
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Debian 下的 Linux 內(nèi)核
使用 linux kernel +busybox 定制linux系統(tǒng)
[Linux Kernel]在ubuntu下編譯內(nèi)核過程
[轉(zhuǎn)]如何升級Linux內(nèi)核
深入理解 Linux 2.6 的 initramfs 機制 上
linux 啟動詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服