实验一 Linux系统安装与简单配置
一、实验目的
1.掌握Linux系统安装的分区准备。
2.掌握Linux系统的安装步骤。
3.掌握Linux系统分区的挂载和卸载。
4.掌握Linux系统的启动和关闭操作。
二、实验内容
1.安装VMware虚拟机,设置光盘驱动器,为Linux系统安装做准备。
2.在虚拟机下安装Linux操作系统(如Ubuntu桌面版本)和VMwareTool,实现宿主机和虚拟机之间的文件拷贝。
3.配置Linux系统运行环境。
4.增加一块SCSI硬盘,请在新增的硬盘中给出系统6个分区的方案,并选择一种方案利用fdisk进行分区,并且学会使用命令建立和删除交换分区。
5.将新的Linux系统分区挂载到系统中;卸载新挂载的分区,重新挂载到目录树中的其他位置。
6. 修改配置文件将分区配置成开机自动挂载。
三、主要的实验步骤
1.制定安装系统的分区计划。
2.配置光驱引导镜像文件iso,启动系统,开始安装过程。
3.根据安装计划,对磁盘空间进行分区设置(一个主分区、一个swap分区,一个空闲分区)。
4.根据系统安装指导,完成Linux系统的安装过程。
5.安装成功后,退出系统,重新启动虚拟机,登陆Linux操作系统。
图 1 Ubuntu虚拟机
6.对Linux系统进行配置,如VMwareTool,网络设备等。
在这里插入图片描述
图 2 配置VMwareTool
7.利用fdisk分区工具依据设计的将硬盘分成6个分区的方案,进行分配。并对分区采用mkfs命令对分区进行格式化。
- 创建主分区:
图 3 采用mkfs命令对分区进行格式化
2.创建拓展分区
图 4 创建拓展分区
3.创建后:
图 5 创建分区后
4.mkfs格式化:
图 6 mkfs格式化
8.利用partprobe命令重新加载分区表。利用df -h命令可查看分区挂载情况。
图 7 查看分区
9.利用mkswap命令创建交换分区,并使用swapon命令激活交换分区。
图 8 创建并激活交换分区
10.利用磁盘使用工具和mount,将新创建的Linux系统分区挂载到系统中。将新挂载的分区卸载,并重新挂载到目录树的其他位置。观察挂载之前和之后的该目录下所存储的文件。
/home/zxy/Documents 挂载前:
图 9 挂载前
图 10 挂载
图 11 挂载后磁盘分区
图 12 挂载后的Documents
图 13 挂载所有分区
图 14 挂载后的磁盘分区
解释为什么挂载之后文件都消失了:
正常登录以后,所看到的各个目录,文件都是内核在加载时候构造在内存中的VFS目录树,而不是直接看到硬盘上的实际目录树。当你挂载某个设备到一个VFS挂载点上时(比如/home),系统就把VFS中的这个挂载点/home指向你最后所挂载的那个设备上。那么你现在访问该挂载点时,就会看到你最后挂载在此处的设备。而之前所挂载的设备依然在那里,只不过挂载点/home已经不再指向之前的设备。所以之前的数据是被隐藏了,但并没有删除,若umount挂载后,数据又重新回来了。
(1)先将硬盘挂载到一个新建的空目录作为中转目录。
(2)将硬盘先挂载到跳板目录上。
(3)将原要挂载的目录中所有文件复制过来。
(4)删除原目录下的所有文件。
(5)将硬盘挂载到原要挂载的目录。
11.利用/ect/fstab配置文件进行分区的自动挂载,重启测试。
gedit /ect/fstab
reboot
图 15 新分区的UUID
图 16 更改/etc/fstab
重启后保持原挂载状态。
图 17 重启后
四、拓展实验
1.设计方案,在计算机中安装双系统?并通过实验验证自己的方案。
因为我在上本课程之前电脑中已经装好双系统了,因此本实验将在M.2接口(NVMe协议)的SSD固态硬盘做本实验(由删除arch linux之后腾出),以下将给出装双系统的全部过程。
(1)预准备:
闲置U盘(大于64G),确定bios类型以及硬盘个数,安装UltralSO 软碟通,将 Ubuntu 的镜像写入U盘。
(2)压缩卷
给选择最后一个磁盘空间的磁盘,鼠标右键点击该磁盘,选择压缩卷,压缩200G。
(3)将ubuntu镜像写入U盘。
(4)进入BOOT界面,也就是bios,关闭secure boot,选择U盘启动就进入了Ubuntu安装界面。
(5)进行磁盘分区:
EFI:200M,swap:16G,其他的放根目录。
(6)然后选择efi文件所在分区启动。(例如:/dev/sdb2或者/dev/nvme0n1p1等等。)
(7)随后内容按照默认或者自己设置的来就好。
创建好Ubuntu系统后还可以根据需要下载Linux版本的腾讯会议,Typora,向日葵等等软件进行会议,文本,通信等方面的需求,还可以下载QT,VSCode等满足开发需求,如下图(18)展示的QT,VSCode,腾讯会议,WPS等等。
2.新建一个虚拟机,安装另外一个版本的Linux系统如:CentOS、Redhat等,体验Linux不同发行版的使用环境,如图(19)。
图 18 双系统中的Ubuntu
图 19 Arch Linux
实验二 Linux常用命令使用
一、实验目的
1.掌握Linux一般命令格式。
2.掌握有关文件和目录操作的常用命令。
3.熟练使用man命令。
二、实验内容
1.熟悉cd、date、pwd、cal、who、echo、clear、passwd等常用命令。
2.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。
3.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限等。
4.利用man命令显示date、echo等命令的手册页。
5.利用ps命令显示系统中的进程信息。
三、主要实验步骤
1.登陆系统,使用passwd命令修改密码为123456,并重新登录系统。图 1 修改密码
2.使用简单命令:date、cal、who、echo、clear等,了解Linux命令格式。
3.浏览文件系统:
(1)运行pwd命令,确定当前工作目录。
图 3 pwd命令
(2)运行ls –l命令,理解各字段含义。
图 4 ls-l命令
(3)运行ls –ai命令,理解各字段含义。
ls -ai = ls -a和ls -i
ls -a:是显⽰⽬录下所有⼦⽬录和⽂件,包括以“.”开头的隐藏⽂件
ls -i:是查看⽂件的inode号(inode存储⽂件的详细信息)相当于⽂件的身份ID。43516731 . ⽂件.的节点号是43516731
43384921 … ⽂件…的节点号是43384921
43516732 passwd.png ⽂件passwd.png的节点号是43516732
图 5 ls -ai
(4)使用cd命令,将工作目录改到根(/)上。运行ls –l命令,结合教材中图2.2,了解各个目录的作用。
1.total 100
2.第⼀列是:d(-,p,l,b,c,s)rwxrwxrwx
d:⽬录⽂件eg:home
-:普通⽂件eg:passwd.png
p:管理⽂件
l:链接⽂件
b:块设备⽂件
c:字符设备⽂件
s:套接字⽂件
r:可读(“-”不可读)
w:可写(“-”不可写)
x:可执⾏(“-”不可执⾏)
前三个rwx是所有者权限
中间三个rwx是组⽤户权限
后三个rwx是其他组⽤户权限
3.第二列:(1)、如果是⽬录的话,这个数字表⽰当前这个⽬录下⾯的⼀级⽬录个数。(2)、如果是⽂件的话,数字表⽰硬链接个数。(硬链接个数:可以简单的理解为⼀个⽂件的⽂件名 个数,⽐如a⽂件的⽂件名有s和j两个,因为s和j指向同⼀个a,改动s或j都会对a造成改变)
4、第三列:该文件或目录的所有者。
5、第四列:表示所属的组。
6、第五列:文件的⼤⼩。
7、第六列:月份(最近修改⽂件的⽇期)。
8、第七列:多少号(最近修改⽂件的最后⽇期)。
9、第⼋列:几点(最近修改⽂件的最后⽇期)。
10、第九列:
白色:表示普通文件
蓝色:表示目录
绿色:表示可执行文件
红色:表示压缩文件
蓝绿色:链接文件
红色闪烁:表示链接的文件有问题
黄色:表示设备文件
灰色:表示其他文件
图 6 ls -l
(5)直接使用cd,通过pwd指令验证目录位置。
直接使⽤cd默认进⼊⽬前⽤户的主⽂件夹“/home/zxy”图 7 pwd
用mkdir建立一个子目录subdir。
图 7 mkdir
(7)将工作目录更改到subdir。
图 8 将目录更改到subdir
4.文件操作:
验证当前工作目录在subdir。
图 9 验证当前目录是subdir
(2)运行date>file1,然后运行cat file1,看到什么信息?
date>file1将date中的数据重定向到file1文件中保存。
图 10 date>file1
(3)运行cat subdir,会出现什么结果?为什么?
结果:cat:subdir:Is a directory
原因:cat操作的对象是⼀个⽂件不是⼀个⽬录,⽽subdir是⼀个⽬录。图 11 cat subdir
(4)利用man命令显示date命令的使用说明。
man date
图 12 man
(5)运行man date>>file1,看到什么信息?运行cat file1,看到什么信息?
“>”表⽰输出重定向,“>>”表⽰追加重定向。
图 13 把date帮助文档写入file1
(6)显示file1的当前10行,后19行。显示file1的当前10⾏,后19⾏
图 13 显示前10行
图 14 显示后10行
(7)运行cp文件名1文件名2,然后ls –l,看到什么信息?运行mv文件名2文件名3,然后ls –l,看到什么信息?运行cat 文件名,结果如何?
cp file1 file2
#将file1⽂件中的内容 复制到了⽂件file2中
mv file1 file2
#把⽂件file1改名为file2,此时原来的file2被file1覆盖
mv file1 file3
#把文件file1改名为file3,此时同时存在file2和file3
图 15 cp&mv
(8)运行rm 文件名3,然后ls –l,结果如何?
rm:命令删除⼀个⽬录中的⼀个或者多个⽂件或者⽬录,只⽤rm命令不会删除⽬录,通常⽂件通常可以恢复。
图 16 rm
(9)在/etc/passwd文件中查找合适你的注册名的行。
图 17 打开/etc/passwd
图 18 /etc/passwd中我的注册名
(10)运行ls –l,理解各文件的权限是什么?
第⼀列是d(-,p,l,b,c,s)rwxrwxrwx
d:⽬录⽂件 eg: home
-:普通⽂件 eg:passwd.png
p:管理⽂件
l:链接⽂件
b:块设备⽂件
c:字符设备⽂件
s:套接字⽂件
r:可读(“-”不可读)
w:可写(“-”不可写)
x:可执⾏(“-”不可执⾏)
前三个rwx是所有者权限
中间三个rwx是组⽤户权限
后三个rwx是其他组⽤户权限图 19 理解rwx
(11)用两种方式改变file1的权限。图 20 u/g/o = rwx图 21 a+x
(12)统计file1文件的行数、字数。
1.统计⽂件信息
wc⽂件名
说明:3个数字分别代表⾏数,单词数,字节数
2.只统计⽂件⾏数
wc -l ⽂件名
3.只统计⽂件单词数
wc -w ⽂件名
4.只统计字节数
wc -c ⽂件名图 21 统计行,字数
(13)运行cat 文件名|wc -l,结果如何?
cat file1 | wc -l 将file1中的内容作为输⼊给wc,其实就是输出file1的⾏数。
图 22 cat file1 | wc -l
5.权限管理
假设目前要开发一个项目叫做LinuxDemo,参与人包括:zhao, qian, sun, li, zhou, wu六人,这六人的分组为如图1所示。请利用所学命令构造满足如下要求的用户权限模型。
具体要求如下:
0)使用图1中的分组创建组,并将相应的学生添加到相应分组
1)创建组
sudo groupadd designing
sudo groupadd coding
sudo groupadd testing
2)查看创建组是否成功
tail /etc/group
3)将学生添加到分组
sudo useradd -g designing zhao
sudo useradd -g designing qian……
4)检查学生是否已添加到分组
groups zhao
groups qian……
2、所有目录都保存在同一的文件夹下/LinuxDemo
cd /
mkdir LinuxDemo
3、每个分组拥有独立的文件夹
cd LinuxDemo
mkdir designing
mkdir coding
mkdir testing
4、不同组之间不可访问各自的文件夹
5、每个学生在所在组的文件夹下拥有一个所属的文件夹
6、同组不同学生之间可以查看各自文件夹的内容,但不可以修改,学生只能修改自己的文件内容
//设置学生文件的文件主
sudo chown zhao /LinuxDemo/designing/zhao //设置zhao是zhao文件夹的文件主,通过文件主(zhao)和同组(qian)和其他用户(sun li ……)来区分权限
sudo chown qian /LinuxDemo/designing/qian……
//设置权限 同组可查看不可修改(5)不同组不可访问(0)
cd /LinuxDemo/designing
chmod 750 zhao
chmod 750 qian……
//设置文件权限
cd …
chmod 770 designing/
6.进程管理
开启多个终端程序,使用ps命令是查看进程状态,并用kill命令结束其中一个终端程序。
ps a
两个终端程序,bash。
图30 进程状态图31 结束第一个终端进程
7.文件压缩和解压
利用gzip命令对某个文件或文件夹进行压缩,然后再对其解压。使用unzip命令对Windows下生成的zip格式的压缩文件进行解压缩。
压缩file1:图32 压缩file1
使用unzip命令对Windows下生成的zip格式的压缩文件进行解压缩。
图33 解压zip压缩包
实验三 vi编辑器的使用
一、实验目的
1.学习使用vi编辑器建立、编辑、显示及加工处理文本文件。
二、实验内容
1.进入和退出vi编辑器。
2.利用文本插入方式建立一个文件。
3.在新建的文本文件上移动光标位置。
4.对该文件执行删除、复原、修改、替换等操作。
三、主要实验步骤
1.进入vi编辑器。
图34 进入vi编译器
2.建立一个文件,如file.c。进入插入方式,输入一个C语言程序的各行内容,故意少写几个字符和几行内容。最后,将该文件存盘。回到shell状态下。
进入file.c故意少些几个字符和几行内容(按:wq存储退出。)图35 wq
4.利用a,i,o等命令,将少写的内容填补到文件正确的位置,并且保存退出。
5.运行man date > file10,然后vi file10。使用x,dd等命令删除某些文本行。使用u命令复原此前的情况。使用c、r、s等命令修改文本内容。使用检索命令进行给定模式的检索。
四、拓展实验
- 检查当前系统中是否存在Vim和Visual Studio Code编辑器?如果没有,请在系统里安装Vim和Visual Studio Code,并比较Vi、Vim和Visual Studio Code三个编辑器的使用差异。
安装有Vim和Visual Studio Code编辑器。图41 vim
图42 VSCode编辑器
vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本。vi使用于文本编辑,但是vim更适用于coding。Vscode有界面会更加宜于交互。
实验四 shell编程
一、实验目的
1.了解shell的作用和主要分类。
2.掌握bash的建立和执行方式。
3.掌握bash的基本语法。
4.学会编写shell脚本。
二、实验内容
1.shell脚本的建立和执行。
2.shell变量和位置参数、环境变量。
3.bash的特殊字符。
4.一般控制结构。
5.算术运算及bash函数。
三、主要实验步骤
1.利用vi建立一个脚本文件,其中包括date、cal、pwd、ls等常用命令。然后以不同方式执行该脚本。
2.运行history命令。
3.体会bash的命令补全功能。
已体会很方便。
4.对教材例题4.9 (P108)进行编辑,然后执行。5.对教材例题4.19 (P132)进行编辑,然后执行。
1.对习题4.8 (P141)进行编辑,然后执行。
2.对习题4.9进行设计,然后调试、执行。
3.对习题4.11进行设计,然后调试、执行。
4.对习题4.13进行设计,然后调试、执行。5.对习题4.14进行设计,然后调试、执行。
四、拓展实验
- Shell编程实现指定输入的加法,比如输入100,计算1+2+3+…+100的和。
2. Shell编程判断指定文件夹下文件的数量。
1.Shell编程判断给定年份是否为闰年。
4. Shell编程实现9×9乘法表。
5. Shell编程实现批量修改文件扩展名,比如将.txt文件修改为.doc文件。
实验五 常用开发工具
一、实验目的
1.掌握C语言编译的基本用法。
2.掌握gdb调试工具的基本用法。
3.理解make工具的功能,学会编制makefile的方法。
二、实验内容
1.利用gcc编译C语言程序,使用不同的选项,观察并分析显示结果。
2.用gdb调试一个编译后的C语言程序。
3.编写一个由多个文件构成的C语言程序,编制makefile,运行make工具进行维护。
三、主要实验步骤
1.按照教学视频“Gcc编程和Gdb调试范例”和“静态链接库和动态链接库的创建和调用”,掌握视频中的内容,熟悉下列选项在编译过程中的作用:-c,-o,-l,-L。
- 按照教学视频“程序维护工具make的使用”,重写做一遍,要掌握依赖关系图的画法、makefile文件的编写、及make工具的使用。
3.完成对习题6.9的编制,并使用make进行维护(参考教学视频,自己制作动态链接库文件libm.so)。