udev udevudev 是一个用户空间系统,它使操作系统管理员能够为事件注册用户空间处理程序。udev 守护程序接收的事件主要由 (Linux) 内核生成,以响应与外围设备相关的物理事件。因此,udev的主要目的是对外设检测和热插拔采取行动,包括将控制权返回给内核的操作,udev 可提供所需的基础结构来动态维护 /dev 目录中的设备节点文件和符号链接。udev 规则提供了将外部工具插入内核设 2024-11-11 usb #usb #udev
dynamic debug Dynamic debugDynamic debug(dyndbg) 功能,就是允许用户空间通过 debugfs 导出的文件节点 /sys/kernel/debug/dynamic_debug/control,动态的、在运行时控制 Linux 内核 KERN_DEBUG 类型日志的开启和关闭。 开启配置12CONFIG_DYNAMIC_DEBUG= 2024-11-07 debug #debug
kernel boot Linux内核Kernel启动过程内核启动的基本流程 启动加载程序 (Bootloader)启动加载程序(如GRUB、LILO、syslinux等)负责将内核映像从存储设备加载到内存中,并准备好内核启动所需的环境。 加载内核映像:启动加载程序将压缩的内核映像(如vmlinuz)从硬盘加载到内存中。内核映像通常是一个gzip或其他格式压缩的二进制文件。 加载initrd/initram 2024-11-05 boot #boot
中断 中断和异常中断(interrupt)通常被定义为一个事件,该事件改变处理器执行的指令顺序。这样的事件与CPU芯片内外部硬件电路产生的电信号相对应。中断通常分为同步(synchronous)中断和异步(asynchronous)中断: 同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断。 异步中断是由其他硬件设备依照CPU时钟信号随机产生 2024-10-31 irq #irq
进程 进程 进程是程序执行时的一个实例,从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的实体 当一个进程创建时,它几乎与父进程相同。它接受父进程地址空间的一个(逻辑)拷贝,并从进程创建系统调用的下一条指令开始执行与父进程相同的代码。尽管父子进程可以共享含有程序代码(正文)的页,但是它们各自有独立的数据拷贝(栈和堆),因此子进程对一个内存单元的修改对父进程是不可见的(反之亦然) 2024-10-31 进程 #进程
scsi子系统 scsi子系统硬件模型 上图为scsi子系统的硬件拓扑图: soc芯片内部有host(0),host(1)…host(k)这些有scsi功能的控制器 这些host分别连接着片外的scsi设备device(0)…device(k)外设 每个device内部有若干个channel,每个channel下面有若干个id,每个id下面有若干个lun 这些lun就是可以接受scsi命令的实体,例如 2024-10-21 scsi #scsi
修改硬盘SN号 读取硬盘SN号处理方式用户态发送smartctl -i /dev/sdX命令查询硬盘SN号 123456789101112131415161718192021uos@uos-PC [~] ➜ sudo smartctl -i /dev/sda smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.10.0-amd64-deskto 2024-10-15 bug #bug
kgdb KGDBkgdb是Linux内核提供的用于调试内核的源码级调试工具,支持断点设置,单步调试等源码调试常用功能,类似于在用户空间用gdb调试应用程序。kgdb从形式上来说类似于gdb server,你需要两台设备,一台主机,用于运行普通的gdb程序,一台被调试设备,需要安装所需调试的内核或者驱动,同时运行kgdb。kgdb与主机通过串口通讯,所以要在内核的启动参数里指定kgdb所需使用的串口设备号。 2024-09-05 debug #debug
ftrace 什么是ftrace ftrace是 Linux 内核中一个功能强大的跟踪框架,用于跟踪和分析内核及其模块的执行情况。它提供了一系列工具和功能,帮助开发者调试内核、分析性能瓶颈、查看系统调用、函数调用、上下文切换等信息。 ftrace 的主要功能: 函数跟踪 (function tracing): 可以跟踪内核中每个函数的调用情况,包括函数进入、退出的时间和执行时间。 例如,可以跟踪某个特定 2024-08-22 debug #debug