在实验楼学习linux的一次实验报告

今天下午在实验楼学了一个下午的linux,感觉还是蛮有收获的.再加上实验楼可以边动手边记笔记.

于是.我把我的学习过程全部记下来了.然后不费吹灰之力.直接copy到我的博客.

df 命令

查看文件系统和磁盘容量

使用 -h 参数来让结果以更易懂的方式显示.

du命令

直接使用 du 命令会显示出当前目录下所有的子文件和子文件夹, 并以block的方式显示文件的大小.

在du命令后面加上绝对路径 可以以绝对路径输出要显示的文件.例如: du ~ 查看家目录下所有的子文件夹.

使用参数 -h 来令 du 显示的文件大小以更易懂的方式表示

使用参数-d 来表示 所要查看的深度.. 例如:du -d 0 就表示查看当前目录..不看任何一个子文件夹.

比较以下几个命令的不同..

1
2
3
4
5
6
7
du 
du -h
du ~
du -h ~
du -d 0
du -d 0 ~
du -h -d 0 ~

dd 命令

dd命令用于转换和复制文件
dd命令的命令行格式为”选项=值”, 而不是更标准的”—选项 值”或”-选项=值”

初次使用dd命令

使用命令 dd of=test bs=10 count=1 然后输入一些字符串.可以得到一些提示.
但是很难明白什么意思,也不知道为什么会冒出一个 command not found,似乎是因为某些字符被shell认为是命令了,为什么呢?
于是仔细读了这段话.

上述命令从标准输入设备读入用户输入(缺省值,所以可省略)然后输出到 test 文件,bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如’K’,’M’,’G’等单位),count用于指定块数量。如上图所示,我指定只读取总共 10 个字节的数据,当我输入了“hello shiyanlou”之后加上空格回车总共 16 个字节(一个英文字符占一个字节)内容,显然超过了设定大小。使用和du和cat命令看到的写入完成文件实际内容确实只有 10 个字节(那个黑底百分号表示这里没有换行符),而其他的多余输入将被截取并保留在标准输入。

然后,明白了.bs可以设定blocks的大小.count设定blocks的数量.
dd命令只会接受这么多的信息.剩下的信息被dd命令传出来,传到shell,被shell当成命令.
于是出现了上面的那个情况,使用命令cat test可以看到,输出的是hello shiy%.说明 猜想是对的.

使用dd命令进行数据转换

看这条命令

1
dd if=/dev/stdin of=test bs=10 count=1 conv=ucase

输完这条命令之后在shell里面输入一串字母,dd命令会将字母转换成大写.然后写入test文件.

使用dd命令创建虚拟镜像文件

终于到重头戏了.

1.从/dev/zero设备创建一个容量为256M的空文件 使用一条命令

1
2
3
4
5
#新建文件
dd if=/dev/zero of=virtual.img bs=1M count=256
#查看文件信息
du -h virtual.img
#好奇怪实验楼字符界面给出的结果是257M

使用dd命令

2.将创建好的文件格式化(写入文件系统),
使用mkfs命令格式化磁盘(这里将文件当做磁盘), 使用ext4文件系统格式

1
2
mkfs.ext4 virtual.img
#命令会提示 文件不是一个特殊的设备,,,询问是否继续..输入y继续

3.将文件当做磁盘挂载到某个文件夹..

mount命令的使用
mount [-o [操作选项]] [-t 文件系统类型] [-w|—rw|—ro] [文件系统源] [挂载点]

输入命令:

1
2
3
4
5
6
7
mkdir virtual 
mount -o loop -t ext4 virtural.img /home/shiyanlou/virtual/
#提示mount命令需要root权限
sudo mount -o loop -t ext4 virtural.img /home/shiyanlou/virtual/
#还是报错.说没有loop 设备.什么鬼? 难道是我自己的文件夹不行? 换成mnt试试
sudo mount -o loop -t ext4 virtual.img /mnt
#一样的错误? 这是什么原因?

郁闷死我了,我找了好久的原因.最后发现.后面的文档里竟然有.好吧.以后要先看文档.再动手做.

不过遗憾的是,由于我们环境的问题(环境中使用的 Linux 内核在编译时没有添加对 Loop device的支持),所以你将无法挂载成功:
同样因为环境原因中没有物理磁盘,也无法创建虚拟磁盘的原因我们就无法实验练习使用该命令了,下面我将以我的物理主机为例讲解如何为磁盘分区。

实验楼环境挂在镜像文件失败

不过实验还是要继续的.于是 我离开实验楼的环境.拿出我的廉价vps.但是因为同样是虚拟环境.擦.竟然也无法成功.

vps上挂在镜像文件失败

我就不信了.打开我的虚拟机.用archlinux试试.竟然成功了.上图!!上图.!!

虚拟机上挂在镜像文件成功

那么我们来操作操作? 哈哈( ´∀`)

在挂载了的virtual目录下操作

完全可以当成一个独立的磁盘来玩.原来还可以这样.好吧.这个先放一放.继续我的实验楼学习.

接下来学习fdisk命令

其实这个命令我在很久以前折腾archlinux的时候就用过了.

说实话..这个命令真是怎么好用怎么用,

参数: -l 查看磁盘信息.

好吧..实验楼的环境还是无法使用.那就拿虚拟机开刀咯.

虚拟机fdisk -l命令演示

然后是使用fdisk命令对virtaul.img文件进行问去操作.
使用命令:

1
fdisk virtual.img

这个命令在实验楼的环境下是可以进行的.

实验楼环境下的fdisk命令展示

然后就是根据命令进行文件的分区咯.这个根据帮助命令可以学会.分好区之后使用w命令 可以将修改写入磁盘.

实验楼虚拟机有点卡.我还是用我的arch吧.

建立一个主分区(primary), 我竟然忘记当初是怎么使用fdisk分区了.重新学了一次.

使用n命令建立一个主分区

建立扩展分区(extended).我把剩下的容量全部给了拓展分区.

建立扩展分区

在扩展分区里面建立逻辑分区.我建立了三个拓展分区 分别是一个27M,两个96M.

建立逻辑分区

然后使用p命令查看已经分好的分区.如果不满意可以继续修改.满意了.则使用w命令写入分区信息.

使用p查看分区信息并使用w写入分区信息

关于fdisk的命令就学习到这里了,让我再回到实验楼看一下文档.

学习losetup命令

按照实验楼文档输入命令.

1
2
3
4
# 关联回环设备
losetup /dev/loop0 virtual.img
# 解除关联
losetup -d /dev/loop0

实验楼里面的回环设备是没有的.因此需要到虚拟机上弄.但是.实验楼文档说.需要一个叫做kpartx的工具.但是我用arch的pacman并没有找到kpartx的包.怎么办呢?郁闷了.

archlinux没有kpartx

没办法,只好拿出我的CentOS虚拟机试试.先试了试losetup命令.发现有.哈哈.这就好办了.于是我先在CentOS里面安装一下git.然后从我的实验楼仓库里面把我在实验楼虚拟机里面搞好的virtual.img 文件clone到我的本地虚拟机.分区实在太蛋疼了.分了三次了今天.

先把文件clone到本地

哈哈,这样文件就到手了.继续开干.再次进入实验楼看文档.
先使用losetup命令和kpartx命令映射分区.并格式化每个分区.

使用losetup命令和kpartx命令映射分区

再挂载每个分区.用完了再卸载分区.

挂载和卸载分区

作业.

安装并使用cowsay

使用cowsay