Linux操作学习 系统启动及目录

Linux系统启动过程

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

内核的引导

计算机接通电源,BIOS开机自检,启动操作系统,操作系统接管硬件后,首先读入/boot目录下的内核文件

运行init

init进程是所有进程的起点,没有它任何进程都不会启动。init程序首先需要读取配置文件/etc/inittab

运行级别

Linux允许为不同的场合,分配不同的开机启动程序,即“运行级别”(runlevel)。启动时根据运行级别,确定要运行哪些程序

Linux共7种运行级别:

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登陆后进入图形GUI模式
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

系统初始化

init配置文件中有一行:si::sysinit:/etc/rc.d/rc.sysinit,它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,主要完成一些系统初始化的工作,rc.sysinit每个运行级别都要首先运行的重要脚本。

主要完成的工作:激活交换分区,检查磁盘,加载硬件模块及其他一些需要优先执行的任务

另外一行:15:5:wait:/etc/rc.d/rc 5,表示以5为参数运行/etc/rc.d/rc/etc/rc.d/rc是一个Shell脚本,接受5作为参数,执行/etc/rc.d/rc5.d/目录下所有rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以 S 开头的启动脚本,将以start参数来运行。

而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。

这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。

建立终端

rc执行完毕,返回init。此时基本系统环境已设置好,各种守护进程已启动。

init接下来会打开6个终端,以便用户登录系统,即inittab中以下6行就是定义了6个终端:

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式,同时显示文本登陆界面

用户登录系统

常用三种登陆方式:

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

命令行登陆

Linux的账号验证程序是login,login会接手mingetty传来的用户名作为用户名参数, 之后login对用户名进行分析:如果用户名不是 root,且存在/etc/nologin文件,login 将输出 nologin 文件的内容,然后退出。

这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许 root 用户登录,如果不存在这个文件,则 root 用户可以在任何终端上登录。

/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。

流程图

流程图

Linux系统目录结构

Linux中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构

树状图

/bin

bin是Binary的缩写,该目录存放最常使用的命令

/boot

存放启动Linux时使用的一些核心文件,包括链接文件及镜像文件

/dev

dev是Device的缩写,该目录存放Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的

/etc

存放所有的系统管理所需要的配置文件和子目录

/home

用户的主目录,Linux中,每个用户有一个自己的目录,一般该目录以用户的账号命名

/lib

存放系统最基本的动态连接共享库,作用类似Windows中的DLL文件,几乎所有应用程序都需要用到这些共享库

/lost+found

一般为空,当系统非法关机后,会存放一些文件

/media

Linux系统自动识别一些设备,如U盘、光驱等,识别的设备挂载到这个目录下

/mnt

系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt

给主机安装额外软件所摆放的目录,默认为空

/proc

这是一个虚拟目录,是系统内存的映射,可以通过直接访问该目录来获取系统信息。 该目录的内容不再硬盘而是在内存里,可以直接修改里面的某些文件

/root

该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin

s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux

Redhat/CentOS特有目录,Selinux类似于Windows中防火墙。该目录即存放selinux相关文件

/srv

存放一些服务启动后需要提取的数据

/sys

这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。 该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp

存放临时文件

/usr

用户的很多应用程序和文件都放在该目录下,类似Windows中的program files目录

/usr/bin

系统用户使用的应用程序

/usr/sbin

超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src

内核源代码默认的放置位置

/var

存放不断扩充的文件,习惯将经常被修改的目录放在这个目录下。包括各种日志文件

/run

临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

Linux系统中有几个目录比较重要,不能误删或随意更改

  • /etc
  • /bin, /sbin, /usr/bin, /usr/sbin 此外,/bin, /usr/bin是给系统用户使用的指令(除root外的),而/sbin, /usr/sbin是给root使用的指令
  • /var

Linux中有两个特殊的目录,一个当前目录,可使用一个点.表示;另一个是当前目录的上一级目录,可使用两个点..表示

若一个目录或文件名以一个点.开始,表示这个目录或文件是一个隐藏目录或文件。即以默认方式查找时,不显示该目录或文件

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus