Linux课程笔记 Day01 课后作业总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux课程笔记 Day01 课后作业总结相关的知识,希望对你有一定的参考价值。

1.Linux启动流程分析

Linnux系统的启动过程如下:

  1. 加载Bios的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备;
  2. 读取并执行第一个启动设备内MBR的boot loader(即是grub、spfdisk等程序);
  3. 依据boot loader的设置加载Kernel,Kernel会开始检测硬件与加载驱动程序;
  4. 在硬件驱动成功后,Kernel会主动调用init进程,而init会取得run level信息;
  5. Init执行/etc/rc.d/rc.sysinit来准备软件执行的操作环境(如网络、时区等);
  6. Init执行run –level的各个服务的启动(script方式);
  7. Init执行/etc/rc.d/rc.local文件;
  8. Init执行终端模拟程序mingetty来启动login进程,最后就是用户登录。

BIOS,开机自我测试与MBR

(1)   启动整个系统就得让系统加载BIOS,并通过BIOS程序去加载CMOS的信息,并且通过CMOS的设置值取得主机的各项硬件配置,比如CPU、各设备的I/O地址等

(2)   取得这些信息之后,BIOS还进行开机检测,然后执行硬件的初始化,之后定义可启动设备的顺序

(3)   由于不同的操作系统,文件格式不同,所以需要不同的boot loader来加载内核。BIOS首先通过硬件的INT 13中断功能读取检测到的第一个启动设备的第一个扇区即MBR(这是硬件本身就支持的功能),然后执行boot loader

注:如果主机有两块硬盘,就有两个MBR。首先读取哪个MBR,决定于BIOS的设置,即将哪块硬盘设置为第一个启动设备。

Boot loader的功能

(1)   提供菜单:供用户可以选择不同的启动选项

(2)   加载内核文件:直接指向可启动的程序区段来开始操作系统

(3)   转交其他loader:将引导加载功能转交给其他loader负责

注:windows的loader默认不具有控制权转交。每个操作系统默认是会安装一套boot loader到它自己根目录所在的文件系统的boot sector(引导扇区)。Linux在安装时,可以选择将boot loader安装到MBR,也可以不安装。但是windows理论上,会在MBR和boot sector都安装一份boot loader。安装多系统的时候,先安装linux后安装windows,windows会覆盖掉linux的boot loader,不能出现linux的菜单选项,所以安装多系统一般都是先安装windows然后安装linux。

 

加载内核检测硬件与initrd的功能

(1)   boot loader开始读取内核文件后,linux会将内核解压缩到内存当中,并且利用内核的功能,开始测试与驱动各个周边设备,包括存储设备与CPU、网卡、声卡等。内核文件会放置到/boot,并取名为/boot/vmlinuz。

 

(2)   linux是通过加载根目录下/lib/momdules内的动态模块来提供加载驱动程序功能的,比如识别USB、SATA、SCSI等磁盘设备(/lib不能与/分别放在不同的分区)

 

(3)   虚拟文件系统:一般使用文件名为/boot/initrd,该文件也是通过boot loader来加载到内存中,被解压缩并且在内存当中仿真成一个根目录,并提供一个可执行程序,通过该程序来加载启动过程中所需要的动态模块。来解决内核无法识别SATA等磁盘,无法挂载根目录,无法加载/lib/modules的动态模块来识别SATA等磁盘的问题。

 

(4)   Initrd解压缩成根目录,内核凭此加载适当驱动程序后,虚拟文件系统会释放掉,并挂载实际的根目录文件系统。

 

注:如果linux系统是安装在IDE接口的磁盘上,并且使用默认的ext2/ext3文件系统,不需要initrd也可以进入系统,USB、SATA、SCSI需要initrd。

 

 第一个进程init及配置文件/etc/inittab

内核主动调用的第一个进程就是/sbin/init,PID是1,配置文件是/etc/inittab,主要的功能是准备软件之星的环境,包括系统的主机名、网络设置、语系处理文件系统格式等

Init的处理流程是根据/etc/inittab文件内容一行一行从上往下处理的,流程如下:

(1)   先取得runlevel,假设run level是5

(2)   使用/ec/rc.d/rc.sysinit进行系统初始化

(3)   由于run level是5,只进行“5:5:wait:/etc/rc.d/rc5”

(4)   设置好[ctrl]+[alt]+[del]这组的组合键功能

(5)   设置不断电系统的pf,pr两种机制

(6)   启动mingetty的6个终端机

(7)   最终以/etc/X11/perfdm-nodaemon启动图形界面

 

Init系统初始化流程(/etc/rc.d/rc.sysinit)

 不同发行版本的linux会有不同的脚本名称,以/etc/inittab中定义的为准

/etc/rc.d/rc.sysinit的主要工作大概有以下:

(1)   取得网络环境与主机类型

(2)   测试与挂载内存设备/proc及USB设置/sys

(3)   决定是否启动SELinux

(4)   启动系统的随机数生成器(帮助系统进行性一些密码加密演算的功能)

(5)   设置终端机字体

(6)   设置显示启动过程中的欢迎界面

(7)   设置系统时间与时区设置:需读入/etc/sysconfig/clock设置值

(8)   接口设备的检测与Plug and Play(PnP)参数的测试

(9)   用户自定义模块的加载:用户可以在/etc/sysconfig/modules/*.modules中加入自定义的模块

(10)  加载内核的相关设置:系统会主动去读取/etc/sysctl.conf这个文件的设置值

(11)  设置主机名与初始化电源管理模块

(12)  初始化软件磁盘阵列:主要是/etc/mdadm.conf来设置好的

(13)  初始化LVM的文件系统功能

(14)  以fsck检验磁盘文件系统,会进行filesystem check

(15)  进行磁盘配额quota的转换

(16)  重新以可读写模式挂载系统光盘

(17)  启动quota功能

(18)  启动系统为随机数生成器

(19)  清除启动过程当中的临时文件

(20)  将启动相关信息加载/var/log/dmesg中

 启动系统服务与相关启动配置文件

(1)   通过外部的第一号参数($1)来取得想要执行的脚本目录,即由  /etc/rc.d/rc x可以取得/etc/rcx.d这个目录来准备处理相关的脚本程序

(2)   找到/etc/rcx.d/K??*开头的文件,并进行/etc/rcx.d/K??*stop的操作

(3)   找到/etc/rcx.d/S??*开头的文件,并进行/etc/rcx.d/S??*start的操作

 注:/etc/rcx.d/[SK]xx其实就是跑到/etc/init.d/去找到对应的服务脚本,然后分别start或者stop而已。(xx是表示执行的顺序)

用户自定义开机启动程序(etc/rc.d/rc.local)

用户自定义的shell script不需要放在/etc/init.d里面,只要把shell script的完整文件名写入/etc/rc.d/rc.local

 

 

2. /etc/inittab文件及运行级别0-6总结

Linux 启动加载完核心之后,系统就已经准备好,等待程序执行。第一个启动的程序就是“/sbin/init”。

Init 程序的工作相当多,它除了利用配置文件“/etc/inittab”来获取运行等级(Run level)之外,还会通过运行等级的设置来启动不同的服务项目。根据有无网络与有无 X Window,Linux 启动分为 6 个运行等级,分别是 

     0‐halt 系统直接关机。 

     1‐single user mode 单用户维护模式,用于系统出现问题的时候进行维护。 

     2‐Multi‐user,withoutNFS 与等级 3 类似,但无 NFS 服务。 

     3‐Full multi‐user mode 完整的含有网络功能的纯文本模式。 

     4‐unused 系统保留功能。 

     5‐X11 与等级 3 类似,但是用 X Window。 

     6‐reboot 重新启动 

 

文件/etc/inittab 的内容 

#设置熊启动的运行等级设置项目 

id:3:initdefault: 

 

#开始启动运行等级的服务前,使用检测与初始化系统环境的设置文件: 

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

 

#7 个不同运行等级需要启动的五福的脚本放置路径: 

l0:0:wait:/etc/rc.d/rc 0 

l1:1:wait:/etc/rc.d/rc 1 

l2:2:wait:/etc/rc.d/rc 2 

l3:3:wait:/etc/rc.d/rc 3 

l4:4:wait:/etc/rc.d/rc 4 

l5:5:wait:/etc/rc.d/rc 5 

l0:6:wait:/etc/rc.d/rc 6 

 

#是否允许按下[Ctrl]+[alt]+[del]就重新启动的设置项目: 

ca::ctrlaltdel:/shin/shutdown ‐t3 一 r now 

 

#本机终端启动的个数: 

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 

 

#在 X Window(运行等级 5)环境下的启动脚本设置项目: 

x:5:once:/etc/X11/prefdm ‐nodaemon 

这个文件的语法是这样的: 

[设置项目」:[run level]:[init 的操作行为]:[命令项目] 

1.设置项目: 

    最多 4 个字符,表示 init 的主要工作项目,只是一个简单的表示说明。 

2.运行等级: 

    该项目在哪些运行等级下执行。如果是 35 则表示运行等级 3 与 5 都会执行. 

3.init 的操作项目: 

    主要项目的意义如下: 

    initdefault:表示取认的运行等级设置值。 

    sysinit:表示系统初始化的操作项目。 

    ctrlaltdel:表示[ctrl]+[alt]+[del]三个按健是否可以重新启动的设里。 

    wait:表示后面接的命令项目必须要执行完毕,才能继续随后的操作。 

    respawn:表示后面接的 init 仍会主动“重新”启动。 

根据文件分析 

     如 果 我 们 不 想 让 用 户 使 用 [ctrl]+[alt]+[del] 来 重 新 启 动 系 统 , 我 们 可 以 注 释 掉 :

ca::ctrlaltdel:/shin/shutdown ‐t3 一 r now 

     若果我们想设置系统启动的默认运行等级我们可以修改 id:3:initdefault:的数字。 

 

 

 

3.linux下常用快捷键

快捷键:Ctrl+Alt+Del 

作用:关闭计算机 

注:   

 

快捷键:Alt+Fn(F1,F2,F3……) 

作用:切换至第 n 个控制台 

注: 

1.默认情况下 Linux 为我们提供了 6 个终端或者说是控制台(console)加上图形界面 F7。 

2.切换控制台后缓存内容也会被清除。 

 

快捷键:Scroll Lock 

作用:当屏幕输出滚动过快的时候可以用这个键给屏幕定格,再按一次解除锁定。 

注: 

1.锁定屏幕时仅仅只是看上去没有反应,但其实输入的东西系统依旧在处理,只不过你看不到罢了。 

2.如果你的控制台出现莫名的无响应,像死机一样,可以尝试一下是否因为不小心触发而造成屏锁定。 

 

快捷键:Shift+PageUP 或 Shift+PageDown 

作用:上、下滚动控制台缓存。 

注: 

 

快捷键:Ctrl+L 

作用:清楚屏幕,相当于 Clear 

注: 

 

快捷键:Ctrl+C 或者 Ctrl+\ 

作用:杀死或者说结束当前任务 

注: 

 

快捷键:Ctrl+D 

作用:作用是 EOF  即文件末尾(End‐of‐file)。 

注: 

 

快捷键:Ctrl+Z 

作用:结束进程 

注: 

 

快捷键:Ctrl+A 

作用:把光标移动到命令行最开始的地方。 

 

注: 

 

快捷键:Ctrl+E 

作用:把光标移动到命令行末尾。 

注: 

 

快捷键:Ctrl+U 

作用:清除命令行中光标所处位置之前的所有字符。 

注: 

 

 

快捷键:Ctrl+W 

作用:清除左边的字段 

注: 

 

快捷键:Ctrl+Y 

作用:将会贴上被 Ctrl+U 或者 Ctrl+K 或者 Ctrl+W 清除的部分 

注: 

 

快捷键:Ctrl+R 

作用:将自动在命令缓存中增量搜索后面输入的字符。 

注: 

 

快捷键:Tab 

作用:命令行自动补全 

注: 

 

快捷键:Ctrl+K 

作用:清除从提示符所在位置到行末尾之间的字符。 

 

以上是关于Linux课程笔记 Day01 课后作业总结的主要内容,如果未能解决你的问题,请参考以下文章

Linux课程笔记 Day03 课后作业精选

Linux课程笔记 Day01 课程内容总结

Linux课程笔记 Day02 课程内容总结

Linux课程笔记 Day03 课程内容总结

Linux课程笔记 Day06 命令总结

Linux课程笔记 Day03 命令总结