<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    談笑有鴻儒,往來無白丁

    在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽

    一次即大功告成 Linux內核升級全過程?

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1583735



    今天終于成功的編譯了linux-2.6.18的內核,是在redhat9 2.4.20-8的內核基礎上進行的!


    作者:飄揚 來源:飛飛博客 發布時間:2007.04.18
    ?
    由于開發環境需要在linux-2.6內核上進行,于是準備對我的虛擬機上的Linux系統升級。沒想到這一弄就花了兩天時間(反復裝系統,辛苦啊~~),總算把Linux系統從2.4.20-8內核成功升級到了2.6.18內核。


    網上雖然有很多介紹Linux內核升級的文章,不過要么過時,下載鏈接失效;要么表達不清,不知所云;更可氣的是很多文章在轉載過程中命令行都有錯誤。剛開始我就是在這些“攻略”的指點下來升級的,以致于浪費了很多時間。


    現在,費盡周折,升級成功,心情很爽,趁性也來寫個“升級攻略”吧!于是特意又在虛擬機上重新安裝一個Linux系統,再來一次完美的升級,邊升級邊記錄這些步驟,寫成一篇Linux內核升級記實錄(可不是回憶錄啊!),和大家一起分享~~!


    首先說明,下面帶#號的行都是要輸入的命令行,且本文提到的所有命令行都在終端里輸入。接下來,讓我們一起開始精彩的Linux內核升級之旅吧!


    一、準備工作


    啟動Linux系統,并用根用戶登錄,進入終端模式下。


    1、查看Linux內核版本

    # uname -a

    如果屏幕顯示的是2.6.x,說明你的已經是2.6的內核,也用不著看下文了,該干什么干什么去吧!~~~如果顯示的是2.4.x,那恭喜你,闖關通過,趕快進行下一步。


    2、下載2.6內核源碼

    下載地址:http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2


    3、下載內核升級工具

    (1)下載module-init-tools-3.2.tar.bz2

    http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2

    (2)下載mkinitrd-4.1.18-2.i386.rpm

    http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/mkinitrd-4.1.18-2.i386.rpm

    (3)下載lvm2-2.00.25-1.01.i386.rpm

    http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/lvm2-2.00.25-1.01.i386.rpm

    (4)下載device-mapper-1.00.19-2.i386.rpm

    http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.core/device-mapper-1.00.19-2.i386.rpm


    (2.6.18內核和這4個升級工具我都有備份,如果以上下載地址失效,請留下你的郵箱,我給你發過去)
    http://www.fly2.cn/guestbook
    二、配置工作


    好啦,2.6內核和4個升級工具都下載完了(少一個也不行,如果沒有下載齊全,請不要嘗試下面的步驟,升級是不會成功的),下面回到Linux系統中開始配置工作吧。


    4、將下載好的內核和4個升級工具都拷貝到/usr/src文件夾下。怎么拷貝就不用我教了吧~~~~不會拷貝的去撞墻吧!~~呵呵!


    5、拷貝完畢,開始解壓新內核,具體操作請依次執行以下命令:

    # cd /usr/src (進入到/usr/src目錄下,如果已經在/usr/src目錄下,可不執行該命令)

    # rm –rf linux (刪除linux文件夾。值得一提的是,如果內核先前從未編譯過,則沒有這個文件夾,此命令行可略過)

    # tar jvxf linux-2.6.18.tar.bz2 (解壓新內核)

    # ln -s linux-2.6.18 linux (重新生成linux文件夾)


    6、安裝module-init-tools工具包

    在/usr/src目錄下,依次執行下列命令:(ZhiQiao:最好先看下README)

    # tar jvxf module-init-tools-3.2.tar.bz2 (解壓module-init-tools)

    # cd module-init-tools-3.2 (由/usr/src目錄進入module-init-tools目錄下)

    #./configure --prefix=/ (--prefix=/若重新配置文件把文件放到指定的目錄下)

    # make moveold

    # make all install

    #./generate-modprobe.conf /etc/modprobe.conf


    7、安裝另外三個升級工具

    回到/usr/src目錄下,依次執行下列3個命令來安裝另外三個升級工具:

    # rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm (注意,這里一定要加入--nodeps參數,下同) (ZhiQiao:nodeps不驗證組件的關聯性)

    # rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm

    # rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm


    如果不更新以上幾個升級包,在后面編譯內核時會提示以下錯誤:

    mkinitrd failed

    make[1]: *** [install] Error 1

    make: *** [install] Error 2


    8、配置內核選項。有點繁瑣,~~希望一次成功哦~~。

    # cd linux-2.6.18 (進入到/usr/src/linux-2.6.18目錄下)

    # make mrproper (該命令可確保源代碼目錄下沒有不正確的.o文件)

    # make menuconfig (配置內核各選項)


    此時會出現一個圖形界面,列出了所有的內核配置選項,有的選項下還有子選項,你可以用方向鍵來選擇,用Y鍵來確定。經過我多次試驗,大多數選項默認就行,以下幾個選項必須選擇(請認真核對下面每一個選項,否則編譯很有可能前功盡棄):


    (1)Loadable Module support選項中,一定要選上“Module unloading”和“Automatic kernel module loading”這兩項;

    (2)Device Drivers--->Block Devices中一定要選上Loopback device support;

    Device Drivers--->Multi-device support(RAID and LVM)”處要選上“device mapper support”;

    Device Drivers--->Graphics support”, 一定要選上” Support for frame buffer devices”;

    Device Drivers --->;USB support --->選上”USB Mass Storage support”(如果是在實環境中,想要更多USB支持,就全選吧。我的是在虛擬機中,用不著了)

    Device Drivers --->; Network device support --->;Ethernet (10 or 100Mbit) --->; <*>; AMD PCnet32 PCI support

    (3) File system--->(以下9個選項是關于ext2和ext3文件系統配置,全部選上)

    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

    File system--->DOS/FAT/NT Filesystems --->選上“ NTFS file system support”;

    File Systems --> Miscellaneous filesystems ---><*> Compressed ROM file system support (cramfs)


    注意:

    ext2和ext3文件系統配置很重要,也是必需的,如果對Ext3、Ext2文件的支持直接編譯進內核,在你reboot時機器就會當掉,出現如下錯誤信息:

    kernel panic : no init found ,try passing init = option to kernel.....

    或者是:

    VFS:Cannot open root device "hdxy" or unknow-block(0,0)

    Please append a correct "root=" boot option

    kernel panic:VFS:Unable to mount root fs on unknown-block(0,0)

    或者是:

    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

    (我的機器就是在重啟之后出現第三種錯誤,進不去系統,郁悶死,只好重裝了~~~)


    (4)如果你在vmware下重新編譯內核,硬盤用的是scsi的,以下選項必選:

    Device Drivers --->SCSI device support ---><*>SCSI disk support

    Device Drivers--->SCSI device support--->SCSI low-level drivers--->;<*>; BusLogic SCSI support


    三、編譯工作


    OK,繁雜的配置工作完成了,至此,編譯前的準備工作都做好了!

    9、開始編譯啦……:

    在/usr/src/linux-2.6.18目錄下,執行以下命令即可編譯。編譯需要一段時間,給自己倒杯茶耐心等候吧!

    # make dep (建立編譯時所需的從屬文件。注意:如果內核從未編譯過,此步可跳過)

    # make clean (清除內核編譯的目標文件)

    # make bzImage (注意大小寫。這一步才真正編譯內核)(ZhiQiao:這步大約花了我10分鐘時間,配置:512M內存,1.8G CPU)

    內核編譯成功后,會在/usr/src/linux/arch/i386/boot目錄中生成一個新內核的映像文件bzImage。如果用make zImage編譯,內核很大的話,系統會提示你使用make bzImage命令來編譯,所以我直接用make bzImage來編譯。

    # make modules (編譯可加載模塊) (ZhiQiao:這步大約花了20分鐘時間)

    # make modules_install (安裝可加載模塊)

    安裝成功后,系統會在/lib/modules目錄下生成一個2.6.18子目錄,里面存放著新內核的所有可加載模塊。

    # make install (安裝新內核)


    注意:make install的時候可能會出現如下錯誤信息:

    No module BusLogic found for kernel 2.6。18

    mkinitrd failed

    此問題一般只出現在SCSI硬盤+VMWARE+REDHAT架構中,因為BusLogic被編譯進了內核而不是一個module的形式(2.4內核的Buslogic模塊即使靜態編譯進內核也不行)。解決方式是直接將可以BusLogic.o文件復制過去:

    # cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi

    不過別忘記,復制過后再執行一下make install。

    (如果make menuconfig時,把BusLogic模塊選成M--Module模式--就不會出現這個提示。)
    ?
    ZhiQiao:這里我是按上面所說的方法做的結果在啟動時出現關于BusLogic的錯誤,后來我將虛擬機的硬盤換成了IDE的,成功升級!Vmware默認的硬盤是SCSI的,有很多人不知道怎么改成IDE的,具體方法可以參考四、啟動新內核

    10、將新內核和System.map文件拷貝到/boot目錄下,依次執行以下命令:

    # cp /usr/src/linux-2.6.18/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18

    # cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18

    # cd /boot (進入boot目錄)

    # rm –rf System.map (刪除原來的連接)

    # ln -s System.map-2.6.18 System.map (重新建立連接)


    11、修改Grub啟動管理器

    如果沒有錯誤的話, 下面開始修改grub配置文件(不要告訴我你用的lilo)

    在/boot目錄下,執行以下命令:

    # new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (這時候你的/boot下生成一個initrd-2.4.12.img,并且你的grub.conf也作了相應更改)


    # df (查看根目錄在那個分區,下一步要用到。注意,這里根分區不時boot的那個50M的分區,而一般是你最大的那個分區,也就是”/”,千萬不要搞錯哦。我的為 /dev/hda2)


    # vi grub/grub.conf (ZhiQiao:此處應該為/grub/grub.conf)

    進入grub.conf文件,找到如下信息:

    default=1

    timeout=10

    splashimage=(hd0,0)/grub/splash.xpm.gz

    title Red Hat Linux (2.6.18)

    root (hd0,0)

    kernel /vmlinuz-2.6.18 ro root= LABEL=/

    initrd /initrd-2.6.18.img

    做兩處修改:

    (1) 將default=1改為default=0(不改的話,重啟之后默認進入2.4內核)

    (2) 將kernel行的“LABEL=/”換成根目錄所在的分區(上一步查看的就是)

    此步很重要,修改錯誤將會可能導致進不去系統,我把我修改后的grub.conf文件列出來,不明之處,可以對照修改:

    default=0

    timeout=10

    splashimage=(hd0,0)/grub/splash.xpm.gz

    title Red Hat Linux (2.6.18)

    root (hd0,0)

    kernel /vmlinuz-2.6.18 ro root=/dev/hda2

    initrd /initrd-2.6.18.img

    title Red Hat Linux (2.4.20-8)

    root (hd0,0)

    kernel /vmlinuz-2.4.20-8 ro root=LABEL=/

    initrd /initrd-2.4.20-8.img


    12,OK,大功告成!趕快重啟,看看升級后的2.6內核吧!

    13,下一步該做什么呢?我的qq:147863130


    我編譯以后成功運行看看我的版本號!下圖

    redhat9上面的linux-2.6.18的內核
    ?



    ?

    posted on 2007-04-27 12:46 壞男孩 閱讀(7326) 評論(12)  編輯  收藏 所屬分類: Linux

    FeedBack:
    # re: 一次性成功編譯Linux內核!
    2007-06-20 21:30 | 恍惚
    我遇到的問題有點麻煩
    VFS: Cannot open root device "sda8" or unknown-block(2,0)
      Please append a correct "root=" boot option
      Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
      回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2007-07-26 22:08 | Bo
    老大,太感謝了,一次性搞定!!  回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2008-01-17 17:18 | jpuff
    經典!感謝  回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2008-07-11 00:24 |
    十分感謝~搞定了。SCSI選擇編譯成模塊也可以,試過了  回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2009-07-09 09:51 | 諤諤
    make bzImage后錯誤修改如下
    錯誤 make[2]: *** [arch/i386/boot/compressed/vmlinux.bin] Error 1
    make[1]: *** [arch/i386/boot/compressed/vmlinux] Error 2
    make: *** [bzImage] Error 2
    方法:在arch/i386/Makefile里面做一些修改:
    將OBJCOPYFLAGS改成如下的: OBJCOPYFLAGS := -O binary ——change-section-lma .bss-0xc0000000 -R .note -R .comment -S 然后重新make bzImage OK!
      回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2009-08-25 18:30 | sine920
    做到最后一步,重啟后就直接進入了GRUB界面。現在應該怎么辦呢?
      回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2010-03-15 22:12 | 劉艷軍
    這位大哥,能把那四個工具給我發下不,找了挺長時間都沒找著,很多鏈接都沒法用了!我的郵箱:liuyanjun803@163.com 謝謝了!!!  回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2012-03-05 17:08 | linttt@126.com
    這位大哥,能把那四個工具給我發下不,找了挺長時間都沒找著,很多鏈接都沒法用了!我的郵箱:linttt@126.com 謝謝了!!!  回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2012-11-08 17:07 | ballack
    沒有編譯文件系統,真進不了系統了,網上有的說可以都用默認配置的,擦……  回復  更多評論
      
    # re: 一次性成功編譯Linux內核!
    2014-09-28 01:01 | Linux新手
    東西都失效了,可以發給我嗎?363984349@qq.com  回復  更多評論
      
    # re: 一次性成功編譯Linux內核![未登錄]
    2014-10-09 11:41 | huang
    感覺講的很詳細,但是東西已經失效了,能不能發一份給我,萬分感謝!851887444@qq.com。  回復  更多評論
      
    # re: 一次性成功編譯Linux內核![未登錄]
    2014-10-09 15:52 | huang
    主站蜘蛛池模板: 嫩草在线视频www免费观看| 国产成人A人亚洲精品无码| 97在线视频免费| aaa毛片免费观看| 九九精品国产亚洲AV日韩| 亚洲一区二区三区免费观看| 国产l精品国产亚洲区在线观看| 免费a级毛片18以上观看精品| 一个人看的www在线观看免费| 无码人妻精品中文字幕免费| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 日本免费一区二区三区| 国产精品免费看久久久香蕉| 美女的胸又黄又www网站免费| 亚洲中文字幕乱码一区| 亚洲成a人片在线观看播放| 亚洲国产成人久久综合一 | 鲁死你资源站亚洲av| 亚洲精品天堂在线观看| 亚洲国产精品日韩在线| 亚洲老熟女@TubeumTV| 亚洲精品高清无码视频| 国产亚洲视频在线播放| 亚洲精品国产精品乱码不卡| 国产性生交xxxxx免费| 日韩成全视频观看免费观看高清| 日韩精品福利片午夜免费观着| 免费在线观看h片| 4hu四虎最新免费地址| www视频在线观看免费| 91免费国产自产地址入| 久久久久久精品免费看SSS| 每天更新的免费av片在线观看 | 亚洲AV人人澡人人爽人人夜夜 | 中文字幕免费视频| 亚洲一级毛片免费在线观看| 18禁美女黄网站色大片免费观看| 美女内射无套日韩免费播放| 亚洲精品在线免费观看视频| 无人在线直播免费观看| 成年男女免费视频网站|