linux 定制内核,定制Linux内核 发挥Linux潜能_C Hilbert的博客-程序员宅基地

技术标签: linux 定制内核  

众多的Linux用户在经历了对Linux由好奇到熟悉的过程之后,是否希望按照自己机器的实际配置对Linux进行定制,从而获得最佳的系统性能呢?也许有用户会认为在自己使用Linux的过程中没有碰到到任何问题,Linux确实象人们所宣传的那样“永远不会崩溃”,因此完全没有必要冒着风险对系统内核进行的改动。其实,对Linux系统内核进行定制和修改并不向很多人想象中的那么复杂。如果用户能够根据自己的实际情况对Linux系统内核进行合理的修改,可以有效的简化Linux内核,去除不需要的组件,从而提供更快的系统启动速度,释放更多的内存资源。

下面我们对Linux系统内核做一下简单介绍。

所谓系统内核实际上是系统设计人员编写的控制系统的各个组件,在不同程序之间分配系统资源,同时协调系统与硬件和外设之间数据传递的系统核心程序代码。与Windows系统的内核不同,Linux系统的内核是可配置的,用户可以根据自己的实际需要,在对系统内核进行定制。例如,用户可以针对自己机器 CPU的具体型号对系统内核进行优化。

尽管不同厂商在推出其各自的Linux产品之前,都已经针对某些具体的硬件设备或网络协议对系统内核进行了设置,但是用户还是可以针对自己所实际使用的机器对Linux系统内核进行进一步的修改,从而将Linux系统的性能提升到新的高度。 本文将主要结合目前较为流行同时也是较为成熟的Red Hat Linux版本对系统内核的定制进行详细的介绍。使用其它厂商推出的Linux产品的用户也可以参照本文的介绍,对Linux内核进行定制。

准备工作

尽管重新编译Linux系统内核的操作大多数可以自动完成而且也并不复杂,但是一旦出现错误,将可能导致Linux系统无法正常启动。因此,为了预先防范可能出现的任何问题,用户一定要在对Linux系统内核进行任何的改动之前,制作一张Linux系统启动盘(注:用户在安装Linux系统的过程中可能已经被要求制作了系统启动盘,如果用户没有现成的系统启动盘,可以按照本文随后的介绍重新制作一张),同时还应当将一些重要的数据进行及时的备份。下面,我们就来看一下如何实现Linux系统内核的定制。

用户需要以管理员root帐号登录Linux系统。因为本文的所有命令都是通过命令方式实现,所以用户最好选择以命令方式登录。如果用户机器上的Linux系统默认登录到图形方式的话,可以使用图形环境下的终端命令窗口(单击GNOME桌面任务条中以计算机图案显示的按钮)。

制作启动盘

一般在Linux系统的安装过程中,安装程序都会要求用户制作一张Linux系统启动盘,这样当Linux系统出现严重错误而无法正常启动时,用户就可以使用启动盘重新启动Linux系统。如果用户没有任何现成的启动盘,可以按照如下所述方法自己动手制作。

假设用户使用的是Red Hat 推出的Linux产品,首先在命令模式或命令终端窗口下输入“more /etc/lilo.conf”命令,然后回车。该命令将会分屏显示Linux加载程序,即Linux Loader(简称LILO)的配置文件。用户在文件中找到如下条目“image=/boot/vmlinuz-2.2.12-20”。该项指出的路径正是用户每次启动Linux系统时首先被装载的Linux系统内核的位置。其中“vmlinuz-”项后的数字代表用户目前所使用的Linux系统内核的版本,实际显示值视用户的具体情况可能会有所不同。记下该数字之后,输入“q”返回到命令方式。

随后用户输入 “mkbootdisk –verbose –device /dev/fd0 2.212-20 ”命令,其中的Linux系统内核版本号以用户的实际版本数字为准。回车之后,Linux将会要求用户插入一张软盘,然后自动为我们制作一张系统启动盘。设置系统内核

现在,我们开始对Linux系统内核进行定制。首先,用户输入命令“cd /usr/src/linux”,将当前的工作目录转换到/usr/src/linux。

Linux系统为用户提供了两种系统内核的设置接口,分别为menuconfig和xconfig。其中,用户可以在任何命令方式下通过输入命令 “make menuconfig”启动menuconfig,然后使用方向键和Tab键进行选择和修改。对于xconfig,用户只能在X Windows下通过命令“make xconfig”启动。xconfig提供了更加友好的用户界面,用户可以通过鼠标点击选择选择各项菜单和按钮。本文将主要介绍xconfig使用方法,用户可以通过使用menuconfig实现同样的功能。

用户输入命令“make xconfig”按回车,在一连串文字飞快显示之后,将会弹出xconfig的主窗口。该窗口包含许多按钮选项,点击其中任意一项会弹出对Linux系统内核进行具体设置的设置窗口。例如,用户点击xconfig窗口中的第二项“Processor type and features“之后,就可以在相应的弹出窗口中对用户自己机器处理器进行设置。

在每一个设置窗口中,用户可以通过选择 “Y”或“N”选项启动或关闭任意功能。此外,用户还可以选择“M”选项,把某些功能作为模块进行编辑。所谓模块并不是系统内核的组成部件,但是在需要时系统内核会连接指定的模块从而共同提供特定的功能。在默认情况下,设置窗口中的许多功能都是作为不同的模块被编辑的。

如果用户在具体的设置过程中对某一个具体功能的设置不清楚的话,可以点击该功能选项的帮助按钮,启动相应的帮助文本。帮助文本能够提供所有功能选项的详细说明。如果用户发现自己可能选择了错误的选项而希望恢复以前的设置的话,可以选择直接返回主窗口而不保存任何所做的改动。用户在完成了所有需要改动的设置之后,可以点击xconfig主窗口的“Save and Exit“,保存用户设置并退出xconfig。

编辑系统内核

用户在按照个人的实际需要完成对系统内核的设置之后,需要对新的系统内核进行编译。

用户在关闭所有打开的程序之后,在命令方式下输入“make bzImage”命令。该命令会自动完成对新系统内核的编辑,大约需要10到30分钟,具体时间取决于用户机器的性能。

编译完系统内核之后,返回到命令方式。这时如果出现报错信息,则表示用户对系统内核进行了错误的设置,例如没有启动某一个功能所必须的其它附加功能等。这时用户所能做的只能是从头开始,从新设置系统内核。

在顺利编译完新的系统内核之后,用户还需要对配置系统内核过程中设定的各种功能模块进行编译和安装。具体为:输入“make modules”命令,然后按回车。该命令将会完成对内核模块的编译。完成编译之后,输入“make modules_install”命令,该命令会自动安装已编译模块。

收尾工作

在完成了对新系统内核以及模块的编译之后,我们需要把新的系统内核复制到Linux的启动目录中。用户可以输入以下命令“cp arch/i386/boot/bzImage /boot/vmlinuz-mykernel”。此外,我们还需要对LILO进行相应的修改,以便使LILO在系统启动时能够找到新的系统内核。我们可以使用任何一种Linux系统下的文本编辑工具对LILO配置文件进行修改。这里我们使用pico文本编辑器。输入“pico /etc/lilo.conf”命令,启动pico编辑器,并载入LILO配置文件。找到“image=“项,用“/boot/vmlinuz- mykernel”替代该项的现有值。建议用户记下“image=“项的当前值,这样如果出现任何问题,就可以方便的恢复到安全设置。完成修改之后,按 Ctrl-X,选择“Y”然后回车,保存设置并退出pico编辑器。这样,我们已经完成了定制Linux系统内核的所有工作。重新启动机器再次进入Linux系统之后,用户将会感受到新的系统内核所带来的新的体验。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_29746595/article/details/116645747

智能推荐

Spring Boot - XMLHttpRequest Upload(上传文件,非前后端分离)_好惨的光头强的博客-程序员宅基地

目录项目参考项目新建 Spring Starter Project,编辑 pom.xml 文件,引入依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-...

唤醒手腕Python全栈工程师学习笔记(并发编程篇)_唤醒手腕的博客-程序员宅基地

01、进程的基本介绍进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础,进程是线程的容器。什么是进程?进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令(比如错误信息

前端学习路线,想问问同志们学后端一定要数学好吗_定稳局大的博客-程序员宅基地

推荐一个学习前端良心网站www.axihe.com图是蹭培训课截的图前端的兄弟姐妹们我来了没了

插入排序(c语言版)_低调小一的博客-程序员宅基地

前言插入排序(insertion sort)的基本思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排序好的序列中,直到全部记录插入完成为止.直接插入排序基本思想假设待排序的记录存放在数组R[1..n]中。初始时,R[1]自成1个有序区,无序区为R[2..n].从i = 2起直到i = n 为止,依次将R[i]插入当前的有序区R[1..i - 1]中,生成含n个记录

JPA API_董唐强的博客-程序员宅基地

  Persistence  persistence类是用于获取 EntityManagerFactory 实例。该类包含一个名为 createEntityManagerFactory 的 静态方法 。 createEntityManagerFactory 方法有如下两个重载版本。 ——带有一个参数的方法以 JPA 配置文件 persistence.xml 中的...

kubernetes之kube-proxy源码分析_qinzhao168的博客-程序员宅基地

本代码分析基于kubernetes v1.5.0 功能描述 kube-proxy应该是k8s所有服务里面最简单的服务,它的功能很单一,主要用来管理service,包括service的负载均衡。每个service都有一个cluster ip,service依靠selector label,对应后台的Pod,这个工作主要有kube-controller-manager的endpoint-contro

随便推点

《CS:APP》 chapter 1 A Tour of Computer Systems 笔记_JasonLeaster的博客-程序员宅基地

A Tour of Computer Systems          If you dedicate yourself to learning the concepts in this book, then you will be on your way to becoming a rare “power pro-grammer” 就冲这句话,就已经很“霸气”了。

mysql model创建库_Entity Framework连接Mysql数据库并生成Model和DAL层_长亭科技的博客-程序员宅基地

Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架。相比于LINQ TO SQL,EF框架具有很明显的优势:EF框架支持多种数据库,而不仅仅局限于微软的SQL Server,MySQL,Oracle都有良好的支持。支持存储过程。强大的可视化模型设计工具,与Visual Studio深度整合。与.NET平台的其他技术整...

一文讲懂什么是 vlan、三层交换机、网关、DNS、子网掩码、MAC地址_计算机与软件考研的博客-程序员宅基地

来自:有为网络服务很多朋友多次问到什么是网关、dns、子网掩码,三层交换机,它们定位的用途;确实,因为网络技术在弱电中确实应用非常广泛,我们平时在vip技术群中也是不断的讨论到网关、vl...

php ereg函数,PHP: ereg - Manual_weixin_39992665的博客-程序员宅基地

Here's a function i've created to return an array of each substring searched in a string.function Return_Substrings($text, $sopener, $scloser){$result = array();$noresult = substr_count($text, $sopene...

java接口接收图片的方式_通过java调用Http接口上传图片到服务器_weixin_39883374的博客-程序员宅基地

textMap,MapfileMap,String contentType) {String res = "";HttpURLConnection conn = null;// boundary就是request头和上传文件内容的分隔符String BOUNDARY = "---------------------------123821742118716";try {URL url = new ...

android主流技术框架,android开发现在流行什么IDE和开发框架?_weixin_39928461的博客-程序员宅基地

慕仙森idea, AS (android studio), adt, 其中 AS 是google 非常推荐的.看官网就知道了. 框架的话: xutils , andbase , volley等等,还有比较流行的UI界面效果,个性化控件等等.  关于 IDE 的优劣势. 个人认为:各有各的好处.  对于以前 Java 的开发人员来说(我就是的,嘿嘿) , 就目前来说,还是比较喜欢 adt 的,因为 ...