首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 内核裁剪框架初探

一晃20多年过去了,Linux 已经有了太大的变化,内核裁剪的技术和方式也有了较大的不同。...Linux内核裁剪是为了减少目标应用中不需要的内核代码,在安全性和高性能(快速启动时间和减少内存占用)方面有着显著的好处。但是,现有的内核裁剪技术有其局限性,有没有内核裁剪的框架化方法呢?...关于内核裁剪 近年来,Linux操作系统在复杂性和规模上都在增长。然而,一个应用程序通常只需要一部分 OS 功能,众多的应用需求导致了Linux内核的膨胀。...通过在线系统,配置组合器使用基线配置和应用配置来生成目标内核配置,然后,内核构建器生成裁剪后的Linux内核. 5.3 内核裁剪框架的实现可行性 配置跟踪 内核裁剪框架的配置跟踪器在目标应用程序驱动的内核执行期间跟踪配置选项...了解了现有技术的局限性,尝试提出一个Linux内核裁剪框架,或许可以解决这些问题。

2.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    全志Tina Linux 系统裁剪 boot0裁剪 uboot裁剪 内核裁剪 文件系统裁剪 C库裁剪 文件系统压缩

    文章目录 1 概述 2 Tina系统裁剪简介 2.1 boot0裁剪 2.2 uboot裁剪 2.3 内核裁剪 2.3.1 删除不使用的功能 2.3.2 删除不使用的驱动 2.3.3 修改内核源代码 2.3.3.1...2.3 内核裁剪 通常关于Linux内核裁剪主要有如下方法: 删除不使用的功能。如符号表、打印、调试等功能。 删除不使用的驱动。 修改内核源代码。 内核压缩。...2.3.1 删除不使用的功能 下表中列出了一些内核选项,包含选项的描述,默认值以及推荐值(减小内核镜像尺寸)。...2.3.3 修改内核源代码 内核源码庞大,直接修改往往难度很大,可借助相关工具来评估模块以及符号的大小,然后进行针对性的裁剪。...Building Embedded Linux Systems [M] [3] Michael Opdenacker.

    8.5K20

    2.移植3.4内核-支持烧写yaffs2,裁剪内核并制作补丁

    在上章-制作文件系统,并使内核成功启动jffs2文件系统了 本章主要内容如下: 1)使内核支持yaffs2文件系统 2)裁剪内核 3)制作内核补丁 ---- 1.首先获取yaffs2源码(参考git命令使用详解...5.内核裁剪 为什么要裁剪内核?...因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值) 5.1首先裁剪内核里无关的CPU/单板文件 1)通过vi .config,然后搜索2440...如上图所示,CPU下只选择2440,单板文件下只选择SMDK2440以及MINI2440相关 5.2 裁剪无关的文件系统ext2、ext3、ext4 重新make menuconfig,进入File systems...由于,我们2440板子只有USB接口,所以需要裁剪掉PS2鼠标驱动: 重新make menuconfig,进入Device Drivers-> Input device support,去掉: [ ]

    1.4K30

    S3C2440移植uboot之裁剪和修改默认参数

    bootargs="(环境变量里最重要的一个),是传递给内核的环境变量,里面会保存文件系统位置,控制台console等等。   ...(后面配置mtdparts命令后,会在后面修改)   由于nand中要划分bootload空间、环境变量空间、内核空间、系统空间 而uboot就有400多k,所以我们需要裁剪uboot,裁剪后再来划分内存分区...裁剪uboot   进入smdk2440.h,把不需要的功能的宏去掉,比如usb,文件系统,rtc等   1)去掉usb支持 /***********************************...可以看到,smdk2440.h是将环境变量保存在nor flash,由于2440在nand启动下是无法支持nor,所以我们需要屏蔽这三处宏,重新设置宏 设置save相关宏   在其它板卡里搜索CONFIG_ENV_IS_IN_NAND...200000 //保存在内核分区里 bootm 30000000 //启动内核   从这里,看出烧个内核还需要记录这些分区空间地址,非常麻烦

    80920

    3.移植驱动到3.4内核-移植DM9000C驱动

    在上章-使内核支持烧写yaffs2,裁剪内核并制作补丁了 本章,便开始移植以前2.6内核的驱动到3.4新内核 ---- 1.介绍 首先内核更新,有可能会重新定义新的宏,去除以前的宏,以及更改函数名等 所以移植驱动的过程如下...(mach-smdk2440.c)的内核下输入ifconfig,发现该板卡的内核不支持DM9000,如下图所示: ?...而在machid= 7cf(mach-mini2440.c)的内核下输入ifconfig,却能支持DM9000,如下图所示: ?...2.1这是因为mach-mini2440.c单板文件里支持了内核自带的DM9000网卡驱动 1)进入内核的驱动文件看看(位于drivers/net/ethernet/davicom/dm9000.c)....c(位于arch/arm/mach-s3c24xx/mach-smdk2440.c) (使它也支持内核自带的DM9000网卡驱动) 1)添加头文件 #include

    1K20

    如何制作rootfs_linux常用文件系统类型

    rootfs文件系统制作笔记 环境:XC2440 linux2.32.2红帽5 根文件系统有一系列的目录组成,其中包括应用程序、C库、及相关的配置文件。...附件提供GQ2440的etc压缩包,将其解压到rootfs/目录即可。...进入linux内核目录(linux2.6.32.2)编译内核模块 【make mudules ARCH=arm CROSS_COMPILE=arm-linux-】 安装内核模块,这里的安装只是将模块从内核拷贝到根文件系统目录...解压出busybox源码,进入源码目录进行配置(busybox提供了很多命令工具,但嵌入式开发板并不需要全部命令,所以要进行配置/裁剪) 【make menuconfig】 1.进入busybox setting.../home/lc/rootfilessys/rootfs_xc2440_qt就是根文件系统的rootfs的路径, (因为后来加入了Qt库所以改名rootfs_xc2440_qt)。

    3.8K20

    Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

    文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址...: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org...参考 【错误记录】解压 Linux 内核报错 ( Can not create symbolic link : 客户端没有所需的特权 | Windows 中配置 7z 命令行执行解压操作 ) 博客 ;...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用

    23.4K32

    Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

    文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址...: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用...按钮 , 此时就可以在 VSCode 中阅读 Linux 内核源码 ;

    21.3K30

    linux内核编程_linux内核是什么

    内核——操作系统的内在核心 设备驱动程序 启动引导程序 命令行shell 其他种类的用户界面—-操作系统的外在表象 基本的文件管理工具和系统工具 Linux内核的组成 Linux内核源代码目录结构是什么...Linux内核的有哪些组成部分? 进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC) Linux内核的的组成部分之间有什么关系?...Makefile:分布在Linux 内核源代码中的Makefile,定义Linux 内核的编译规则。 配置文件(Kconfig):给用户提供配置选择的功能。...记录哪些部分被编译入内核、哪些部分被编译为内核模块。 在Linux 内核中增加程序需要完成哪些工作? 将编写的源代码复制到Linux 内核源代码的相应目录。...次引导加载程序加载Linux内核和可选的初始RAM 磁盘,将控制权交给Linux内核源代码。 运行被加载的内核,并启动用户空间应用程序。

    18.9K30

    5.移植uboot-设置默认环境变量,裁剪,并分区

    2)裁剪uboot 3)分区,设置mtdparts命令 ---- 1.修改之前,先来理解下uboot的环境参数 首先,uboot会去校验(CRC)存放环境变量的一段空间 ,若CRC有效则使用该空间里的环境变量...(后面配置mtdparts命令后,会在4.6小节修改) 由于nand中要划分bootload空间、环境变量空间、内核空间、系统空间 而uboot就有400多k,所以我们需要裁剪uboot,裁剪后再来划分内存分区...3.裁剪uboot uboot很多文件都是基于Makefile,里面通过判断宏来加载文件.而宏大部分都定义在include/configs/smdk2440.h 3.1进入smdk2440.h,把不需要的功能的宏去掉...可以看到,smdk2440.h是将环境变量保存在nor flash,由于2440在nand启动下是无法支持nor,所以我们需要屏蔽这三处宏,重新设置宏 4.5设置save相关宏 在其它板卡里搜索CONFIG_ENV_IS_IN_NAND...60000 200000 //保存在内核分区里 bootm 30000000 //启动内核 从这里,看出烧个内核还需要记录这些分区空间地址

    2.7K10

    LINUX内核

    一、Linux内核2.6特点: 1.新的调度器 2.内核抢占 3.改进线程模型 4.虚拟内存 5.文件系统 6.音频:音频体系结构ALSA.支持USB音频和MIDI设备,并支持全双工重放功能。...二、LINUX内核的组成 1.LINUX内核源代码目录结构 1)arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。如i386,arm,powerpc,mips等。...4)Documentation:内核各部分通用解释和注释。...模块 16)sound:ALSA,OSS音频中设备的核心代码和常用设备驱动 17)usr:实现了用于打包和压缩的CPIO等 2.LINUX内核组成部分 2.1 LINUX主要用进程调度,虚拟文件系统,...3.Linux内核空间与用户空间 Linux只能通过系统调用和硬件中断来完成用户空间到内核空间的控制转移

    13.9K30

    S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统

    启动内核   内核启动的打印信息如下图所示 ?   可以看到内核有8个分区,而我们的uboot只有4个分区。...MTDPART_OFS_APPEND: 填在offset里,表示该分区位置附加在上个分区结束的地址上   MTDPART_SIZ_FULL: 填在size里,表示剩下的内存size都归于该分区 若需要mini2440...的机器ID,则还需要修改mini2440单板对应的mach-mini2440.c   因为该单板的mtd分区也不对,将里面的mini2440_default_nand_part[]内容改为和上面一样,...安装glibc库   输入$PATH找到交叉编译位于/work/tools/arm-linux-gcc-4.3.2/usr/local/arm/4.3.2位置,   通过find -name lib,...配置EABI   进入si,搜索exitcode,找到0x00000004对应的宏定义是SIGILL,表示非法指令,是因为arm-linux-gcc-4.3.2是使用的EABI接口,内核由于未配置,所以出现非法

    1.7K30

    Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )

    文章目录 一、解压内核源码 二、查询当前 Linux 内核版本号 三、进入并查看 linux 内核源码目录 一、解压内核源码 ---- 将 下载的 Linux 内核源码 linux-5.6.14.tar.gz...拷贝到 Ubuntu 虚拟机中 , 执行 tar xvf linux-5.6.14.tar.gz 命令 , 解压 Linux 内核源码 ; 解压完毕后 , linux-5.6.14 目录中就是解压后的...Linux 内核源码 ; 二、查询当前 Linux 内核版本号 ---- 执行 uname -a 命令 , 查询当前 Ubuntu 系统的 Linux 内核版本号 , 执行过程如下 : root@ubuntu...x86_64 x86_64 x86_64 GNU/Linux root@ubuntu:~/kernel# root@ubuntu:~/kernel# 当前的内核版本号是 4.13.0 ; 三...、进入并查看 linux 内核源码目录 ---- 进入之前解压的 linux-5.6.14 内核源码目录 ; root@ubuntu:~/kernel# ls linux-5.6.14 linux-5.6.14

    87K60

    Linux 内核 vs Windows 内核

    对于服务器使用的操作系统基本上都是 Linux,而且内核源码也是开源的,任何人都可以下载,并增加自己的改动或功能,Linux 最大的魅力在于,全世界有非常多的技术大佬为它贡献代码。...操作系统核心的东西就是内核,这次我们就来看看,Linux 内核和 Windows 内核有什么区别? ---- 内核 什么是内核呢?...完成第一版 Linux 后,Linux Torvalds 就在网络上发布了 Linux 内核的源代码,每个人都可以免费下载和使用。...Monolithic Kernel Monolithic Kernel 的意思是宏内核Linux 内核架构就是宏内核,意味着 Linux内核是一个完整的可执行程序,且拥有最高的权限。...,内核中抽象出了微内核的概念,也就是内核中会有一个小型的内核,其他模块就在这个基础上搭建,整个内核是个完整的程序; Linux内核设计是采用了宏内核,Windows 的内核设计则是采用了混合内核

    16.3K30
    领券