Ubuntu 基本操作-嵌入式 Linux 入门

在 Ubuntu 基本操作 里面基本就分为两部分:

  1. 安装 VMware 运行 Ubuntu
  2. 熟悉 Ubuntu 的各种操作、命令

如果你对 Ubuntu 比较熟悉的话,安装完 VMware 运行 Ubuntu 之后就可以来学习下一章节了。

1. 安装 VMware 运行 Ubuntu

我们首先来看看怎么去安装 VMware 来运行 Ubuntu,为什么要做这些事情,我们先讲清楚原因。

一般来说我们都是在 windows 电脑上面来操作,然后你可以通过网络去访问一个服务器(linux 服务器),做 linux 开发的时候,为什么一定要用 linux 服务器,在 linux 服务器里面,你可以去编译 u-boot,可以去编译内核,可以去编译应用程序或者各种驱动程序,那么为什么这些操作必须放在 linux 服务器里面呢,为什么不能够在 windows 里面操作呢,就比如说在 linux 里面有一些链接文件,那对于 windows 来说,它根本就不支持 linux 里面的链接文件的文件格式,也不支持 Linux 里面的设备节点,所以很多的时候这种工作必须在 Linux 里面来做。

那么我们作为一个学习者,我们并没有 Linux 服务器,那怎么办?我们可以在 windows 里面来安装一个虚拟机 VMware,这个是虚拟机,它可以模拟出一台电脑,在这台模拟出来的电脑上面安装 Ubuntu,Ubuntu 是一个 Linux 系统,跟 windows 是并列的关系,我们在这台虚拟的电脑上面来运行 Ubuntu,以后在这个 Ubuntu 里面来编译 u-boot 内核、应用程序和驱动程序。

所以我们第一步干嘛呢,安装 VMware;第二步,使用 VMware 来打开 Ubuntu。

1.1 安装 VMware

首先从 VMware 官网(www.vmware.com)下载 Workstation Player 安装包,或者使用我们提供的安装包。(在 <开发板配套资料> 01_100ask_stm32mp157_pro_2022.08\02_开发工具\【Windows】VMwareWorkstation 安装包安装包中,VMWare 安装软件是:VMware-workstation-full-16.2.3-19376536.exe,一路点击安装)

VMWare 安装完成后,有两个软件,它们都可以使用,建议使用第 2 个:
① Vmware Workstation Pro:这是收费的,可以试用 30 天。
② Vmware Workstation 16 Player:这是免费的。
注意:本文是在 Windows 10 上安装 VMware。

1.2 安装 Ubuntu

在 <开发板配套资料> 中,有 Ubuntu 映像文件。(01_100ask_stm32mp157_pro_2022.08\02_开发工具\100ask-vmware_ubuntu18.04)在某个磁盘分区里解压文件,这个分区最好有 200G 的空闲空间。

1.3 使用 VMware 运行 Ubuntu

  1. 启动 Vmware Workstation 16 player,这个 player 是不需要注册号的,是可以免费使用。
  2. 点击打开虚拟机,打开 D:\ubuntu18.04\ubuntu18.04_x64.vmx
  3. 点击获取所有权,点击启动按钮就可以打开虚拟机了,我已复制该虚拟机。

这个软件模拟出来一台电脑,这个电脑上面去运行这个 Ubuntu,用户名密码是 123456,在里面你就可以像操作 windows 一样来操作 Ubuntu 了。

你不想再使用这个 Ubuntu 了之后,你可以点击关闭按钮关机,你也可以点击停止按钮挂起,确定。挂起之后,以后你再次打开这个虚拟机的时候,选中它,点击播放虚拟机,它就会恢复之前被挂起的状态。

如果你对 Linux 系统还不熟悉,对 Ubuntu 操作还不熟悉,那么你就需要去看第二篇里面的后续内容,可以看文档,也可以看视频。如果你已经熟悉了 Linux 的操作,那么下一章节里面 <配置 VMware 使用双网卡> 这个一定要看,下一章节里面我们一开始还需要去配置 VMware 里面的网络。

2. Ubuntu 的基本操作

从现在开始我们来介绍一下 Ubuntu 的简单操作。我们首先介绍一下怎么去操作桌面,然后再去介绍一下使用各种命令。

2.1 Ubuntu 下打开终端

我们之前已经使用 VMware 打开了 Ubuntu。我们以后会使用到各种 Linux 命令,那么在哪里输入命令呢?

  1. 使用右键打开终端。你可以在桌面上点击右键 open terminal,打开终端,这时候你就可以在里面输入各种命令了,这所谓的终端跟 windows 里面的命令行是类似的,在 windows 里面我们同样可以打开所谓的命令行(快捷键 Ctrl + R),你同样可以在里面执行各种 dos 命令,比如 dir,你看在 windows 里面,你要列出这些目录的话,是 dir 命令,在 linux 里面是 ls 命令,有点差别。
  2. 用搜索框打开终端。我们现在回到 Ubuntu,你可以使用右键来打开终端,你也可以点击左下角,找到终端 terminal。
  3. 快捷键打开终端。我们还可以使用快捷键“Ctrl+Alt+T” 来打开终端。

以后我们将会在终端里面输入各种命令,但是这节我们先来体验一下桌面。

2.2 Ubuntu 系统初体验

其实 Ubuntu 发展到现在,它的桌面操作跟 windows 是非常的类似。但是

2.2.1 Ubuntu 和 Windows 的最大差别:目录

对于 Windows 我们可以打开此电脑,Windows 中每个盘符都对应某个分区,在这个分区里面你可以存放目录与文件,如图所示:
在这里插入图片描述
那这些盘符对于哪些分区呢,你可以打开创建并格式化硬盘分区工具,就可以看到左下方有磁盘,磁盘 0 里面前面是分区表,C 盘就对应这个磁盘里面的第一个分区,D 盘对应第二个分区,E 盘对应第三个分区;另外一个磁盘呢,你看这里有 J、K、I、L,从这里你可以看到每一个盘符都对应磁盘里面的某一个分区,Windows 这种表现方法非常的直观。但是对于 Ubuntu 呢,它就不大一样了,在 Ubuntu 里面我们可以打开文件浏览器,打开其他位置,computer,从这里你可以看到它里面有各种目录。

对于 Windows,你在此电脑里面看到的是各种盘符,但是在 Ubuntu 里面,刚才我们看到了在 computer 里面,你看到的是各种目录,你看不到任何的盘符。

好,回到 Windows,在 Windows 里面我们去访问某个文件的时候,你可以使用绝对路径。比如

C:\abc\def\hello.txt

从这个绝对路径我一下就可以知道:它位于 C 盘,它位于某一个分区里面。但是对于 Ubuntu 呢,在 Ubuntu 里面它没有盘符的概念,就比如说你想去访问某个文件的时候,比如

/abc/def/hello.txt

第一个斜杠表示它位于根目录,位于根目录下面的 abc 子目录,在 abc 子目录下面又有 def 子目录,在 df 下面有 hello.txt,从这个路径你看不出它位于哪一个分区。在 Ubuntu 中,以树状的结构表示文件夹与文件。

注意:
Windows 的绝对路径中,目录使用 “” 分隔。
Linux 的绝对路径中,目录使用 “/” 分隔。

以前在 Windows 有 C 盘、D 盘 和 E 盘,这是并列的关系;但是在 Ubuntu 里面,它是一个树状的关系。就比如说,地面上有一个树,它可以分叉,在叉里面又可以继续分叉,这就是所谓的根,这个根用斜杠来表示。我们来比划一下,在根下面有 abc 目录,还可以有其他目录,有 home 目录,有 bin 目录,有 boot 目录等等等等;在 abc 目录下面又可以有什么呢,有 def 目录,或者说还有其他目录,在 def 目录下面又有什么呢,有 hello.txt,那么我怎么找到这个 hello.txt,它就是根目录下面的 abc 子目录,abc 目录下面又有 def 目录,再下面有 hello 这个文件,这就是树状结构的意思。再比如说这 home 目录下面可能又有其他子目录,有 book 一个用户名,有其他用户名 xxx,在 book 下面又有某一个文件,那么你就可以这么访问:根目录下面找到 home 目录,找到 book 目录,在 book 目录下面你可能有一个 1.txt。

/abc/def/hello.txt
/home/book/1.txt

从这些绝对路径的表示方法里面,你看不到任何分区的信息。那么我怎么才能知道我这个文件处于哪个分区呢?那么你就可以打开 Disks 工具,从这里我们就可以看出来,我这 Ubuntu 里面只有一个磁盘,这个磁盘里面的第一个分区:

/dev/sda1
  • dev:设备
  • sd:表示磁盘
  • a:表示第一个磁盘
  • 1:表示这个磁盘里面的第一个分区

sda 这个磁盘的第一个分区,它挂载在根目录下面。

在这里插入图片描述

看到这里,我们又听到了一个新的概念叫挂载。就比如说对于 Windows,你可以认为 C 盘挂载了那个磁盘里面的第一个分区,D 盘挂载了那个磁盘里面第二个分区;对于 Ubuntu 呢,你看,对于这个磁盘里面的第一个分区,它作为根文件系统挂载就挂载在了根下面,以后你去访问这个根的时候,访问的就是这个分区,就比如说你在这个根下面创建了一个 hello.c,这个文件就会放在这个磁盘的第一个分区里。那同样道理,如果你想去访问根目录下面的 home,访问这个 book,你访问这个目录的时候,访问的也是这个磁盘的第一个分区。

我们再来看看这个磁盘的第二个分区挂载在哪里,你点击这个磁盘里面的第二个分区,你发现,这个磁盘 dev/sda 的第二个分区挂载在 boot 目录下面,也就是说我以后去访问根目录下面的 boot 目录,我去访问里面的文件的时候,这些文件位于这个磁盘的第二个分区,为什么呢?因为这个第二个分区挂载在 boot 目录下面。

从这里你可以看到它没有像 Windows 那么直接那么直观,在 Windows 里面我就知道了,我访问 C 盘访问的是第一个分区,我访问 D 盘访问的是第二个分区;但在 Linux 这里呢你得先确认一下第二个分区挂载在哪里,然后你才可以知道,我去访问这个挂载目录的时候,我访问的就是这个分区里面的文件。

我们再来看看,第三个分区这个不用管,这是交换分区,它并没有挂载在某一个目录下面。这里第四个分区挂载在 home 目录下面。我们现在又可以推翻前面说的话了,你刚才不是说我访问 home 目录的时候,也是去访问第一个分区吗,那现在不是了,我现在看完了整个分区的挂载信息之后才发现,第四个分区挂载在 home 目录下面,那么我以后去访问根目录下面的 home 目录的时候,我就访问里面的 book 目录,或者访问这个目录下面的直接有某一个文件的话,

/home/book
/home/1.txt

这些目录,这些文件它都是放在这个分区里面,因为这个分区挂载在 home 目录下面,你访问 home 目录下面的所有的文件夹,所有文件的时候都是去访问这个分区。

我们引入了这种分区挂载在某个目录的这么一个概念,那么自然就会引发另外一个问题,就比如说,我现在第一个分区 /dev/sda 表示某个磁盘,这个设备的第一个分区挂载在了 home 目录下面,我现在假设 /dev/sda 这个分区里面它本来就有 home 目录,home 目录下面我本来就有一个 1.txt,如果我没有去挂载其他分区的话,以后我去访问这个文件的时候,我访问的就是 /dev/sda 这个分区里面的文件,这是第一步。

那第二步呢,我又把 /dev/sda4 这个磁盘的第四个分区我挂载在 home 目录下面,一旦挂载成功之后,我以后访问这个 home 目录,我访问的就是 /dev/sda4 这个分区,那意味着这些之前的这些文件就不可见了。之前 sda1 的 home 目录不可见了,因为我把你的 home 目录挂载了另外一个分区,我以后访问这个 home 目录的时候,我访问的是这个第四个分区,不再访问你之前的第一个分区了。

实际上就我个人的习惯来说,我认为 Windows 里面的表现方法更加直观,更加方便。

我们现在来看看对于 Ubuntu 它的文件系统是怎么组织的呢?

  1. 对于 Windows 你可以打开 C 盘,它都有一些约定俗成的规则,你看里面有 program 目录,就表示说里面存放有 Windows 的应用程序,有用户目录表示里面存放的是各个用户的单独的数据,还有 Windows 目录里面存放的应该就是系统的驱动啊等等等等。
  2. 同样道理,对于 Ubuntu,对于 Linux 它也有一套规则。这套规则叫做循 FHS 标准(Filesystem Hierarchy Standard,文件系统层次标准)。它定义了文件系统中目录、文件分类存放的原则、定义了系统运行所需的最小文件、目录的集合,并列举了不遵循这些原则的例外情况及其原因。FHS 并不是一个强制的标准,但是大多的 Linux、Unix 发行版本遵循 FHS。

我们简单来看看在一个 Ubuntu 里面它有哪些文件。打开 Files->other Locations->computer,你可以看到这些目录它们有什么含义呢,我们来看一看。

首先,我们可以执行各种程序,这些程序放在哪里,放在 bin 目录下面,放在 sbin 目录下面。这些 bin 目录下面放的那些应用程序(命令)是所有用户都可以使用的;这个 sbin 呢,这个 s 就是系统的意思,在 sbin 目录下面放的是基本的系统命令,只有系统管理员才可以使用。总之,这两个目录里面存放的都是命令,或者说就是各种 app 了,只不过它们的权限不一样。那么对于其他无关紧要的应用程序呢,我们可以放在 usr 目录下的 bin 目录或者 usr 目录下面的 sbin 目录,注意了这个 usr 它并不是用户的意思,它是 Unix 软件资源,里面存放的是一些资源,这些资源并不是系统启动必须的资源,就比如说你甚至还可以在里面放游戏,放头文件,头文件根本不是系统启动必须的,游戏呢也根本就不是系统启动必须的。现在我们看到了,usr/bin 目录或者 usr/sbin 目录放的是非必需的 APP。

再来看看其他目录,这些应用程序它都用到库呀,那库放在哪里,根目录下面的 lib 目录可以存放库,usr 目录下面的 lib 目录也可以存放库。

咱们再从头往下看看,boot 目录下面一般来说放一些启动文件,就比如说内核呀等等等等;device 里面存放的是各种设备文件,这是 Linux 独有的,就比如说我们之前讲到了 dev/sda 表示第一个磁盘,dev/sda1 表示这个磁盘的第一个分区,这些文件就存放在 dev 目录下面,它们叫做设备文件,用来表示某些硬件的;还有 etc,是配置文件;home 是家目录,家目录下面有各种子目录,就比如说这个 book 子目录对应着 book 用户,跟 Windows 里面的这个用户目录是类似的,你看在 Windows 里面这个用户目录下面有各种用户,每一个文件夹对应一个用户,对于 Ubuntu,对 Linux 也是类似的,home 目录下面每一个文件夹对应一个用户。

其他的无关紧要,这里还有 proc、sys,这是一些默认的文件夹,在这些文件夹里面,你可以去挂载一些虚拟的文件系统,什么叫做虚拟的文件系统呢?我们在根目录下面挂载了这个磁盘的第一个分区,在 home 目录下面挂载了这个磁盘的第四个分区,它们对应真实的存储设备,但是对于这些 proc、sys 目录,它们挂载的是某一些虚拟的文件系统,对于这些虚拟的文件系统,它并没有真实的存储设备,你可以去访问这些目录,观察到内核的一些信息。就比如说这个 proc 目录,它存放的什么呢,存放的是 process 各个进程的一些信息,这进程的信息是内核帮你提供的,它并不保存在磁盘上,我们可以去看看

2.2.2 Linux 文件属性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/445224.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2.4_4 死锁的检测和解除

文章目录 2.4_4 死锁的检测和解除&#xff08;一&#xff09;死锁的检测&#xff08;二&#xff09;死锁的解除 总结 2.4_4 死锁的检测和解除 如果系统中既不采取预防死锁的措施&#xff0c;也不采取避免死锁的措施&#xff0c;系统就很可能发生死锁。在这种情况下&#xff0c;…

通过Annotation将用户操作记录到数据库表功能实现

一、背景 在用户对我们所开发的系统访问的时候&#xff0c;需要我们的系统具有强大的健壮性&#xff0c;使得给与用户的体验感十足。在业务开发的过程中&#xff0c;我们通过将几个相关的操作绑定成一个事件&#xff0c;使得安全性以及数据的前后一致性得到提高。但是在溯源方面…

Linux第74步_“设备树”下的LED驱动

使用新字符设备驱动的一般模板&#xff0c;以及设备树&#xff0c;驱动LED。 1、添加“stm32mp1_led”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&#xff0c;点击“linux”&#xff0c;点击“atk-mp1”&am…

三角形费马点及深入拓展

三角形费马点及深入拓展 一、费马点的定义 三角形内部满足到三个顶点距离之和最小的点&#xff0c;称为费马点。 二、费马点的证明 比较麻烦的一件事情是&#xff0c;当我们考虑一个三角形的费马点时&#xff0c;我们需要将三角形分为两类: ①三个内角均小于120的三角形 ②有…

【SQL】185. 部门工资前三高的所有员工(窗口函数dense_rank();区分rank()、row_number())

前述 推荐阅读&#xff1a;通俗易懂的学会&#xff1a;SQL窗口函数 题目描述 leetcode题目 185. 部门工资前三高的所有员工 思路 先按照departmentId分组&#xff0c;再按照salary排序 >窗口函数dense_rank() over() select B.name as Department,A.name as Employee,A…

Python 初步了解urllib库:网络请求的利器

目录 urllib库简介 request模块 parse模块 error模块 response模块 读取响应内容 获取响应状态码 获取响应头部信息 处理重定向 关闭响应 总结 在Python的众多库中&#xff0c;urllib库是一个专门用于处理网络请求的强大工具。urllib库提供了多种方法来打开和读取UR…

试用期自我总结报告10篇

试用期自我总结报告&#xff08;篇1&#xff09; 一转眼试用期的时间飞快就过去了&#xff0c;在这段时间里我学习到了很多&#xff0c;也把自己在过去学习的东西得已融会贯通。能够来到幼儿园里成为一名老师是我一直以来的目标&#xff0c;而我也终于完成了自己的目标&#x…

Springboot+vue的医院药品管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的医院药品管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09…

如何在RTMP推送端和RTMP播放端支持Enhanced RTMP H.265(HEVC)

技术背景 时隔多年&#xff0c;在Enhancing RTMP, FLV With Additional Video Codecs And HDR Support&#xff08;2023年7月31号正式发布&#xff09;官方规范出来之前&#xff0c;如果RTMP要支持H.265&#xff0c;大家约定俗成的做法是扩展flv协议&#xff0c;CDN厂商携手给…

React-Mock数据

1.概念 说明&#xff1a;React中使用Mock数据主要是为了模拟后端接口和数据&#xff0c;以便前端开发可以在没有实际后端支持的情况下进行。 2.实现步骤 2.1安装 npm i -D json-server 2.2准备json文件 {"list":[{"name":"李四","age&q…

【Python】进阶学习:OpenCV--一文详解cv2.namedWindow()

【Python】进阶学习&#xff1a;OpenCV–一文详解cv2.namedWindow() &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望…

编码器-解码器模型(Encoder-Decoder)

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 编码器-解码器模型简介 Encoder-Decoder算法是一种深度学习模型结构&#xff0c;广泛应用于自然语言处理&#xff08;NLP&#xff09;、图像处理…

mybatis-plus整合spring boot极速入门

使用mybatis-plus整合spring boot&#xff0c;接下来我来操作一番。 一&#xff0c;创建spring boot工程 勾选下面的选项 紧接着&#xff0c;还有springboot和依赖我们需要选。 这样我们就创建好了我们的spring boot&#xff0c;项目。 简化目录结构&#xff1a; 我们发现&a…

java中移位<< >> <<< |数据类型转换

移位 x64转换二进制&#xff1a;100 0000 左移2位 &#xff1a; 1000 0000 0 对应十进制 i 256 >>右移 <<左移 >>无符号位右移 关于右移一位相当于整除2 数据类型及其转换 基本数据类型&#xff0c;数据类型范围 byte(-128~127)&#xff08;-2^7~2…

unity学习(54)——选择角色界面--解析赋值服务器返回的信息1

1.decode这种照猫画虎的工作 把逆向出来UserHandler.cs中的内容&#xff0c;融到自建客户端的MessageManager.cs中&#xff1a; 2.此时登录账号&#xff0c;马上显示当前账号下已有三名角色&#xff1a; 此时返回数据包中的command的值是1&#xff1a; 3.当注册玩家数超过三名…

pytorch的理解

工具的查看与使用帮助 1. dir import torch torch.cuda.is_available()dir(torch) dir(torch.cuda) #可以看到有"is_available" 2. help help(torch.cuda.is_available)

python基础——条件判断和循环【if,while,for,range】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下条件判断语句if和循环语句while&#xff0c;for在python中需要注意的地方。 建议已有一定了解&#xff08;对语句的执行逻辑清楚&#xff09;的读者观看&#xff0c;如果对条件判断和循环的执行逻辑不太清楚&#xff0c;也可…

react实战——react旅游网

慕课网react实战 搭建项目问题1.按照官网在index.tsx中引入antd出错&#xff1f;2.typescript中如何使用react-router3.react-router3.1 V63.2 V53.3V6实现私有路由 4.函数式组件接收props参数时定义数据接口&#xff1f;5.使用TypeScript开发react项目&#xff1a;6.要使一个组…

【C++第四课-类和对象下】初始化列表、静态成员函数、静态成员变量、explicit关键字(隐式类型转换)、友元函数、友元类、内部类、编译器的常见优化

目录 再谈构造函数初始化列表初始化列表解决的问题&#xff1a;静态成员函数、成员变量explicit关键字 友元友元函数友元类 内部类编译器的常见优化&#xff08;了解&#xff09;优化1 再谈构造函数 初始化列表 有一些成员变量是无法在函数体内初始化的&#xff0c;eg&#x…

基于javaweb+springboot开发的城市地名地址信息管理系统设计和实现

基于javaweb(springboot)城市地名地址信息管理系统设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…