Chinaunix首页 | 论坛 | 博客
  • 博客访问: 206458
  • 博文数量: 50
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 583
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-12 14:38
文章分类

全部博文(50)

文章存档

2013年(50)

我的朋友

分类: LINUX

2013-04-16 21:52:32

原文地址:VMware下CentOS 6编译内核 作者:jean_leo

环境信息:
    VMware下安装的CentOS 6.2
    VMware Workstation 9.0.0
    Linux version 2.6.32-220.el6.i686

环境准备:
    下载linux内核源码:
    下载的源码版本:linux-2.6.34.14

编译操作:
    1)解压源码,习惯性地解压到了/usr/src下面,实际上任意位置都无妨。
    tar -xvf linux-2.6.34.14.tar.xz
    2)cd进入解压后的源码目录内,执行环境清空操作。
   make mrproper
   3)准备配置文件,在/boot目录下面有个安装系统时生成的config-*文件,可以基于该文件上面进行配置编译。
   cp /boot/config-* ./.config
   4)配置内核信息。
   make menuconfig
   配置:

   Executable file formats / Emulations

    只选择了kernel support for ELF binaries

   Networking support

    可以不管

   Device Drivers

     Connector- unified userspace <-> kernelspace linker
     Block devices-->
                  Normal floppy disk support
                  loopback device support
                  network block device support
                  RAM block device support

      SCSI device support//如果是ide硬盘,这个可以全都不选,选择ata相关的

                   * SCSI device support 
                   legacy /proc/scsi/ support
                   scsi disk support
                   scsi cdrom support
                   scsi generic support
                   Probe all LUNs on each SCSI device
                   SCSI low-level drivers 
                        * BusLogic SCSI support

       PS: IDE硬盘,则选择(下面以我选择的为例,可能不是最精简的)
               <*>  ATA/ATAPI/MFM/RLL support (DEPRECATED)
                   <*>   generic ATA/ATAPI disk support
                    [*]     ATA disk support
                   <*>   generic/default IDE chipset support
                   <*>   Generic PCI IDE Chipset Support
               <*> Serial ATA and Parallel ATA drivers
                   <*>   AHCI SATA support

       Fusion MPT device support
                    Fusion MPT ScsiHost drivers for SPI

      I2C support
                      I2C hardware bus support
                               Intel PIIX4 and compatible
       USB support  
                     *  USB Mass Storage support

      Device Drivers
                    Network device support
                           Ethernet (10 or 100Mbit) / Ethernet driver support
                                 * AMD PCnet32 PCI support
    Virtualization
      可以不管
   此外需要将系统上安装好的文件系统类型全部选上(我这里将其选为built-in类型,而非模块)。
   比如我的:
    <*> The Extended 4 (ext4) filesystem    
         [*]   Ext4 extended attributes    
         [*]     Ext4 POSIX Access Control Lists
         [*]     Ext4 Security Labels   
         [*]   EXT4 debugging support    
         [*] JBD (ext3) debugging support  
         [*] JBD2 (ext4) debugging support

   5)编译内核,为了加快编译速度,可以添加选项-jn,其中n替换为线程数值,一般是CPU核数的两倍。
   make -j8 all
   6)安装内核模块。
   make modules_install
   PS:其实在make all和make modules_install中间还有两条命令可以操作,就是make bzImage(压缩内核)和make modules(编译模块),但是这两条命令无关紧要,可以不管。
   7)将编译生成的内核文件拷贝到对应位置去,其实可以很简单就用make install命令即可,只是会自动添加一些其他东西上去,故未采用。
   cp -v System.map /boot/System.map-2.6.34.14
   cp -v arch/i386/boot/bzImage /boot/vmlinuz-2.6.34.14
   cp -v .config /boot/config-2.6.34.14
   rm -f System.map vmlinuz
   ln -s vmlinuz-2.4.18 vmlinuz
   ln -s System.map-2.4.18 System.map
   注:
   其实除了cp -v arch/i386/boot/bzImage /boot/vmlinuz-2.6.34.14是必须的之外,其余的操作可以不管。
   8)为新内核创建一个ramdisk,否则系统不能引导。
   mkinitrd /boot/initramfs-2.6.34.14.img 2.6.34.14
   PS:后面的2.6.34.14是根据版本来填的,具体可以依据/lib/modules目录里面的目录名来填。
   如果不创建ramdisk,很容易遇到一个这样的报错:

 VFS:Cannot open root device "sda" 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)
   很让人头疼的,就这玩意折腾了我N个小时了。

   9)配置grub信息。
   vim /etc/grub.conf
   新增内容:
   title CentOS (2.6.34.14)
    root (hd0,0)
    kernel /boot/vmlinuz-2.6.34.14 ro root=UUID=5ee1b1da-0889-47c0-ae3f-13b64bafeb28
    initrd /boot/initramfs-2.6.34.14.img
    PS;root=UUID=5ee1b1da-0889-47c0-ae3f-13b64bafeb28,这个是对系统上已有的grub配置“抄袭”过来的,别照搬~
   10)至此为止,已经搞定了。
   reboot
   复位系统开始引导新内核。



阅读(1502) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~