[ Linux ] Ubuntu文件系统启动流程|CSDN创作打卡

第一步 启动初始进程

内核加载之后,开始运行第一个程序/sbin/init(作用:初始化系统环境)
因为init是第一个执行程序,所以它的编号pid = 1
其他的进程都是从它衍生出来的,都是它的子进程。

第二步 确定运行级别

在Linux中有一类叫做“守护进程”,这就是开机启动的程序。
init进程的任务之一就是根据“运行级别”去运行这些开机启动的程序。
“运行级别”:由于不同的环境下需要不同的开机启动程序(如:是否需要桌面),Linux针对一些不同的开机场合分配不同的开机启动程序
Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,没使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
init进程首先读取/etc/inittab,它是运行级别的设置文件

id:5:initdefault

initdefault =5,表明运行级别为5。可以手动修改这个值
每个运行级别在/etc目录下面,都有一个对应的子目录,装有要加载的程序。

/etc/rc0.d
/etc/rc1.d
/etc/rc2.d
/etc/rc3.d
/etc/rc4.d
/etc/rc5.d
/etc/rc6.d

目录/etc/rc5.d中指定的程序

README             
S01console-setup.sh
S02binfmt-support  
S03hostapd         
S02sudo            
S05triggerhappy    
.......

除第一个README之外,其他文件名都是“字母(S/K)+两位数+程序名”。
字母S(Start):启动
字母K(Kill):关闭
两位数:处理顺序(越小越早处理)

开机内部启动服务命令:

$ sudo /etc/init.d/apache2 start
# 或者
$ service apache2 start

查看运行级别可以看/etc/inittab也可以用runlevel命令,后续会讲述runlevel命令使用
注:若用户放在/etc/rcX.d里的执行脚本没有被执行,可以放在/etc/profile.d/下面运行,即可okay!!

第三步 init进程执行rc.sysinit

在确定运行等级之后,Linux运行的第一个用户层文件 是/etc/rc.d/rc.sysinit脚本程序。它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件

第四步 启动内核模块

具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

第五步 加载开机启动程序

既然知道了要启动哪些启动程序以及顺序,就开始加载
linux中“运行级别”上述提到有6个,为了让每个“运行脚本”对应的目录中能兼容一个启动程序,可以将每个目录下的运行程序用软链接到真正存放运行程序的地方

lrwxrwxrwx 1 root root  26 Jan 18 17:30 S01console-setup.sh -> ../init.d/console-setup.sh
lrwxrwxrwx 1 root root  24 Jan 18 17:42 S02binfmt-support -> ../init.d/binfmt-support
lrwxrwxrwx 1 root root  17 Jan 18 17:30 S03hostapd -> ../init.d/hostapd

lrwxrwxrwx 1 root root  14 Jan 18 17:30 S02sudo -> ../init.d/sudo
lrwxrwxrwx 1 root root  22 Jan 18 17:41 S05triggerhappy -> ../init.d/triggerhappy

可以看出链接到的目录/etc/init.d下的运行程序

第六步:执行/etc/rc.d/rc.local

rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

第七步:用户登入

开机启动程序加载完毕后,就要用户登入了
一般有三种登入方式:
1、命令行登入
2、ssh登入
3、图形界面登入

这三种情况有不同对用户进行认证的方式:
命令行登入:
(1)init进程调用getty程序,让用户输入用户名和密码。
(2)调用login程序,核对密码(Debian还会多一项对身份核对的程序/etc/pam.d/login)
(3)审核通过,从文件/etc/passwd读取该用户指定的shell,然后启动ssh登入:
(1)调用sshd程序(同样Debian还是会再一次调用/etc/pam.d/sshd),代替getty和login
(2)启动shell
图形界面登入:
(1)init程序调用显示管理器,Gnome图形界面对应的显示管理器为gdm(GNOME Display Manager),输入用户名和密码
(2)审核通过,读取/etc/gdme/Xsession,启动用户会话

第八步 进入login shell

shell(命令行界面):让用户可以直接与操作系统对话。
用户登录时打开的shell,叫做login shell

Debian默认的shell 是Bash,它会读取一系列的配置文件。上面的三种情况读取的配置文件有所不同

~/.bash_profile
~/.bash_login
~/.profile

命令行登入:
(1)读取/etc/profile ,这是对所有的用户都有效的配置
(2)在对应的用户目录下找上面三个文件(查找规则:三文件只有一个文件存在就不再读入后面的文件)
ssh登入:同命令行登入过程一样
图形界面登入:只加载/etc/profile和~/.profile。
完成上面的步骤,用户就已经可以看到命令行提示符或图形界面了。

第九步 打开non-login shell

用户进入操作系统后,会常动手启动一个shell界面 操作,这个shell就是non-login shell。这个shell不同于上面的shell的读取文件配置的过程。
这个shell会读入用户自己的bash配置文件~/.bashrc 对于bash的定制,都写在这个文件里面的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bazinga bingo

您的鼓励就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值