1-内核开发环境ubuntu+virtualbox+mobaXterm搭建

news/2024/5/19 21:53:48
内核开发环境 ubuntu+virtualbox+mobaXterm搭建

目录

内核开发环境 ubuntu+virtualbox+mobaXterm搭建

1.virtualbox 安装

2.ubuntu 安装

3.网络设置

4.虚拟机安装ssh 服务,更新ubuntu 源安装基本软件

5.mobaXterm 个人免费版本安装

6.总结


本课程教程从0-1开始教你如何入门Linux内核模块开发

课程名称:Linux内核开发入门


课程简介:
Linux内核开发入门是一门旨在帮助学习者从最基本的知识开始学习Linux内核开发的入门课程。该课程旨在为对Linux内核开发感兴趣的初学者提供一个扎实的基础,让他们能够理解和参与到Linux内核的开发过程中。

课程特点:
1. 入门级别:该课程专注于为初学者提供Linux内核开发的入门知识。无论你是否具有编程或操作系统的背景,该课程都将从最基本的概念和技术开始,逐步引导学习者深入了解Linux内核开发的核心原理。

2. 系统化学习:课程内容经过系统化的安排,涵盖了Linux内核的基础知识、内核模块编程、设备驱动程序开发等关键主题。学习者将逐步了解Linux内核的结构、功能和工作原理,并学习如何编写和调试内核模块和设备驱动程序。

3. 实践导向:该课程强调实践,通过丰富的实例和编程练习,帮助学习者将理论知识应用到实际的Linux内核开发中。学习者将有机会编写简单的内核模块和设备驱动程序,并通过实际的测试和调试来加深对Linux内核开发的理解。

4. 配套资源:为了帮助学习者更好地掌握课程内容,该课程提供了丰富的配套资源,包括教学文档、示例代码、实验指导和参考资料等。学习者可以根据自己的学习进度和需求,灵活地利用这些资源进行学习和实践。

无论你是计算机科学专业的学生、软件工程师还是对Linux内核开发感兴趣的爱好者,Linux内核开发入门课程都将为你提供一个扎实的学习平台,帮助你掌握Linux内核开发的基础知识,为进一步深入研究和应用Linux内核打下坚实的基础。

本章是课程的第一课,首先我们先进行环境安装吧。这门课程目前选择的开发宿主机为 Window 10.其他Linux ,Mac OS环境切换过去理论也不是很困难。

1.virtualbox 安装

到官方网站下载 获取最新版本的安装包,假设在环境windwos 进行实验

官方下载地址:https://download.virtualbox.org

安装包直接下载地址:https://download.virtualbox.org/virtualbox/7.0.12/VirtualBox-7.0.12-159484-Win.exe

下载后,直接下一步安装即可。

2.ubuntu 安装

这里推荐到清华tuna镜像网站上下载 ,下载速度会快很多(当然你也可以选择其他国内大学,企业资源镜像网站进行下载)

官方地址:https://mirrors.tuna.tsinghua.edu.cn/

选择20.04.1-Ubuntu 安装包 ,进入左侧:常用发行版 iso 和应用工具安装包直接下载。获取下载链接:

  • https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/focal/ubuntu-20.04.6-desktop-amd64.iso

这个版本的进行下载。下载后,保存到本地 ubuntu-20.04.6-desktop-amd64.iso。

开始进行Ubuntu 安装。具体步骤如下图。

新建虚拟机叫ubuntu ,保存目录:D:\ProgramData\testvm\ubuntu\

进入专家模式,硬盘选择20g,内存2g即可

然后选择设置,设置到加载当前下载的虚拟镜像iso 文件

选择后保存设置。

然后在virutalbox 主界面点击刚才创建的虚拟机 ubuntu ,右键---启动---正常启动,就进入安装环节了。

选择 install 模式

选择安装的时候,不进行“download updates while installing Ubuntu” 更新,这样安装会更快

中途会让你设置用户名,密码,设置好后,就进入漫长的安装环境,等待即可

等待安装完成,然后安装提示进行重启

重启后,一般进入系统页面,如果发现进入的还是安装界面,需要先卸载掉安装媒介。然后重启虚拟机就会进入系统。

进入页面后,打开terminal应用,输入ping www.baidu.com 看虚拟机是否可以连接外网?

显示当前是可以连接外网的。检查当前virtual box 网络设置模式,当前只设置了网卡1,并且模式是网络地址转换NAT 模式。

当前采用的完全是virtualbox 为我们进行默认设置。

检测下宿主windows机器 ip 与虚拟机IP 地址

执行ping 看宿主机是否可以ping 虚拟机

C:\Users\Administrator>ping 10.0.2.15正在 Ping 10.0.2.15 具有 32 字节的数据:
请求超时。

发现ping 不通,这会给后面的mobaXterm 配置ssh 连接虚拟机带来问题。直接在virtualbox 虚拟机页面操作命令没有通过 ssh 方式的方便,所以我们要解决这个问题,详细看下面一节。

3.网络设置

首先virtual box 对于虚拟机网络设置位两个网卡模式,具体设置如下图

这里我们启用了网卡2,并且设置连接方式为:仅主机( Host-Only) 网络。

设置后保存再次启动ubuntu 虚拟机,查看虚拟机 网络ip 信息,发现另外一个网卡 enp0s3 已经获取到ip 地址信息 192.168.56.102

这里我们在宿主windows 机器上执行ping 192.168.56.102 就可以发现可以ping 通了。

记录此IP地址 192.168.56.102 后面配置ssh 使用

4.虚拟机安装ssh 服务,更新ubuntu 源安装基本软件
sudo apt update
sudo apt list --upgradable
sudo apt install net-tools
sudo apt install vim
sudo apt-get install openssh-server

最后一个是安装ssh server的,安装后,我们先检测ssh 服务是否启动

sudo systemctl status sshd 

命令查看 OpenSSH 服务端的状态 。输出:active running 可知 OpenSSH 服务端已经在运行

5.mobaXterm 个人免费版本安装

进入官网:MobaXterm free 下载mobaXterm。

选择 home edition   https://mobaxterm.mobatek.net/download-home-edition.html

下载,这时候可以选择     Download MobaXterm Home Edition (current version)

选择:Portable edition ,这样解压到本地磁盘就可以使用。当然你也可以选择installer edition 执行安装后在使用,但是我觉得完全没有必要。

安装好后,就是配置

创建New session  session 选择ssh 名称可以自定义,host填写ubuntu 安装自动获取的ip 地址。port 选择输入 22 ,然后点击保存,保存好之后,双击左侧的quick connect 对应的session ,就可以进入虚拟机(前提是你的virutal box 对应的虚拟机目前是开启的状态

保存好后,双击此虚拟机的 session,进入登陆 

输入用户名,密码,即可登记ubuntu 机器了。

自此,我们的 Virtualbox + Ubuntu + mobaXter 开发环境已经配置好, 可以进行后续内核课程的学习开发。

6.总结

有了这个环境后,我们就可以进行开发了,当前已经配置好ssh 服务功能,相关命令的复制,copy 比直接操作virtualbox虚拟机界面方便多。

接下来就进行内核开发入门课程。


http://www.mrgr.cn/p/35175005

相关文章

循环队列的程序接口

循环队列的程序接口 目录循环队列的程序接口队列的说明队列循环队列入队、出队头文件创建队空、队满的判断入队出队验证 队列的说明 队列循环队列入队、出队头文件 /********************************************************************* file name: 循环队列的接口* author…

notepad++ 安装compare文件对比插件失败解决办法

1.首先notepad++ 安装compare方法: 在菜单栏点击“插件”》插件管理 搜索:compare 点击YES 因为国内网络原因,可能会安装失败,也可能安装比较久。 2.自己解压安装:下载解压包: 链接:https://pan.baidu.com/s/1B8hZJCJ8PLZgwdYzQeWGpQ提取码:7n2s点击打开插件目录: 目…

mybatisplus乐观锁(单个任务)

乐观锁:在关系数据库管理系统里,乐观并发控制(又名“乐观锁”,Optimistic Concurrency Control,缩写“OCC”)是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事…

dotnet 8 版本与银河麒麟V10和UOS系统的 glib 兼容性

刚刚好 dotnet 8 的 glib 版本足够旧,可以运行本文记录于 2024.04.26 如果你阅读本文时间距离本文记录时间过远,可能本文记录的信息已失效 dotnet 根据 dotnet 的 supported-os 文档记录,当前的 dotnet 8 是 8.0.4 版本,官方说明是支持 Debian 11 及以上版本 实际测试可以在…

dotnet C# 简单的追加文件夹到 ZipArchive 压缩文件的方法

本文将告诉大家一个在 ZipArchive 里追加文件夹,以及添加过滤文件处理的压缩文件辅助方法实现的方法的代码如下/// <summary>/// 追加文件夹到压缩文件里面/// </summary>/// <param name="archive"></param>/// <param name="sour…

postgresql中视图建立,字段拼接,同一个表的多行之间的多个字段相减

首先表是这样的 CREATE TABLE public.tb_realtime_data (s_id varchar(48) NOT NULL,sensor_name varchar(48) NULL,sensor_index_code varchar(48) NULL,sensor_value numeric(20,10) NULL,statistics_status int4 NULL,alarm_time timestamp NOT NULL,create_time timestamp …

【C++】:构造函数和析构函数

目录 前言一&#xff0c;构造函数1.1 什么是构造函数1.2 构造函数的特性1.3 总结 二&#xff0c;析构函数2.1 什么是析构函数2.2 析构函数的特性2.3 总结 前言 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何…

【线性代数 C++】求逆矩阵

对于 n n n阶矩阵 A A A&#xff0c;如果有 n n n阶矩阵 B B B&#xff0c;使 A B B A E ABBAE ABBAE&#xff0c;则说 A A A是可逆的&#xff0c;并把 B B B称为 A A A的逆矩阵. A A A的逆矩阵记作 A − 1 A^{-1} A−1&#xff0c;则 B A − 1 BA^{-1} BA−1.若 ∣ A ∣ ≠…

“一个有趣的C语言代码”分析

“一个有趣的C语言代码” 一个有趣的C语言代码-流浪的海豚-ChinaUnix博客 #include <stdio.h> int print() {printf("hello world!\n");return 0; } int main(void) {long base[0];long* result base3;*(result1) *result;*result (long)print;return 0; …

【韩国】UE5的MetaHuman确实可以导入Blender进行编辑。

UE5的MetaHuman确实可以导入Blender进行编辑。根据网络上的信息&#xff0c;你可以将MetaHuman模型导出为FBX文件&#xff0c;然后在Blender中进行修改。修改完成后&#xff0c;你可以将其重新导入到Unreal Engine 5中4。请注意&#xff0c;当你在Blender中编辑模型时&#xff…

SQLAlchemy中filter()和filter_by()有什么区别

1.filter用类名.属性名,比较用==,filter_by直接用属性名,比较用= 2.filter不支持组合查询,只能连续调用filter来变相实现。 session.query(Dashboard) .filter(Dashboard.id.in_(dashboard_ids_int)).all() dashboard = ( db.session.query(Dashboard) .filter_by(id=dashb…

一次违法网站的渗透经历

0x01 前言 在一次攻防演练中&#xff0c;我发现了一个有趣的渗透路径。在信息收集阶段&#xff0c;我注意到目标网站和用户资产网站共享相同的IP网段。这意味着它们可能在同一台服务器上托管&#xff0c;或者至少由同一家互联网服务提供商管理。这种情况为我们的渗透测试提供了…

AI容器化部署开发尝试 (一)(Pycharm连接docker,并部署django测试)

目标&#xff1a;使用容器化技术快速部署AI应用进行开发。 注意&#xff1a;从 Docker 19.03 开始&#xff0c;Docker 引入了对 NVIDIA GPU 的原生支持&#xff0c;因此若AI要调用GPU算力的话docker版本也是有要求的&#xff0c;后面博客测试。 当然本篇博客还没设计到GPU的调…

IIR滤波器的设计与实现(内含设计IIR滤波器的高效方法)

写在前面&#xff1a;初学者学习这部分内容&#xff0c;要直接上手写代码可能会感到比较困难&#xff0c;我这里推荐一种高效快速的设计IIR,FIR滤波器的方法——MATLAB工具箱&#xff1a;filterDesigner。打开的方法很简单&#xff0c;就是在命令行键入&#xff1a;filterDesig…

客户端连接ZK失败处理方案

文章目录 背景介绍报错信息处理方案第一步、查看zookeeper启动是否正常第二步、检查本地网络是否正常第三步、检查本地JDK版本 对于zookeeper服务注册中心&#xff0c;在前期【 Dubbo框架注册中心-Zookeeper搭建】博客中有环境搭建部署介绍&#xff0c;感兴趣可以参考安装。 背…

Hive架构原理

Hive Hive 的架构是设计用于在大数据环境下进行数据仓库操作和分析的系统。它建立在 Hadoop 生态系统之上&#xff0c;利用 Hadoop 的存储&#xff08;HDFS&#xff09;和计算&#xff08;MapReduce、Tez、Spark 等&#xff09;能力。 1. 元数据存储&#xff08;Metastore&am…

如何从0到1设计诊断系统

诊断系统设计主要涵盖了诊断方案设计、诊断需求定义和诊断数据库开发。本文会逐一介绍这些环节,以便更好地理解和把握诊断系统设计的全貌。引言在整车电子电气体系中,诊断系统的设计扮演着至关重要的角色,负责支持整车的刷写、故障排查和EOL(End of Line)等关键操作。这一重…

springboot实现https双向认证

1.生成证书#生成服务端密钥文件localhost.jks keytool -genkey -alias xdd-server -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -keystore xdd-server.jks -dname CN=pero,OU=pero,O=pero,L=sz,ST=gd,C=cn -validity 3650 -storepass xxx-password-xxx -keypass xxx-pass…

JDK源码分析-Vector

概述 Vector 是 Java集合中线程安全的动态数组,它也可以根据需要进行扩容和缩容,与 ArrayList 类似。但有一个重要的区别,Vector 是同步的,也就是它的操作是线程安全的,在某些特定场景下是可以保证线程安全的,但同时也会带来性能损耗,因此在单线程环境通常还是推荐使用 …

(windows ssh) windows开启ssh服务,并通过ssh登录该win主机

☆ 问题描述 想要通过ssh访问win主句 ★ 解决方案 安装ssh服务 打开服务 如果这里开不来就“打开服务”&#xff0c;找到下面两个开启服务 然后可以尝试ssh链接&#xff0c;注意&#xff0c;账号密码&#xff0c;账号是这个&#xff1a; 密码是这个 同理&#xff0c;如果…