博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次编译linux 2.6 和4.10内核源码
阅读量:4206 次
发布时间:2019-05-26

本文共 2289 字,大约阅读时间需要 7 分钟。

0x00前言

很早就想开始学习linux内核漏洞的利用,之前的调试方式是借助kgdb来在两个vmware中调试,实际操作起来是没问题的。然而最近看到很多文章是使用qemu+gdb来调试的,因此决定尝试一下这种调试方式,第一步就是编译linux源码,本文将简述一下编译linux2.6源码和4.10源码时遇到的坑。

0x01 编译linux2.6源码

编译linux2.6的源码的过程参考这里:https://www.anquanke.com/post/id/85837。在按照文章中的步骤走的时候同遇到了很多问题,后来遇到某些坑绕不过去了....遇到的坑点大多数是make时遇到的。

问了一下编译过的同学,说是采用低版本的ubuntu来编译试试。经过了不断的搜索和尝试,发现linux2.6的源码使用gcc version>=4.6会遇到各种错误,有网友说用gcc4.5可以编译成功。下载源码 

编译时发现需要这些:configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.

编译这些依赖的源码时也遇到了问题。最后通过apt-get gcc-4.4解决。用gcc4.4编译时2.6源码时,没有遇到任何报错。

因此,最终解决办法就是更换gcc版本。

下载和切换gcc的版本方法

首先添加ppa到库:  sudo add-apt-repository ppa:ubuntu-toolchain-r/test  sudo apt-get updatesudo apt-cache search gcc-4.*  # 安装gcc/g++  sudo apt-get install gcc-4.4  # 手工更换gcc软连接  cd /usr/bin  sudo ln -s gcc-4 gcc  sudo apt-cache search gcc-4.*  # 安装gcc/g++  sudo apt-get install gcc-4.4  # 手工更换gcc软连接  cd /usr/bin  sudo ln -s gcc-4 gcc

linux2.6 source 编译环境

    ubuntu14.04 / (ubuntu16.04测试也编译成功,因此觉得和ubuntu版本、内核版本没多大关系)

    gcc4.4

gcc --versiongcc (Ubuntu/Linaro 4.4.7-8ubuntu1) 4.4.7Copyright (C) 2010 Free Software Foundation, Inc.This is free software; see the source for copying conditions.  There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.uname -aLinux ubuntu 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

正常的编译步骤如下:

wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.1.tar.gz -O linux-2.6.32.1.tar.gztar zxvf linux-2.6.32.1.tar.gzcd linux-2.6.32.1make i386_defconfigmake -j4

PS: 在ubuntu16.04上编译时遇到了一个小问题,是由于perl版本过高导致的,参考这里的错误二:

https://blog.csdn.net/think_ycx/article/details/80740028

0x02 编译linux4.10源码

linux source 4.10 编译环境

同样,编译linux source 4.10时,使用的gcc版本使用的是gcc 5.5.0,在ubuntu16.04上编译成功。

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.10.6.tar.gz -O linux-4.10.6.tar.gztar zxvf linux-4.10.6.tar.gzcd linux-4.10.6make defconfigmake -j4

 

参考:

1. https://askubuntu.com/questions/873278/linux-kernel-version-and-gcc-version-match
2. gcc4.5 version成功编译
    http://www.cnblogs.com/QuLory/archive/2012/09/27/2706429.html  
3. 编译gcc 
    http://blog.cuicc.com/blog/2010/08/22/install-gcc-4-5-1-in-debian-lenny/
4. http://staff.ustc.edu.cn/~xlanchen/ULK2011Spring/slides/2_2build+run+gdb%20linux-2.6.26.pdf

 

你可能感兴趣的文章
JAVA实现文件树
查看>>
linux -8 Linux磁盘与文件系统的管理
查看>>
linux 9 -文件系统的压缩与打包 -dump
查看>>
PHP在变量前面加&是什么意思?
查看>>
ebay api - GetUserDisputes 函数
查看>>
ebay api GetMyMessages 函数
查看>>
php加速器 - zendopcache
查看>>
手动12 - 安装php加速器 Zend OPcache
查看>>
set theme -yii2
查看>>
yii2 - 模块(modules)的view 映射到theme里面
查看>>
yii2 - controller
查看>>
yii2 - 增加actions
查看>>
网站加载代码
查看>>
php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)
查看>>
magento url中 uenc 一坨编码 base64
查看>>
强大的jQuery焦点图无缝滚动走马灯特效插件cxScroll
查看>>
Yii2.0 数据库查询
查看>>
yii2 db 操作
查看>>
mongodb group 有条件的过滤组合个数。
查看>>
yii2 用命令行操作web下的controller
查看>>