编译内核

  1. 编译内核:

    1. 前提:
      1. 准备好开发环境;
      2. 获取目标主机上硬件设备的相关信息;
      3. 获取到目标主机系统功能的相关信息,例如要启用的文件系统;
      4. 获取内核源代码包;www.kernel.org
  1. 准备好开发环境:

包组(CentOS 6):

Server Platform Development

Development Tools

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[root@centos68 initrd]# yum grouplist | grep Dev

Additional Development

Development tools

Server Platform Development

Desktop Platform Development

yum groupinstall “Server Platform Development” -y

yum groupinstall ” Development tools ” –y

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  1. 目标主机硬件设备相关信息:
    1. CPU:

~]# cat /proc/cpuinfo

~]# x86info -a

~]# lscpu

  1. PCI设备:

~]# lspci

-v

-vv

~]# lsusb

-v

-vv

~]# lsblk

  1. 了解全部硬件设备信息

~]# hal-device

  1. 简单依据模板文件的制作过程:

~]# tar xf linux-3.10.67.tar.xz -C /usr/src

~]# cd /usr/src

~]# ln -sv linux-3.10.67 linux

~]# cd linux

~]# cp /boot/config-$(uname -r) ./.config

~]# make menuconfig

~]# screen

~]# make -j #

~]# make modules_install

~]# make install

重启系统,并测试使用新内核;

  1. 练习:编译好,并启用之;

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

yum groupinstall “Server Platform Development” -y

yum groupinstall ” Development tools ” –y

yum install screen

tar xf linux-4.9.6.tar.xz -C /usr/src/

cd /usr/src/

ln -sv linux-4.9.6 linux

cd linux

cp /boot/config-$(uname -r) ./.config

make menuconfig

screen

make modules_install

make install

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  1. 编译内核的步骤
    1. 下载kernel

      www.kernel.org

    2. 配置内核选项
      1. 支持”更新”模式进行配置:
        1. make config:基于命令行以遍历的方式去配置内核中可配置的每个选项;
        2. make menuconfig:基于curses的文本窗口界面;
        3. make gconfig:基于GTK开发环境的窗口界面;
        4. make xconfig:基于Qt开发环境的窗口界面;
      2. 支持”全新配置”模式进行配置:
        1. make defconfig:基于内核为目标平台提供的”默认”配置进行配置;
        2. make allnoconfig: 所有选项均回答为”no”;
  1. 编译

make [-j #]

  1. 如何只编译内核中的一部分功能:
    1. 只编译某子目录中的相关代码:

# cd /usr/src/linux

# make dir/

例如:只编译drivers/net/文件夹

#make drivers/net/

  1. 只编译一个特定的模块:

    # cd /usr/src/linux

# make dir/file.ko

例如:只为e1000编译驱动:

                    # make drivers/net/ethernet/intel/e1000/e1000.ko

  1. 如何交叉编译内核:
    1. 编译的目标平台与当前平台不相同;

      # make ARCH=arch_name

  1. 要获取特定目标平台的使用帮助

# make ARCH=arch_name help

  1. 如何在已经执行过编译操作的内核源码树做重新编译:

    事先清理操作:

    1. # make clean:清理大多数编译生成的文件,但会保留config文件等;
    2. # make mrproper: 清理所有编译生成的文件、config及某些备份文件;
    3. # make distclean:mrproper、patches以及编辑器备份文件;
  1. 安装模块

    #make modules_install

  2. 安装内核等

    make install

    1. 安装bzImage为/boot/vmlinuz-VERSION-RELEASE
    2. 生成initramfs文件
    3. 编辑grub的配置文件

  1. screen命令:
    1. 打开新的screen:

      # screen

    2. 退出并关闭screen:

      # exit

    3. 剥离当前screen:

      Ctrl+a,d

    4. 显示所有已经打开的screen:

      screen -ls

    5. 恢复某screen

      screen -r [SESSION]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值