UCOSii和Linux的比较 想通过UCOSii来理解Linux的系统架构,故参考一些资料,简单整理了一下UCOSii和Linux的区别和联系,以此来更好的学习Linux。 其具体对比如下: 【OS定义】 1.用户和计算机的接口;2.也
转载
2024-10-20 19:39:57
46阅读
1,查看 CPU 是否支持虚拟机:egrep 'vmx|svm' /proc/cpuinfo如果看到有输出结果,即证明 cpu 支持虚拟化。 2,安装 kvm 内核在 centos7.3 版本中,默认 yum 源安装的 QEMU 为 1.5 版本,此版本较低,无法启动KVM 虚拟机,因此需要升级 QEMU 版本到 2.6。下面是先安装一个 QEMU 的 yum源,然后进行KVM 内核模板
转载
2023-07-12 20:40:38
173阅读
KVM 是业界最为流行的 Hypervisor,全称是 Kernel-based Virtual Machine。它是作为 Linux kernel 中的一个内核模块而存在,模块名为 kvm.ko,也可以看作是一个进程,被内核调度并管理,从 Linux 2.6.20 版本开始被完全正式加入到内核的主干开发和正式发布代码中。 KVM 主要用于管理 CPU 和内存的虚拟化,IO 设备的虚拟化则是由 Q
转载
2024-03-13 11:01:56
44阅读
1、编译进内核的模块如果需要将一个模块配置进内核,需要在makefile中进行配置:
obj-y += foo.o2、编译可加载的模块所有在配置文件中标记为-m的模块将被编译成可加载模块.ko文件。
如果需要将一个模块配置为可加载模块,需要在makefile中进行配置:
obj-m += foo.o3、模块编译依赖多个文件通常的,驱动开发者也会将单独编译自己开发的驱动模块,当一个驱动模块依赖多个源
转载
2024-03-16 00:06:27
145阅读
操作系统内核设计一直分为两个阵营:单内核和微内核(性能和灵活性)单内核(也叫宏内核)是指整个内核从整体上作为一个单独的大过程来实现,并且同时运行在一个独立的地址空间内。所有的内核服务都在这样的一个大的内核空间运行,内核之间的通信可以简单的实现为函数调用。如果使用单内核设计,每次对内核做出修改,都必须重新编译源代码,重新生成二进制文件。(简单高效,灵活性差)微内核:功能被划分为多个独立的过程,每一个
二、KVM 内存性能调优 我们说完CPU方面的优化,接着我们继续第二块内容,也就是内存方面的优化。内存方面有以下四个方向去着手: 1. EPT 技术 2. 大页和透明大页 3. KSM 技术
转载
2024-03-13 20:38:57
121阅读
引入github:MMKV——基于 mmap 的高性能通用 key-value 组件 MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Win32 / POSIX 平台,一并开源。MMKV 源起 在
转载
2024-08-26 14:54:27
59阅读
当前系统环境:CentOS Linux release 7.2.1511 (Core)在说kvm模块单独编译之前,难免设计到linux内核模板的编写,所以这里也稍微提一下。1linux内核模块环境搭建 这里有2种方法:1.1 升级内核:升级当前系统的kernel,具体编译步骤这里不再详细说明,简单表述一下:如果想在当前的linux系统上面,不用修改配置文件来编译内核,就将/boot/config-
转载
2024-05-06 15:58:20
43阅读
KVM架构KVM(Kernel-based Virtual Machine)包含一个为处理器提供底层虚拟化、可加载的核心 模块kvm.ko(kvm-intel.ko或kvm-amd.ko),使用QEMU(QEMU-KVM)作为虚拟机上层 控制工具。KVM无需改变Linux或Windows系统就能运行。KVM就是内核的一个模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就 是一个普通的
转载
2023-12-12 18:49:08
0阅读
linux内核:单内核+内核模块内核/boot/vmlinuz-version模块/lib/modules/version/....ko用户访问监控内核:/proc /sys/proc/sys/可用来改变内核运行参数echo "gentoo" > /proc/sys/kernel/hostnamesysctl -w kernel.hostname="gentoo"立即生效,不能永久有效/et
原创
2016-11-09 20:55:41
1396阅读
一、Linux内核模块简介1. 何为内核模块在上一篇博文中我们先通过内核配置,在配置的过程中我们对内核的组件进行了选择(当然这个选择决定了我们内核的大小),然后才生成了我们最终的内核,那么我们如果想添加组件,怎么办?最笨的方法是对内核进行重新配置,然后在重新编译。这样的话岂不是说我加一个组件就得重新编译内核,这显然不是很科学的方法,其实我们的linux内核提供在运行时可进行扩展的特性
转载
2024-05-04 14:15:41
97阅读
1.二分法与printk() AB之间有个bug,在AB之间找个中间点C,使用printk,查看bug在AC还是CB。以此类推。其中printk(“__func__”) 设定printk的级别,八个级别分别是从1--8,其中1基本最高,只打印系统可能崩溃的信息。我们可以使用命令echo 8 > /proc/kernel/printk;可以打印
转载
2023-07-03 22:47:32
90阅读
问题 linux内核模块,装载的时候经常遇到 “could not insert module *.ko: Invalid module format”情况,此时通过dmesg查看会报错误信息,“disagrees about version of symbol module_layout”。 在某业务环境遇到内核版本号为3.10.0.x86_64
转载
2024-09-21 09:38:36
137阅读
一 安装KVM环境:Centos7.3首先检查自己服务器或者虚拟机CPU是否支持 egrep '(vmx|svm)' /proc/cpuinfo 安装阿里云镜像站 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 安装KVM yum inst
模块编程属于内核编程,因此,除了对内核相关知识有所了解外,还需要了解与模块相关的知识。1.应用程序与内核模块的比较为了加深对内核模块的了解,表一给出应用程序与内核模块程序的比较。表一 应用程序与内核模块程序的比较 C语言应用程序内核模块程序使用函数Libc库内核函数运行空间用户空间内核空间运行权限普通用户超级用户入口函数main()module_init()出口函数exit()modul
转载
2024-04-23 15:56:40
54阅读
内核模块的makefile 在makefile中的命令,必须要以[Tab]键开始1. 内核模块的Makefile若要编译hello的内核模块,最简单的方法就是要编写如下内容的Makefile(若对Makefile比较陌生,请参考Linux开发基础讲义):---------------------------------------------------------
转载
2024-04-24 10:36:43
168阅读
背景由于调试内核或者由于分区大小限制,有时候内核组件不一定完全需要编进内核中。
所以,在开发中经常将内核组件编译成为模块,等到在恰当的时机加载。概览Linux内核模块的编译方法有两种:1.放入linux内核源码中编译。
2.独立编译模块。放入Linux内核源码中编译首先需要了解Kconfig和Makefile的作用Kconfig:对应内核模块的配置菜单。
Makefile:对应内核模块的编译选项。
转载
2023-08-04 16:54:34
479阅读
我安装Ubuntu的时候是没有安装源码的,在没有安装源码前 /usr/src/ 目录下是只有两个包含内核的头文件的文件夹的: 我的内核版本是: 所以接下来就是先安装内核源码: 执行后,/usr/src / 目录就多了两个文件夹: 这样源码就下载下来了,然后将源码解压: 解压之后 /usr/src/linux-3.
转载
2023-08-01 13:24:48
575阅读
0 内核全局符号只有使用了EXPORT_SYMBOL导出的才能被模块通过内核头文件引用;否则会提示:undefined symbol,此时只能通过查看地址强转的方式引用,但是失去了可移植性;如果某些全局变量使用的是EXPORT_SYMBOL_GPL导出的,必须在内核模块中用MODULE_LICENSE("GPL");申明方可使用,否则会出现提示:unsigned symbol find_vpid(
转载
2024-05-16 21:33:08
117阅读
编译android源码时并不会自动编译android内核,因此需要手动编译这部分代码。编译内核所用的时间比编译android源码要少得多,只需一会就编译完成。1、确定内核版本 进入存放android内核源码的kernel目录,我下载了common.git与goldfish.git,以goldfish为例,进入goldfish目录,在命令行输入以下命令,显示所有分支及当前所在的分支:$git br
转载
2023-11-21 17:17:35
249阅读