QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5930|回复: 30

我的2.6.11内核编译过程

[复制链接]
发表于 2005-5-16 11:27:23 | 显示全部楼层 |阅读模式
星期天呀,不用上班了。呵呵,10:30起床,好像有一点早,昨天晚上玩游戏玩到3点钟,好累呀.打开电脑,先玩一会游戏在说。11:00,不玩了,开始干正事了。先换到linux下去。本来想用虚拟机的,但是我做的ftp不能用,而且还可能好慢的。我的电脑是没有上网的,在我的2003下架了个ftp,想让虚拟机来访问,可是虚拟机和我的电脑连不上,好郁闷。

(1)安装module-init-tools-3.0.tar.gz:
# tar -zxvf module-init-tools-3.0.tar.gz
# cd module-init-tools-3.0
# ./configure --prefix=/sbin
# make
# make install
# ./generate-modprobe.conf /etc/modprobe.conf

不知道为什么,我用module-init-tools-3.1时make出错。如果改用3.0的就没事了。

(2)安装modutils-2.4.25-8.9.i386.rpm:
# rpm -Uvih modutils-2.4.25-8.9.i386.rpm
对modutils进行升级。

(3)安装新内核:
将新内核copy到/usr/src下,
#tar xzvf linux-2.6.11.tar.gz -----解压缩.
II. 将名为linux的符号链接删掉,这时旧版本内核的符号链接.
#ln -s linux-2.6.11 linux ------建立linux-2.6.11的符号链接linux.

设置内核.
# cd /usr/src/linux
# make mrproper -----删除不必要的文件和目录.

#make config(基于文本的最为传统的配置界面,不推荐使用)

#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)

#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)

#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)

它们的目的是一样的,那就是生成一个.config文件

这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,你就用这个好了,这个比较方便,也好设置。
如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了。
选择相应的配置时,有三种选择,它们分别代表的含义如下:
    Y--将该功能编译进内核
    N--不将该功能编译进内核
    M--将该功能编译成可以在需要时动态插入到内核中的模块

如果使用的是make xconfig,使用鼠标就可以选择对应的选项。如果使用的是 make
menuconfig,则需要使用空格键进行选取。你会发现在每一个选项前都有个括号, 但有的
是中括号有的是尖括号,还有一种圆括号。用空格键选择时可以发现,中括号里要么是空
,要么是"*",而尖括号里可以是空,"*"和"M"。这表示前者对应的项要么不要,要么编译
到内核里;后者则多一样选择,可以编译成模块。而圆括号的内容是要你在所提供的几个
选项中选择一项。

附内核配置选项说明(这是我在网上找到的,还可以,有些也是不一样的,给你一个参考)

代码成熟度选项:

Code maturity level options  --->
  
  • Prompt for development and/or incomplete code/drivers
      
  • Select only drivers expected to compile cleanly
    打开使用开发中、不完全的代码/驱动会让内核配置多出很多选项,由于我们需要使用一些正在开发中的功能,因此必需打开这一选项。
    通用设置选项,


    General setup  --->
      

    ()  Local version - append to kernel release
    这里填入的是64字符以内的字符串,你在这里填上的字符口串可以用uname -a命令看到。
      
  • Support for paging of anonymous memory (swap)
    这是使用交换分区或者交换文件来做为虚拟内存的,当然要选上了。
      
  • System V IPC
    表示系统5的Inter Process Communication,它用于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来
      
  • POSIX Message Queues
    这是POSIX的消息队列,它同样是一种IPC。建议你最好将它选上
      
  • BSD Process Accounting
    这是充许用户进程访问内核将账户信息写入文件中的。这通常被认为是个好主意,建议你最好将它选上。
      
  • BSD Process Accounting version 3 file format
      
  • Sysctl support
    这个选项能不重新编译内核修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核的参数或变量。建议你最好将它选上
      [ ] Auditing support
    审记支持,用于和内核的某些子模块同时工作,例如SELinux。只有选择此项及它的子项,才能调用有关审记的系统调用
      (15) Kernel log buffer size (16 => 64KB, 17 => 128KB)
    内核日志缓存的大小,12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB for x86 NUMAQ or IA-64,17 => 128 KB for S/390
      
  • Support for hot-pluggable devices
    是否支持热插拔的选项,肯定要选上
      
  • Kernel Userspace Events
    内核中分为系统区和用户区,这里系统区和用户区进行通讯的一种方式,选上。
      
  • Kernel .config support
    将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc中得到内核的配置
      
  •    Enable access to .config through /proc/config.gz
      [ ] Configure standard kernel features (for small systems)  --->
    这是为了编译某些特殊的内核使用的,通常你可以不选择这一选项,你也不用对它下面的子项操心了。
        --- Configure standard kernel features (for small systems)
        [ ]   Load all symbols for debugging/kksymoops
    是否装载所有的调试符号表信息,如果你不需要对内核调试,不需要选择此项。
       
  •    Enable futex support
    不选这个内核不一定能正确的运行使用glibc的程序,当然要选上
       
  •    Enable eventpoll support
    不选这个内核将不支持事件轮循的系统调用,最好选上
       
  •    Optimize for size
    这个选项使gcc使用-Os的参数而不是-O2的参数来优化编译,以获得更小尺寸的内核,建议选上。
       
  •    Use full shmem filesystem
    除非你在很少的内存且不使用交换内存时,才不要选择这项
        (0)   Function alignment
        (0)   Label alignment
        (0)   Loop alignment
        (0)   Jump alignment

    可加载模块:
    Loadable module support  --->
      
  • Enable loadable module support
      
  • Module unloading
    不选这个功能,加载的模块就不能卸载
      [ ]     Forced module unloading
      [ ] Module versioning support (EXPERIMENTAL)
      [ ] Source checksum for all modules
      
  • Automatic kernel module loading

    处理器类型及特性:
    Processor type and features  --->
      Subarchitecture Type (PC-compatible)  --->
      Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon)  --->
      [ ] Generic x86 support
    这一选项针对x86系列的CPU使用更多的常规优化。如果你在上面一项选的是i386、i586之类的才选这个
      
  • HPET Timer Support
    HPET是替代8254芯片的下一代时钟处理器。这里你可以安全的选上这一选项。如果硬件不支持的话,将仍使用8254时钟处理器
      
  • Symmetric multi-processing support
    对称多处理器支持,在单CPU的机器上,不选这个选项会更快一些。由于超线程技术,看起来是两颗CPU,因些要选上这个选项
      (1)   Maximum number of CPUs (2-255) 支持的最大CPU数
      [ ]   SMT (Hyperthreading) scheduler support
      
  • Preemptible Kernel
    这个选项能使应用程序即使内核在高负载时也很可靠,建议最好选上
      
  • Machine Check Exception
    这个选项能让CPU检测到系统故障时通知内核,一般我用组装的台式机会选这项。
      < > Toshiba Laptop support
      < > Dell laptop support
      < > /dev/cpu/microcode - Intel IA32 CPU microcode support
      < > /dev/cpu/*/msr - Model-specific register support
      < > /dev/cpu/*/cpuid - CPU information support
      Firmware Drivers  --->
        < > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
      High Memory Support (4GB)  --->
      [ ] Allocate 3rd-level pagetables from highmem
      [ ] Math emulation
      
  • MTRR (Memory Type Range Register) support
      [ ] Boot from EFI support (EXPERIMENTAL)
      
  • Enable kernel irq balancing
      [ ] Use register arguments (EXPERIMENTAL)
      

    电源管理:
    Power management options (ACPI, APM)  --->
      
  • Power Management support
      [ ]   Power Management Debug Support
      [ ]   Software Suspend (EXPERIMENTAL)
          ACPI (Advanced Configuration and Power Interface) Support  --->
          APM (Advanced Power Management) BIOS Support  --->
          CPU Frequency scaling  --->

    ACPI (Advanced Configuration and Power Interface) Support  --->
      
  • ACPI Support
    这是一种电源管理方式,你可以看看你的BIOS是否支持。如果支持的话建议你选上这项
      [ ]   Sleep States (EXPERIMENTAL)
      < >   AC Adapter
      < >   Battery
      <*>   Button 捕获Power、Sleep、Lid(我也不知道这是什么按钮)等按钮是否按下,并做相应的动作
      <*>   Video 集成在板上的显卡的ACPI支持,对有些板卡可能不起作用
      < >   Fan
      <*>   Processor
      <*>   Thermal Zone
      < >   ASUS/Medion Laptop Extras
      < >   IBM ThinkPad Laptop Extras
      < >   Toshiba Laptop Extras
      (0) Disable ACPI for systems before Jan 1st this year
      [ ] Debug Statements
      
  • Power Management Timer Support

    APM (Advanced Power Management) BIOS Support  --->
      < > APM (Advanced Power Management) BIOS support
    高级电源管理的支持,一般来说笔记本应该选上,台式机可以不选。
      [ ]   Ignore USER SUSPEND
      
  •    Enable PM at boot time
      [ ]   Make CPU Idle calls when idle
      [ ]   Enable console blanking using APM
      [ ]   RTC stores time in GMT 按Unix的标准,硬件的时钟应该设为格林威治时间
      [ ]   Allow interrupts during APM BIOS calls
      
  •    Use real mode APM BIOS call to power off
  • CPU Frequency scaling
    这一选项允许改变CPU的主频,使CPU在低负荷或使用电池时降低主频,达到省电的目的。
    [ ]   Enable CPUfreq debugging
    < >   /proc/cpufreq interface (deprecated)
          Default CPUFreq governor (performance)  --->
    ---   'performance' governor
    <*>   'powersave' governor
    <*>   'userspace' governor for userspace frequency scaling
    [ ]     /proc/sys/cpu/ interface (2.4. / OLD)
    <*>   'ondemand' cpufreq policy governor自动调节主频
    <*>   CPU frequency table helpers 多数的CPU需要这一项来调节主频
    <*> ACPI Processor P-States driver 报告处理器的状态
    < > AMD Mobile K6-2/K6-3 PowerNow!
    < > AMD Mobile Athlon/Duron PowerNow!
    < > AMD Opteron/Athlon64 PowerNow!
    < > Cyrix MediaGX/NatSemi Geode Suspend Modulation
    <*> Intel Enhanced SpeedStep Intel的变频技术支持
    [ ]   Use ACPI tables to decode valid frequency/voltage pairs
    ---   Built-in tables for Banias CPUs
    < > Intel Speedstep on ICH-M chipsets (ioport interface)
    < > Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
    < > Intel Pentium 4 clock modulation
    < > nVidia nForce2 FSB changing
    < > Transmeta LongRun
    < > VIA Cyrix III Longhaul
    --- shared options
    [ ] /proc/acpi/processor/../performance interface (deprecated)
    [ ] Relaxed speedstep capability checks

    总线类型:
  • PCI support
          PCI access mode (Any)  --->强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。
    [ ] Message Signaled Interrupts (MSI and MSI-X)
    [ ] Legacy /proc/pci interface
    [ ] PCI device name database
    [ ] ISA support
  •    EISA support
  •      Vesa Local Bus priming
  •      Generic PCI/EISA bridge
  •      EISA virtual root device
    [ ]     EISA device name database
    [ ] MCA support
    < > NatSemi SCx200 support
        PCCARD (PCMCIA/CardBus) support  --->
        PCI Hotplug Support  --->

    PCCARD (PCMCIA/CardBus) support  --->一般只有笔记本电脑上才会有PCMCIA插槽,如果你是台式机的话,可以不选这一项,然后跳过这一部份。

    PCI Hotplug Support  --->
      < > Support for PCI Hotplug (EXPERIMENTAL)
    一般来讲只有服务器上会有热插拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份。

    可执行文件格式,
  • Kernel support for ELF binaries
    ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台
    < > Kernel support for a.out and ECOFF binaries
    <*> Kernel support for MISC binaries
    此选项允许插入二进制的封装层到内核中,当使用Java、.NET、Python、Lisp等语言编写的程序时非常有用

    硬件设备[相当复杂,看得偶头晕,大家针对自己的设备慎重选择(手边最好准备一本汉英字典:)如果想使用adsl,记得网络部分除了TCP/IP协议还得把ppp部分编译进内核,想当初偶就是把这个给忘了,郁闷了许久:)

    文件系统,
    <*> 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
    [ ] JBD (ext3) debugging support
    <*> Reiserfs support
    [ ]   Enable reiserfs debug mode
    [ ]   Stats in /proc/fs/reiserfs
  •    ReiserFS extended attributes
  •      ReiserFS POSIX Access Control Lists
  •      ReiserFS Security Labels
    JFS filesystem support
  •    JFS POSIX Access Control Lists
    [ ]   JFS debugging
    [ ]   JFS statistics
    XFS filesystem support
  •    Realtime support (EXPERIMENTAL)
  •    Quota support
  •    Security Label support
  •    POSIX ACL support
    < > Minix fs support
    < > ROM file system support
  • Quota support
    < >   Old quota format support
       Quota format v2 support
  • Dnotify support
    < > Kernel automounter support
    < > Kernel automounter version 4 support (also supports v3)
        CD-ROM/DVD Filesystems  --->
        DOS/FAT/NT Filesystems  --->
        Pseudo filesystems  --->
        Miscellaneous filesystems  --->
        Network File Systems  --->
        Partition Types  --->
        Native Language Support  --->
        Profiling support  --->
        Kernel hacking  --->
        Security options --->
        Cryptographic options --->
        Library routines --->


    这个东东你要是搞不来就不要搞,默认的也可以的。先学习一下怎么样编译内核,等成功了,有了经验了在改也没有事的!

    编译内核:
    # cd /usr/src/linux
    # make dep -----链接程序代码与函数库.
    # make clean -----删除不必要的模块和文件.
    # make bzImage -----开始编译系统内核.
    # make modules -----开始编译外挂模块.
    # make modules_install -----安装编译完成的模块.
    要好常时间的,我洗了一件衣服,抽了N根白沙之后,总算完成了,好激动呀!
    # su -
    # /sbin/depmod -a -----创建模块的链接.

    更换内核:
    # cd /boot -----切换到引导分区/boot.
    # rm System.map vmlinuz -----删除旧的符号链接.
    # mv /usr/src/linux/System.map System.map
    # mv /usr/src/linux/arch/i386/boot/bzImage vmlinuz

    如果你用GRUB来管理开机,简单点就是你装了win还装了linux就要修改/boot/grub下的menu.1st文件:
    # vi /boot/grub/menu.1st
    键入i进入编辑模式:


    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You do not have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /, eg.
    #          root (hd0,1)
    #          kernel /boot/vmlinuz-version ro root=/dev/hda2
    #          initrd /boot/initrd-version.img
    #boot=/dev/hda
    default=1
    timeout=10
    splashimage=(hd0,1)/boot/grub/splash.xpm.gz
    title Fedora Core(2.6.11)
            root (hd0,1)
            kernel /boot/vmlinuz ro root=/dev/hda2  ---你的linux所在的分区
    title DOS
            rootnoverify (hd0,0)
            chainloader +1


    title Fedora Core(2.4.22)
            root (hd0,1)
            kernel /boot/vmlinuz-2.4.22-1.2115.nptl ro root=LABEL=/ hdd=ide-scsi rhgb
            initrd /boot/initrd-2.4.22-1.2115.nptl.img
    这样还可以保留旧版本的内核以防编译新内核失败进不了系统

    从启电脑,好了,进去了。网上说新内核速度好快的,我怎么感觉快不了多少呢。无所谓了,反正是成功了。呵呵,我可是失败了很多次才成功的。好高兴,2点了,穿衣服去吃东西了。


    rpm没法用了,怎么办?
    在/usr/lib/rpm/macros里面寻找代码:
    %__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb
    修改成代码:
    %__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb private


    linux讨论群:6541311
  • 发表于 2005-5-16 11:43:03 | 显示全部楼层
    不错。。。很好帖子。。。
    回复

    使用道具 举报

     楼主| 发表于 2005-5-16 18:38:50 | 显示全部楼层
    为什么没人顶呢!失败呀!
    回复

    使用道具 举报

    发表于 2005-5-16 22:54:59 | 显示全部楼层
    学习ing......
    回复

    使用道具 举报

    发表于 2005-5-17 09:47:10 | 显示全部楼层
    靠,虽说楼主做的很辛苦。但是,在ML下根本不需要这么辛苦啊
    、、轻松就搞定的
    回复

    使用道具 举报

     楼主| 发表于 2005-5-17 17:51:06 | 显示全部楼层
    为什么,具体说一下吧!
    回复

    使用道具 举报

    发表于 2005-5-17 22:05:57 | 显示全部楼层
    [quote:fbfda1be06="goshawk168"]为什么没人顶呢!失败呀![/quote]
    楼主辛苦了
    回复

    使用道具 举报

    发表于 2005-5-26 02:08:02 | 显示全部楼层
    “不知道为什么,我用module-init-tools-3.1时make出错。如果改用3.0的就没事了。

    如果你在as4下就可以用module-init-tools-3.1。
    回复

    使用道具 举报

     楼主| 发表于 2005-5-27 08:41:22 | 显示全部楼层
    谢谢,总算明白了这个问题,是不是不兼容
    回复

    使用道具 举报

    发表于 2005-5-27 21:25:33 | 显示全部楼层
    为什么我用3.0,3.1都提示:
    if [ "docbook2man" = "docbook2man" ]; then                     \
        docbook2man doc/modprobe.conf.sgml > /dev/null 2>&1;                       \
    else                                                               \
        docbook2man doc/modprobe.conf.sgml 2>&1 > modprobe.conf.5 | sed 's/^[^:]*://';              \
    fi
    make: *** [modprobe.conf.5] Error 127
    回复

    使用道具 举报

    发表于 2005-5-27 21:29:33 | 显示全部楼层
    请问这是什么原因造成的?
    回复

    使用道具 举报

     楼主| 发表于 2005-5-28 09:10:58 | 显示全部楼层
    在什么时间出现的
    回复

    使用道具 举报

    发表于 2005-5-28 09:19:51 | 显示全部楼层
    编译快完成的时候
    回复

    使用道具 举报

    发表于 2005-5-28 09:21:49 | 显示全部楼层
    还有,是不是一定要对modutils进行升级?
    我现在用的是ML
    回复

    使用道具 举报

    发表于 2005-5-28 10:16:59 | 显示全部楼层
    make[1]: *** 没有规则可以创建“arch/i386/kernel/built-in.o”需要的目标“arch/i386/kernel/entry.o”。 停止。
    make: *** [arch/i386/kernel] 错误 2
    这个是怎么回事
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    GMT+8, 2024-9-30 07:36 , Processed in 0.045568 second(s), 15 queries .

    © 2021 Powered by Discuz! X3.5.

    快速回复 返回顶部 返回列表