最近段老板带着我们一干小朋友在龙芯实习,周六一天趁着员工放假的机会给我们开小灶上了一堂干货满满的私房课,其实在大一的上半学期就看过Linux的教学视频学习过Linux,尤其最近在做软件适配对Linux的理解加深了一些,但是其实并没有真正系统的学习Linux(在我看来我们并没有Linux的框架只是知道一些简单的Linux 命令),段哥一节课其实将Linux的框架给我们架了起来,课后一个晚上半个上午的时间重新的看段哥的录屏将知识点整理了出来。
段老板的linux私房菜
内容一:虚拟机安装
- 关于虚拟机的安装,在安装界面一定要选择英文安装,如果选择中文进入到内部后会有一大堆的错误,但是选择英文安装后进入到虚拟机内部的时候还可以通过安装其他的第三方软件的方法进行汉化或者直接修改语言,但是一定要在安装的时候选择英文安装。
- 这里要设置Make this user administrator
因为如果不设置的话在之后操作的过程中使用sudo是无法提高到root权限的。
在使用linux 操作系统的时候
内容二:分区和磁盘
磁盘的格式:
- NTFS
- FAT(U盘格式,最多只能记录单个4g大小的文件)
- EXT
- HFS(Mac格式)
每个格式代表目录和分区组织的一种方式,每个格式就是一种标准。将磁盘格式化就是按照对应的标准将磁盘的目录和分区进行划分。
分区对于磁盘并不是真实的物理上将磁盘进行了分块,而是在逻辑上对磁盘进行划分。
挂载
挂载必须有根目录,如果没有根目录其他的分区就无法挂载到指定的目录下,因为其他的目录都是置于根目录下的。
首先挂载是分区挂载到目录下(磁盘是不能挂载的,只有分区才能挂载,而磁盘可以分成若干个分区)
比如挂载分区1到 /data
磁盘挂载的步骤
-
新增一块磁盘(VMware和VitrualBox的新增磁盘方式差不多)VitrualBox是在
然后在虚拟介质中新建一张磁盘选择VDI磁盘映像- 查找VDI,VHD,VMDK的区别和联系
-
查看目录挂载的分区是哪个:
df -h / (查看挂载在根目录下的分区是哪个)
-
查看有几个磁盘
ls /dev/sd*
对于磁盘来说就是sda,b,c来区分的,而对于分区来说就是通过sda 1 ,2 ,3来区分的
-
向虚拟机中插入磁盘
选择磁盘+来向虚拟机中加入磁盘
添加磁盘需要虚拟机处于关机的状态
-
查看虚拟机是否确实增加了一个磁盘
ls /dev/sd*
如图所示确实增加了一个磁盘sdb
-
磁盘管理命令
fdisk(创建分区,删除分区,查看分区)
这里管理sdb,因为sda中装的是linux 的系统
命令:
fdisk /dev/sdb
-
输入 m 查看相关命令
-
输入 n
添加一个新的分区
然后一路回车选择默认
-
最后选择p打印分区情况
可以看到在磁盘中创建了一个分区sdb1
-
输入 w
把目录写入磁盘然后保存退出
这个目录存的是分区信息(一个分区有一个目录)
格式化是针对分区的
也就是说每个分区的格式可以不同,每个分区都有他自己的目录
-
格式化分区(指定分区的标准格式模式)
mkfs.ext4
有好多种分区的格式
选择一种格式化分区(/dev/sdb 指的是磁盘,而/dev/sdb1指的是分区)
而格式化只能格式化分区(mkfs.ext4 /dev/sdb 这个命令是错误的)
-
分区格式话之后就可以将分区挂载到目录下
mount /dev/sdb1 /data
就将/dev/sdb1分区挂载到了/data目录下
-
查看分区挂载情况
df -h /data
成功挂载
卸载的命令
umount /dev/sdb1
如果当前处于/data下是无法执行这个命令的,就像虚拟机开启时无法对磁盘进行修改一样
处于/data下相当于把这个磁盘占用了
所以需要解除占用也就是跳到
对于挂载来说可以理解为映射,对于/data的所有操作都会映射到sdb1上,操作/data实际上就是在操作分区,而操作分区的本质上也就是在操作磁盘。
安装的时候为什么要有目录而且一定要有根目录:
也就是因为分区必须挂载到目录上,如果没有目录,那么分区无法挂载,无法对磁盘进行读写的操作,也就系统都无法安装上。
linux目录结构:
- /home
- /dev 存储设备文件
- /boot 启动目录,内置启动引导和系统内核
- /tmp 存放临时文件
- /var 存放日志文件和进程相关文件
- /etc 系统配置文件
- /sbin 存储root用户可用的系统命令
- /bin 存储普通用户可用的常见命令
- /lib 存储各种库文件
- /proc 内存的映射目录,只有在运行的时候才会有这个目录
权限(上帝之手和毁灭之手)
关于root权限,用于root权限就意味着拥有系统的所有控制权,举一个例子就是:所有入侵的过程就是找到漏洞,进入系统,提权(利用系统漏洞,一般式c语言的内存溢出,段错误,吐核等提升权力成为root用户),然后控制局域网中的一台电脑,然后进行内网渗透,控制局域网的所有电脑。所以对于新手来说最好通过操作user普通用户进行基本操作,当需要Root权限的时候进行sudo提权。
如果忘记root密码就可以通过内核版本找到零代漏洞,运行然后提权到root用户,通过passwd命令就可以修改密码
如果忘记windows 密码也可以通过PE进行密码修改,而不是直接重装系统
进程和线程
进程是资源(内存,磁盘)分配的最小单位
线程是(程序运行)CPU时间片占用的最小单位
内容三:交换分区
Windows 下有个概念叫虚拟内存,就是将硬盘的空间作为内存空间来使用。(本质就是没买很贵的内存,32g,128g的内存对于普通用户来说是没有多大用的,但是如果有特殊情况需要较大的内存时,Windows 下就可以将磁盘作为内存来使用,而在Linux下有一种专门的文件格式叫做Swap用来作为交换分区)
将磁盘格式化为交换分区的命令:
mkswap
对于已经挂载的分区是不能直接格式化的,必须将分区卸载下来才能对磁盘进行格式化
umount /dev/sdb1
将分区卸载
格式化分区为swap分区类型
查看内存情况
现在swap交换分区的内存大小是0,因为刚才格式化的交换分区并没有激活
激活交换分区
命令:
swapon
再次查看时:
就会发现交换内存添加成功,而这里没有使用交换内存的原因就是因为物理内存还够,在使用的时候会优先使用物理内存,当物理内存不够时才会继续使用交换内存。
当实体机内存不够时甚至可以通过u盘来充当交换内存来使用,而在Linux下万物皆文件,可以touch一个文件,将文件通过dd命令拓展大小来充当内存使用。
交换分区可以有多个
- dd 命令
再次体现Linux下一切都是文件,可以把设备当作文件也可以把文件当作设备
休眠交换分区
命令:
swapoff
重启之后之前挂载的交换分区会自动卸载,这里就需要一个脚本或者修改文件
vim /etc/fstab
在文件系统表中将分区指定挂载即可长期挂载
补充(之前任务表中查看的东西)
-
查找VDI,VHD,VMDK的区别和联系
VDI是virtual box 的原生格式
VMDK是VMware给他开发的,在Sun xVM, QEMU, VirtualBox, SUSE Studio, .NET DiscUtils 也支持
VHD是Microsoft Virtual PC的原生格式,在微软产品比较流行
其实就是三种动态存储分配的格式 VDI在 vitrual box上支持做快照但是VHD不支持在vitrual box上做快照,而且vdi支持动态调整磁盘空间大小,而VHD不支持动态调整磁盘大小。
-
dd 命令
用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。