zoukankan      html  css  js  c++  java
  • LINUX核心重编与升级

    本文来自:Linux宝库 -- http://doc.linuxpk.com/41502.html
    如有不明白之处,欢迎参加社区讨论

    1. Linux核心提供什么功能
    Linux 核心是一个档案(/boot/vmlinuz for most case)
    核心支持各项计算机硬件配备,让所有程序可以透过核心与计算机硬件沟通。
    有效率的核心必须与计算机状况(硬件周边)配合
    核心提供周边硬件驱动程序:网络卡、声卡、SCSI卡等
    通讯协议:TCP/IP、PPP、Router等
    核心提供档案系统支持:ext2、umsdos、iso9660...
    核心提供内存管理、多CPU平行处理....
    2.Linux核心重编(Make Kernel)与升级有何不同
    核心重编利用原始码重新编译,目的在打造一个新核心(不一定是新版)
    核心升级利用新版本原始码,以编译方式,产生一个新版的核心
    核心升级必须经过核心重编的程序
    3.Linux核心何时需要重编
    为核心瘦身,去除原有核心支持但用不到的功能时
    新增原有核心不支持的功能(包括模块)时
    修正旧有核心错误(例如核心无法开机)时
    核心升级时
    4.Linux核心何时需要升级
    旧版核心可能错误的修正(Bug Fix)
    新接口设备或系统功能无法由旧版核心取得支持时
    核心版本落后太多时
    5.新版Linux核心何处取得
    官方(Official)Kernel ftp Siteftp://ftp.kernel.org
    Linux HeadQuartershttp://www.linuxhq.com
    国内收集kernel网站ftp://ftp.mgt.ncu.edu.tw/Linux/kernelftp://ftp.nsysu.edu.tw/Linux/metalab.unc.edu/kernel.org/pub/linux/kernelftp://ftp.ccu.edu.tw/pub3/linux/kernel.org-pub/linux/kernel
    6.Linux核心版本编号所代表的意义
    Linux核心版本编号格式为:major.minor.patchlevelmajor : 主要版本编号,极少变动minor : 次要版本编号,这是Linux核心版本的血统patchlevel : 目前核心(次要)版本的修补编号
    "uname -a" 可以读取目前新的版本及核心重编的时间Linux nmc.nchu.edu.tw 2.2.15 #1 Wed May 31 10:56:54 CST 2000 i586 unknown代表核心版本为2.2.15,核心重编的时间为10:56:54 05/30/2000
    单号的次要版本表示测试版,双号代表正式(稳定)版本
    7.Linux核心升级方式有哪些
    直接由新版本核心原始档,重编核心优点:直接升级至该核心版本缺点:你必须较多时间下载整个核心的原始档(压缩过2.2.15的核心原始档约16MB大小)适合作较大幅度的版本提升,例如 2.2.6 --> 2.2.15
    修补核心原始档(Patch)利用这种方式升级,你所需要修补的次数为新版本与旧版本的版本修补次数编号差。例如:由2.2.12升级至2.2.15,你必须下载patch-2.2.13、patch-2.2.14及patch-2.2.15,并逐一修补后,再行编译核心。修补的方式如下(:####首先你必须将patch file复制至/usr/src中#cd /usr/src#gzip -cd patch-2.2.13.gz | patch -p0#gzip -cd patch-2.2.14.gz | patch -p0#gzip -cd patch-2.2.15.gz | patch -p0接着你就可以开始重编核心了。优点:Patch File一般比全部核心原始档小很多(每一个Patch大小由数百KB到1 MB左右不等),下载较快。缺点:版本差距过大不适合以此方式升级。
    8.重编核心
    前置作业 备份旧有核心#cp /boot/vmlinuz /boot/vmlinuz.2.2.12
    取得新核心压缩档(ex.linux-2.2.15.tar.gz),或修补程序文件(Patch)(ex.patch-2.2.13.gz, patch-2.2.14.gz, & patch-2.2.15.gz)
    备份/usr/src/linux一般linux只是一个符号链接,你可以直接将之移除
    将压缩档在/usr/src下解开#tar zxvf linux-2.2.15.tar.gz#mv linux linux-2.2.15#ln -s linux-2.2.15 linux
    Change Directory To /usr/src/linux
    重编核心的步骤 (以2.2.12升级至2.2.15为例) I. make mrproper在linux目录下执行"make mrproper",此一步骤目的在清除不稳定目的档(.o),确保核心重编时顺利成功。这个步骤在修补核心(patch)后重编核心时,为重要且必要。II. make config (make menuconfig, make xconfig)这是重编核心时极重要的一个步骤,你必须针对系统现况,回答上百个问题,错误的选项可能导致核心无法使用。选像设定方式有三种:"make config"、"make menuconfig"及"make xconfig";"make config"采交谈式一问一答;"make menuconfig"在文字模式下,采选单方式设定核心选项;"make xconfig"则是在图形模式(X-Window)下的选单设定模式。当你完成冗长的设定程序之后,如果未指定设定内容储存档名,你的设定将会被储存在./usr/src/linux/arch/i386/defconfig中,下次重编核心时,这就是你的预设(default)选项来源。III. make dep这个步骤帮你设定所的附设档案,确保include file的相依关系。IV. make clean清除旧系统核心与driver,如果你第一次重编核心,你可以略过这个步骤。V. make zImage编制一个新的核心,如果你的心核心大小超过640KB,你必须改用"make bzImage"。如果你希望编制新核心的过程中,顺带制作一个开机片,你可使用"make zdisk" or "make bzdisk"(if new kernle is larger than 640KB)。这个步骤所需时间约20~40分钟不等(or longer),端视你系统CPU与RAM数量而定。编译成功后,新核心位置在/usr/src/linux/arch/i386/boot/zImage or /usr/src/linux/arch/i386/boot/zbImage。VI. 改变系统使用之核心#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.2.15#cd /boot#ln -s /boot/vmlinuz-2.2.15 /boot/vmlinuz###请确定你原有核心以备份。(如前置作业所述)如果你为使用lilo开机,你必须在编译核心时制作开机片,或直接用"dd"将核心加载磁盘中,以便开启新系统。VII. 编译系统模块#make modules#make modules_install你必须执行此一步骤,否则你的心核心将无法使用你的旧模块。新的模块将会被安装至/lib/modules/2.2.15目录下。VIII. 更新System.map#cp /usr/src/linux/System.map /boot/System.map-2.2.15#rm /boot/System.map#ln -s System.map-2.2.15 System.map每一版本的系统核心都有其特有的系统功能映像文件System.map,以定义该版核心的所有功能信息。IX. 编辑lilo.conf,保留旧核心开机选项没有人可以保证编辑的新核心一定可以开启系统,保留旧核心开机选项是一个保险做法。你的lilo.conf修改之后大约会像以下的内容:
    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    default=linux
    image=/boot/vmlinuz
    label=linux
    read-only
    root=/dev/hda1
    image=/boot/vmlinuz-2.2.12-20
    label=linux.old
    read-only
    root=/dev/hda1
    执行过lilo -v -v -v之后你就可以准备重新开启新核心了。(By Reboot System)
    X. uname -a
    检查新核心版本。(After Reboot)
    [root@nmc ~]# uname -r
    2.2.15 --> Kernel is now 2.2.15

  • 相关阅读:
    [Windows] 重新安装/卸载桌面版OneDrive / Reinstall/ Uninstall Desktop Version OneDrive
    [Linux] 关闭防火墙以及开放端口
    [Java] Properties类
    [Linux] 文档编辑搜索
    [Dababase
    etymological
    [JavaScript] 表单验证不通过不提交的JS写法
    Lyrics来源
    [Maven
    [ Servlet / JSP ] J2EE Web Application 中的 JSESSIONID 是什么?
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2075177.html
Copyright © 2011-2022 走看看