开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

内核编译步骤与报错

简介:
+关注继续查看

内核编译前准备工作: 


  1. 准备好开发环境

   

   Server Platform Development

   Development Tools


  1. 1
    yum groupinstall Development Tools ; yum groupinstall Server Platform Development


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

    cpu:

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

     pci:

1
2
3
4
5
6
7
8
    # lspci                    #显示所有pci设备信息
        -v                   #显示详细的信息
        -vv                   #显示更详细的信息
    # lsusb                    #显示usb设备信息
        -v                     #同lspci
        -vv
    # lsblk                    #显示块设备信息
        -a                     #显示所有

    全部的硬件设备:

1
    # hal-device

3.获取内核源码

1
# wget  -r).tar.xz

4.安装图形依赖包

1
# yum install ncurses ncurses-devel

5.安装虚拟屏幕

1
# yum install screen


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 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可选择内核进入系统了哦

常见报错信息

1
2
3
4
5
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挂载至独立分区

1
ERROR: modinfo: could not find module vmware_balloon

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


编译扩展

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

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

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

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

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

1
# make ARCH=平台名字

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

1
# make ARCH=平台名字 help

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

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


附:screen命令用法

1.打开新的screen

1
# screen

2.退出并关闭screen

1
# exit

3.剥离当前screen

1
# ctrl+a,d

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

1
#  screen -ls

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

1
screen -r [SESSION]




本文转自 元婴期 51CTO博客,原文链接:http://blog.51cto.com/jiayimeng/1845426

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux gcc编译时强制链接并依赖一个库(即使未使用)
Linux gcc编译时强制链接并依赖一个库(即使未使用)
0 0
linux系统安装步骤
linux系统安装步骤
0 0
10.10 修改etcfstab文件出错导致Linux不能启动,该怎么办?
如果把 /etc/fstab 文件修改错了,也重启了,系统崩溃启动不了了,那该怎么办?比如:
0 0
Linux内核编译时会遇到的问题--缺少mkimage
由于各大平台所带的内核不同,所以编译方式也不同,但方法都是大同小异。 但是,编译内核有时候会提示缺少mkimage这个命令,如何解决? 供应商提供内核的同时也会提供其它的一些,比如Uboot,rootfs等等。
913 0
Linux下配置文件读取操作流程及其C代码实现
一、概述 Linux具有免费、可靠、安全、稳定、多平台等特点,因此深受广大程序员的欢迎。 为了体现软件产品的灵活性,可添加配置文件存放某些重要的参数,在部署的时候根据实际的安装环境对每个配置项的值进行设置。
829 0
linux c 文件打开并创建代码分析
[root@luozhonghua 03]# cat ex03-open-03.c/*文件ex03-open-03.c,O_CREAT和O_EXCL的使用*/#include #include #include #include int main(void){ int fd = -1; char filename[] = "test.txt"; /*打开文件,如果文件不存在,则报错*/ f
796 0
linux内核编译步骤
最近linux内核更新到了2.13.2,心里痒痒的想编译个新内核体验体验,网上搜集了好多资料,总结下来就这个步骤:1、到[url]http://www.kernel.
553 0
编译、裁剪、安装、删除 Ubuntu内核和模块管理
<div class="bct fc05 fc11 nbw-blog ztag">一、下载最新内核文件<br><blockquote>地址:http://www.kernel.org,一般下载Full Source版本。<br> 下载完毕后,放到任意文件夹中,使用命令:<br><pre class="prettyprint"><p><span>tar jxvf linux</span><
1692 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载