Linux引导与配置文件加载过程

合集下载

Linux 系统引导过程

Linux 系统引导过程

启动流程启动时要加载核心,让核心来驱动整个硬件。

整个启动过程:1.加载BIOS的硬件信息,并获得第一个启动设备的代号(CMOS中设定的启动项)。

2.读取第一个启动设备的MBR的引导加载程序(lilo、grub、spfdisk)3.加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有硬件设备。

4.核心执行init程序并获取运行信息。

5.Init执行/etc/rc.d/rc.sysinit文件6.启动核心的外挂模块(/etc/modprobe.conf)7.Init 执行各个批处理文件(根据运行级别)。

8.Init 执行/etc/rc.d/rc.local文件9.执行/bin/login程序,等待用户登录。

10.登录之后开始以shell控制主机。

引导加载程序与核心的载入主机读取BIOS,并且了解主要的主机硬件信息后,主机便开始尝试加载操作系统。

主机首先读取的就是硬盘的主引导记录(MBR),在MBR中装有引导加载程序(比如说grub)。

主机刚启动时是不认识磁盘文件系统的,这就需要引导加载程序帮忙。

但我们知道MBR是整个硬盘的第一个扇区,整个大小为一个扇区的大小(512KB),而我们的加载程序却远远大于这个容量。

怎么办?引导加载程序分成两个阶段来执行:1,执行引导加载程序的主程序,这个主程序放在MBR或超级块中。

2,载入引导加载程序的所有设置文件与相关的环境参数文件。

一般来说,设置文件都放在/boot目录下。

引导加载程序必须能做到:●引导加载程序可以直接指定并取用核心文件,并加载到主存储器中。

●也可以将加载程序的控制权移交给下一个加载程序(超级块中的引导加载程序)。

grub是如何被载入的呢?grub有几个重要文档,stage1,stage2,以及stage1.5,这些文档都在/boot/grub下,grub被载入时有以下几个步骤。

Stage1阶段装载基本的引导程式(stage1),这也是安装在MBR中的内容,大小为512字节,但这并不意味着占用的空间为512字节,这还要看块的大小以及inode控制的块数。

grub2 原理

grub2 原理

grub2 原理全文共四篇示例,供读者参考第一篇示例:Grub2是一款广泛应用于Linux操作系统的引导管理器,其设计的初衷是为了解决引导多个操作系统的问题。

Grub2的设计极具灵活性和可扩展性,使得它成为目前最流行的引导管理器之一。

Grub2的工作原理十分复杂,但可以简单地分为几个主要步骤:第一步是启动引导加载程序。

当计算机启动时,BIOS会加载Grub2引导加载程序到内存中,并执行引导加载程序。

引导加载程序的主要功能是在系统启动时向用户提供一个选择菜单,让用户选择要启动的操作系统。

第二步是加载内核。

一旦用户选择了要启动的操作系统,Grub2会加载该操作系统的内核文件到内存中。

内核文件包含了操作系统的核心功能,如进程管理、文件系统等。

第三步是加载初始化RAM磁盘(initrd)。

在加载内核之后,Grub2会加载initrd文件到内存中。

initrd是一个临时的文件系统,用于初始化硬件设备和加载驱动程序,以便系统能够顺利启动。

第四步是启动操作系统。

Grub2会将控制权交给内核,由内核初始化系统并启动用户空间进程,最终启动操作系统。

Grub2的设计具有许多优点,例如支持多种文件系统和操作系统,能够通过脚本和配置文件自定义启动选项,支持密码保护和图形界面等。

Grub2还支持在启动时对引导选项进行编辑,方便用户在系统启动时进行调试和配置。

Grub2也存在一些缺点,例如在配置文件中出现错误可能导致系统无法启动,引导加载程序的体积相对较大,可能会增加系统启动时间等。

在使用Grub2时,用户需要仔细阅读文档并谨慎配置,以避免出现问题。

Grub2是一款功能强大且灵活的引导管理器,能够帮助用户管理多个操作系统的启动过程。

它的工作原理虽然复杂,但通过对其原理和配置文件的深入了解,用户可以充分利用其强大的功能,提高系统的稳定性和性能。

第二篇示例:Grub2是一个多重引导加载程序,常用于Linux系统,负责加载操作系统。

arm版本linux系统的启动流程

arm版本linux系统的启动流程

arm版本linux系统的启动流程ARM架构是一种常见的处理器架构,被广泛应用于嵌入式设备和移动设备中。

在ARM版本的Linux系统中,启动流程是非常重要的,它决定了系统如何从开机到正常运行。

本文将详细介绍ARM版本Linux系统的启动流程。

一、引导加载程序(Bootloader)引导加载程序是系统启动的第一阶段,它位于系统的固化存储器中,比如ROM或Flash。

在ARM版本的Linux系统中,常用的引导加载程序有U-Boot和GRUB等。

引导加载程序的主要功能是加载内核镜像到内存中,并将控制权转交给内核。

二、内核初始化引导加载程序将内核镜像加载到内存后,控制权被转交给内核。

内核初始化是系统启动的第二阶段,它主要完成以下几个步骤:1. 设置异常向量表:ARM架构中,异常是指硬件产生的中断或故障,比如系统调用、中断请求等。

内核需要设置异常向量表,以便正确处理异常。

2. 初始化处理器:内核对处理器进行初始化,包括设置页表、启用缓存、初始化中断控制器等。

3. 启动第一个进程:内核创建第一个用户进程(一般是init进程),并将控制权转交给它。

init进程是系统中所有其他进程的父进程,负责系统的初始化工作。

三、设备树(Device Tree)设备树是ARM版本Linux系统中的一种机制,用于描述硬件设备的相关信息。

在内核初始化过程中,内核会解析设备树,并建立设备树对象,以便后续的设备驱动程序使用。

设备树描述了硬件设备的类型、地址、中断等信息,以及设备之间的连接关系。

它使得内核能够在运行时自动识别和配置硬件设备,大大提高了系统的可移植性和灵活性。

四、启动初始化(Init)启动初始化是系统启动的第三阶段,它是用户空间的第一个进程(init进程)接管系统控制权后的操作。

启动初始化主要完成以下几个任务:1. 挂载根文件系统:启动初始化会挂载根文件系统,使得用户可以访问文件系统中的文件和目录。

2. 加载系统服务:启动初始化会加载并启动系统服务,比如网络服务、日志服务、时间同步服务等。

系统运维面试题目(3篇)

系统运维面试题目(3篇)

第1篇第一部分:Linux操作系统基础1. Linux系统启动流程是什么?请详细描述GRUB引导加载器的配置过程。

- 解析: Linux系统启动流程包括POST(加电自检)、BIOS/UEFI初始化、加载引导加载器(如GRUB)、执行内核初始化、启动init进程等。

GRUB配置涉及编辑`/etc/grub.conf`文件,设置默认启动项、启动参数、密码保护等。

2. 如何查看Linux系统中的CPU和内存使用情况?请列举一些常用的命令。

- 解析:常用的命令包括`vmstat`(虚拟内存统计)、`top`(显示系统当前进程状态)、`htop`(交互式的`top`替代品)、`free`(显示内存使用情况)等。

3. 请简述Linux系统中文件权限的表示方法以及如何修改文件权限。

- 解析:文件权限以rwx(读、写、执行)表示,使用`chmod`命令可以修改文件权限,例如`chmod 755 /path/to/file`表示设置文件所有者可读、写、执行,组和其他用户可读、执行。

4. 在Linux系统中,如何查找某个文件的所有者以及修改文件所有者?- 解析:使用`ls -l /path/to/file`可以查看文件的所有者,使用`chown user/group /path/to/file`可以修改文件所有者。

5. 请描述Linux系统中进程管理的基本命令,如ps、top、kill等。

- 解析: `ps`用于查看当前进程,`top`用于实时显示系统进程状态,`kill`用于终止进程。

第二部分:服务器管理6. 如何安装和配置Apache和Nginx服务器?请描述基本配置文件的结构。

- 解析:安装Apache和Nginx通常使用包管理器(如yum、apt-get),配置文件包括主配置文件(如`httpd.conf`、`nginx.conf`)和虚拟主机配置文件。

7. 请简述Linux系统中日志文件的格式以及如何查看和清理日志文件。

LILO(LInux LOader)引导加载程序

LILO(LInux LOader)引导加载程序

LILO(LInux LOader)引导加载程序一.什么是引导加载程序最简单地讲,引导加载程序(Boot Loader)会引导操作系统。

当机器引导它的操作系统时,BIOS会读取引导介质上最前面的512字节(即人们所知的主引导记录(Master Boot Record,MBR))。

在单一的MBR中只能存储一个操作系统的引导记录,所以当需要多个操作系统时就会出现问题,所以需要更灵活的引导加载程序。

主引导记录本身要包含两类内容-部分(或全部)引导加载程序,以及分区表(其中包含关于介质其余部分如何划分为分区的信息)。

当BIOS引导时,它会寻找硬盘驱动器第一个扇区(MBR)中存储的数据;BIOS使用存储在MBR中的数据激活引导加载程序。

由于BIOS只能访问很少量的数据,所以大部分引导加载程序分两个阶段进行引导。

在引导的第一个阶段中,BIOS引导一部分引导加载程序,即初始程序加载程序(initial program loader,IPL)。

IPL查询分区表,从而能够加载位于不同介质上任意位置的数据。

首先通过这步操作来定位第二阶段引导加载程序(其中包含加载程序的其余部分)。

第二阶段引导加载程序是引导加载程序的主体;很多人认为这才是引导加载程序的真正部分。

它包含加载程序更需要磁盘空间的部分,比如用户界面和内核引导程序。

从简单的命令行到绘声绘色的GUI,这些用户界面的范围很广泛。

引导加载通常配置为两种方式的其中之一:要么是作为主引导加载程序(primary boot loader),要么是作为二级引导加载程序(secondary boot loader)。

主引导程序是安装在MBR上的第一阶段引导加载程序。

二级引导加载程序是安装在可引导分区的第一阶段引导加载程序。

必须在MBR上安装单独的引导加载程序,并配置它将控制权转交给二级引导加载程序。

很多较新的Linux引导加载程序特别实用,因为它们提供了不同程度的交互,比如高级的GUI和加密的密码,以及通过选择操作系统进行引导的能力。

linux grub 参数

linux grub 参数

linux grub 参数Linux Grub是一个开源的引导加载程序,用于在计算机启动时加载操作系统。

Grub的参数是在启动时传递给Grub引导程序的一系列选项和设置。

这些参数可以用于配置和调整系统的各种功能和行为。

本文将介绍几个常用的Grub参数,并详细解释它们的作用和用法。

1. root:指定系统根目录的设备或分区。

这个参数告诉Grub操作系统的根文件系统在哪里。

例如,root=/dev/sda1表示根文件系统位于第一个硬盘的第一个分区上。

2. kernel:指定要加载的操作系统内核文件。

这个参数告诉Grub 要加载哪个操作系统的内核。

例如,kernel /vmlinuz-5.4.0-42-generic表示要加载名为vmlinuz-5.4.0-42-generic的内核文件。

3. initrd:指定用于引导过程中的初始内存文件系统镜像。

这个参数告诉Grub在引导过程中使用哪个内存文件系统镜像。

例如,initrd /initrd.img-5.4.0-42-generic表示使用名为initrd.img-5.4.0-42-generic的镜像。

4. quiet:禁用内核启动信息的输出。

这个参数告诉Grub在启动过程中不显示任何启动信息。

这在需要静默启动系统时非常有用。

5. splash:显示启动画面。

这个参数告诉Grub在启动过程中显示一个启动画面,提供更好的用户体验。

6. single:以单用户模式启动系统。

这个参数告诉Grub在启动时进入单用户模式,只启动基本的系统服务。

这在需要进行系统维护或故障排除时非常有用。

7. nomodeset:禁用显卡的核心模式设置。

这个参数告诉Grub在启动过程中不使用显卡的核心模式设置,避免可能的显卡兼容性问题。

8. acpi=off:禁用高级配置和电源接口。

这个参数告诉Grub在启动过程中禁用高级配置和电源接口,可以解决一些与电源管理相关的问题。

9. noapic:禁用高级可编程中断控制器。

Linux系统引导过程及排除启动故障

Linux系统引导过程及排除启动故障

Linux系统引导过程及排除启动故障⼀、Linux操作系统引导过程⼆、系统初始化进程1、init进程2、Systemd3、Systemd单元类型三、排除启动类故障【1】、修复MBR扇区故障(含实验过程)【2】、修复GRUB引导故障●⽅法⼆:进⼊急救模式,恢复GRUB引导程序(与MBR 引导扇区类似)●⽅法三:引导界⾯进⼊急救模式,重建GRUB菜单配置⽂件⽅案三实验四、遗忘root⽤户的密码实验过程⼀、Linux操作系统引导过程1.开机⾃检服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进⾏初步检测,检测成功后根据预设的启动顺序移交系统控制权,⼤多时候会移交给本机硬盘。

总结:检测出第⼀个能够引导系统的设备,⽐如硬盘或者光驱2.MBR 引导当从本机硬盘中启动系统时,⾸先根据硬盘第⼀个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导⽂件的分区;或者直接根据MBR 记录中的引导信息调⽤启动菜单(如 GRUB)。

总结:运⾏放在MBR扇区⾥的启动GRUB引导程序3.GRUB 菜单对于Linux操作系统来说,GRUB(统⼀启动加载器)是使⽤最为⼴泛的多系统引导器程序。

系统控制权传递给GRUB以后,将会显⽰启动菜单给⽤户选择,并根据所选项(或采⽤默认值)加载Linux内核⽂件,然后将系统控制权转交给内核。

CentOS 7 采⽤的是 GRUB2 启动引导器。

总结:GRUB引导程序通过读取GRUB配置⽂件/boot/grub2/grub.cfg,来获取内核和镜像⽂件系统的设置和路径位置4.加载 Linux 内核Linux内核是⼀个预先编译好的特殊⼆进制⽂件,介于各种硬件资源与系统程序之间,负责资源分配与调度。

内核接过系统控制权以后,将完全掌控整个Linux操作系统的运⾏过程。

CentOS 7系统中,默认的内核⽂件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

Linux试题与答案

Linux试题与答案

Linux试题与答案一.填空题:1. 在Linux系统中,以文件方式访问设备。

2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统。

3. Linux文件系统中每个文件用 i节点来标识。

4. 全部磁盘块由四个部分组成,分别为引导块、专用块、 i节点表块和数据存储块。

5. 链接分为:硬链接和符号链接。

6. 超级块包含了i节点表和空闲块表等重要的文件系统信息。

7. 某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是目录。

8. 前台起动的进程使用 Ctrl+c 终止。

9. 静态路由设定后,若网络拓扑结构发生变化,需由系统管理员修改路由的设置。

10. 网络管理的重要任务是:控制和监控。

11. 安装Linux系统对硬盘分区时,必须有两种分区类型:文件系统分区和交换分区。

13. 编写的Shell程序运行前必须赋予该脚本文件执行权限。

14. 系统管理的任务之一是能够在分布式环境中实现对程序和数据的安全保护、备份、恢复和更新。

15. 系统交换分区是作为系统虚拟存储器的一块区域。

16. 内核分为进程管理系统、内存管理系统、 I/O管理系统和文件管理系统等四个子系统。

17. 内核配置是系统管理员在改变系统配置硬件时要进行的重要操作。

18. 在安装Linux系统中,使用netconfig程序对网络进行配置,该安装程序会一步步提示用户输入主机名、域名、域名服务器、IP地址、网关地址和子网掩码等必要信息。

19. 唯一标识每一个用户的是用户 ID 和用户名。

20 . RIP 协议是最为普遍的一种内部协议,一般称为动态路由信息协议。

21. 在Linux系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统。

22. DHCP可以实现动态 IP 地址分配。

23. 系统网络管理员的管理对象是服务器、用户和服务器的进程以及系统的各种资源。

24. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux引导及配置文件加载过程解读
文章分类:操作系统
??
本文包括3部分内容
1、 Linux的引导过程
2、 Linux 的运行级别
3、 /etc/inittab与/etc/rc.d/ 与/etc/rc.d/init.d的关系
关键词:Linux引导过程、运行级别、inittab与 init.d 与 rc.d
一、 Linux的引导过程
系统加电之后,首先进行的硬件自检,然后是bootloader对系统的初始化,加载内核。

内核被加载到内存中之后,就开始执行我们的系统设置了。

一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动程序进行初始化。

从这里开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。

内核挂装了根文件系统,并已初始化所有的设备驱动程序和数据结构等之后,就通过启动一个叫init的用户级程序,完成引导进程。

二、运行级别(run level)
Init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。

init 进程上来首先做的事是去读取/etc/目录下 inittab文件中initdefault id值,这个值称为运行级别(run-level)。

它决定了系统启动之后运行于什么级别。

运行级别决定了系统启动的绝大部分行为和目的。

这个级别从0到 6 ,具有不同的功能。

不同的运行级定义如下:# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)
# 1 - 单用户模式
# 2 - 多用户,没有 NFS
# 3 - 完全多用户模式(标准的运行级)
# 4 –系统保留的
# 5 - X11 (x window)
# 6 - 重新启动(千万不要把initdefault 设置为6,否则将一直在重启)
三、 /etc/rc.d/与/etc/rc.d/init.d的关系
先解释一下init.d。

这个目录存放的是一些脚本,一般是linux以rpm包安装时设定的一些服务的启动脚本。

系统在安装时装了好多rpm包,这里面就有很多对应的脚本。

执行这些脚本可以用来启动、停止、重启这些服务。

/etc/rc.d/init.d这个目录下的脚本就类似与windows中的注册表,在系统启动的时候执行。

程序运行到这里(init进程读取了运行级别),就开始有选择地启动服务了,这时刚才说的运行级别就起作用了。

在决定了系统启动的run level之后,/etc/rc.d/rc这个脚本先执行。

在RH9的源码中它都是一上来就check_runlevel(),知道了运行级别之后,对于每一个运行级别,在rc.d下都有一个子目录分别是rc0.d,rc1.d ….. rc6.d。

每个目录下都是到init.d目录的一部分脚本一些链接。

每个级别要执行哪些服务就在相对应的目录下,比如级别5要启动的服务就都放在rc5.d下,但是放在这个rc5.d下的都是一些链接文
件,链接到init.d中相对应的文件,真正干活到init.d里的脚本。

??
附: inittab以及/etc/rc.d的内容
??
rc.d的内容如下:
init.d/ :各种服务器和程序的二进制文件存放目录。

rcx.d/: 各个启动级别的执行程序连接目录。

里面的东西都是指向init.d/的一些软连接。

rc.d下还有三个脚本:rc.sysinit, rc, rc.local 。

另外/etc/目录下面也有和rc.d一样的文件或目录,它们都是指向rc.d下面对应文件或目录的链接。

??
init执行的配置文件是/etc/inittab,它定义各种rc脚本的执行顺序。

其内容大致分为如下几部分:
/etc/rc.d/rc.sysinit # 由init执行的第一个脚本
/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式
/etc/rc.d/rc.local #有的版本inittab中有rc.local的记录,有的没有。

/sbin/mingetty # 等待用户登录
??
rc*.d目录中的文件都是指向init.d中脚本的链接,命名方式为(K|S)[0-9]*ServerName。

K 表示Kill ,S表示start。

数字小的先执行。

inittab中没有rc.local记录的,在rc*.d 的目录中一般有指向rc.local的链接(eg,S99local)。

rc脚本复制调用rc*.d中的脚本,K开头的传递stop参数,S开头的传递start参数。

了解了这些文件之间的关系,就可以改变这些文件的位置,名称。

相关文档
最新文档