Red Hat Linux 的安装和使用

实验目的

本次实验主要熟悉了 Linux 的一个发行版——Red Hat Linux的安装及使用。在安装过程中,我也查阅了一些资料,了解到了这个系统的一些细节和常用操作。为之后的进程管理等实验创建好实验环境和平台。

本次还进行了 gcc 编译器的安装,安装编译器的过程中,我了解了Red Hat Linux下软件安装的一般方法——rpm,也了解到一些库的安装可能依赖于另外的一些库,从而需要提前安装上其他库。了解gcc编译器,作为编译.c文件的一个工具,在今后在 Linux 系统下的 C 程序编程中会起到至关重要的作用。

步骤

安装 Red Hat Linux

本次实验用到的 rhel 版本

RHEL版本截图

为锻炼好日后独立装载操作系统的能力,本次安装使用基于 VMware 虚拟机的手动安装方法,在网络上下载好 rhel7.2 版本的光盘镜像,然后使用光盘加载到虚拟机中,修改 BIOS 为光盘启动优先,以开启手动安装。

配置过程不再详述。此过程其他截图至实验报告 3.1 节中查看。 安装结束后,重启进入系统。

系统界面截图

Linux 文件系统

Linux 目录结构

进入系统后,我们可以看到根目录中都有一些什么文件夹。点击桌面的家目录,然后单击左侧的 “计算机”,或者借用命令ls /就可以看到。其中有/bin/boot/dev/etc/home/lib/lib64/media/mnt/opt/proc/root/run/sbin/srv/sys/tmp/usr/var这么多目录,它们的作用简单介绍如下:

存放二进制可执行文件,Linux 系统的常用命令(lsmkdircp等)就在其中。

存放用于 Linux 系统引导时使用的各种文件。

存放设备文件,在 Linux 下,“万物皆文件”,所有的外部设备对应了dev下的一个文件,例如dev/sdax对应了系统下的第一块硬盘的第 x 个分区。

存放系统管理与配置文件。

存放用于 Linux 系统引导时使用的各种文件。

所有非 root 用户文件的根目录,用户 “家目录” 为/home/<用户名>,可以用~表示。

存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库,作用类似 windows 里的.dll文件,存放了根文件系统程序运行所需的共享文件。

RedHat 中 /lib 里面是 32 位的库,/lib64 里面是 64 位的库。

是挂载多媒体设备的目录,如默认情况下的光盘、优盘、硬盘等设备都挂载在此目录。

一般挂载镜像和硬盘一类的目录。

额外安装的可选应用程序包所放置的位置。

虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息。

系统超级管理员的用户主目录。

内有很多 pid 文件,表示当前系统运行中的进程。pid 文件中存储了进程号,可以用于kill等操作。

superuser binary,存放系统管理员所使用的管理程序。

主要用来存储本机或本服务器提供的服务或数据。

包括系统所有的硬件信息以及内核模块等信息。

系统产生临时文件的存放目录。

usr 是 Unix Software Resource 的缩写, 也就是 Unix 操作系统。软件资源所放置的目录,而不是用户的数据;所有系统默认的软件都会放置到/usr

/var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。原来/var 目录中有些内容是在/usr中的,但为了保持 /usr 目录的相对稳定,就把那些需要经常改变的目录放到 /var 中了。

Linux 目录功能

提前在mnt目录下创建好了usb文件夹。

向虚拟机插入 U 盘后,fdisk -l有了一些额外的输出,是这样的

其中,dev/sdb应该就是插入的 U 盘。

实际上,此时操作系统中已经可以看到这个 U 盘了。

再运行mount命令已经没有作用了

可以看到,它实际上已经挂载到了/run/media/root/设备号文件夹下。桌面上已经有了盘符显示。

再运行unmount命令卸载 U 盘,桌面移动盘图标会消失。

Linux 系统基本命令行操作

Vi 的基本使用

Linux 系统中一般会内置 vi 作为文本编辑器,用命令vi xxx启用后,有三种模式:命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。刚刚进入 vi 时,是命令模式,任何输入字符不会加入文件中,而是被解析为命令运行,想要进入输入模式,需要按键盘 i 键。输入完成后,可按 ESC 键退回命令模式。要退出程序,需要按:键,切换到底线命令模式中,然后输入 q 不保存退出或输入 w 保存退出。底线命令模式中支持的命令比命令模式要多。

下面是一些命令的运行效果截图。

Linux 系统中的 gcc 编译器

GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C 语言。GCC 很快地扩展,变得可处理 C++。后来又扩展为能够支持更多编程语言,如 Fortran、Pascal、Objective-C、Java、Ada、Go 以及各类处理器架构上的汇编语言等,所以改名 GNU 编译器套件(GNU Compiler Collection)。

安装 Linux 系统时本应选择预装 gcc 套件的,但当时并没有考虑到这个需求。还好 Red Hat 的镜像中有 gcc 的软件包,仍旧可以安装。安装过程不再详述。

用 vi 编写一个简单的 c 程序,保存为hello.c

hello.c
1
2
3
4
5
6
/*--hello.c--*/
#include <stdio.h>
int main(){
printf("Hello world\n");
return 0;
}

使用gcc命令编译该源代码。-o参数指定生成目标文件,它可以直接执行(有 x 权限)。

1
gcc hello.c -o hello
1
./hello

实验关键里程碑数据与结果

安装 Red Hat Linux

安装 gcc 编译器

实验难点与收获

完成本实验花费了个人约 8 个小时的时间,其中有 6 个小时的 “上机” 时间(在系统),剩余时间用于实验报告的写作上。感觉这次的实验还是很简单的,基本上没有难点,除了最后在配置 gcc 软件包时,需要先安装大量依赖软件包,占用了一些时间。

实验思考

  • 通过本实验,我感受到了 Linux 系统相对于 Windows 的强安全性。

    • 首先,Linux 系统在终端中输入任何密码时,都不会有回显,在设置用户密码时,要求它有一定的强度(≥8 个字符,且还要通过字典检查)
    • 除了 root 用户,所有其他用户的根目录均局限于home目录下,由于权限码的限制,一旦离开了home目录,便很难再拥有权限操作文件,因为往往系统文件的权限值对于其他用户均设置为很低的值,而且 Red Hat Linux 对于创建的新用户,默认是连 sudo 权限都没有的(下图,还带着提示),这意味着他们几乎不可能进入系统空间和其他用户的空间,也更不可能列出文件目录或者是执行文件。
  • Linux 系统的命令是相对于 Windows 系统来说最大的不同点,用惯了图形化界面操作系统的人,总归对冷冰冰的命令行页面下不去手。这次的安装虽然装的是带有 GUI 界面的服务器版本(下图),但主要的操作还是放到了命令行中,因为可以很直观的看到输出。

  • 上手使用了一些 Linux 中的命令后,感觉还是比较好掌握的,因为它们基本上是一些英文单词的缩写。命令格式也非常好理解,一个短横线往往跟短选项,而两个短横线往往跟长选项。有些短选项是可以合并的(比如ls -la等价于 ls -l -a)。