~~~~(>_<)~~~~

好忙啊~啥都不说了~~

PC从开机到进入系统的步骤

  1. BIOS

BIOS是固化在ROM中的代码(firmware)拥有一些系统设备信息,如磁盘,键盘,串口等可由用户配置,并保存在CMOS中映射到特殊地址,启动时自动开始执行根据配置信息对硬件进行初始化,并选择引导设备,如硬盘,光盘,软盘等确定启动设备后,以磁盘为例,将执行磁盘上的MBR

  1. MBR(Master Boot Record)

    默认的MBR是个很简单的程序,根据分区表的内容判断哪个分区是启动分区,并从该分区加载引导程序执行。

    Linux的OS Loader,如GRUB,会在MBR安装自己的代码,用于加载Loader。

    MBR空间有限,其中代码仅用于从磁盘加载 OS Loader的其余部分。

    OS Loader可以处理多系统、多内核的情况。

  2. OS Loader

GRUB每次执行时从磁盘读入配置文件,在用户修改配置文件后不需要重新安装,支持多种文件系统。

/boot/grub/grub.conf

  1. 内核初始化

    扫描系统,确定处理器、内存、设备等

    初始化设备,如磁盘、网卡、显卡

    初始化用于进行内存管理、中断响应、设备驱动等的数据结构

    派生内核线程

    内核线程是用于完成内核任务的可调度实体,但没有自己的进程空间。如用于进行内存交换、处理软中断等

    派生init进程,进行用户级初始化

  2. 用户级启动脚本

    init进程是系统中首个真正的用户级进程,也是所有用户进程的始祖。

    根据不同的运行级别,选择执行不同的程序,派生相应的进程。运行级别可以在GRUB中指定。在/etc/inittab中设置默认的运行级。

    一般根据运行级,通过rc程序执行相应目录中的启动脚本,进行系统初始化和服务的启动。

6.init调用getty提示用户登录

init定义了7个运行级(runlevel)

运行级0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级1:单用户工作状态,root权限,用于系统维护,禁止远程登录

运行级2:多用户状态(不挂载网络文件系统)

运行级3:完全的多用户状态(挂载网络文件系统),登录后进入虚拟文本终端模式

运行级4:系统未使用,保留

运行级5:X11控制台,登录后进入图形界面模式

运行级6:系统正常关闭并重启(默认运行级别不能设为6,否则不能正常启动 )

*1. 在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)

2 .在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别

3 . rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。

4 .系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件

对于以K开头的文件,系统将终止对应的服务

对于以S开头的文件,系统将启动对应的服务

5 .查看运行级别用:runlevel

6 .进入其它运行级别用:init N

7 .另外init 0为关机,init 6为重启系统

*/etc/rc.d目录说明

init.d目录,存放服务启动的脚本

rc 文件,调用相应级别中运行目录的程序

rc n (1—6),存放每个运行级别中要运行的程序(k*:关闭程序,s*:启动服务),符号链接到init.d下文件。

rc.sysinit ,完成系统初始化

rc.local,存放系统启动时的程序

7.运行SHELL程序

*用户管理——用户数据文件

传统上,名字与ID的对应等用户信息保存在系统数据文件中

/etc/passwd:用户信息

/etc/shadow:口令信息

/etc/group:组信息

帐号和口令信息分开保存以提高安全性

1./etc/passwd

字段1:用户名。

字段2:密码(实际保存在shadow中)

字段3:UID(用户标识)

字段4:GID(组标识)

字段5:用户全名或本地帐号

字段6:用户目录

字段7:登录使用的Shell

2./etc/shadow

字段1:用户名

字段2:加密后的密码 (带!表示用户不能登录)

字段3:上次修改密码的日期 (从1970年1月1日算起)

字段4:密码不可被变更的天数

字段5:密码需要被重新变更的天数(99999表示不需要变更)

字段6:密码变更前提前几天警告

字段7:帐号失效日期

字段8:帐号取消日期

字段9:保留条目,目前没用

3./etc/group

字段1:组名;

字段2:组口令占位符;

类似的,有一个gshadow文件

很少使用组口令

字段3:组ID(GID)号;

字段4:成员列表,用逗号分开(不能加空格)。

*用户管理——相关命令

1.添加用户——useradd

useradd [options] LOGIN

LOGIN为要添加的用户的登录名字

-c COMMENT:注释

-d HOME_DIR:用户的HOME目录

-e EXPIRE_DATE:帐号过期日期

-g GROUP:用户的主组

-G GROUPS:用户的附加组

-s SHELL:用户的缺省Shell

-u UID:用户的UID;一般自动生成

2.修改用户信息——usermod

usermod [options] LOGIN

LOGIN为要修改的用户的登录名字

-c COMMENT:注释

-d HOME_DIR:用户的HOME目录

-e EXPIRE_DATE:帐号过期日期

-g GROUP:用户的主组

-G GROUPS:用户的附加组

-L:锁定用户的口令。在加密口令前添加一个“!”,从而使得没有口令能够匹配

-U:解锁用户的口令

3.删除用户——userdel

userdel [options] LOGIN

LOGIN为要删除的用户的登录名字

-f:强制删除,即使用户仍有登录

-r:删除用户的HOME目录和邮件目录

注意,如果不加参数-r,userdel将保留用户的主目录,只删除其他的几项内容

4.修改用户口令

passwd [options] [username]

默认修改本用户的口令,root可修改其它用户的口令

-l:锁定用户口令

-u:解锁用户口令

-d:删除用户口令

-n:口令最短有效天数

-x:口令最多有效天数

-w:口令过期提前警告天数

-i:口令过期后禁止用户的间隔天数

5.显示用户信息

id [username]

显示username的用户和组信息

默认显示当前用户信息

whoami

显示当前用户的用户名

groups

显示用户所处的组列表

su

获得其他用户的权限(需要授权)