linux kernel
文章平均质量分 66
kernel
Linux_Glacier
夜阑卧听风吹雨
展开
-
dracut添加指定固件
存放在,固件来自kernel 仓库更多的固件可以参考git仓库,https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain想要获取固件,无论是从仓库或者浏览器中下载你所需要的固件,支持多种系统固件,可以参考,https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git。原创 2023-10-30 17:10:07 · 432 阅读 · 0 评论 -
centos 下 Makefile 独立模块编译ko
公钥、私钥、签名、证书原创 2023-09-12 10:49:40 · 514 阅读 · 0 评论 -
制作 initramfs 后,缺少部分驱动,可能导致系统无法启动
通过 mkinitrd 制作出来的 initrd.img 镜像,替换到 ISO 中,系统无法正常启动,从日志上看 mount ‘iso9668’ 失败,怀疑是小系统中缺少 isofs 驱动导致。因为使用 mkinitrd /boot/initramfs.img $(uname -r) 时没有指定加载的内核模块,需要重新制作 initrd.img,添加一些参数 --whth=isofs。注:这种方式也适用于自己添加了新驱动,当没有打入 initramfs 可以去指定模块。原创 2023-06-12 14:52:51 · 563 阅读 · 0 评论 -
如何进入到 initramfs 小系统中
如何进入initramfs shell?在GRUB引导菜单上按e,进入编辑模式。跳转到linux开头的行,把UUID=后面的任一字母数字改错。按F10启动,等一段时间,initramfs就会找不到根文件系统,于是就会陷入initramfs shell。该shell具有root权限。如果显示了发行版Logo,通常只要按esc就能取消Logo显示日志有什么用可以获得root shell,不需要密码和sudo。在该shell内手动挂载根文件系统就可以对系统进行修改。如何挂载根文件系统。原创 2023-06-12 18:16:10 · 1493 阅读 · 0 评论 -
initramfs 最全解释与制作
我们都知道 initramfs 是系统启动时加载,其中的 lib/modules 中包含必要的设备驱动(磁盘、网卡、文件系统等)及运行环境C库/动态库链接器等, 先启动一个临时系统,然后会再 switchroot 时加载,用的是initramfs 相关驱动,在 switchroot 后,用的是硬盘上的非必须驱动,有些 ko 虽然放到 initramfs 中,但是 switchroot 前不加载的话,用的还是硬盘上的,关键看 ko 加载时机。1、initrd 和 initramfs 有什么区别?原创 2023-06-12 16:31:39 · 3313 阅读 · 0 评论 -
linux kernel主要文件-图文讲解
内核在线阅读:https://elixir.bootlin.com/linux/latest/source内核官网:https://www.kernel.org/内核编译:make安装内核和模块:make module_install install其他:make mrprobe(每次配置,并重新编译内核前,先执行"make mrproper",清理源代码树,包括清理过去的内核配置文件".config",);make dep(生成内核直接的依赖关系,为编译做好准备)config。原创 2022-09-04 13:54:50 · 987 阅读 · 0 评论 -
linux内核空间:kmalloc、kzalloc、vmalloc的区别?
在平时用户层我们都是使用malloc();这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。那么,在内核空间中如何申请内存呢?一般我们会用到 kmalloc()、kzalloc()、vmalloc() 等,下面我们介绍一下这些函数的使用以及它们之间的区别。kmalloc()函数原型:void *kmalloc(size_t size, gfp_t flags);原创 2020-05-28 22:52:50 · 217 阅读 · 0 评论 -
配置内核Kconfig语法 和 make menuconfig
加载流程分析kconfig --> make menuconfig --> .config --> auto.conf .autoconf.h图形界面的make menuconfig加载的是kconfig,通常我们会编写kconfig语法来添加menuconfig图形界面的选择项,原创 2020-05-20 23:39:38 · 486 阅读 · 1 评论 -
ioremap()函数解析
ioremap()函数解析~~~为了使软件访问I/O内存,必须为设备分配虚拟地址~~~几乎每一种外设都是通过被读写设备上的相关寄存器,去达到想要的功能和操作。常见的三大寄存器:控制寄存器、状态寄存器、数据寄存器。外设的寄存器通常被连续的编址,根据CPU体系结构不同,CPU对IO端口的编址方式有两种:x86: I/O 映射方式(I/O-mapped)X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和O.2020-05-08 23:37:18 · 1893 阅读 · 0 评论 -
编译内核模块的方式
之前上学的时候,学过这一部分,现在接触的是linuxC开发,一直没有梳理过驱动相关的,现在晚上有空把基础知识在过一遍# @Author: cjj# @Date: 2020-05-12T22:36:36+08:00# @Email: 1163980317@qq.com# @Last modified by: cjj# @Last modified time: 2020-05-12T22:41:17+08:00# @License: GPLTEGAT=Kernel01obj-m=原创 2020-05-12 23:02:59 · 290 阅读 · 0 评论 -
signal信号集讲解
linux信号信号集类型sigset_t信号集函数功能int sigemptyset(sigset_t *set)清空信号集int sigfillset(sigset_t *set)置为全集集int sigaddset(sigset_t *set, int signum)增加信号集某一个int sigdelset(sigset_t *set, int signum)删除信号集某一个int sigismember(const sigset_t *se原创 2020-05-08 22:25:17 · 293 阅读 · 0 评论