无心的梦呓 · 2019年10月17日

Linux目录结构及开机流程详解

对Linux有一些了解的,都应该知道在Linux中所有的内容都是文件,包括硬盘等各种硬件在Linux中也都是按照文件来继续处理的,所以对Linux文件的了解将是非常重要的。

目录

0x01 Linux重要目录结构

0x02 Linux启动流程

0x01 Linux重要目录结构

/bin

用户的命令都在这里

使用which 命令 可以查看命令的所在路径

file

/boot

Linux内核及系统引导程序的所在目录

/dev

设备文件的目录,硬盘、声卡等等都在这里

/etc

软件的配置文件的目录和软件启动程序的目录

/home

普通用户的家目录

/root

root用户的家目录

/lib

启动系统和运行命令所需要的共享文件库文件和内核模块存放的目录

/lost+found

系统崩溃时,一些文件会存放在这里,可以通过一些命令来进行恢复操作

/mnt

临时的挂载点,用于临时挂载存储设备的,要想使用所插入的设备,必须先将设备进行挂载才能进行访问

mount /dev/cdrom /mnt

将dev中的设备挂载到mnt目录下,然后才可以进行访问,就好比当你把储存设备插入之后,它就相当于是一个监狱,没有门是无法进入的,只有你把它挂载到mnt目录下之后,相当于开了一个门,才能进入这个储存设备中,使用下列可以取消挂载点,相当于再把门去掉

umount /mnt

/opt

可选择的目录,有些软件也是会被安装到这里的,我们自己编译的软件包,也可以放在这个目录中去

/sbin

系统管理员相关的命令,/bin下是普通用户的命令

/tmp

临时文件目录,权限比较特殊,相当于是Windows的回收站,之前有朋友就把程序安装到了这个目录下,还好奇为啥重启之后就没有了。

/usr

存放程序的目录

/usr/local:默认软件安装目录
/usr/src:程序源代码目录

/var

一个变化的目录,其中的内容是经常变动的

/var/log:系统日志的存放目录
/var/log/messages:系统日志路径
/var/lib:库文件存放路径

/proc

系统运行时,进程信息及内核信息都存放在这里,比如cpu、硬盘、内存等等的信息

/proc/loadavg:系统负载
/proc/meminfo:系统内存信息
/proc/cpuinfo:系统cpu信息
/proc/mounts:系统挂载信息

接下来要说Linux的启动流程,还有两个文件需要明确一下

一、

/etc/fstab

配置开机设备自动挂载的文件

前面说/mnt目录的时候也说过了,只有把硬盘挂载到挂载点后,才能进行访问的,但是Linux启动我们也没有手动来做过挂载呀,没有挂载就不能访问,那系统是怎样启动起来呢?

就是由于这个文件实现了开机设备自动挂载,我们可以通过更改这个文件来实现文件的自动挂载,一定要注意不要写错其中的内容,如果写错的话将可能会导致Linux系统无法启动,因为在挂载中遇到错误后,是不会再继续往下执行的,为了避免这样的情况,在最后一个数值设定的时候一定要设置为0,不进行磁盘检查,如果设置为1或者2的话,将可能会导致设备无法启动。

file

一共有六列内容,从左到右依次是:

要挂载的设备、挂载点、挂载时候的文件系统格式、挂载时的参数、是否备份、是否做磁盘检查

二、

Linux运行级别

Linux有7个运行级别,分别是

0:关机
1:单用户模式
2:没有NFS(网络文件系统)的多用户模式
3:完整的多用户模式(常用)
4:未使用,保留
5:图形化模式
6:重启

一般默认是选用3模式

使用init可以切换当前的运行级别

使用runlevel可以查看当前运行级别

file

第一个是上次运行级别,第二个就是当前运行级别

file

运行级别所对应的文件目录是下面这些目录

file

当你选择2级别执行的时候,就会将/etc/rc2.d下的文件全部都执行一遍

file

当然如果想在切换到某一个级别的时候运行某些指定程序,我们就可以在对应的目录下放入所需要执行的程序

0x02 Linux启动流程

当了解了这两个内容之后,再说Linux启动流程就比较清楚了

在网上给出的简单图解大致是这样的

file

首先在开机的时候,会加载主板上的BIOS,然后会启动硬件自检,如果发现有问题的话,就不继续启动了。

然后会把启动程序交给硬盘,也就是图中的MBR引导,此时会加载硬盘中的一部分存储空间的内容,这部分内容就是主引导程序。

然后就加载Linux的GRUB菜单

file

接下来就会去加载GRUB所对应程序的内核

file

等待内核加载完毕以后,会运行Linux的第一个进程——INIT进程,此时会读取/etc/inittab文件,这个文件中设定了Linux以哪个级别进行启动,设定完以后将会加载对应级别以下的所有程序,也就是咱们上面所说的运行级别的文件夹下的所有文件;

同时还会加载Linux的基础配置程序/etc/rc.d/rc.sysinit,里面包含了主机名、设备、网卡等等必须的东西

PS:部分系统没有rc.d的目录,此时执行的是rcS.d目录下的全部文件。

file

等所有的内容都加载完毕之后就进入了用户登陆界面

file

到这里,Linux就已经启动完成了

文章首发公众号:无心的梦呓(wuxinmengyi)

这是一个记录红队学习、信安笔记,个人成长的公众号

扫码关注即可

file

推荐阅读
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息