首页 > 技术文章 > 内核编译

jym1 2017-12-20 11:58 原文

内核编译前准备工作: 

 

  1. 准备好开发环境

   

   Server Platform Development

   Development Tools

yum groupinstall Development Tools ; yum groupinstall Server Platform Development

 

 

2.获取目标主机硬件设备相关信息

    cpu:

cat /proc/cpuinfo        #查看cpu信息
 x86info
yum install x86info    #需安装后使用
lscpu

 

     pci:

lspci                    #显示所有pci设备信息
    -v               #显示详细的信息
    -vv              #显示更详细的信息
lsusb                   #显示usb设备信息
    -v                #同lspci
    -vv
lsblk                    #显示块设备信息
    -a                #显示所有

 

    全部的硬件设备:

    # hal-device

3.获取内核源码

# wget  -r).tar.xz

4.安装图形依赖包

# yum install ncurses ncurses-devel

5.安装虚拟屏幕

# yum install screen

 

简单依据模板文件的内核编译过程

# tar xf linux-3.10.67.tar.xz -C /usr/src
        #将下载好的内核解压至/usr/src目录中
# cd /usr/src
        #编译命令使用相对路径,所以要cd至该目录下
# ln -sv linux-3.10.67 linux
        #创建内核链接文件,此处的linux为链接名
# cd linux
        #编译命令使用相对路径,所以要cd至该目录下
# cp /boot/config-$(uname -r) ./.config
        #复制/boot目录下config模板至当前目录下
# make menuconfig
        #以文本窗口配置内核选项,在此处开启或关闭内核或模块
# screen
        #开启虚拟屏幕,因编译不确定性,且时间较长,所以开启它吧
# make -j #
        #编译内核,#为以几个核心进行编译
# make modules_install
        #安装内核模块
# make install
        #安装内核
# init6
        #重启后进入grub可选择内核进入系统了哦

常见报错信息

drivers/tty/serial/built-in.o: final close failed: No space left on device
make[3]: *** [drivers/tty/serial/built-in.o] Error 1
make[2]: *** [drivers/tty/serial] Error 2
make[1]: *** [drivers/tty] Error 2
make: *** [drivers] Error 2

此类报错为磁盘空间不足,解决方案为扩展磁盘容量,或将/usr挂载至独立分区

ERROR: modinfo: could not find module vmware_balloon

此类报错为在虚拟机安装时产生,无须理会

 

编译扩展

1.只编译某子目录中的相关代码

# cd /usr/src/linux        #编译命令使用相对路径,所以要cd至该目录下
# make dir/                #dir为你需要编译的某目录

2.只编译一个特定的模块

# cd /usr/src/linux        
# make dir/file.ko         #指定某目录下具体的模块,以.ko结尾

3.编译的目标平台与当前平台不相同

# make ARCH=平台名字

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

# make ARCH=平台名字 help

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

# make clean:清理大多数编译生成的文件,但会保留config文件等
# make mrproper:清理所有编译生成的文件,config及某些备份文件
# make distclean:mrproper,patches以及编辑器备份文件

 

附:screen命令用法

1.打开新的screen

# screen

2.退出并关闭screen

# exit

3.剥离当前screen

# ctrl+a,d

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

#  screen -ls

5.恢复screen:通过ls查看的ID号恢复

screen -r [SESSION]

 

推荐阅读