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 基本设计概 阅读详情
要来裁减Linux,首先要明白两个问题:
1、Linux是如何启动的?
2、Linux由是如何组成的?(如果不知其组成,何来裁减)

这篇文章,并不打算重复别人的话,只是谈一些个人的经验总结:
1、需要一个引导程序,也叫bootloader,一般有lilo,grub等,嵌入式系统上常用有uboot,redboot等;
2、需要一个内核,也就是常说的Linux,它只是一个程序;
3、初始化程序init,当内核把自己初始化完成,会来调用这个初始程序init,它会按照人为的配置去启动一大堆的脚本;

在裁减之前,可以先在硬盘上装一个lilo,然后编译一个内核(直接默认编译就是,没有必要先就去裁减),放上去,试试新的lilo能不能引导自己的内核,如果能够,应该可以看到一大堆的初始化信息,最后内核会报怨,"报不到init",当然了,因为还没有呢!!!
当然要完成这一步工作,基础知识要求:
1、了解lilo(或者是grub),你得学会在一个硬盘上分区,格式化,然后把引导程序安装上来;
2、了解内核的编译,事实上,这个是最简单的工作了。

完成了这两步,就可以认真地去研究一下内核的裁减和编译了,多失败几次,就熟练了!!

一般地认为,一套完整的Linux,不仅仅是内核本身,它还包含了一套根文件系统,也就是/目录下/root,/etc/,/lib……,虽然你可以随意地新建文件夹,DIY自己的根文件系统,由于历史的沉淀,最好还是遵守它的标准。

根文件夹中有什么东东?
当然在一个发行版上运行ls命令,就足以回答这个命令了,不过总的来讲,大体有六类东东:
1、应用程序,系统的,网络的……
2、应用程序所需要的配置文件;
3、应用程序所需要的动态库,*.so;
4、系统的启动/管理脚本;
5、日志文件;
6、临时文件;
后面两个并不需要自己手工来做。

首先就是应用程序,包括前面所说的init程序,还有其它所有你想要的程序,都可在放进去,每种程序,放在哪个目录,/bin?/sbin?/usr/bin?/usr/sbin?……令人困惑的相似性,读标准是痛苦的,所以,在理解它之前,一个简单的方法是参照发行版的作法。Redhat放在哪儿,我就跟着放在哪儿……
这一步要做的工作,就比较多了,需要把需要的程序,一个个地找到源代码,一个个地编译好,然后安装到自己新建的根文件系统的对应目录当中。
当然,如果都是X86平台,事实上,一个懒办法是把发行版中现成的程序直接拷贝到我自己的文件夹中对应的目录。
有很多常用的程序,它们比较占空间,所以,常常使用busybox代替。

程序要正常运行,还有一个麻烦事是它们一般需要动态库,*.so,一般在/lib或/usr/lib中,程序运行时需要调用它们,对于初次裁减,可以参考别人做好的系统,看看别人这些文件夹下有哪些库,自己也拷这些……ldd命令可以帮助你进一步了解你自己的程序,还需要哪些库文件。Copy
it!

当然,根文件系统中,程序并不是全部,我们说过了,需要启动脚本,另外,程序要运行,可能还需要一些相应的配置文件,习惯了Win32的图形配置的人,对程序的配置文件深恶痛绝,不过没有办法,还是得自己建立它们,一般来说,这些配置文件,在应用程序的源码目录中,都有样本参考,一个简单的办法,就是直接拷贝发行版的。

启动脚本稍微麻烦一点,从理论上来讲,把某个发行版的启动脚本全部拷贝来让自己用也是可行的,但是如果你真的这样做,会发行,它中间涉及到很多东西,最后会把自己的系统搞得很复杂——而我只是想要个简单的Linux。

所以,我的建议是,通读某个发行版的启动脚本,然后自己写一套,这是比较有意思的工作,事实上,我也这样做了,不过我相信会有很多的bug的,网上有很多制作现成的mini
linux,可以直接把它们的脚本拷贝过来……

综上所述:
1、学会在新的存储界质(如硬盘,或者是软盘,优盘,CF卡,光盘我没有试过,一直想试一下)上,分区,格式化,安装 bootloader,并配置它;
2、学会编译一个内核,并到格式化好的存储界质上;
3、建立一套自己的根文件系统,把自己需要的程序全部编译(或者是直接拷贝别个编译好的)/安装至自己对应的文件夹中;
4、为一些必要的程序,建立配置文件;
5、把程序运行时需要的动态库拷贝至相应文件夹,常用的库,可以参考别人做好的,不常用的,用ldd看看你的程序先;
6、为整个系统编译(或者是拷贝别人的)一套启动/管理脚本;

就这些工作了……

嵌入式系统要稍微麻烦一点,这是因为:
1、内核的裁减上,要求精而稳定,必须得对自己的需求,有一个全面的认识;
2、编译程序的工作,不能再使用X86的了,必须得为某一个平台编译专门的编译工具和库;
3、每一个程序,需要自己交叉编译;——也就是用自己第2步做的专门平台的编译器,重新编译应用程序;

 
教你如何去裁减Linux 说到裁减Linux,无非是为了减小磁盘占用或者是为了某些特定场合的应用(如嵌入式系统)。以RedHat 7.3为例,其最小安装仍然达到了300M,这不得不让人对一直号称小而全的Linux系统感到疑惑。 立即下载

相关推荐

经典Linux系统裁剪指南

详细描述了Linux系统架构,各部分组成,按照教程可以裁剪出最小Linux系统

Linux 系统裁剪--制作一个最小化的Linux iso镜像

1.前言 一直以来都想制作一个最小化的Linux系统,这个小系统需要有常用的Linux 命令,以及定制化的某些功能。可是由于种种原因一直没能实现,最近终于有时间把它做了出来。 本文所说的精简的Linux系统主要由内核,busybox,以及引导程序构成。 感谢网友[windy_ll](https://blog.youkuaiyun.com/qq_41374107)的文章,我是看着他的教程一步一步完成以下操作的。 2.安装配置内核所需要的依赖 我的环境是ubuntu20.04,初装的系统,软件源已配置为阿里的源。 为了保

alfiy的专栏 1万+

用WorkBuddy和ima搭建本地知识库:从概念到实操

在AI应用普及的今天,私有知识的高效管理与调用成为痛点。RAG(检索增强生成)技术通过将外部知识库与语言模型耦合,为精准问答提供了技术底座。然而,传统RAG方案往往涉及向量数据库、文本切分等复杂环节。一种更轻量的路径应运而生:借助WorkBuddy与ima的组合,将知识收集、语义检索与智能体工作流整合,让本地知识库真正服务于日常办公和研发场景。从概念到实操,系统解析这套轻量级方案的核心逻辑与配置方法,并对比重方案适用边界,帮助读者快速搭建属于自己的AI知识助手。

weixin_32830601的博客 424

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

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

sun13047140038的博客 4657

QMI8658姿态传感器实战:从校准到自检的完整避坑指南

本文详细解析了QMI8658姿态传感器的校准与自检流程,提供了从硬件环境搭建到高级功能开发的完整避坑指南。通过真实案例揭示电源设计、接口优化、温度补偿等关键细节,帮助开发者提升传感器精度和可靠性,适用于工业级应用场景。

weixin_29184075的博客 456

桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...

1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...

weixin_39525355的博客 1878

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

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

weixin_35476730的博客 504

基于 Quest 摄像头数据开发的原理介绍【Unity Meta Quest MR 开发教程】

比如想在识别到的现实物体上叠加虚拟物体,需要知道这个现实物体在 Unity 的世界坐标下的哪个位置,是带有 x,y,z 三个轴的数据的。而 WebCamTexture 捕捉到的图像只是个 2D 的平面,没有三维世界的深度信息,我们通过物体识别算法识别到的物体坐标只是在这个 2D 平面上的一个屏幕坐标,可以理解为 Quest 拍摄了一张照片,我们识别到这张照片上的某个像素点为需要识别的现实物体的中心。是不是看起来比较复杂?Quest 的相机访问功能是在安卓的。

qq_46044366的博客 2105

Linux系统启动流程及系统裁剪

Linux系统启动流程,Linux系统裁剪

kingolie的博客 1万+

基于ESP32的室内空气质量检测系统开发

随着环境污染问题的日益严重,室内空气质量的监测变得越来越重要。室内空气质量的好坏直接影响到人们的健康,尤其是对于在封闭空间长时间待着的人群。为此,基于ESP32的室内空气质量检测系统应运而生。ESP32作为一款集成了Wi-Fi和蓝牙的高性能微控制器,为嵌入式开发提供了良好的平台,适用于构建各种智能硬件设备。本博客将详细介绍如何基于ESP32开发一个室内空气质量检测系统。系统可以实时监测空气中的温度、湿度、二氧化碳浓度、甲醛浓度等指标,并通过Wi-Fi将数据传输到云端或移动设备,方便用户随时查看空气质量情况。

2201_76125393的博客 832

基于Spring Boot + Vue 3构建高并发华为数码商城交易平台:全栈架构设计与实现

内容将涵盖系统架构、数据库设计、核心模块开发(用户、商品、订单、购物车)、安全认证、性能优化以及前后端分离部署等关键环节,并提供详尽的代码示例,旨在为开发者提供一个可落地的企业级项目实战指南。<el-button text class="button" @click.stop="addToCart(product)">加入购物车</el-button>.antMatchers("/api/user/login", "/api/user/register").permitAll() // 公开接口。

2201_76125393的博客 306

【Linux】内核裁剪,如何删除未编译到的C源文件和头文件?

1. 最上边行是当前内核的版本信息和编译的时间(没有红色箭头)2.第一个箭头是内核6.14.0版本内核源代码基于笔记本部分使用功能,裁剪后除去内核非使用源代码后C源代码和C头文件数量:9252个(如下图所示,再除去编译中间生成的*.mod.c),(第三个箭头是未做任何裁剪时C和H文件的总数:60480个),裁剪后C源代码和头文件数量仅为默认的15.3%。

850

dToF直方图之美_deadtime死区时间

IMX459的死区时间可以在6ns,这个时间是什么级别,车载激光雷达激光器的光脉宽一般都在4ns以上,也就是这个时间贴近去SPAD的死区时间,这就导致了pile up会非常弱,不会有太多数量的光子计数堆积,加上某些SPAD设计,对TDC有一些更深入的考量,所以不需要去校正pile up算法。Sensor层面决定了pile up的复杂程度,如果一个dToF的SPAD一致性非常好,那么pile up校正可以简单到极致,也就是一句代码的事,比如IMX611,优秀到不需要后端去考虑校正pile up。

致力于lidar应用开发 2151

Linux 系统裁减指南

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

8036

【代码审计】专栏文章汇总

代码审计基础 代码审计基础 源代码审计思路(上) 源代码审计思路(下) 常见漏洞审计 认证会话管理(上) 认证会话管理(下) 输入输出验证 授权管理审计 业务安全审计 第三方组件审计

武天旭的博客 4846

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

嵌入式应用Linux裁减的初次尝试

  前段时间因为嵌入式应用开发的需要,对Linux进行了一次大幅度的裁减。由于是初次接触Linux启动的核心部分,所以基本上还是对网上各种裁减方案的拼凑和整理,包含自己理解的部分实在很少。总的来说效果不算理想,后面还有很长的路要走。  这里就大致说说目前这个Linux裁减方案的“雏形”吧。  1. 内核裁减对Linux内核部分的裁减主要根据实际需求进行了重编译,去掉了大部分用不上的

流氓兔子的嵌入式生活 1344

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Linux 系统裁减二

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

linux 编程 105

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

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

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

linux系统裁减精华篇

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

weixin_34208185的博客 197

linux裁减与移植

Linux 系统裁减指南(LiPS)[本篇全文] [回复本文] [本篇作者: dot ]发信人: dot (爱吃萝卜和青菜), 信区: Embedded标 题: Linux 系统裁减指南(LiPS)发信站: 武汉白云黄鹤站 (2004年10月11日15:04:22 星期一), 站内信件重要文档,吐血推荐!《Linux 系统裁减指南 (LiPS)》 【原创】(LiPS: Linux Powered

1120

Linux裁减指南

Linux 系统裁减指南(LiPS)[本篇全文] [回复本文] [本篇作者: dot ]发信人: dot (爱吃萝卜和青菜), 信区: Embedded标 题: Linux 系统裁减指南(LiPS)发信站: 武汉白云黄鹤站 (2004年10月11日15:04:22 星期一), 站内信件重要文档,吐血推荐!《Linux 系统裁减指南 (LiPS)》 【原创】(LiPS: Linux Powered

598

裁减 Linux 嵌入式系统:方法与实例

原PDF: 《縮減 Linux嵌入式系統軟體: 方法與實例 》作者:梁元彪 林盈达 刘建文整理(http://blog.youkuaiyun.com/keminlau )KEY:嵌入式操作系统 裁减 linux embedded 国立交通大学资讯科学系 300 新竹市大学路 1001 号 Tel: 03-5712121 ext. 56667 Fax:

刘毅枫的博客 1007

裁减 Linux 嵌入式系统:方法与实例 (rev#2)

裁减 Linux 嵌入式系统:方法与实例(rev#2)原PDF:《縮減 Linux嵌入式系統軟體: 方法與實例 》作者:梁元彪 林盈达 刘建文整理(http://blog.youkuaiyun.com/keminlau) KEY:嵌入式操作系统 裁减 linux embedded 国立交通大学资讯科学系 300 新竹市大学路 1001 号 Tel: 03-571212

Kemin | 本博客独立到nakeman.cn 3890
上一篇: 简单实现强大的加密功能——CryptoAPI
下一篇: Linux裁减内核
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值