栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

OpenEuler

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenEuler

实验一:

配置yum更新源


cd /etc/yum.repos.d/

[base]

name=EulerOS-2.0SP8 base

baseurl=http://mirrors.huaweicloud.com/euler/2.8/os/aarch64/

enabled=1

gpgcheck=1

gpgkey=http://mirrors.huaweicloud.com/euler/2.8/os/RPM-GPG-KEY-EulerOS

[base]

name=openEuler20.03LTS

baseurl=https://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/

enabled=1

gpgcheck=0

任务1:

yum makecache 更新yum源

备份

sz  boot_origin.tgz 将备份文件发送到本地

旧版本

将系统盘备份

下载内核源码zip包

登录 - Gitee.com

安装依赖的组件

yum install elfutils-libelf-devel
yum install openssl-devel
yum install bc

yum install ncurses-devel

开始编译

编译成功

make modules_install安装模块,大概两分钟。

make install 安装内核

……

任务2:

内核模块编程
Linux 提供了一种动态加载内核的机制,这种机制称为模块(Module)。
内核模块是具有独立功能的程序。
它可以被单独编译,但是不能单独运行,它的运行必须被链接到内核作为内核的一部分在内核空间中运行。
模块具有一下特点:
1) 模块本身不被编译入内核映像,从而控制了内核的大小;
2) 模块一旦被加载,它就和内核中的其它部分完全一样。

编写hello.c程序和相应的Makefile

Makefile如下

make

查看编译后的文件目录结构

加载模块 sudo insmod hello.ko

使用命令 lsmod 查看模块是否被加载 如下:

查看加载内容 sudo dmesg | tail -n 2   (可以看到打印的信息)

卸载hello模块 rmmod hello

查看卸载内容 dmesg | tail -n 1

实验二:

任务一:

  1. 使用 kmalloc 分配 1KB,8KB的内存,打印指针地址;
  2. 查看已分配的内存,根据机器是32位或64位的情况,分析地址落在的区域。

kmalloc()函数:

在设备驱动程序或者内核模块中动态分配内存

分配成功时,返回分配的虚拟地址;分配失败时,返回NULL。

1.创建一个kmalloc-module目录

编写kmalloc.c 与 Makefile

编译 make

加载模块 insmod kmalloc.ko

使用命令 lsmod 查看模块加载内容 如下:

卸载模块 查看日志

查看系统配置页面的大小 4KB

kmallocmem1 addr = ffff97a3c51dc000

kmallocmem2 addr = ffff97a3d65ae000

用户内存空间地址是从0000000000000000起始到00ffffffffffffff结束,其余内存地址均属于内核内存空间,kmalloc 分配的内存地址,位于内核空间。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/679423.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号