安全防护技巧

linux内核的编译

内核编译

  今天下午跟马哥学习了内核的编译,从重新编译内核的目的来看,就是根据自己的硬件设备参照自己的实际需要来编译内核,根据情况是把某些功能模块直接编译进内核,还是做成模块,来定制自己功能和内核大小可以兼得的内核。下面来看一下内核的编译主要步骤。



内核编译的原则:1.编译时需要一个新版本,漏洞少一点

               2.尽可能选择和自己硬件对应的驱动模块,兼容性好
              3.服务器一般不用过新的内核,因为它没有发现一些bug,有可能不稳定
 
首先检查编译环境  
     yum groupinstall “Development Libraries”
 和  yum groupinstall  “Developmnet Tools ”
 同时确保ncurses-devel 也以安装在您的电脑上。
 

下载新版内核 tar xf linux-2.6.28.10   -C /usr/src    //解压下载的内核到/usr/src 大约有几百M 解压比较慢
cd /usr/src
给linux-2.6.28.10  创建一个软连接
ln -sv linux-2.6.28.10    linux
cd linux
cp /boot/config-2.6.18-164.e15 ./.config //复制boot下的内核文件, 因为第一次编译内核,对其中的各个功能选项不够了解,所以第一次内核编译应该以 redhat提供的版本的基础上进行配置,在保证了内核能正常运行的基础上定制自己的 内核。 执行make menuconfig 进去编译配置界面 如果是利用终端连接的linux , 请注意终端界面要足够 大,界面不要太小,否则 编译配置界面无法显示
 

*号表示编译进内核,  M表示编译成模块,按空格键选择
,回车键进入选择分支,我们已经使用了.config文件,所以可以直接编译,你可以选择自己想要的功能。选择完成后 结果将保存在.config中



make

  命令编译内核       此过程大概需要几十分钟到一个多小时的时间,最好不要在终端内进行,任何断开连接  都会造成编译失败,一切工作将前功尽弃,所以大家最好在linux系统界面内进行 如果断开了连接或  者编译出现错误,必须重新进行编译,执行 make   mkproper  将保持干净的源代码,不过这个操作  也将以前进行的内核编译功能选择文件也删除掉,所以只有第一次内核编译时才进行这个操作,所  以可以使用make clean 不过最好吧.config文件先进行备份在执行make clean。

  (扩展一点知识 如果在终端中执行make 此时可以执行screen 命令 此命令可以将make在后台运行,即使终端断开连接,也不会影响make的执行  screen -ls 可以显示打开了几个screen  然后可以执行screen -r screenID 连接 ;
  make O=/path/to/somewhere  可以把编译的结果保存在另一个目录中;
  make -j 2(cpu 的倍数) 如果您有多块cpu 可以实现并行编译,加快编译速度;
  make ARCH =x86_64 实现交叉编译,将编译好的结果直接运行在x86_64平台;
  make M=drivers/net  可以特定编译某个目录 ,此处只编译net目录中的模块;
  make drivers/net/pcnet32 只编译一个模块,此处只编译pcnet32设备模块;)


make modules_install

编译结束后就可以安装模块 



make  install  这一步会将内核信息写入到你的grub里,在/boot目录下的grup.conf 里我们将可以看到我们新编译的内核信息,
 

在/boot目录下也可以看到内核文件,
 

但是一旦内核出错会在启动时显示kernel panic!内核恐慌,可能是选择的模块没有对应的依赖关系,只能重新编译。
编译成功

出现www的原因是在执行make mnueconfig时添加的,这就是自己编译内核的效果,此时启动linux 就使用了新编译的内核

全国客服电话: 400-001-7880
值班技术:
13330159245

                       

扫一扫,咨询客服