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

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

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

3.1K50

Rust for Linux | 用 Rust Linux 内核模块

背景| Linux 内核模块 Linux 内核模块在概念和原理层面与动态链接模块(DLL或so)类似。...以上就是模块的整个生命周期,也可作为我们编写内核模块的一个宏观的心智模型。 从零编写一个字符驱动 Linux 设备通常被分为三类,每个驱动模块通常实现为这三类的其中一种: 字符设备。...Kconfig是各种配置界面的源文件内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config 。...“编写 Rust 内核模块的模版文件可以在这里找到:Rust-for-Linux/rust-out-of-tree-module Kernel crate 文档:https://rust-for-linux.github.io...type struct Scull; // 为 Scull 实现 file::Operations trait // 该 trait 定义了内核文件操作的各种方法,诸如 `open/read/write

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

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

Linux中常见的拦截过滤 本文着重介绍Linux平台上常见的拦截: 用户态动态库拦截。 内核态系统调用拦截。 堆栈式文件系统拦截。 inline hook拦截。.../hookStrcmp.so” 结果会发现,我们自己的strcmp函数优先被调用了。...Linux内核中所有的系统调用都是放在一个叫做sys_ call _table的内核数组,数组的值就表示这个系统调用服务程序的入口地址。整个系统调用的流程如下: ?...堆栈式文件系统 Linux通过vfs虚拟文件系统来统一抽象具体的磁盘文件系统,从上到下的IO栈形成了一个堆栈式。通过对内核源码的分析,以一次读操作为例,从上到下所执行的流程如下: ?...Linux内核已经集成了一些堆栈式文件系统,例如Ubuntu在安装时会提醒你是否需要加密home目录,其实就是一个堆栈式的加密文件系统(eCryptfs),原理如下: ?

1.5K41

Linux内核源码分析方法

Linux内核源码分析方法 一、内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。...我也是通过一个项目接触了Linux内核源码的分析,从源码的分析工作,我受益颇多。除了获取相关的内核知识外,也改变了我对内核代码的过往认知: 1.内核源码的分析并非“高不可攀”。...闲话少叙(已经罗嗦了很多了,囧~),下面我就来分享一下自己的Linix内核源码分析方法。 二、内核源码难不难?...但不会把读者带入Linux内核代码的深渊,是了解内核架构和入门Linux内核代码的非常好的参考书,同时该书会提高读者对内核代码的兴趣。另一本是《深入理解Linux内核》,该书的经典我不必多说。...同时,在分析内核代码的过程,也可以在本书中找到具有参考价值的资料。最后,愿大家早日进入内核的世界,体验Linux带给我们的惊喜!

5.2K70

Linux 内核】编译 Linux 内核 ⑤ ( 查看 .config 编译配置文件 | 正式编译内核 )

文章目录 一、查看 .config 编译配置文件 二、正式编译内核 一、查看 .config 编译配置文件 ---- 在上一篇博客 【Linux 内核】编译 Linux 内核 ④ ( 打开 Linux...内核编译 菜单配置 |菜单配置的光标移动与选中状态 | 保存配置 | 配置项帮助文档 ) , 已经将编译配置保存到了 .config 文件 ; 查看 .config 编译配置文件 , 在 linux...内核源码根目录 , 执行 gedit .config 命令 , 查看 .config 编译配置文件 : ( 也可以使用 vi , vim 等文本编辑器查看 ) 在 .config 配置 , #...代表注释 , CONFIG_IRQ_WORK=y 等号右侧的 y 表示同意该操作 ; .config 文件内容示例 : 配置文件很多 , 这里只贴出一部分 ; # # Automatically generated...---- 在 Linux 内核源码根目录 , 执行 sudo make j4 开始编译 Linux 内核 ;

11.9K40

Linux的查找文件方法

Linux的四种查找文件方法 ? 一、which which命令的作用是,在PATH变量指定的路径,搜索某个系统命令的位置,并且返回第一个搜索结果。 也就是说它返回的是你该命令所处的位置。...#查无有效属主的文件,即文件的属主在/etc/passwd不存在 -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前 -nogroup...#查无有效属组的文件,即文件的属组在/etc/groups不存在 -nouser #查无有效属主的文件,即文件的属主在...fstype #查位于某一类型文件系统文件,这些文件系统类型通常可在/etc/fstab中找到 -mount #查文件时不跨越文件系统...mount点 -follow #如果遇到符号链接文件,就跟踪链接所指的文件 -cpio #查位于某一类型文件系统文件,这些文件系统类型通常可在

6K10

Linux内核参数的配置方法

/proc是一个伪文件系统,可以像访问普通文件系统一样访问系统内部的数据结构,获取当前运行的进程、统计和硬件等各种信息。例如可以使用cat /proc/cpuinfo获取CPU信息。.../proc/sys/下的文件和子目录比较特别,它们对应的是系统内核参数,更改文件内容就意味着修改了相应的内核参数,可以简单的使用echo命令来完成修改: echo 1 > /proc/sys/net/ipv4...更常用的方式是,把需要修改的配置集中放在/etc/sysctl.conf文件,使用sysctl -p重新加载配置使其生效。...在系统启动阶段,init程序会运行/etc/rc.d/rc.sysinit脚本,其中包含了执行sysctl命令,并使用了/etc/sysctl.conf的配置信息。...因此放在/etc/sysctl.conf的系统参数设置在重启后也同样生效,同时也便于集中管理修改过了哪些内核参数。 最后,哪里有比较完整的内核参数说明文档?我觉得kernel.org的文档比较全。

16310

linux内核时复制机制源代码解读

作者简介 韩传华,就职于国内一家半导体公司,主要从事linux相关系统软件开发工作,负责Soc芯片BringUp及系统软件开发,乐于分享喜欢学习,喜欢专研Linux内核源代码。...时复制技术(一下简称COW)是linux内核比较重要的一种机制,我们都知道:父进程fork子进程的时候,子进程会和父进程会以只读的方式共享所有私有的可写页,当有一方将要写的时候会发生COW缺页异常。...那么究竟COW在linux内核是如何触发?又是如何处理的呢?我们将在本文中以源代码情景分析的方式来解读神秘的时COW,从源代码级别的角度彻底理解它。...需要说明的是:本文中所分析的内核源码时linux-5.0版本内核,使用arm64处理器架构,当然此文章发布时linux内核已经是linux-5.8.x,当你查看最新的内核源码的时候会发现变化并不是很大。...本文主要会从下面几个方面去分析讨论时复制: 1.fork子进程时内核为COW做了哪些准备 2.COW进程是如何触发的 3.内核时怎样处理COW这种缺页异常的 4.匿名页的reuse 一,从fork说起

4.6K20

Linux内核编程--文件描述符

Linux操作系统,一切皆是文件—— "Everything is a file"。 如果要在Linux系统编写操作文件的代码,需要借助文件描述符。...文件的索引——文件描述符(file descriptor): 文件描述符是一个非负整数,当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。...文件描述符就是内核为了高效管理已被打开的文件所创建的索引值。 文件描述符指向内核为每一个进程维护的打开文件记录表。当要处理文件时,将文件对应的文件描述符作为参数传给函数。...文件描述符在用户进程和内核之间的映射关系: Linux查看文件描述符的指令:lsof(list open files) lsof可以打开的文件: 普通文件 目录 网络文件系统的文件 字符或设备文件...- O_EXCL 若文件存在则报错返回 - O_TRUNC 如果文件已存在,并且以只或可读可写方式打开,则将其长度截断为0字节 [mode_t

2.7K10

Linux利用ssh传输文件方法

登录的的方法与ssh一样(因为sftp就是ssh 的一个程式。)...sftp通常有下面的命令: get 命令:get 目标文件 本地路径(get 文件夹 加 -r参数) put 命令:put 本地文件 目标路径(put 文件夹 加 -r参数) 其他命令:比如ls cd...实际上基于ssh登陆的文件传输工作还可以由scp命令完成,方法是: 上传文件:scp [本地用户名 @IP 地址 : ]文件名 1 远程用户名 @IP 地址 : 文件名 2 myths@myths-X450LD...:~$ scp test root@myserver:~/ 下载文件:scp 远程用户名 @IP 地址 : 文件名 1 [本地用户名 @IP 地址 : ]文件名 2 myths@myths-X450LD...:~$ scp root@myserver:~/ test 可以通过加-r参数表示传文件夹,或者通过-v参数显示细节。

2.7K30

linux内核源码生成tags文件

一般来说,如果我们想要研究一个c/c++项目的源码,我们首先要做的是为该项目生成tags文件linux内核是c的,所以它也不例外。.../Comparison-with-Similar-Tools 根据我的测试,gtags是最好用的,其官方地址是: https://www.gnu.org/software/global/ 由于linux...内核的项目结构非常庞大,如果我们在项目的根目录直接为所有文件生成tags的话,会包含很多不必要的文件,比如我们只想要x86平台的相关实现,但结果却包含了各种其他平台的逻辑。...那怎么办呢,其实linux的Makefile里已经帮我们写好了如何生成各种tags,看下面的命令: $ make help # 省略其他 tags/TAGS - Generate tags...remove_structs=y ;; esac 由上可见,当我们通过make命令生成各种不同的tags时,该tags类型会被传到这个脚本里, 然后再根据这个类型执行对应的方法生成对应的

4.3K20

Linux修改文件权限方法「建议收藏」

目录 一、文件类型 二、修改文件权限(chmod) 1.文件设定法 2.数值设定法 ---- 一、文件类型 在Linux操作系统,一切皆文件Linux不以扩展名来区分文件类型,而是在文件属性中有一列专门记录文件类型...普通文件:.c .cpp .h .txt .pdf 用 ‘ – ‘ 表示 目录文件文件夹): 用 ’ d ‘表示 管道文件(用于进程间通信的一种文件):用’ p ‘表示 链接文件(相当于Windows...read) 读权限 , 值为 4 w : (write) 权限 , 值为 2 x : (execute) 执行权限 , 值为 1 1.文件设定法 u:属主 g:同组人 o...:其他人 a:所有人 +表示增加权限 -表示去掉权限 例如:修改main.c文件所有者权限 1).取消权限:chmod u-w main.c 2)....r : (read) 读权限 , 值为 4 w (write) 权限 , 值为 2 x : (execute) 执行权限 , 值为 1 格式:chmod xxx 文件名(

6K30

Linux应用程序使用文件调试程序的方法

Linux,一切皆文件,那么在Android系统本身,也是Linux+java罢了,也是在Linux的运行环境下。 通常,我们在调试程序的都会使用printf。...在Android,我们会去使用logcat,现在,给大家介绍一种常用的调试方法,debug文件调试法。...在Android系统,调试一个C应用程序可谓是极其不方便,为了保存log的完整性,于是,文件调试法可以发挥重大的作用,下面给出一个例子: #include FILE * wirte_debug_file...=NULL; //将调试信息写到文件 void write_Debug_to_file(char *debug_log) { if(wirte_debug_file==NULL) wirte_debug_file...return 0 ; } 运行结果: 我们打开debug.txt后,可以看到: i:0 i:1 i:2 i:3 i:4 i:5 i:6 i:7 i:8 i:9 打印的数据被保存在这个文件

1.2K21

linux平台下的文件刷新

一、c语言fflush和linux的sync、fsync、fdatasync的区别 1.接口基本不同 fflush是libc库中提供的函数,平台无关,只有在你使用到c语言的标准文件(FILE)操作时,...sync(); fsync(int fd); fdatasync(int fd); 3.功能 fflush: 是把C语言FILE的缓冲区要写入文件的内容刷到操作系统的写入缓冲区(其实是写到内核的缓冲区...sync、fsync、fdatasync:是把内核的缓冲区(即 页高速缓存)要写到磁盘的数据刷到磁盘上。...传统的UNIX系统在内核设有页高速缓存,磁盘I/O的数据一般都通过这个缓存区。...当我们向文件写入数据时,内核通常会先将数据复制到页告诉缓存,然后将这些缓存页的地址排入队列,晚些时候再写入磁盘。这种方式被称为延迟

3.9K50
领券