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

Linux 内核 Kconfig 文件作用和添加 menuconfig 项方法

嵌入式开发,需要定制或添加一些内核功能。这里就需要配置 Kconfig 文件了。本文简单说明一下如何修改。...便于需要时查找 Ref: Linux内核Kconfig文件作用 本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。...---------- Kconfig作用 Kconfig就是服务于menuconfig一个配置文件。在对应目录下配置Kconfig文件,就是在配置对应menuconfig项目。...完成了make menuconfig之后,内核会生成.config文件,就在Linux代码树根目录下。这个文件制定了各个模块是否会被编译,由Makefile读取并在编译过程配置内核。...然后,专心添加你.c和.h文件就行了。由于是二态选项,所以你代码要么就直接被包含在内核,要么就压根不存在。不像三态,还有一个“M”选项。三态配置参见参考资料吧。

3.3K50

Linux 设备树(DTS深入理解

关于设备树出现其实在 2005 年时候就已经在 PowerPC Linux 里出现了,由于 DTS 方便性,慢慢地被广泛应用到 ARM、MIPS、X86 等架构上。...,我们就要写大量类似代码,当年 Linus 看到内核里有大量类似代码,很是生气并且在 Linux 邮件列表里发了份邮件,才有了现在设备树概念,至于设备树出现到底带来了哪些好处,先看一下设备树文件...设备树文件格式是 dts,包含头文件格式是 dtsi,dts 文件是一种程序员可以看懂格式,但是 Uboot 和 Linux 只能识别二进制文件,不能直接识别。...很多上层应用开发者没有做过内核开发经验,对内核一直觉得很神秘,其实可以换一种思路来看内核,相信上层应用开发者最熟悉就是各种 API,工作可以说就是和 API 打交道,对于内核也可以想象是各种 API...这里对设备树做个总结,设备树可以总结为三大作用:一是平台标识,所谓平台标识就是板级识别,让内核知道当前使用是哪个开发板,这里识别的方式是根据 root 节点下 compatible 字段来匹配。

22.3K53
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内核递归漏洞利用

6月1号,我提交了一个linux内核任意递归漏洞。如果安装Ubuntu系统时选择了home目录加密的话,该漏洞即可由本地用户触发。...背景知识 在Linux系统,用户态栈空间通常大约是8MB。如果有程序发生了栈溢出的话(比如无限递归),栈所在内存保护页一般会捕捉到。...Linux内核栈(可以用来处理系统调用)和用户态栈很不一样。...于是它直接使用底层文件系统 VFS读取函数(通过kernel_read()),这样做更加直接有效,但是这个做法有副作用,就是有可能会mmap() 到通常不能映射解密后文件(因为只要底层文件有读权限并且包含合法加密数据...接下来导致ecryptfs读取 /proc/$A/environ ,最后导致进程A进程错误。如此循环往复,最终溢出内核栈,使内核崩溃。内核栈如下: [...]

2.1K60

浅析linux内核idr机制

大家好,又见面了,我是全栈君 idr在linux内核中指就是整数ID管理机制,从本质上来说,这就是一种将整数ID号和特定指针关联在一起机制。...这个机制最早是在2003年2月加入内核,当时是作为POSIX定时器一个补丁。现在,在内核很多地方都可以找到idr身影。 idr机制适用在那些需要把某个整数和特定指针关联在一起地方。...举个例子,在I2C总线,每个设备都有自己地址,要想在总线上找到特定设备,就必须要先发送该设备地址。...如果我们PC是一个I2C总线上主节点,那么要访问总线上其他设备,首先要知道他们ID号,同时要在pc驱动程序建立一个用于描述该设备结构体。...这些函数都定义在 下面,我们通过分析I2C协议核心代码,来看一看idr机制实际应用: <linux-2.6.23/drivers/i2c/

1.8K20

浅墨: 聊聊Linux IO()——Linux内核IO栈

由图可见,从系统调用接口再往下,LinuxIO栈致大致有三个层次: 文件系统层,以 write(2) 为例,内核拷贝了write(2)参数指定用户态数据到文件系统Cache,并适时向下层同步...设备层,通过DMA与内存直接交互,完成数据和具体设备之间交互 结合这个图,想想Linux系统编程里用到Buffered IO、mmap(2)、Direct IO,这些机制怎么和Linux IO栈联系起来呢...假设要去读一个冷文件(Cache不存在),open(2)打开文件内核后建立了一系列数据结构,接下来调用read(2),到达文件系统这一层,发现Page Cache不存在该位置磁盘映射,然后创建相应...然后请求继续到达块设备层,在IO队列里排队,接受一系列调度后到达设备驱动层,此时一般使用DMA方式读取相应磁盘扇区到Cache,然后read(2)拷贝数据到用户提供用户态buffer中去(read...Linux 2.4还要求是文件系统逻辑块整数倍)。

2.3K20

雕刻在 Linux 内核 Linus 故事

但是如果真是遇到一个“特别显赫”鸡蛋,很多人还是想看看能生出这颗神蛋母鸡,或者想听听这只母鸡故事。 其实,在Linux内核代码里,就隐藏着关于Linus大神一个美妙故事。...$ sudo gdb --core /proc/kcore 然后在GDB执行如下命令加载内核符号信息: (gdb) file /home/ge/work/linux-3.12.2/vmlinux...这样说有点不精确,精确说法是从Linux内核2.1.17版本开始,第二个参数也可以是0x5121996。查阅kernel.org上内核发布历史,2.1.17应该发布于1996年12月22日。...在内核代码,上述规则是在reboot.c强制,代码如下: /* For safety, we require "magic" arguments. */ if (magic1 !...内核代码,而且使它们成为Linux API一部分。

77220

理解 FFmpeg pts,dts,time_base

PTS主要用于度量解码后视频帧什么时候被显示出来。 DTS:Decode Time Stamp。DTS主要是标识读入内存bit流在什么时候开始送入解码器中进行解码。...也就是pts反映帧什么时候开始显示,dts反映数据流什么时候开始解码。 怎么理解这里“什么时候”呢?如果有某一帧,假设它是第10秒开始显示。那么它pts是多少呢。是10?还是10s?...为了回答这个问题,先引入FFmpeg时间基概念,也就是time_base。它也是用来度量时间。 如果把1秒分为25等份,你可以理解就是一把尺,那么每一格表示就是1/25秒。...非压缩时候数据(即YUV或者其它),在ffmpeg对应结构体为AVFrame,它时间基为AVCodecContext time_base ,AVRational{1,25}。...bq, AVRational cq)函数 这个函数作用是计算a*bq / cq来把时间戳从一个时间基调整到另外一个时间基。

41510

查看linux版本内核 Linux内核版本变化

Linux诞生开始,Linux内核就从来没有停止过升级,从Linus第一次发布0.02版本到1999年具有里程碑意义2.2版本,一直到我们现在看到2.4版本,都凝聚了Linux内核开发人员大量辛苦劳动...这种Modem和一般Modem处理方法不同,它DSP处理并不是在硬件层次上做,而是使用软件通过CPU实现,因此无法在现有的Linux配置这种Modem上网。...现在Linux内核里已经开始了这方面的支持。...对HTTP请求首先由内核Web服务器进行处理,如果不能处理就将请求提交给Apache用户级Web服务器来处理。像这样构思和实现在网络操作系统实属一绝。...3.高性能 · 对虚拟文件系统(VFS)修改:Linux 2.4版本文件系统修改了VFS错误,尤其是在文件缓存管理上。

22.2K20

Linux&&、&、|、||等特殊符号作用

符号| 和 || ps -ef | grep java 符号 | 表示管道,上一条命令输出,作为下一条命令参数(输入)。...2>&1 表示把标准错误输出重定向到标准输出1,&指示不要把1当做普通文件,而是fd=1即标准输出处理。 2>1 表示把标准错误输出重定向到1,但这个1不是标准输出,而是一个名为1文件。...标准错误输出(stderr)代码为2,实际映射关系:/dev/stderr ->/pro/self/fd/2 command>a 2>1 、command>a 2>a 与 command>a 2>&1区别...command>a 2>&1 等价于 command 1>a 2>&1 意思为执行command产生标准输入重定向到文件a,标准错误也重定向到文件a。...command>a 2>1 等价于 command 1>a 2>1 意思为执行command产生标准输入重定向到文件a,标准错误重定向到文件1

2K10

增强Linux内核访问控制安全方法

LSM(Linux Security Modules) 动态库劫持 Linux动态库劫持主要是基于LD_ PRELOAD环境变量,这个环境变量主要作用是改变动态库加载顺序,让用户有选择载入不同动态库相同函数...Linux内核中所有的系统调用都是放在一个叫做sys_ call _table内核数组,数组值就表示这个系统调用服务程序入口地址。整个系统调用流程如下: ?...Linux内核已经集成了一些堆栈式文件系统,例如Ubuntu在安装时会提醒你是否需要加密home目录,其实就是一个堆栈式加密文件系统(eCryptfs),原理如下: ?...LSM 在内核做了以下工作: 在特定内核数据结构中加入安全域。 在内核源代码不同关键点插入对安全钩子函数调用。 加入一个通用安全系统调用。 提供了函数允许内核模块注册为安全模块或者注销。...LSM,在早期内核,只能允许一个LSM内核模块加载,例如加载了SELinux,就不能加载其他LSM模块,在最新内核版本不存在这个问题。

1.6K41

Linuxlsmod命令列出内核模块

lsmod是一个命令行程序,用于显示有关已加载Linux内核模块信息。 内核模块 内核是操作系统核心组件。 它管理系统资源,并且是计算机硬件和软件之间桥梁。...Linux内核具有模块化设计。 内核模块通常称为驱动程序是一段扩展内核功能代码。 模块要么编译为可加载模块,要么内置在内核。...内核模块存储在/lib/modules/目录。 要找到正在运行内核版本,请使用uname -r命令。...lsmod命令 lsmod是一个简单命令,不接受任何选项或参数。 该命令作用是读取/proc/modules并以格式化列表显示文件内容。...在命令行运行lsmod以了解当前正在加载哪些内核模块: lsmod 该命令在新一行上输出每个已加载内核模块信息: Module Size Used by cmac

4.1K20

如何检测Linux内核安全增强选项

关于kconfig-hardened-check kconfig-hardened-check是一款功能强大安全检测工具,可以帮助广大研究人员检测Linux内核安全增强选项。...Linux内核中提供了很多安全增强选项,其中有很多选项在主要Linux发行版系统中都默认不会开启。因此,我们如果想要让自己系统变得更加安全的话,我们则需要手动开启这些安全增强选项。...但是,谁都不想手动去检查这些配置选项,因此kconfig-hardened-check便应运而生,它可以自动帮我们检查自己Linux系统内核相关安全增强选项。...在检查过程,kconfig-hardened-check.py 将根据下列参考配置来进行检查: 1、KSPP推荐设置; 2、CLIP操作系统内核配置; 3、最新公开grsecurity修复方案;...4、SECURITY_LOCKDOWN_LSM修复方案; 5、Linux内核维护团队直接反馈; 除此之外,我们还创建了一份Linux内核防御图,它是安全强化特性和相应漏洞类或攻击技术之间关系图形表示

2.1K20

Linux 内核监控在 Android 攻防应用

使用 参考 Linux 源码 samples/kprobes/kprobe_example.c,一个简单 kprobe 内核模块实现如下: #include #include...因此对于安全测试而言作用不大,更多是给 APP 开发者和手机厂商用于性能热点分析。...值得一提是,最近几年 Linux 内核出过很多 eBPF 漏洞,大多是 verifier 验证逻辑错误,其中不少还上了 Pwn2Own,但是由于权限限制在 Android 普通应用无法执行 bpf...,需要自行修改配置,烧写和编译内核Linux 旧版本对于 eBPF 支持不完善,许多新功能都是在 5.x 后才引进,而 Android Linux 内核都比较旧,需要进行 cherry-pick...,这在内核直接读取用户空间数据(比如系统调用参数)时会出现错误,因此我们需要手动去 cherry-pick 对应 commit,即在 Linux 5.5 添加 6ae08ae3dea2。

3.1K30
领券