草庐IT

linux 内核资源配置--cgroups详解以及在docker中的应用

一、Cgroup概述1.1、cgroups是什么Linuxcgroup(ControlGroups)是Linux内核提供的一种机制,用于限制进程组使用的资源(如CPU、内存、磁盘I/O等)。通过将进程组划分为层次结构,并将资源限制应用于不同层次的组,可以实现对系统资源的统一管理和限制。cgroup提供了一套API,用于创建、管理和监控进程组。通过这些API,可以将进程组划分为不同的层次结构,并为每个层次结构设置不同的资源限制。在实际使用中,可以使用cgroup来限制某些进程组的资源使用,以确保系统资源的公平分配和有效使用。1.2、cgroup四大功能资源限制(ResourceLimiting)

内核模块(编译方法)

目录一、向内核添加新功能1.1静态加载法:1.2动态加载法:a、新功能源码与Linux内核源码在同一目录结构下时b、新功能源码与Linux内核源码不在同一目录结构下时c、主机ubuntu下使用ko文件d、开发板Linux下使用ko文件二、内核模块基础代码解析Linux内核的插件机制——内核模块三、内核模块的多源文件编程四、内核模块信息宏一、向内核添加新功能1.1静态加载法:即新功能源码与内核其它代码一起编译进uImage文件内1.新功能源码与Linux内核源码在同一目录结构下  在linux-3.14/driver/char/目录下编写myhello.c,文件内容如下:#include#inc

PVE7.3 切换内核版本

目录 一、前言:二、更新步骤:1、首先更换LXC为国内源2、更新PVE内核:三、问题:四、解决方法:1、查看服务器启动内核的顺序2、查找我们需要的信息3、具体修改方法:一、前言:     今天将PVE从7.2更新到了7.3,顺便想更新了下内核版本,但参考了各种文章后都无法正确升级内核版本。最后无意间发现PVE下/etc/default/grub.d/proxmox-kernel-pin.cfg中也有内核版本配置项,自己测试了下,还真成功了。怕忘记,记录下。二、PVE7.2之前的更新步骤:1、首先更换LXC为国内源//(非常好用)更换PVE7软件仓库源和CT模板(LXC)源为国内源更换PVE7软

PVE7.3 切换内核版本

目录 一、前言:二、更新步骤:1、首先更换LXC为国内源2、更新PVE内核:三、问题:四、解决方法:1、查看服务器启动内核的顺序2、查找我们需要的信息3、具体修改方法:一、前言:     今天将PVE从7.2更新到了7.3,顺便想更新了下内核版本,但参考了各种文章后都无法正确升级内核版本。最后无意间发现PVE下/etc/default/grub.d/proxmox-kernel-pin.cfg中也有内核版本配置项,自己测试了下,还真成功了。怕忘记,记录下。二、PVE7.2之前的更新步骤:1、首先更换LXC为国内源//(非常好用)更换PVE7软件仓库源和CT模板(LXC)源为国内源更换PVE7软

(三)内核移植--从零开始自制linux掌上电脑(F1C200S)<嵌入式项目>

目录一、bootloader、kernel、rootfs联系二、内核移植1.内核源码获取2.内核配置与编译🍍基础配置与编译🍍TF卡分区🍍内核烧录三、参考内容一、bootloader、kernel、rootfs联系kernel可以理解为一个庞大的裸机程序,和uboot以及其他比如点灯类似的裸机程序没有本质区别,只是kernel分为用户态和内核态,内存和设备操作与裸机程序不同。kernel是最底层,负责各种外设硬件的驱动,kernel类似于黑盒子,从外面只能看到接口,无法看到具体功能是如何实现的,内核初始化提供的接口后,将控制权通过init程序交给根文件系统。详见:一文讲解Linux内核中根文件系

内核源码中版本号详解(KERNEL_VERSION & KERNEL_VERSION)

1、内核源码中版本的定义VERSION=2 #主版本号PATCHLEVEL=6 #主版本号SUBLEVEL=35 #更次的版本号EXTRAVERSION=.7 #更更次的版本号NAME=Yokohama(1)内核的版本信息定义在内核源码顶层Makefile的开头;(2)内核的版本号是分级的,分为主版本号、次版本号、更次的版本号······,越靠后的版本号代表内核的改变越小;2、version.h文件#defineLINUX_VERSION_CODE132643#defineKERNEL_VERSION(a,b,c)(((a)16)+((b)8)+(c))(1)version.h在include

arm64内核内存布局-之vmemmap(page初始化)

        vmemmap是内核中page数据的虚拟地址。针对sparse内存模型。内核申请page获取的page地址从此开始。SPARSEMEM原理:section的概念:SPARSEMEM内存模型引入了section的概念,可以简单将它理解为structpage的集合(数组)。内核使用structmem_section去描述section,定义如下:structmem_section{unsignedlongsection_mem_map;/*Seedeclarationofsimilarfieldinstructzone*/unsignedlong*pageblock_flags;}

嵌入式内核及驱动开发高级

一、起源仅devfs,导致开发不方便以及一些功能难以支持:热插拔不支持一些针对所有设备的统一操作(如电源管理)不能自动mknod用户查看不了设备信息设备信息硬编码,导致驱动代码通用性差,即没有分离设备和驱动二、新方案uevent机制:sysfs+uevent+udevd(上层app)2.1sysfs:一种用内存模拟的文件系统,系统启动时mount到/sys目录sysfs用途:(类似于windows的设备管理器)建立系统中总线、驱动、设备三者之间的桥梁向用户空间展示内核中各种设备的拓扑图提供给用户空间对设备获取信息和操作的接口,部分取代ioctl功能sysfs在内核中的组成要素在用户空间/sys

如何测试Linux内核

如何测试Linux内核概述在本文中,我们将讨论用于测试Linux内核的各种框架和工具。首先,我们将介绍LTP(LinuxTestProject)项目。然后,我们将讨论其他测试工具和框架。最后,我们将讨论我们无法使用常规内核测试工具测试的新Linux驱动程序的测试。本文将持续更新,最新版本参见https://www.cnblogs.com/testing-/p/17579543.html。LTP网址:https://github.com/linux-test-project/ltpLTP是自动化工具的开源集合,我们可以用它来创建构建流程、执行自动化测试和调试Linux内核。LTP项目由IBM、C

Linux内核编译很简单,六步编译一个自己的内核

在前面文章中我们反复提到过Linux内核,知道Linux内核才是Linux操作系统最为核心的内容。内核实现了对硬件的管理,为应用软件提供了使用硬件的接口。对于Linux开发人员而言,内核的学习和开发才是终极目标。因此我们今天先介绍一下内核的编译。需要知道的是,Linux内核的编译和安装并非想象的那么难,那么复杂,其实只需要几条命令就可以搞定。本文,我们将一步一步地介绍如何从源代码编译和安装一个Linux内核。需要注意的是本指导基于Ubuntu18.04版本编译安装,其它发行版可能会有差异。编译一个Linux内核整个内核编译的过程非常简单,但是内核编译需要花费比较长的时间。这主要是因为内核的代码