linux内核编译步骤

对于linux新手来说,编译内核相对有一些难度,甚至不知道如何入手,我通过在网上收集这方面的资料,最终编译成功.现在我归纳了一下,写出这一篇还算比较详细的步骤,希望能对各位新手有一些

帮助。

1、  准备工作

(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。

(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。

(3) A:下载并解压linux内核,建议从http://www.kernel.org/pub/linux/kernel/ 下载内核,因为安装系统时所安装的源代码默认情况下支持很多设备,这样给内核裁减增加了难度。以下假设你已经下载了内核的为linux-x-y-z.tar.gz。一般都将linux内核源代码放在/usr/src下,这里仍然遵守这个习惯,如果你的这个路径下已经存在这个版本的内核,建议将已有的改个名称。

B:如果内核已经安装(/usr/src/目录有linux子目录),跳过。如果没有安装,在光驱中放入linux安装光盘,找到kernel-source-2.xx.xx.rpm文件(xx代表数字,表示内核的版本号), 比如RedHat linux的RPMS目录是/RedHat/RPMS/目录,然后使用命令rpm -ivh kernel-source-2.xx.xx.rpm安装内核

2、清除从前编译内核时残留的.o 文件和不必要的关联

cd /usr/src/linux

make mrproper

确保源代码目录下没有不正确的.o文件和文件依赖关系,执行该命令后,内核选项会回到默认的状态下。如果你是下载的内核源码,而且是第一次编译,就没有必要执行这一步操作

3、配置内核,修改相关参数,请参考其他资料

在图形界面下,make xconfig;字符界面下,make menuconfig

在内核配置菜单中正确设置个内核选项,保存退出

4、正确设置关联文件

make dep

根据上一步所选择的选项,建立文件的依赖关系。

5、make clean

清理一些不必要的文件,如果你在上次编译的基础上,删去了一些选项,建议你执行这一步操作,否则,就没有必要了。

6、编译内核

对于大内核(比如需要SCSI支持),make bzImage

对于小内核,make zImage

7、编译模块

make modules

编译可加载模块(即内核选项中选择为M的选项),编译时间跟M选项的数量有关。

8、安装模块

make modules_install

即将编译好的modules拷贝到/lib/modules下,这就是为什么在“准备工作”的第三步提醒你备份的原因了。

9、使用新内核

方法一:

(1)更换内核:A、mv /usr/src/linuxX.X.X/system.map    /boot/system.map

B、mv /usr/src/linuxX.X.X/arch/i386/boot/bzImage   /boot/vmlinuz

(2)然后修改/etc/lilo.conf文件,加一个启动选项,使用新内核bzImage/zImage启动。格式如下:

boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

timeout=50

linear

default=linux-new    ### 告诉lilo缺省使用新内核启动linux ###

append="mem=256M"

p_w_picpath=/boot/vmlinuz-2.2.14-5.0

label=linux

read-only

root=/dev/hda5

p_w_picpath=/boot/bzImage(zImage)

label=linux-new

read-only

root=/dev/hda5

保留旧有的启动选项可以保证新内核不能引导的情况,还可以进入linux进行其他操作。

保存退出后,不要忘记了最重要的一步,运行/sbin/lilo,使修改生效

方法二:使用GRUB(修改grub.conf文件)

(1)更换内核:A、mv /usr/src/linuxX.X.X/system.map    /boot/system.map

B、mv /usr/src/linuxX.X.X/arch/i386/boot/bzImage   /boot/vmlinuz

(2)修改引导管理程序Grub,/etc/grub.conf

内容如下:

#boot =/dev/had

default =0

timeout =10

splashp_w_picpath =(hd0, 0)/grub/splash.xpm.gz

title Red Hat Linux(2.4.20-8)

root(hd0, 0)

kernel /vmlinuz -2.4.20-8  ro root =LABEL =/

initrd /initrd-2.4.20-8.img

方法三:修改启动配置文件

现在大多数使用的都是grub启动,需要修改/boot/grub/grub.conf,添加相应的启动信息,添加内容的最简单格式如下:

title 显示在启动菜单上的名称

root 根文件系统挂载分区

kernel 压缩过的内核文件名

initrd 根文件系统文件名

如:

title My new kernel

root (hd0,2)

kernel /boot/vmlinuz-x.y.z

initrd /boot/initrd-x.y.z.img

10、重新生成ram磁盘

如果您的系统中的/etc/lilo.conf没有使用了ram磁盘选项initrd,略过

如果您的系统中的/etc/lilo.conf使用了ram磁盘选项initrd,

使用mkinitrd initrd-内核版本号 内核版本号命令重新生成ram磁盘文件,例如我的Redhat 6.2:

mkinitrd initrd-2.2.14-5.0 2.2.14-5.0

之后把/etc/lilo.conf中的initrd指向新生成的initrd-2.2.14-5.0文件:

initrd=/boot/initrd-2.2.14-5.0

ram磁盘能使系统性能尽可能的优化,具体参考/usr/src/linux/Documents/initrd.txt文件

11、重新启动,OK!

查看linux内核的编译时间,linux内核编译步骤相关推荐

  1. linux各版本的发布时间,linux服务器-红帽企业Linux各个版本发布时间和内核版本...

    Red Hat Enterprise Linux 7 发布/更新 GA版本 发布堪误时间 内核版本 RHEL 7 Update 2 TBA TBA TBA RHEL 7 Update 1 2015-0 ...

  2. linux系统怎么看时间,linux系统如何查看当前时间

    Linux ls命令详解Linux中ls命令用于显示指定工作目录下之内容,其内容就是指定的工作目录所含之文件及子目录,该命令的用法为"ls [参数] [目录名]",其常用参数有&a ...

  3. linux touch更新文件时间,Linux文件时间的查看和修改touch

    1. Linux文件的时间 Linux下文件时间主要有下面三种: 1.1 modification time(mtime) 文件修改时间,即文件内容的修改时,更新这个时间,不包括文件权限和属性的修改. ...

  4. linux 禁止文件修改时间,linux 修改文件的时间属性

    二.修改文件时间 创建文件我们可以通过touch来创建.同样,我们也可以使用touch来修改文件时间.touch的相关参数如下: -a : 仅修改access time. -c : 仅修改时间,而不建 ...

  5. linux 4.6发布时间,Linux Kernel 4.6的第4个维护版本发布

    Linux Kernel 4.6的第4个维护版本发布 2016年07月12日 16:37作者:cnBeta编辑:李佳辉 分享 今天,极富名望的Linux Kernel开发者葛雷格·克罗哈曼(Greg ...

  6. linux双系统切换时间,linux与windows双系统下时间不一致的解决办法

    装完win7和Linux双系统后,进入Linux后再进入Windows,你会惊奇的发现时间不对了,差了有8个小时. 导致这样的原因是Winows和 Linux 对硬件时间的处理方法不同,Windows ...

  7. linux修改硬件系统时间,Linux修改日期、时间,系统与硬件时间

    Linux的时间分为两种,硬件时间和系统时间两种: 一.查看与修改系统时间 查看系统时间:date # date Fri Nov 26 15:20:18 CST 1999 用指定的格式显示系统时间:  ...

  8. linux系统无法设置时间,linux设置系统时间

    设置系统时间 -         date命令:显示系统的时间,可以在直接输入"date"命令来查看系统的时间 -           date+%y/%m/%d -        ...

  9. linux循环显示系统时间,Linux shell时间处理大全,值得收藏

    本文汇总了Linux shell中各种时间处理方法,包括时间显示.时间转换.时间设置等等,内含大量示例及输出, 这里记录下来作为备忘,持续更新,禁止转载.内容比较多,可以直接CTRL+F查找. 1. ...

最新文章

  1. (0016)iOS 开发之Mac上Navicat Premium 创建远程连接和本地连接
  2. Django笔记(一)
  3. Javascript 调用XML制作连动下拉框
  4. step1 . day2:Linux系统基础知识
  5. CSS 实现加载动画之五-光盘旋转
  6. Vim 命令记录与回放
  7. 如何解决Mac上安装Axure首次打开报错的问题?
  8. CUTE FTP 控制连接已关闭
  9. edp协议 netty_EdpProtoDebugger-EdpProtoDebugger(EDP协议调试分析工具)下载 v2.0官方版--pc6下载站...
  10. Windows Phone开发之 WebClient 讲解
  11. dematel matlab,决策与实验室方法,DEMATEL分析方法介绍
  12. 手机怎么将视频制作成GIF?手机端动态图片制作的方法
  13. 解决“虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本”的问题。
  14. 初步了解FPGA中的HLS
  15. 器件选型电源篇-DC/DC器件选型
  16. cdr 表格自动填充文字_极速office中表格的七个最常用技巧
  17. java 流计算_Java 流收集器 ( Stream Collectors ) ( 一 ) - 统计计算
  18. bug解决 2021-09-20 build之后出现shader消失的原因之一
  19. C/C++找工作这点事
  20. Spring Security # ACLs

热门文章

  1. MySQL 日期时间类型精确到毫秒
  2. POJ - 3159 Candies最大差异
  3. Callable接口的使用
  4. 分享给大家几段有趣的代码,学会python画画可以不用自己动手啦
  5. day03_python基础
  6. 【服务器】window 服务器端 iis 安装
  7. 向來情深,奈何緣淺,卻不悔相思。
  8. 第三方支付 : 概述、起源 | PayPal 和支付宝 的诞生的故事
  9. BeanCopier 复制对象
  10. 【日常代码记录】如何实现一个beancopier的工具类?