在 Ubuntu 基本操作 里面基本就分为两部分:
- 安装 VMware 运行 Ubuntu
- 熟悉 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
- 启动 Vmware Workstation 16 player,这个 player 是不需要注册号的,是可以免费使用。
- 点击打开虚拟机,打开 D:\ubuntu18.04\ubuntu18.04_x64.vmx
- 点击获取所有权,点击启动按钮就可以打开虚拟机了,我已复制该虚拟机。
这个软件模拟出来一台电脑,这个电脑上面去运行这个 Ubuntu,用户名密码是 123456,在里面你就可以像操作 windows 一样来操作 Ubuntu 了。
你不想再使用这个 Ubuntu 了之后,你可以点击关闭按钮关机,你也可以点击停止按钮挂起,确定。挂起之后,以后你再次打开这个虚拟机的时候,选中它,点击播放虚拟机,它就会恢复之前被挂起的状态。
如果你对 Linux 系统还不熟悉,对 Ubuntu 操作还不熟悉,那么你就需要去看第二篇里面的后续内容,可以看文档,也可以看视频。如果你已经熟悉了 Linux 的操作,那么下一章节里面 <配置 VMware 使用双网卡> 这个一定要看,下一章节里面我们一开始还需要去配置 VMware 里面的网络。
2. Ubuntu 的基本操作
从现在开始我们来介绍一下 Ubuntu 的简单操作。我们首先介绍一下怎么去操作桌面,然后再去介绍一下使用各种命令。
2.1 Ubuntu 下打开终端
我们之前已经使用 VMware 打开了 Ubuntu。我们以后会使用到各种 Linux 命令,那么在哪里输入命令呢?
- 使用右键打开终端。你可以在桌面上点击右键 open terminal,打开终端,这时候你就可以在里面输入各种命令了,这所谓的终端跟 windows 里面的命令行是类似的,在 windows 里面我们同样可以打开所谓的命令行(快捷键 Ctrl + R),你同样可以在里面执行各种 dos 命令,比如 dir,你看在 windows 里面,你要列出这些目录的话,是 dir 命令,在 linux 里面是 ls 命令,有点差别。
- 用搜索框打开终端。我们现在回到 Ubuntu,你可以使用右键来打开终端,你也可以点击左下角,找到终端 terminal。
- 快捷键打开终端。我们还可以使用快捷键“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 它的文件系统是怎么组织的呢?
- 对于 Windows 你可以打开 C 盘,它都有一些约定俗成的规则,你看里面有 program 目录,就表示说里面存放有 Windows 的应用程序,有用户目录表示里面存放的是各个用户的单独的数据,还有 Windows 目录里面存放的应该就是系统的驱动啊等等等等。
- 同样道理,对于 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 各个进程的一些信息,这进程的信息是内核帮你提供的,它并不保存在磁盘上,我们可以去看看