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. 网络管理通常由监测、传输和管理三部分组成,其中管理部分是整个网络管理的中心。

linux引导之grub2

linux引导之grub2

linux引导之grub2先了解下什么是Bootloader以下是百度百科释意在嵌⼊式操作系统中,BootLoader是在内核运⾏之前运⾏。

可以初始化硬件设备、建⽴内存空间映射图,从⽽将系统的软硬件环境带到⼀个合适状态,以便为最终调⽤准备好正确的环境。

在中,通常并没有像BIOS那样的程序(注,有的嵌⼊式CPU也会内嵌⼀段短⼩的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

在⼀个基于ARM7TDMI core的中,系统在上电或复位时通常都从地址0x00000000处开始执⾏,⽽在这个地址处安排的通常就是系统的BootLoader程序Bootloader不属于操作系统,⼀般采⽤汇编语⾔和C语⾔开发。

需要针对特定的硬件平台编写。

在移植过程时,⾸先为开发板移植Bootloader。

Bootloader不但依赖于CPU的体系架构,⽽且依赖于嵌⼊式系统板级设备的配置。

3.Bootloader的操作模式⾃启动模式:在这种模式下,Bootloader从⽬标机上的某个固态存储设备上将操作系统加载到RAM中运⾏,整个过程并没有⽤户的介⼊。

交互模式:在这种模式下,⽬标机上的Bootloader将通过串⼝或⽹络等通信⼿段从开发板上下载内核映射和根⽂件系统映像等待RAM中。

可以被Bootloader写到⽬标机上的固态存储媒介质中,或者直接进⼊系统的引导。

也可以通过串⼝接收⽤户的指令。

⼆、Bootloader的基本功能初始化相关硬件把Bootloader⾃搬移到内存中执⾏⽤户指令加载并执⾏内核⼀个嵌⼊式系统从软件的⾓度看通常可以分为三个层次: 1、引导加载程序。

包括固化在固件(firmware)中的Booter代码(可选),和Loader两⼤部分。

2、操作系统。

特定于嵌⼊式板⼦的定制内核以及内核的启动参数;以及在内核和应⽤程序之间可能还会包括⼀个嵌⼊式图形⽤户界⾯,常⽤的嵌⼊式GUI有:MicroWindows和MiniGUI等。

文件系统加载过程

文件系统加载过程

linux文件系统初始化过程(1)---概述术语表:struct task:进程struct mnt_namespace:命名空间struct mount:挂载点struct vfsmount:挂载项struct file:文件struct super_block:超级块struct dentry:目录struct inode:索引节点一、目的linux文件系统主要分为三个部分:文件系统调用;虚拟文件系统(VFS);挂载到VFS 的实际文件系统。

其中,VFS是核心,linux文件系统的本质就是在内存中创建一棵VFS树。

当根目录被创建后,用户就可以使用系统调用在VFS上创建文件、删除文件、挂载各种文件系统等操作。

该系列文章主要分析linux3.10文件系统初始化过程,分为三个阶段:1、挂载根文件系统(rootfs);2、加载initrd;3、挂载磁盘文件系统;二、常用数据结构linux文件系统中重要的数据结构有:文件、挂载点、超级块、目录项、索引节点等。

每个数据结构的具体实现请参见源代码,这里不再描述。

为了直观的表示数据结构之间的关系,请参见图1:图中含有两个文件系统(红色和绿色表示的部分),并且绿色文件系统挂载在红色文件系统tmp目录下。

一般来说,每个文件系统在VFS层都是由挂载点、超级块、目录和索引节点组成;当挂载一个文件系统时,实际也就是创建这四个数据结构的过程,因此这四个数据结构的地位很重要,关系也很紧密。

由于VFS要求实际的文件系统必须提供以上数据结构,所以不同的文件系统在VFS层可以互相访问。

如果进程打开了某个文件,还会创建file(文件)数据结构,这样进程就可以通过file来访问VFS的文件系统了。

另外,该图只给出了主要的关系结构,忽略了部分细节。

图1三、函数调用关系图2描述了文件系统初始化过程中主要的函数调用关系。

linux文件系统初始化过程主要分为三个阶段:1、vfs_caches_init()负责挂载rootfs文件系统,并创建了第一个挂载点目录:'/';2、rest_init()负责加载initrd文件,扩展VFS树,创建基本的文件系统目录拓扑;3、init程序负责挂载磁盘文件系统,并将文件系统的根目录从rootfs切换到磁盘文件系统;图2四、总结linux文件系统初始化过程主要分为三个阶段:挂载rootfs,提供第一个挂载点''/;加载initrd,扩展VFS树;执行init程序,完成linux系统的初始化。

linux开机动画实现原理

linux开机动画实现原理

linux开机动画实现原理引言概述:Linux开机动画是指在Linux系统启动过程中显示的动画效果。

它不仅能够提升用户体验,还能展示操作系统的品牌形象。

本文将详细介绍Linux开机动画的实现原理。

正文内容:1. GRUB引导加载器1.1. GRUB的作用GRUB(GRand Unified Bootloader)是Linux系统中常用的引导加载器,它负责加载操作系统和内核。

在开机动画实现过程中,GRUB起到了关键的作用。

1.2. GRUB配置文件GRUB的配置文件位于/boot/grub目录下,可以通过编辑该文件来实现开机动画。

配置文件中的相关参数可以控制开机动画的显示效果和加载顺序。

2. Plymouth引导程序2.1. Plymouth的作用Plymouth是一个开源的引导程序,用于在Linux系统启动过程中显示图形界面和动画效果。

它可以替代传统的启动信息显示方式,提供更加美观和流畅的用户体验。

2.2. Plymouth主题Plymouth支持自定义主题,用户可以根据自己的喜好和需求选择合适的主题。

主题文件位于/usr/share/plymouth/themes目录下,可以通过修改主题文件来实现个性化的开机动画。

3. 动画素材制作3.1. 图像素材开机动画通常使用一系列图像帧来展示动画效果。

制作开机动画需要准备一组图像素材,可以使用图像编辑软件如GIMP或Adobe Photoshop来制作。

3.2. 视频素材除了静态图像,开机动画还可以使用视频素材。

制作开机动画时,可以将视频文件转换为适当的格式,并将其作为开机动画的一部分。

4. 动画效果设计4.1. 过渡效果开机动画的过渡效果可以使动画更加平滑和自然。

通过在相邻帧之间添加过渡效果,可以实现动画的渐变、淡入淡出等效果。

4.2. 动画速度动画的速度也是开机动画设计中需要考虑的因素之一。

可以通过调整帧的播放速度来改变动画的快慢,以达到更好的视觉效果。

计算机及Linux操作系统开机启动过程详解

计算机及Linux操作系统开机启动过程详解

计算机及Linux操作系统开机启动过程详解从按下开机键开始的计算机启动过程:(主要包括从主板加载BIOS并执⾏、从磁盘加载启动区并执⾏、从磁盘加载操作系统并执⾏三步,是依次递进的,详情参阅)加载BIOS:按下开机键,主板ROM的BIOS被(被谁?)加载到到内存0xffff0处,CPU 将 PC 寄存器的值强制初始化为 0xffff0(⼀跳)。

执⾏BIOS代码:阶段1(0xffff0 处的内容):该⼊⼝地址处存的是⼀个跳转指令,跳转的⽬的地是内存0xfe05b位置,该位置存了BIOS的真正内容。

执⾏该跳转(⼆跳)。

阶段2(0xfe05b 处的内容):执⾏硬件检测、硬件初始化、建⽴中断向量表等⼯作后,找到磁盘上的启动区(或称引导区)加载到内存0x7c00位置,并跳转到该位置(三跳)。

执⾏启动区代码(0x7c00 处的内容):从磁盘加载OS内核到内存,与上⾯不同这⾥内存位置不是固定的了,并跳转到OS内核代码处(四跳)。

执⾏OS内核代码:包括开启分段机制、进⼊保护模式、开启中断机制等,执⾏完后系统由OS接⼿管理。

具体过程见下⽂“操作系统启动过程”部分。

整体过程概要:补充:BIOS位于主板ROM,启动时被加载到内存;启动区、OS位于磁盘,被先后加载到内存。

BIOS、启动区在内存的位置是固定的(为啥是这三个值?早期定死的);⽽OS在内存位置不是固定的。

启动区:若⼀个磁盘上0盘0道1扇区的内容(512B)的末两个字节为0x55、0xaa,则这该扇区会被BIOS识别为启动区,该磁盘会被当做可启动盘。

往⼀个磁盘烧录OS后之所以可以当做启动盘就是因为往该位置写⼊了这些特殊数据。

若装了多系统,则启动时会列出并让⽤户选择要启动的系统,这些系统就是根据上述条件被识别得到。

可见,⼀个程序只要其虚拟内存以0x7c00作为段地址,且按上述条件烧录到磁盘,则就可以被BIOS识别为启动区加载到内存执⾏。

因此,如果该程序逻辑中不是去加载OS⽽是直接输出数据,则该程序⾃⾝就是⼀个简洁的"操作系统"。

第03章_Linux的初步使用

第03章_Linux的初步使用

3.2.2 退出系统(续)
• 关闭系统
# shutdown -h 12:30 在当天12点半关闭系统
# shutdown -h +10
在10分钟后关闭系统
# init 0(关闭系统) 关闭系统 # poweroff 关闭系统
# halt
系统停止
3.2.2 退出系统(续)
• 重启系统
# init 6

• • • •
• 3.reboot • reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而 halt是关机。它的参数与halt相差不多。 • 4.init • init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给 init会终止所有的用户进程﹑守护进程等。shutdown 就是使用这种机 制。 • init定义了8个运行级别(runlevel), init 0为关机﹐init 1为重启。
第三章 Linux的初步使用
河北经贸大学 王春海
本章目标
• • • • • 了解Linux引导的整个过程 了解如何登录和退出系统 了解虚拟控制台的概念 掌握Linux的目录结构 掌握Linux中常见的文件类型
本章内容
3.1 引导过程
3.2 登录与推出系统
3.3 目录与文件的基本概念
3.1 引导过程
3.2.1 登录系统(续)
• 命令提示符
[root@localhost ~]#

登录帐户 主机名 工作目录 命令提示符号
#、$
3.2.2 退出系统
• 从当前的虚拟控制台中注销 [root@localhost ~]# exit
[root@localhost ~]# logout

简要分析linux系统的启动过程

简要分析linux系统的启动过程

简要分析linux系统的启动过程接触linux系统运维已经好⼏年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:⼀般来说,所有的操作系统的启动流程基本就是:总的来说,linux系统启动流程可以简单总结为以下⼏步:1)开机BIOS⾃检,加载硬盘。

2)读取MBR,进⾏MBR引导。

3)grub引导菜单(Boot Loader)。

4)加载内核kernel。

5)启动init进程,依据inittab⽂件设定运⾏级别6)init进程,执⾏rc.sysinit⽂件。

7)启动内核模块,执⾏不同级别的脚本程序。

8)执⾏/etc/rc.d/rc.local9)启动mingetty,进⼊系统登陆界⾯。

linux系统安装时,如果要想设置开启启动项,可以:开机到BIOS提醒界⾯,按键F11(Dell服务器的做法)进⼊BIOS设置BOOT MENU,继⽽设置启动项:硬盘HD启动,光盘CD/DVD启动,还是U盘USB启动。

下⾯就linux操作系统的启动过程做⼀详细解析记录:加载内核操作系统接管硬件以后,⾸先读⼊ /boot ⽬录下的内核⽂件。

[root@bastion-IDC ~]# ll /boot/total 21668-rw-r--r--. 1 root root 105195 Nov 22 2013 config-2.6.32-431.el6.x86_64drwxr-xr-x. 3 root root 1024 Aug 22 16:31 efidrwxr-xr-x. 2 root root 1024 Aug 22 16:32 grub-rw-------. 1 root root 15217153 Aug 22 16:32 initramfs-2.6.32-431.el6.x86_64.imgdrwx------. 2 root root 12288 Aug 22 16:24 lost+found-rw-r--r--. 1 root root 193758 Nov 22 2013 symvers-2.6.32-431.el6.x86_64.gz-rw-r--r--. 1 root root 2518236 Nov 22 2013 System.map-2.6.32-431.el6.x86_64-rwxr-xr-x. 1 root root 4128368 Nov 22 2013 vmlinuz-2.6.32-431.el6.x86_64启动初始化进程内核⽂件加载以后,就开始运⾏第⼀个程序 /sbin/init,它的作⽤是初始化系统环境。

Red Hat Linux 9的引导与配置

Red Hat Linux 9的引导与配置
标识字段:运行级别:程序执行方式:定义运行的进程
其含义如下:
(1)标识字段:标识字段是唯一的,一般不超过四个字符长度。
(2)运行级别:除了文件中列出的运行级别之外,还有两种运行级别,一种是s(或S),常用于 内部运行级别为1的脚本,另外一种是a、b、c等,属于指定的运行级别,通常不用。
(3)程序执行方式(详细见课本)
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
l6:6:wait:/etc/rc.d/rc 6 上面的0~6就是前面说的0~6的运行等级。/etc/rc.d/rc脚本负责启动
2021/1/14
1
Red Hat Linux 9的引导与配置
1.1 Red Hat Linux的启动过程 Linux系统的整个启动过程分为四个阶段, 可以由用户参与配置和
修改的有两个阶段:一个是LILO或GRUB的程序配置,一个是init程 序的相关配置。 (1)当用户打开计算机的电源时,BIOS开始工作,整个主机通过主板 上的检测程序对各个硬件进行自检。如果没有硬件故障,计算机将按 照BIOS中第一启动设备的设定启动,通常设定为从硬盘启动。 (2)BIOS将引导硬盘的0道0扇区的主引导块,然后主引导块引导硬盘 活动分区的第0扇区的引导块,此引导块通常占用一个扇区,含有引 导和启动操作系统的程序,如LILO或GRUB。
2)timeout=10 timeout标识默认等待时间,上面设置的是10秒,即超过10秒用户
还没有进行选择时,将自动选择“default”选项指明的项目。 3)splashimage=(hd0,0)/boot/grub/splash.xpm.gz

LinuxBoot,Kernel和Service介绍

LinuxBoot,Kernel和Service介绍

LinuxBoot,Kernel和Service介绍Linux 启动过程是初始化系统的过程。

它包括从第⼀次打开计算机电源到⽤户界⾯完全可操作时发⽣的所有事情。

充分了解引导过程中的步骤可能有助于您解决问题,以及根据您的需要调整计算机的性能。

另⼀⽅⾯,启动过程可能相当技术性,您可以在不了解所有细节的情况下开始使⽤ Linux。

第⼀个步骤:BIOS启动基于 x86 的 Linux 系统涉及许多步骤。

当计算机开机时,基本输⼊/输出系统 (BIOS) 会初始化硬件,包括屏幕和键盘,并测试主内存。

此过程也称为 POST(开机⾃检)。

BIOS 软件存储在主板上的 ROM 芯⽚上。

此后,引导过程的其余部分由操作系统 (OS) 控制。

Master Boot Record (MBR) and Boot Loader⼀旦 POST 完成,系统控制就会从 BIOS 传递到引导加载程序。

引导加载程序通常存储在系统中的硬盘之⼀上,或者在引导扇区(对于传统BIOS/MBR 系统)或 EFI 分区(对于更新的(统⼀)可扩展固件接⼝或 EFI/UEFI 系统)。

到此阶段为⽌,机器不会访问任何⼤容量存储介质。

此后,有关⽇期、时间和最重要外围设备的信息从 CMOS 值中加载(在使⽤电池供电的内存存储技术后,即使系统断电也能跟踪⽇期和时间) .有许多⽤于 Linux 的引导加载程序;最常见的是 GRUB(⽤于 GRand Unified Boot loader)、ISOLINUX(⽤于从可移动媒体启动)和DAS U-Boot(⽤于在嵌⼊式设备/设备上启动)。

⼤多数 Linux 引导加载程序可以提供⼀个⽤户界⾯,⽤于选择引导 Linux 的替代选项,甚⾄可能安装的其他操作系统。

在引导 Linux 时,引导加载程序负责将内核映像和初始 RAM 磁盘或⽂件系统(其中包含启动系统所需的⼀些关键⽂件和设备驱动程序)加载到内存中。

Boot Loader in Action引导加载程序有两个不同的阶段:对于使⽤ BIOS/MBR ⽅法的系统,引导加载程序位于硬盘的第⼀个扇区,也称为主引导记录 (MBR)。

grub linux命令参数

grub linux命令参数

grub linux命令参数Grub(GRand Unified Bootloader)是一个常用的引导加载程序,用于在计算机启动时加载操作系统。

它可以用来引导多个不同的操作系统,包括各种版本的Linux。

Grub提供了许多命令参数,这些参数可以在启动时用来配置引导过程。

以下是一些常用的Grub 命令参数:1. root,指定根文件系统的位置,例如root=/dev/sda1。

2. kernel,指定要启动的内核映像文件,例如kernel/vmlinuz-4.18.0-15-generic。

3. initrd,指定用于引导时加载的初始RAM磁盘映像文件,例如initrd /initrd.img-4.18.0-15-generic。

4. ro,以只读模式挂载根文件系统。

5. rw,以读写模式挂载根文件系统。

6. quiet,减少引导过程中的输出信息,使其更加安静。

7. single,启动单用户模式,只加载基本的系统服务。

8. init,指定要启动的init程序的路径,例如init=/bin/bash。

9. vga,设置显示模式,例如vga=791设置为1024x768分辨率。

10. acpi,控制高级配置与电源接口(ACPI)功能,例如acpi=off禁用ACPI。

这些命令参数可以在Grub的引导菜单中进行配置,以满足特定的引导需求。

通过合理使用这些命令参数,用户可以对引导过程进行灵活的配置和管理,以确保系统能够正确启动并满足特定的需求。

在使用这些参数时,需要确保参数的正确性和适用性,以免引起意外的系统问题。

希望这些信息能够帮助你更好地理解Grub命令参数的作用和用法。

Linux与Windows10用grub引导教程

Linux与Windows10用grub引导教程

Linux与Windows10⽤grub引导教程前⾔去年暑假的时候,写了⼀篇如何装 Linux 和 Windows 10 双系统的⽂章发在了简书上,我写这篇⽂章的原因是当初装双系统确实是折腾了许久,⽹上也找不到⼀篇详尽的教程。

由于去年对于写教程还不是熟练,⽽这⼀年多的使⽤过程也遇到了⼀些问题,所以就准备「Refactoring」这篇⽂章。

EFI 分区在教程正式开始之前,先花⼀点时间说明 EFI 分区的组成和作⽤。

⾸先,在你装了 Windows 之后,Windows 在装机过程中会将硬盘划分出⼀个约 100m ⼤⼩的分区,称为 EFI 分区这个分区就是起引导作⽤的。

在资源管理器中是看不到的这个分区的,可以在磁盘管理中看到,管理则需要借助。

便于说明,在装好了 Linux 之后,我将 EFI 挂载⾄boot 分区截图:可以看到,该分区包含 3 个⽂件夹(如果你没有装 Linux 的话,就只有两个),分别是 Boot、Microsoft 和 Manjaro,其中 Boot ⽂件夹就是UEFI 引导所必需的⽂件。

我们继续打开Microsoft/Boot⽂件夹:这些⽂件就是启动 Windows 10 所必需的,包含了语⾔包、字体等,BCD 包含了 Windows 引导开始以后的信息。

其中,bootmgfw.efi 是Windows 默认引导⽂件。

1. EFI/Boot/bootx64.efi2. EFI/Microsoft/Boot/bootmgfw.efi以上是采⽤ UEFI 启动 Windows 10 的⽂件结构,也就是说,当你按下开机按钮的时候,⾸先 UEFI 找到 EFI 分区的 Boot ⽂件夹,然后加载bootx64.efi⽂件,读取⽂件信息,找到EFI/Microsoft/Boot/bootmgfw.efi,按照bootmgfw.efi的要求,加载所需的启动信息,启动 Windows 10。

准备⼯作在正式装系统之前,我们还需要做⼀些准备⼯作:关闭 Windows 的快速启动这个功能的作⽤是在于关机的时候不完全断电,类似将系统处于「休眠」状态,这样可以让开机更加迅速。

linux的grub

linux的grub

linux的grubGRUB全称为GRand Unified Bootloader,是现在最常用的Linux引导装载程序。

Red Hat Linux从7.2版本起,开始采用GRUB作为默认的引导装载程序。

本文将对GRUB的基本情况、术语、接口、命令以及配置文件做个介绍,希望对大家有所帮助。

一、为什么使用GRUBGRUB能够取代LILO成为默认的引导装载程序,可见GRUB确有过人之处。

与LILO相比,GRUB主要有以下特点:? GRUB支持在引导开机时显示一个开机画面,并且可以比较方便的自定义。

对于用户来说,可以制作个性化开机画面。

对于PC厂商,可以定义开机时显示厂商的一些信息和标志。

? GRUB不但可以在配置文件中定制引导参数,还可以在选择引导前动态修改引导参数。

这样在配置文件参数有误而导致系统不能引导时,可以修改参数进行引导。

? 在修改了GRUB的配置文件“/boot/grub/grub.conf”之后,无需像LILO那样重新加载,新的引导规则下次启动时自然生效,这是因为GRUB的配置能在每次系统引导时被读取。

这样就简化了一些配置工作。

? GRUB在x86机器上,提供一个真正基于命令行的,先于操作系统(pre-OS)的环境。

实际上许多非x86的体系结构已经使用pre-OS环璄许多年了,它控制计算机系统如何从一个命令行引导。

二、系统引导概述当一个x86机器启动后,系统BIOS开始检测系统参数,如内存的大小、日期和时间、磁盘设备、以及这些磁盘设备用于引导的顺序等。

如果设置为通过硬盘引导,那么BIOS通常是转向第一块硬盘最初的几个扇区,寻找用于装载操作系统的指令。

这些最初的扇区(主引导记录)开始装载一个预选择操作系统的过程,一个操作系统选项GRUB菜单,或是一个执行特定选项的GRUB命令行接口。

装载GRUB和操作系统的过程,包括以下几个操作步骤:1、装载基本的引导装载程序。

基本引导装载程序必须是位于主引导扇区中一个非常小的空间,少于512字节。

  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参数。

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

相关文档
最新文档