linux开机过程和FHS

linux的启动过程:

第一步:开机自检,加载BIOS

    当我们打开计算机电源的时候,随后会听到滴的一声,自检开始,这个过程中主要是检测我们的计算机硬件设备比如:CPU,内存,主板,显卡,CMOS等设备是否有故障存在

第二步:读取MBR

BIOS自检,首先会在一个Boot Sequence程序中搜索可以让系统启动的引导设备(比如我们有时在BIOS中设置为从硬盘启动,或者从CD-ROM启动等等)

这时如果BIOS找不到可以引导的设备及相关程序后,便会启动失败,如果顺序的找到了相关设备硬盘,那么BIOS将把控制权交给启动设备中的MBR(Master Boot Record)主引导记录

MBR在大小为512字节,存放预启动信息、分区表等信息

第三步:Boot Loader grub引导菜单

在MBR程序中找到其前446字节的Boot Loader 

Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。

Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。

系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统

第四步:加载kernel内核

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。

系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

第五步:init进程依据inittab文件夹来设定运行级别

内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。

其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:

0:-halt  关机

1:-single user mode 单用户模式

2:-Multi-user,without NFS无网络支持的多用户模式  类似于下面的run level3

3:-Full multi-user mode 有网络支持的多用户模式

4:-unused 保留,未使用

5:-X11  有网络支持有X-Window支持的多用户模式

6:- reboot 重新引导系统,即重启

第六步:init进程执行rc.sysinit

在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。

第七步:启动内核模块

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

第八步:执行不同运行级别的脚本程序

根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务

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

你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:

 

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don’t

# want to do the full Sys V style init stuff.

 

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

第十步:执行/bin/login程序,启动mingetty,进入登录状态

简述开机系统启动过程

1.开机BIOS自检

2.MBR引导

硬盘0柱面0磁道1扇区的前446byte

3.grub引导菜单

cat /etc/grub.conf

4.加载内核kernel

5.启动init进程

[root@dingjian rc.d]# ps -ef|grep init

    root         1     0  0 Oct23 ?        00:00:02 init [3]         

6.读取inittab文件,执行rc.sysinit.rc等脚本

/etc/inittab

/etc/rc.d/rc.sysinit

/etc/rc.d/rc3.d/    <==文本模式

7.启动mingetty.进入系统登陆界面

详细内容参考:https://blog.51cto.com/mrxiong2017/2084767(感谢博主分享)

打开终端常用操作:

使用dhcp获取ip地址:dhclient

查看ip地址:ip a

强制终止进程:kill -9 进程号

使用Xshell远程连接工具连接:ssh ip地址、ssh  用户名@ip地址:

[root@localhost ~]#

修改主机名:hostnamectl set-hostname 主机名

查看当前工作目录(print work directory):pwd

切换用户(switch user):su - redhat

切换目录(change directory):cd  (如果不太了解怕出错的情况下,这里推荐使用绝对路径)

回到当前目录:cd .

回到当前目录的上一级目录:cd ..

切换到之前的目录:cd -

修改密码:passwd 用户名    直接输入passwd修改当前用户的密码

删除密码:passwd -d 用户名

root用户:不需要输入原密码,可以不符合密码复杂性规则,可以给任何人修改密码

普通用户:需要输入原密码,必须符合密码复杂性规则,passwd修改密码无法指定用户

查看当前Linux发行版本信息:cat /etc/redhat-release

查看版本号相关内容:

[root@localhost 桌面]# uname -r   内核版本号

3.10.0-327.el7.x86_64   主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]]

3主版本号

10次版本号,一般偶数表示较稳定版本

0修订版本号

327.el7 表示修改了327次

1.项目初版本时,版本号可以为 0.1 或 0.1.0,也可以为 1.0 或 1.0.0

2.当项目在进行了重大修改或局部修正累积较多,而导致项目整体发生全局变化时,主版本号加 1;

3.当项目在原有的基础上增加了部分功能时,主版本号不变,子版本号加 1,修正版本号复位为 0,因而可以被忽略掉 ;

4.当项目在进行了局部修改或 bug 修正时,主版本号和子版本号都不变,修正版本号加 1;

5.另外,编译版本号一般是编译器在编译过程中自动生成的,我们只定义其格式,并不进行人为控制 .

FHS文件系统层级标准:

FHS(filesystem hierarchy standard文件系统层级标准),定义了在类Unix系统中的目录结构和目录内容,即让用户了解到已安装软件通常放置于哪个目录下。

可执行文件:指的是可以由操作系统进行加载执行的文件

FHS采用树形结构组织文件。

linux里的一些目录:

/                根目录,通常不在这里存储文件

/bin        所有用户可用的基本二进制命令程序文件;

/sbin     供系统管理使用的工具程序;

/boot        开机启动的文件,包括linux内核以及开机菜单与开机所需配置文件等 例如:kernel, initramfs, grub等

/dev        存储特殊文件或设备文件;  设备文件,任何设备与接口设备都是以文件形式存在于这个目录的

/root        root用户的主目录

/home       普通用户的的家目录,一般每个普通用户默认的家目录;

/mnt        挂载点目录,其他文件系统的临时挂载点;

光盘必须和/下的某个目录节点建立联系才能使用。

把光盘和指定的挂载点目录建立联系的过程叫做挂载。

mount /dev/sr0 /mnt

/media        媒体目录,也是挂载点目录,便捷式设备挂载点;例如:cdrom, floppy等;

/opt        可选目录。存放第三方软件包和数据文件 附加应用程序的安装位置;

/var        存储常发生变化的数据目录;例如邮件,日志文件等;

/etc        系统程序的配置文件;

/lib        系统的函数库,为系统启动或根文件系统上的应用程序提供共享库,以及为内核提供内核模块;

/proc   内核和进程信息的基于内存的虚拟文件系统,内核及进程存储其相关信息;多为内核参数;

/run       系统运行时所需文件

/usr      放置的数据为可分享的与不可变动的,unix操作系统软件资源所放置的目录,而不是用户数据

/srv          service的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录,当前主机为服务提供的数据;

/tmp       让一般用户或者是正在执行的程序暂时放置文件的地方

/sys          这个目录其实跟/proc非常类似,也是一个虚拟的文件系统,主要是记录与内核相关的信息

详细内容可以参考:http://www.178linux.com/52725 (仅供参考学习)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值