内核

一个操作系统的设计与实现——第5章 加载内核

一直以来,我们都在使用汇编语言对MBR编程,但对于操作系统这样的复杂程序来说,使用汇编语言是比较困难的。本章将实现操作系统内核的加载与进入。 5.1 读硬盘的实现原理 操作系统存储于硬盘中,现在需要将其读出至内存。想要读硬盘,就需要依次进行以下操作: 设定读取的扇区数 设定起始扇区号 发送读硬盘命令 ......
内核 系统

一个操作系统的设计与实现——第10章 任务(一):共享内核

一直以来,我们的操作系统在启动后,运行的都是Kernel.c中的main函数。只运行这一个函数是不够的,操作系统应当有能力加载并运行其他程序。 从本章开始,将使用四章的篇幅讨论操作系统如何加载并运行任务。这里的任务(Task)与进程(Process)是同义词,在操作系统领域中,任务这个词更为常用,请 ......
内核 任务 系统

CentOS 7编译Linux内核(6.5.7)详细步骤

CentOS 7编译Linux内核(6.5.7)详细步骤 参考链接: 下载解压部分参考:Linux 内核动手编译实用指南 - LinuxEden 比较详细,可用于了解原理,但没有给出针对CentOS 7的方案(实验室用到的openEuler基于CentOS,所以需要CentOS的方案)。 配置编译安 ......
内核 步骤 CentOS Linux

Linux 内核 6.6 版本莅临,带来诸多变化

导读 笔记本的支持得到了提升,服务器性能得到了改进,更多内容一一揭晓。 又到了迎接 Linux 内核新版本发布的时刻! Linux 内核 6.6 的发布,是一次大规模更新,针对各类笔记本、网络硬件、处理器等提供了大量全方位的改良。 Linus Torvalds 表示: 各种各样的修复散布各处,除了针 ......
内核 版本 Linux 6.6

linux内核 快速分片,技术|Linux slabtop命令——显示内核片缓存信息

Linux内核需要为临时对象如任务或者设备结构和节点分配内存,缓存分配器管理着这些类型对象的缓存。现代Linux内核部署了该缓存分配器以持有缓存,称之为片。不同类型的片缓存由片分配器维护。本文集中讨论slabtop命令,该命令显示了实时内核片缓存信息。 1.命令用法: 该命令用起来很简单,默认执行时 ......
内核 缓存 命令 slabtop linux

Dalvik虚拟机是在Linux内核上面运行的吗?为什么能执行安卓APK程序?

Dalvik虚拟机确实是在Linux内核之上运行的。它是安卓系统的关键组件,专门设计来执行APK文件中的代码。这里是它的工作原理和一个生活中的例子: 工作原理: 基于Linux内核: 安卓系统基于Linux内核,这为安卓设备提供了底层功能,如硬件抽象、网络通信、安全机制等。 Dalvik虚拟机: 在 ......
内核 程序 Dalvik Linux 是在

安卓系统的内核是Linux,但是它为什么能运行APK程序

安卓系统虽然基于Linux内核,但是它并不直接运行Linux的二进制程序。安卓为其设备提供了一个特殊的运行环境,这个环境包括了一个叫做Dalvik虚拟机(在Android 4.4及以后版本中被ART替代)的组件,它能够运行专门为安卓设计的APK文件中的程序。 这里有一个生活中的比喻: 想象Linux ......
内核 程序 系统 Linux APK

os:ubuntu -- 删除“旧内核”

os:ubuntu -- 删除“旧内核” 一、ubuntu删除旧内核: 1、查询内核信息: 1 [wit@on:null]$ dpkg --get-selections | grep linux 2、删除旧内核: 3、删除信息“deinstall”: 1 [wit@on:null]$ dpkg -- ......
内核 ubuntu

RHEL7系统管理之内核管理

1 Kdump工具 Kdump的工作机制是在内核崩溃时, 通过kexec 工具由BIOS启动一个备用内核, 由备用内核执行一系列任务,保存内存中崩溃内核的状态, 供后续故障分析用。 本文默认AMD或INTEL X86_64架构, RHEL7系统环境. 1.1 内核管理工具Kdump安装 Kdump是 ......
内核 系统 RHEL7 RHEL

crash —— 查看进程的内核栈的内容

有时我们有这样的需求,想查看某个进程的内核栈里的全部内容,介绍下面的几种做法: 方法1:得到进程的栈底地址以及栈大小,然后使用rd指令读取 使用mach指令获取内核栈的大小 crash> mach | grep SIZE MEMORY SIZE: 64 GB PAGE SIZE: 4096 KERN ......
内核 进程 内容 crash

内核System.map

内核System.map是一个文本文件,记录了操作系统内核中各个函数和变量的地址信息。它是通过编译和链接操作系统内核时生成的。 System.map文件对于内核调试非常有用,因为它可以提供内核中各个函数和变量的地址。当在内核发生崩溃或者调试时,可以通过System.map文件来定位问题所在的函数或变 ......
内核 System map

内核softlockup和hardlockup的一些参数分析【转】

转自:https://www.cnblogs.com/liuhailong0112/p/17619657.html 一 参数配置 Softlockup和hardlockup作为内核中的"lockup-看门狗"可以检查系统中调度和中断是否正常运转,其原理可以参考lockup-watchdogs。这两种 ......
内核 softlockup hardlockup 参数

系统编程:控制文件I/O的内核缓冲之sync(),fsync()和fdatasync()

本文主要介绍了如何同步IO完成的语义和刷新文件IO内核缓冲区的三个系统调用:sync()、fsync()和fdatasync()。 ......
内核 fdatasync 文件 系统 fsync

飞腾派使用内核态编程完成LED20控制操作

1 基础知识 在该程序设计过程中我们首先需要学习如何在内核态编程。 1.1 内核态编程 在内核态中编写C语言程序和在用户态中编写C语言程序不同,在用户态中编写C语言程序,我们可以使用libc库,通过系统调用访问内核态的相关操作。 基础的内核态程序如下: #include<linux/init.h> ......
内核 LED 20

生成内核patch时,Fixes字段如何生成?

参考 https://www.kernel.org/doc/html/latest/process/submitting-patches.html https://git-scm.com/docs/pretty-formats 如下所示: 做法 配置git [core] abbrev = 12 [p ......
字段 内核 patch Fixes

CentOS7 以rpm包方式升级内核

RPM包方式安装后,查看内核启动序号:[root@localhost ~] awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfgCentOS Linux (4.4.179-1.el7.elrepo.x86_64) 7 (Core)CentOS L ......
内核 CentOS7 方式 CentOS rpm

centos7.9离线内核升级内核

一、centos7离线升级系统内核 1,centos7系类内核版本为3.10 centos6系列内核版本为2.6,我这边操作是基于centos7.9内核进行小版本的离线升级,在线的就不在这多说了。 内核版本3.10.0-1160.el7.x86_64升级为—— 3.10.0-1160.95.1.el ......
内核 centos7 centos

Linux内核中的两种ID分配方式

参考 https://www.kernel.org/doc/html/latest/core-api/idr.html 正文 在写内核代码时,可能会需要给数据结构分配一个唯一的ID的需求,具体是下面两种需求: 给结构体A分配一个全局唯一的ID,但是不需要根据ID找到结构体A的地址的用法 不但需要给结 ......
内核 方式 Linux

Grub2 内核启动参数总结

Grub2 内核启动参数总结 部分参数 biosdevname=0 net.ifnames=0 # 注意这个配置会修改网卡的名字, 比如之前是ens192 # 添加如上两个内容后就会变成 eth0 类似于CentOS6的命令特点. # 注意修改了网卡名称会导致机器无法上网, 需要通过控制台连接机器, ......
内核 参数 Grub2 Grub

linux内核通信

符号导出 EXPORT_SYMBOL() EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。 2. 使用方法 加入B中调用A中导出函数 [1] 在模块A中c文件或者头文件中使用EXPORT_SYMBOL(xxxx) 导出函数. 有些需要添加 ......
内核 linux

内核补丁查询

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/mm/debug.c?h=linux-5.4.y&id=4d35427ad7641cba08ea0deffae1a78147ad41c0 ......
内核 补丁

通过条件竞争实现内核提权

条件竞争漏洞(Race Condition Vulnerability)是一种在多线程或多进程并发执行时可能导致不正确行为或数据损坏的安全问题。这种漏洞通常发生在多个线程或进程试图访问和修改共享资源(如内存、文件、网络连接等)时,由于执行顺序不确定或没有适当的同步措施,导致竞争条件的发生并且条件竞争... ......
内核 条件

Ubuntu 自动升级内核后网络不通

Ubuntu 22.04 自动升级内核后网络不通,现象是没有网络设备,有线和无线都没有。启动上一个内核检查,发现驱动在 linux-modules-extra-xxx-generic 里面,然而这个包并未安装,虽然手动安装可以解决,但更好的方案是安装 linux-generic-hwe-22.04, ......
内核 Ubuntu 网络

Linux 内核的龙芯现已支持KVM支持

导读 在已发布的多个 Linux 内核版本中,龙芯工程师都致力于为 LoongArch 架构实现更多内核功能。到目前为止,LoongArch CPU 的性能虽然无法与 x86_64 或 Arm 硬件相比,但正在慢慢变得更加实用,此外架构支持方面已经越来越成熟。 根据龙芯工程师最新提交的代码,Linu ......
内核 Linux KVM

内核文档翻译(chatgpt) —— Pathname lookup (路径名查找)

原文:https://www.kernel.org/doc/html/latest/filesystems/path-lookup.html 内核中文件系统相关的文档汇总:Filesystems in the Linux kernel This write-up is based on three ......
路径名 内核 路径 Pathname chatgpt

构造linux内核源码树(转载)

本文是参考了网上多篇帖子而写的算不上什么原创。唯一值得欣慰的只不过在本机上实现罢了。因为毕竟失败了几次。也因为本人是初学驱动编程,很多简单的问题在我来说是相当的困难的。望有识之士不要笑话。最后,希望本文能给刚学驱动而还没开头的人提供一些帮助。刚看 O'REILLY 写的《LINUX 设备驱动程序》时 ......
内核 源码 linux

Linux中如何构建内核源码树

Linux中如何构建内核源码树,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 要编写Linux的驱动,必须要构建内核源码树。 内核源码树的作用是构造可以在Linux内核中装载和卸载的模块,因此若是要为目标板构造模块,必须保证用于构建内核 ......
内核 源码 Linux

linux内核编译安装(Ubuntu替换内核)

前言:Ubuntu替换内核一般是不会删除自己Ubuntu里面的东西的(只是内核改变,其它影响,放心搞就是了,而且可以变回原来的内核) 实验环境: OS:Ubuntu 20.04.2 LTSOld Kernel:linux 5.15.0New Kernel: linux 5.15.0(我测试过的只有原 ......
内核 Ubuntu linux

编译linux内核模块时的make -C M= modules的参数说明

在linux下编译可加载内核模块形成.ko文件的makefile中的核心语句是: $(MAKE) -C $(KERNEL_DIR) M=(PWD) modules这句是Makefile的规则:这里的 $(MAKE)就相当于make;-C 选项的作用是指将当前工作目录转移到你所指定的位置,一般都是内核 ......
内核 模块 参数 modules linux

内核编译obj-m和obj-y的区别

在内核编译时,主要涉及一下文件: kernel/arch/arm/configs/*.defconfig kernel/driver/*/Makefile kernel/driver/*/Kconfig 如果我们想要往内核中增加新的节点,还要涉及到设备树文件,kernel/arch/arm/boot ......
内核 obj obj-m obj-y