Linux系统开机和启动过程

合集下载

Linux开机启动(bootstrap)

Linux开机启动(bootstrap)

Linux开机启动(bootstrap)计算机开机是⼀个神秘的过程。

我们只是按了开机键,就看到屏幕上的进度条或者⼀⾏⾏的输出,直到我们到达登录界⾯。

然⽽,计算机开机⼜是个异常脆弱的过程,我们满⼼期望的登录界⾯可能并不会出现,⽽是⼀个命令⾏或者错误信息。

了解计算机开机过程有助于我们修复开机可能出现的问题。

最初始阶段当我们打开计算机电源,计算机会⾃动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序。

这⼀程序通常知道⼀些直接连接在主板上的硬件(硬盘,⽹络接⼝,键盘,串⼝,并⼝)。

现在⼤部分的BIOS允许你从软盘、光盘或者硬盘中选择⼀个来启动计算机。

下⼀步,计算机将从你所选择的存储设备中读取起始的512个字节(bytes)。

如果我们从光盘启动的话,那么计算机就会读取光盘最开始的512个字节。

这512个字节叫做主引导记录MBR (master boot record)。

MBR会告诉电脑从该设备的某⼀个分区(partition)来装载引导加载程序(boot loader)。

引导加载程序储存有操作系统(OS)的相关信息,⽐如操作系统名称,操作系统内核 (内核)所在位置等。

常⽤的引导加载程序有GRUB和LILO。

随后,引导加载程序会帮助我们加载内核(kernel)。

内核实际上是⼀个⽤来操作计算机的程序,它是计算机操作系统的内核,主要的任务是管理计算机的硬件资源,充当软件和硬件的接⼝。

操作系统上的任何操作都要通过内核传达给硬件。

Windows和Linux各⾃有⾃⼰内核。

狭义的操作系统就是指内核,⼴义的操作系统包括内核以及内核之上的各种应⽤。

(Linus Torvalds与其说是Linux之⽗,不如说是Linux 内核之⽗。

他依然负责Linux 内核的开发和维护。

⾄于Ubuntu, Red Hat, 它们都是基于相同的内核之上,囊括了不同的应⽤和界⾯构成的⼀个更加完整的操作系统版本。

嵌入式linux系统的启动流程

嵌入式linux系统的启动流程

嵌入式linux系统的启动流程
嵌入式Linux系统的启动流程一般包括以下几个步骤:
1.硬件初始化:首先会对硬件进行初始化,例如设置时钟、中
断控制等。

这一步骤通常是由硬件自身进行初始化,也受到系统的BIOS或Bootloader的控制。

2.Bootloader引导:接下来,系统会从存储介质(如闪存、SD
卡等)的Bootloader区域读取引导程序。

Bootloader是一段程序,可以从存储介质中加载内核镜像和根文件系统,它负责进行硬件初始化、进行引导选项的选择,以及加载内核到内存中。

3.Linux内核加载:Bootloader会将内核镜像从存储介质中加载到系统内存中。

内核镜像是包含操作系统核心的一个二进制文件,它由开发者编译并与设备硬件特定的驱动程序进行连接。

4.内核初始化:一旦内核被加载到内存中,系统会进入内核初
始化阶段。

在这个阶段,内核会初始化设备驱动程序、文件系统、网络协议栈等系统核心。

5.启动用户空间:在内核初始化完毕后,系统将启动第一个用
户空间进程(init进程)。

init进程会读取并解析配置文件(如
/etc/inittab)来决定如何启动其他系统服务和应用程序。

6.启动其他系统服务和应用程序:在用户空间启动后,init进
程会根据配置文件启动其他系统服务和应用程序。

这些服务和应用程序通常运行在用户空间,提供各种功能和服务。

以上是嵌入式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控制的块数。

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. 加载系统服务:启动初始化会加载并启动系统服务,比如网络服务、日志服务、时间同步服务等。

linux开机自启动命令

linux开机自启动命令

linux开机自启动命令用户想要在linux开机的时候自启动相关的程序。

那我们要怎么设置呢?下面由店铺为大家整理了linux下开机自启动命令的相关知识,希望对大家有所帮助!linux下开机自启动命令1.开机启动时自动运行程序Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。

init根据配置文件继续引导过程,启动其它进程。

通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。

例如:编辑/etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window。

扩展:其他情况下linux自启动程序命令2.登录时自动运行程序用户登录时,bash首先自动执行系统管理员建立的全局登录script :/etc/profile。

然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:/.bash_profile、/.bash_login、/.profile,但只执行最先找到的一个。

因此,只需根据实际需要在上述文件中加入命令就可以实现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。

3.退出登录时自动运行程序退出登录时,bash自动执行个人的退出登录脚本/.bash_logout。

例如,在/.bash_logout中加入命令"tar -cvzf c.source.tgz *.c",则在每次退出登录时自动执行 "tar" 命令备份 *.c 文件。

4.定期自动运行程序linux有一个称为crond的守护程序,主要功能是周期性地检查/var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。

用户可以通过crontab 命令来建立、修改、删除这些命令文件。

系统引导

系统引导

系统引导- 系统引导-bootsect.S中的部分代 中的部分代 码
movw $BOOTSEG, %ax movw %ax, %ds movw $INITSEG, %ax movw %ax, %es movw $256, %cx subw %si, %si subw %di, %di cld rep movsw ljmp $INITSEG, $go … go: movw $0x4000-12, %di # 0x4000 is an arbitrary value >= # length of bootsect + length of # setup + room for stack; # 12 is disk parm size. # 将ds,ss都置成移动后代码所在的段处 都置成移动后代码所在的段处0x9000 都置成移动后代码所在的段处 # 设置堆栈 设置堆栈put stack at INITSEG:0x4000-12. # %ds = BOOTSEG,将ds段寄存器设为 段寄存器设为0x7c00 , 段寄存器设为 # %ax = %es = INITSEG,将es段寄存器设为 段寄存器设为0x9000 , 段寄存器设为 #移动计数值=256 移动计数值= 移动计数值 #源地址 源地址ds:si=0x07c0:0x0000 源地址 #目标地 目标地es:di=0x9000:0x0000 目标地 #清方向标志位 清方向标志位 #重复执行直到 重复执行直到cx=0 重复执行直到 #移动 个字 移动1个字 移动 #间接跳转,INITSEG指出跳转到的段地址 间接跳转, 间接跳转 指出跳转到的段地址
movw movw movw
%ax, %ds %ax, %ss %di, %sp
系统引导- 系统引导-bootsect.S中部分代码的解 中部分代码的解 释

linux系统救援模式解决开机引导失败问题

linux系统救援模式解决开机引导失败问题

linux系统救援模式解决开机引导失败问题问题:linux开机后进⼊grub命令⾏且grub命令⾏输⼊命令报错推测:因之前系统装好以后改变过分区,⽽导致不能读取到grub主开机引导程序在解决这个问题之前我们先来了解linux开机启动过程。

linux系统开机启动有以下过程:1.开机加载BIOS2.进⼊MBR(master boot record)主引导记录:MBR中主要是安装加载引导程序,如主流的grub(既⽀持win也⽀持linux)。

它是可引导设备的第⼀个扇区(⼀般情况下是硬盘中的第⼀扇区)中的主引导分区3.读取运⾏grub主引导程序:grub主要是识别磁盘格式,⽤于载⼊并启动操作系统核⼼(Kernel)。

多操作系统时可以通过配置grub⽽引导系统启动。

4.启动init进程完成系统启动;据我所知有两种⽅式init⽅式。

System V initialization⽅式和Upstart⽅式。

(具体⽅式的运⾏模式⾃⾏百度) linux开机引导过程⼤致分为以上⼏步。

知道了开机启动⼤致过程,我们针对遇到的问题可以判断问题出在grub主引导程序上。

下⾯我们将使⽤系统盘进⼊linux救援模式修复grub引导程序。

1.放⼊linux装机光盘并选择以光盘启动2.选择Rescue installed system 救援模式进⼊3.语⾔选择默认英语,键盘选择us4.根据需要选择是否联⽹,这⾥不需要联⽹5.进⼊到Rescue界⾯,如果选择Continue按钮并回车则救援模式程序会⾃动查找系统中已有的⽂件系统,并把他们挂载到/mnt/sysimage⽬录下;如果选择Read-Only并回车,则会以只读的⽅式挂载已有的⽂件系统,如果需要⼿动挂载则选Skip6.之后有三种模式选择我们选择进⼊shell模式并根据之前提⽰输⼊chroot /mnt/sysimage命令(fakd为诊断模式)7.输⼊grub进⼊grub命令⾏8.在grub命令⾏中输⼊:root(hdx,y) 其中x为安装linux根分区所在的盘,⽐如只有⼀个硬盘那x就是0,linux根分区在第⼆个硬盘上x就为1. 其中y为安装linux系统所在的根分区 我这⾥输⼊的是root(hd0,0)9.输⼊setup(hd0)setup(hd0)就是把grub写⼊到硬盘的MBR上,显⽰succeeded就说明写⼊修复成功。

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”。

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

Linux 系统开机和启动过程
提起操作系统这个词,想必大家并不陌生,有电脑端操作系统和手机端操作系统。

电脑端操作系统较为熟悉的就是微软开发的windows 操作系统,还有一种就是大家稍微陌生的linux 操作系统,而手机端的操作系统分别为iOS 操作系统,Android 操作系统。

而今天小编就给大家着重讲讲Linux 系统开机和启动过程。

内核引导
当计算机打开电源后,首先是BIOS 开机自检,按照BIOS 中设置的启动设备(通常是硬盘)来启动。

操作系统接管硬件以后,首先读入/boot 目录下的内核文件。

运行init
init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

相关文档
最新文档