• [转载]秀脱linux实战笔记linuxkernel3.0.3实战篇


    +++++++++++++++++++++++++++++++++++++++++++++++++++++++
    秀脱linux实战笔记linux-kernel-3.0.3实战片篇:

       QQ:     6541657 
    EMAIL:xiutuo@gmail.com
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++

    一:环境
    linux: centos6
    kernel:linux-3.0.3.tar.bz2
    使用root用户编译内核
    内核裁剪:
    驱动:保留常用USB驱动,支持常用磁盘接口如SCSI,sATA
    去掉无线,蓝牙,ISDN,,其他游戏手柄,手持设备等都已去掉
    支持ext3,ext4,cifs,nfs,不支持虚拟化
    内核debug模式已经关闭,编译方式采用优化code size方式编译
    CPU架构:只保留intel,去掉AMD等,cpu采用非抢占调度(server)模式
    语言:只保留UTF-8,ISO,简体中文


    二:编译准备
    1.准备相关软件包
    yum install rpmdevtools yum-utils ncurses-devel make rpm-build rpm-devel

    三. 源码编译安装步骤
    0. 解压源码
    tar xvf linux-3.0.3.tar.bz2
    cd linux-3.0.3
    1. make mrproper 
    如果是第一次编译,省略该步骤,该步骤主要删除编译后生成的一些文件,如果.config,makefile,*.o等文件
    如果是第一次编译失败,再一次编译,则必须执行。

    2. make menuconfig  | make config | make menuconfig | make xconfig | make gconfig
    定制内核配置,请以上方式任选一种。我这里选择make menuconfig

    3. make
    编译内核

    4. make modules_install 
    安装内核模块, 把上一步构建出来的内核放入一个模块子目录中:
    /lib/modules/内核版本,这里是/lib/modules/3.0.3/

    5. make install
    把编译好的内核放入/boot中,并且会更新引导文件,会把vmlinuz和System.map复制到/boot目录下同时修改grub
    主要会生成一下文件:
    config-3.0.3   --内核编译配置文件内容就是make menuconfig出来的文件.config的内容,只是文件名不同而已
    initrd-3.0.3.img 
    vmlinux-3.0.3.bz2
    System.map-3.0.3 
    vmlinuz-3.0.3

    6. new-kernel-pkg --mkinitrd --depmod --install 3.0.3
    安装grub,new-kernel-pkg --mkinitrd --depmod --install 内核版本号
    修改/boot/grub/grub.conf文件,增加一下内容
    title CentOS Linux (3.0.3)
            root (hd0,6)
            kernel /vmlinuz-3.0.3 ro root=UUID=db5edc6d-d16b-4308-8c7b-6df9f4f4e26c 
    rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYS
    FONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
            initrd /initrd-3.0.3.img


    四. 编译成rpm包
    0. 解压源码
    tar xvf linux-3.0.3.tar.bz2
    cd linux-3.0.3
    vi scripts/package/mkspec 
    增加一下几行,目的:当rpm -i kernel-3.0.3-1.x86_64.rpm 自动配置grub.conf

    echo "%post"
    echo 'if [ `uname -i` == "x86_64" -o `uname -i` == "i386" ]; then'
    echo  'if [ -f /etc/sysconfig/kernel ]; then'
    echo  '/bin/sed -i -e 's/^DEFAULTKERNEL=kernel-smp$/DEFAULTKERNEL=kernel/' /etc/sysconfig/kernel || exit $?'
    echo  'fi '
    echo 'fi '
    echo '/sbin/new-kernel-pkg  --mkinitrd --make-default --depmod --install %{version} || exit $?' 

    1. make mrproper 
    如果是第一次编译,省略该步骤,该步骤主要删除编译后生成的一些文件,如果.config,makefile,*.o等文件
    如果是第一次编译失败,再一次编译,则必须执行。

    2. make menuconfig  | make config | make menuconfig | make xconfig | make gconfig
    定制内核配置,请以上方式任选一种。我这里选择make menuconfig
    生产内核配置文件.config


    3. make rpm-pkg
    生成一下文件

    Wrote: /root/rpmbuild/SRPMS/kernel-3.0.3-1.src.rpm
    Wrote: /root/rpmbuild/RPMS/x86_64/kernel-3.0.3-1.x86_64.rpm
    Wrote: /root/rpmbuild/RPMS/x86_64/kernel-headers-3.0.3-1.x86_64.rpm

    4. 安装内核
    rpm -ivh /root/rpmbuild/RPMS/x86_64/kernel-3.0.3-1.x86_64.rpm

    五.附录
    kernel-3.0.3-1.src.rpm下载地址

    http://dl.dbank.com/c0x5qcm826
    kernel-3.0.3-1.x86_64.rpm下载地址
    http://dl.dbank.com/c0twilsoi1

    kernel-headers-3.0.3-1.x86_64.rpm下载地址
    http://dl.dbank.com/c0056pznuh

    转载自:http://hi.baidu.com/xiutuo/blog/item/194a7497c5fe3a7655fb96c7.html

  • 相关阅读:
    C#枚举(一)使用总结以及扩展类分享
    .NET使用DinkToPdf将HTML转成PDF
    .NET使用MailKit进行邮件处理
    socket+django
    mysql 修改编码格式
    django中Model表的反向查询
    浅谈 session 会话的原理
    浅谈 django Models中的跨表
    django Models 常用的字段和参数
    encoding/xml
  • 原文地址:https://www.cnblogs.com/Leon5/p/2224609.html
Copyright © 2020-2023  润新知