Linux内核编译

前言

最近在笔记本物理机装了Ubuntu系统,虽然不是并第一次实体机装Linux,但这是第一次认真配置了系统环境并在Linux下开发和学习。目前同时也在学习计算机操作系统的课程,因此尝试编译Linux内核,同时为以后学习Linux内核分析裁剪做准备。第一次踩了不少坑也查了不少资料,在此记录一下Linux内核编译的过程。

下载内核源码并解压

The Linux Kernel :Kernel
这里我选择的是:Linux-3.16.49
通过httpie代替wget下载:

http https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.16.49.tar.xz --download

解压Linux内核源码:

xz -d linux-3.16.49.tar.xz
tar xvf linux-3.16.49.tar

cd linux-3.16.49

配置内核

make menuconfig

make menuconfig 图形化的内核配置make mrproper -----删除不必要的文件和目录.
#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
目的都是生成一个.config文件,这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,你就用这个好了,这个比较方便,也好设置。如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了。 选择相应的配置时,有三种选择,它们分别代表的含义如下:
Y--将该功能编译进内核
N--不将该功能编译进内核
M--将该功能编译成可以在需要时动态插入到内核中的模块

运行失败有可能是缺少依赖库libncurses5-dev,也可能是终端窗口太小无法显示配置界面

sudo apt-get install libncurses5-dev

编译内核

大概花了10分钟

make all
make modules

创建初始化文件

cd arch/x86/boot
mkinitramfs -o initrd.img

使用qemu运行内核

qemu-system-x86_64 -kernel bzImage -initrd initrd.img -m 512M


运行成功

使用tmpfs和-j8参数加速编译

经测试使用tmpfs和-j8参数多线程编译使整体编译时间缩短到2分钟以内

测试环境:

  • CPU:i7-4720HQ
  • MEM:12GiB 1600MHz
sudo mount tmpfs ~/ramdisk -t tmpfs -o size=3G
make all -j8
posted @ 2017-10-27 19:00  卷积蘑菇  阅读(241)  评论(0编辑  收藏  举报