Linux内核裁减及根文件系统定制(一)

Linux 系统裁减指南1 一种创建小型化Linux系统的方法http://blog.youkuaiyun.com/tianhappy/archive/2005/11/09/526148.aspx初稿,文档结构,USB引导盘制作步骤。目 录1 引言 61.1 编写目的 61.2 背景 61.3 定义 61.4 参考资料 62 总体描述 82.1 硬件环境 82.2 软件环境 82.3 需求规定和约束 83 总体设计 93.1 基本设计概 阅读详情

一、内核编译

1、准备工作

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

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

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

2、开始编译

(1)make mrproper

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

(2)make menuconfig

以文本菜单方式选择内核选项(与它功能相同的命令还有make config;make xconfig;make oldconfig),不同版本的内核,选项可能会有一些差异。这一步是内核编译的关键,根据需要支持的硬件、文件系统和协议等内容,选择不同的选项。配置选项时,有三种选择方式,它们代表的含义如下:

Y-将该功能编译进内核

N-不添加功能

M-将该功能编译成模块,在需要时动态加载到内核

选择的原则是与内核关心紧密而且经常使用的部分功能代码直接编译到内核中;将与内核系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选。

我们使用空格键进行选取。根据选项的不同,按下空格键的结果也有所不同:选项后有”―――>”符号的,进入下一级菜单;选项前有中括号的,则在空和"*"之间切换;选项前有尖括号的,在空、"*"和"M"之间切换;选项前有圆括号的,需要在所提供的几个选项中选择一项,或者需要输入数值等符号。咦,什么?要我详细介绍具体该怎么选择这些选项?大汗!这可是个大问题,需要根据不同的需求进行选择,比如需要支持USB键盘、鼠标或/和存储器,支持多CPU,支持网卡,串口,支持TCP协议,ext2文件系统,nfs文件系统等等。后面我将就内核选项做详细的介绍。

(3)make dep

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

(4)make clean

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

(5)make bzImage

生成内核压缩文件。如果你确认你的内核在640K以下,你可以用make zImage来代替 make bzImage。这一步相当费时,你可以在命令后加上&,让其在后台执行,或者重定向到/dev/null中,这样你就什么也看不见屏幕上闪过不停的字符啦。编译出的内核在 ./arch/i386/boot/ 下,文件名为bzImage

(6)copy "/usr/src/linux/arch/i386/boot/bzImage  /boot/vmlinuz-x.y.z

(7)make modules

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

(8)make modules_install

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

(9)cp /usr/src/linux/System.map /boot/ System-x.y.z.map

3、修改启动配置文件

现在大多数使用的都是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

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

相关推荐

解决 Clawdbot 对接 Minimax 出现 401 (Token is unusable) 的问题排查与修复

即便确认 API Key 有效且余额充足,该问题仍可能在 Clawdbot 中持续出现,而在其他工具(如 curl 或 Postman)中测试正常。

hampeter的博客 3076

linux内核裁剪的具体过程和方法

一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块,否则无法启动系统。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。如果你选"Any" ,内核先用 MMCONFIG ,然后 "Direct",最后才是"BIOS"如果前面的都无法工作。

sun13047140038的博客 4657

嵌入式设备系统日志记录及调试技巧_嵌入式日志系统(1),如何成为杰出的程序员

这里面我使用的芯片为哈弗体系,全局常量存储编译器默认分配在flash,需要注意如果使用片内flash时,注意存储调试等级的flash块不要与代码区重合,要不然修改调试等级擦除flash块同时PC指针指向当前块的代码区,会导致仪器死机;这个也是之前用的比较多的,以上代码是模仿linux 内核的写法,可以比较好的做到日志信息分层,编译时相加对应的编译开关即可。但有个弊端就是,切换debug等级时,需要重新编译且需更新固件,而嵌入式设备出现异常后更新固件往往复位后,故障有时很难复现,调试起来比较浪费时间。

2401_84240431的博客 1296

Ubuntu18.04内核编译裁剪

目录Ubuntu18.04内核编译裁剪1 准备工作1.1 下载内核源码1.2 安装依赖2 裁剪并编译内核 Ubuntu18.04内核编译裁剪 虚拟机Ubuntu18.04 1 准备工作 参考:https://www.aflyingfish.top/articles/8b2fc9bcfb88/ 1.1 下载内核源码 地址:https://www.kernel.org/,我选的是linux-5.4。 解压到任意目录。 1.2 安装依赖 sudo apt-get install gcc make libncurs

weixin_43739110的博客 2295

如何用Deep OC-SORT提升多目标跟踪精度?实战配置与性能优化指南

本文是一份针对开发者的Deep OC-SORT多目标跟踪实战指南。详细解析了如何通过部署其核心的“动态外观记忆”与“相机防抖”模块来有效应对遮挡与抖动,从而显著提升跟踪精度与连续性。内容涵盖从环境搭建、参数调优到性能压榨的全流程,并提供针对不同场景的配置建议与工程落地技巧。

f9g0h的博客 670

评分卡建模学习(一)————数据预处理part.3

目录六、数据处理的思路及代码(一)对缺失值的处理:在我这个数据预处理的part.1板块(二)对异常值的处理:在我这个数据预处理的part.2板块(三)数据归一化、标准化:在我这个数据预处理的part.2板块(四)非结构化数据转变+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++———————————————————————————————————————————++++++++++++++++++++++++++

Morven_dai的博客 898

操作系统,Ubuntu虚拟机编译裁剪内核

操作系统,编译裁剪内核 前言: 实验课要求,裁剪内核,十分痛苦,而且笔者电脑性能不好,一次裁剪就要好久,裁多了开不开机,裁少了和没裁一样,大哭,针对Ubuntu18.04,一些所得,发布于此。 步骤: 1. 查看原有的内核大小 进入modules,目录,du 你的内核名,查看大小 2. make clean 清除原有编译内容 3. make menuconfig(对于不需要的功能取消选...

qq_42549774的博客 1476

C#开发者必备:VSPD虚拟串口快速配置指南(附汉化教程)

本文为C#开发者提供了VSPD虚拟串口的快速配置与汉化教程。详细介绍了如何安装、汉化VSPD,并创建稳定的虚拟串口对,重点讲解了如何将其集成到C#开发工作流中,使用SerialPort类进行数据通信测试、协议模拟及故障排查,有效提升硬件通信开发的效率。

weixin_29224529的博客 258

如何定制linux内核,建立一个定制Linux内核

1.5. 准备建立文件这一步将对kernel.spec文件做必要的修改。只是建立定制内核所需的。1. 进入~/rpmbuild/SPECS目录:cd ~/rpmbuild/SPECS2. 用编辑器打开kernel.spec文件。3. 为内核起一个唯一的名字。这对于确保定制内核不与其他内核混淆是很重要的。通过修改‘buildid’一行,为内核名字添加一个唯一的字符串。可以把“.local”改为您的名...

weixin_34643336的博客 625

从想法到零件:手把手拆解一个汽车功能如何从PRD写到SSTS和CTS

本文详细拆解了汽车电子需求从市场文档(MRD)到零部件技术规范(CTS)的完整流程,以雨天自动关窗功能为例,展示了PRD、SSTS和CTS的编写要点与交互设计。文章重点解析了系统分解的艺术和零部件落地的精确参数要求,为汽车电子工程师提供了从概念到实现的全流程实践指南。

weixin_30300225的博客 481

4、基于抽象解释的静态分析器中的跟踪分区与ASTRÉE分析器解析

本博客探讨了基于抽象解释的静态分析器中的跟踪分区技术,并深入解析了ASTRÉE分析器的工作原理和应用。通过示例程序说明了跟踪分区如何提升分析精度,减少误报,以及ASTRÉE如何利用多种数值抽象域(如八角形域、浮点区间线性形式等)来处理复杂的嵌入式C程序。此外,还讨论了ASTRÉE的模块化设计、循环展开优化、用户断言与自动细化的局限性等内容,为保障嵌入式软件的安全性和可靠性提供了理论与实践支持。

kotlin6android的博客 117

Ubuntu操作系统内核裁减与定制

      Ubuntu操作系统内核裁减与定制 http://www.diybl.com/course/6_system/linux/linuxjq/20090307/159406.html一、内核裁减与编译1、安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。安装命令如下$sudo apt-get install build-esse

wenlifu71022的专栏 8048

[ 虚拟专用网 ] IPsce 虚拟局域网(安全的IP协议的虚拟专用网)详解(二) --- 安全联盟SA

???? 博主介绍 ????‍???? 博主介绍:大家好,我是_PowerShell,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 ????点赞➕评论➕收藏 == 养成习惯(一键三连)???? ????欢迎关注????一起学习????一起讨论⭐️一起进步????文末有彩蛋 ????作者水平有限,欢迎各位大佬指点,相互学习进步! 目录 ???? 博主介绍 一、什么是安全联盟 二、协商参数两种方式:(手动、IKE) 1. 手动 2.

qq_51577576的博客 2802

LINUX内核定制基本过程,Linux内核裁减及根文件系统定制(转)

一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,建议从http://www.kernel.org...

weixin_36361600的博客 588

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Linux内核裁减及根文件系统定制(之二)--------根文件系统定制

Linux内核裁减及根文件系统定制(之二)--------根文件系统定制二、根文件系统定制    1、 创建一个全新的根文件系统        你可以用mkinitrd来创建,这里介绍另外一种方式,用dd命令:                      # mkdir -p /mnt/initrd    创建一个设备点,用于临时挂载根文件系统。                      # cd 

4030

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Linux内核裁减及根文件系统定制

<br />根文件系统定制<br />1、 创建一个全新的根文件系统<br />你可以用mkinitrd来创建,这里介绍另外一种方式,用dd命令:<br /># mkdir -p /mnt/initrd 创建一个设备点,用于临时挂载根文件系统。<br /># cd /tmp 在tmp下创建根文件系统<br />  # dd if=/dev/zero of=/tmp/initrd bs=512 count=40960 创建一个名为initrd的根文件<br />系统,系统每个块的大小为<br />

babyfans的专栏 776

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减

Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减目录:一、内核编译二、根文件系统定制三、内核选项说明 一、内核编译1、  准备工作(1)       整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)       建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/li

4718

linux 文件系统覆盖目录,Linux内核裁减及根文件系统定制

一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,建议从http://www.kernel.org...

weixin_32746239的博客 300

linux内核封装方式,Linux内核裁减及根文件系统定制(转)

一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,建议从http://www.kernel.org...

weixin_39880328的博客 336

linux 系统裁减指南,Linux 系统裁减指南

Linux 系统裁减指南第一步:裁减内核打开终端,输入:cd /usr/src/linux2.4,然后输入make xconfig.现在编译内核正式开始了1.1 “code maturity level options”选项,代表代码的成熟等级,因为这是一个试验的部分,我们不需要,所以关闭它。1.2 “Loadable module support”可加载模块支持可加载...

weixin_35476730的博客 504

Linux 系统裁减指南

                                                                               Linux 系统裁减指南一种创建小型化Linux系统的方法拟制:董晓明日期:2003-6-17评审:日期:批准:日期:yyyy/mm/dd签发:日期:yyyy/mm/dd华中科技大学信息存储系统国家专业实验室版权所有 不得复制修 订 记 录日

8036

Linux裁减内核

(制作根文件系统部分存在问题)                                            第一步:裁减内核打开终端,输入:cd /usr/src/linux2.4,然后输入make xconfig.现在编译内核正式开始了1.1 “code maturity level options”选项,代表代码的成熟等级,因为这是一个试验的部分,我们不需要,所以关闭它。1.2 “L

886

linux根文件系统清理,Linux内核裁减及根文件系统定制(之一)--------Linux内核裁减...

目录:一、内核编译二、根文件系统定制三、内核选项说明一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。(2)建议用命令uname –r查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install步骤产生的文件会覆盖这个路径下的内容。(3)下载并解压linux内核,...

weixin_39952937的博客 144

海思3536内核裁减方法(详解)

海思3536内核的裁减主要有两个思路:通过控制内核的编译过程,让更少的代码编译进内核,以减少内核目标二进制文件的体积;通过使用更高压缩率的压缩方法,让内核镜像文件更小。 内核源代码中除了系统运行所必须的核心代码之外,还包含了各种各样的外部设备驱动、文件系统,以及一些跟某种特性相关的代码。而这些代码,在我们的业务环境中,并不都是必须的。我们将这些不必要的内容,通过配置选项进行筛选。进入内核源代码目录,打开内核配置菜单,并对菜单上的选项进行配置,配置完成后编译:............

m0_37383484的博客 1212

linux内核裁减笔记

裁内核并非想象中那么难,但是也不简单。两件事印象很深:1、编网卡驱动  网卡是用的broadcom公司的百兆以太网网卡芯片,用的开源驱动模块编出来以后叫tg3.ko,insmod一下kernel就报错了。开始一两天在网上找了很多资料,没有结果,后来仔细阅读硬件工程师发过来的硬件设计文档,发现网卡是通过PCI-E BUS接在南桥芯片上的,看看kernel呢,没有编入PCI-E。于是乎加选了P

流氓兔子的嵌入式生活 4700
上一篇: 嵌入式应用Linux裁减的初次尝试
下一篇: Linux内核裁减及根文件系统定制(二)
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值