【Linux】浅谈Linux文件系统的目录结构及开机启动过程

       笔者认为,学习Linux系统首先需要了解其文件的目录结构及开机启动过程,这将为进一步学习和使用Linux系统提供坚实的基础,包括Linux文件管理、Shell编程、Linux终端操作等等。

Linux文件系统目录结构

这里写图片描述
这里写图片描述

上述第一张图表示了Linux文件系统目录的树形结构,第二张图为笔者的Ubuntu 18.04 LTS的目录一览。具体到某些目录可能因为不同的Linux发行版而不同,但大部分是一致的。

  • /bin
    Binary缩写,存放着最经常使用的二进制命令,比如ls, cat, mkdir等等
  • /boot
    Linux内核文件,包括一些连接文件和镜像文件
  • /dev
    Device的缩写,存放着Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
  • /etc
    存放所有的系统管理需要用到的配置文件及相关子目录
  • /home
    用户主目录,每个用户都有一个自己的目录,通常用用户的账号名来命名,是用户主目录的基点。比如/home/bebdong,可以用~bebdong来表示
  • /lib
    存放着系统基本的动态连接共享库,作用类似于Windows下的DLL文件。几乎所有的应用程序都需要用到这些共享库
  • /media
    Linux自动识别的一些设备,当识别后将会把识别的设备挂在到这个目录下。如U盘、光驱等等
  • /mnt
    提供给用户用于临时挂载其他的文件系统。比如讲光驱挂载到/mnt/上,进入该目录就可以查看光驱里的内容了
  • /opt
    用于存放额外安装软件的目录
  • /proc
    是一个虚拟目录,是系统内存的映射,这个目录下的内容不在硬盘上而在内存里,通过访问这个目录可以获取系统信息,也可以直接修改里面的某些文件。比如下面这条命令就可以使得别人无法ping本机:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • /root
    顾名思义,此目录为系统管理员目录,也称之为超级权限(root权限)用户的主目录
  • /sbin
    s表示super user,这里存放着root用户使用的系统管理程序
  • /srv
    存放着一些服务启动之后需要提取的数据
  • /sys
    这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
  • /tmp
    顾名思义,用于存放一些临时文件
  • /var
    用于存放不断扩充着的东西,比如需要经常被修改的目录,包括各种日志文件
  • /lost+found
    一般情况下是空的,系统非法关机之后,这里讲存放一些文件(windows下的.chk文件)
  • /usr
    存放着用户的应用程序和文件,类似于Windows中的Program Files目录,是极其重要的目录
  • /usr/bin
    系统用户使用的应用程序
  • /usr/sbin
    超级用户使用的比较高级的管理程序和系统守护程序
  • /usr/src
    内核源代码的默认存放目录

Linux开机启动过程

Linux系统启动过程大致可以分为五个阶段:

  • 内核的引导
  • 运行init
  • 系统初始化
  • 建立终端
  • 用户登录

内核引导

当按下计算机电源按键,首先是BIOS的开机自检,由固化到主板上的开机自检程序完成,按照BIOS中设置的启动盘来启动。接着操作系统将接管硬件,并载入/boot目录下的内核文件。

运行init

init可以看做是所有进程的祖先,它将启动系统中的任何其他进程。init首先读取配置文件/etc/inittab

运行级别

Linux为了应对不同场合对开机启动程序的不同需要,定义了“运行级别(runlevel)”。换句话说,启动时根据不同的运行级别,确定要运行哪些程序。这些开机需要启动的程序就叫做“守护进程(daemon)”,可以理解为windows下的“服务(service)”。
Linux的7个运行级别:

  • 0:系统停机状态,默认运行级别不能为0,否则无法正常启动
  • 1:单用户工作状态,root权限,用于系统维护,禁止远程登录
  • 2:多用户状态,无网络文件系统,即Network File System,NFS,不允许网络中的计算机通过TCP/IP共享网络资源
  • 3:完全的多用户状态,有NFS,登录后进入控制台命令行模式
  • 4:系统未使用,保留
  • 5:X11控制台,登录后进入图形化界面(GUI)模式
  • 6:系统正常关闭并重启,默认运行级别不能为6,否则无法正常启动

系统初始化

系统初始化将主要完成:激活交换分区、检查磁盘、加载硬件模块以及其他一些需要优先执行的任务。
init配置文件中:

si::sysinit:/etc/rc.d/rc.sysinit

表示调用执行了该目录下的rc.sysinit这个shell脚本,主要完成上述初始化任务,是每一个运行级别下都需要首先运行的重要脚本。

建立终端

当执行完rc之后,返回到init,这时系统环境已经设置完毕,各种守护进程也已启动。
接着init将打开6个终端,便于用户登录。同时将显示一个图形化的登录界面,也就是我们登录时看到的界面,将引导我们输入用户名和密码。输入的内容将作为参数传给login程序来验证用户身份。
在inittab中定义的6个终端:

2345:respawn:/sbin/mingetty tty1
2345:respawn:/sbin/mingetty tty2
2345:respawn:/sbin/mingetty tty3
2345:respawn:/sbin/mingetty tty4
2345:respawn:/sbin/mingetty tty5
2345:respawn:/sbin/mingetty tty6

“2345”表示2、3、4、5四种运行级别,在这四种运行级别中都以respawn的方式运行mingetty程序,用户打开终端,设置模式。

用户登录

一般来说,用户拥有三种登录方式:

  • 命令行登录
  • ssh登录
  • 图形界面登录

显然,对于运行级别为5的用户来说,他们就是通过一个图形化登录界面进入系统。登录成功后可以直接进入KDE、GNOME等桌面环境。
Linux用于验证登录信息的程序是login,它会接受mingetty传来的用户名作为用户名参数,然后将对用户名进行分析:如果不是root用户,且存在/etc/nologin文件,那么login将返回nologin文件内容并退出。这样做的目的是为了防止在系统维护时的非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,那么root用户可以在任何终端上登录。/etc/securetty文件的作用就是对用户作出附加访问限制。

登录窗口的切换方式

Linux提供了6个命令窗口终端让我们登录,默认的为第一登录窗口,即tty1。按下Ctrl+Alt+F1~F6来切换不同的登录窗口。
如果安装了图形界面,系统默认进入图形化登录界面,这时同样可以按下Ctrl+Alt+F1~F6来进入其中一个命令窗口。如果要再次返回图形化界面只需要按下Ctrl+Alt+F7。

启动过程图示

这里写图片描述

参考文章

[1] 菜鸟教程. Linux系统启动过程[EB/OL]. http://www.runoob.com/linux/linux-system-boot.html
[2] 菜鸟教程. Linux系统目录结构[EB/OL]. http://www.runoob.com/linux/linux-system-contents.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值