首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux启动引导程序(GRUB)加载内核过程

我们知道启动引导程序(Boot Loader,也就是 GRUB)会在启动过程中加载内核,之后内核才能取代 BIOS 接管启动过程。如果没有启动引导程,那么内核是不能被加载。...本节,我们就来看看启动引导程序加载内核过程,当然 initramfs 这个虚拟文件系统也是要靠启动引导程序调用。...在 CentOS 6.x 中,启动引导程序默认是 GRUB,GRUB 是现在最为流行启动引导程序,我们也用 GRUB 来说明启动引导程序作用。...GRUB加载内核过程GRUB 作用有以下几个:加载操作系统内核;拥有一个可以让用户选择菜单,来选择到底启动哪个系统;可以调用其他启动引导程序,来实现多系统引导。...答案是空间不够,GRUB 功能非常强大,MBRM 空间是不够使用。那么 Linux 解决办法是把 GRUB 程序分成了三个阶段来执行。

49320

写一个Loader引导加载程序

前面我已经写完了boot程序,搭建好了FAT文件系统,系统控制权已经移交给了Loader程序。 Loader程序功能 Loader程序主线功能就是检测硬件信息、切换处理器模式、向内核传递数据。...在各个模式切换之中,loader程序需要创建一些临时数据,然后按照标准流程进行切换。其中包括配置系统临时页表工作,保证页表覆盖地址空间能满足应用程序使用要求。临时段结构也是一个道理。...向内核传递数据 这里讲数据包括了控制信息和硬件数据信息两部分。 地址空间设置 在Loader引导加载程序部分,先设定将来内核要被放置空间起始地址是0x100000(1MB)处。...因此内核起始地址就选在这里。 并且,我们定义0x7E00为内核程序临时转存空间,到时候会先把内核程序加载到这里,再通过Big Real Mode,将内核程序转存到1MB地址上。...大致流程如下 屏蔽外部中断 加载GDT基地址和长度到GDTR寄存器 置位CR0PE标志位 执行远跳转,切换到保护模式代码段(将代码段寄存器更新为保护模式) 重新加载数据段选择子,或使用jmp/call

68420
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Arch Linux切换rEFInd开机引导程序

    使用rEFInd需求是我原来使用是bootctl这个启动引导程序,虽然简单好用,但是只有黑白界面难免有点单调,所以就想使用一个比较漂亮但是文件结构又简洁bootloader,所以grub就被丢弃了...,虽然它却很强大,但是文件结构有点复杂,配置影响因素有点多 安装rEFInd sudo pacman -S refind-efi 配置 备份原有引导 首先备份移除原有的bootloader,我之前用是...: sudo refind-install 一般情况下能够直接进行安装,如果出问题请查看archwikirEFInd手动安装引导文件小节,请点击这里 配置主题 rEFInd主题可以在github...配置自定义启动项 编辑文件/boot/EFI/refind/refind.conf中向下滑差不多到3/4位置位置中Arch Linux小节,将其中文件配置成自己启动方式,下面的例子是我 menuentry...icon是使用主题里面提供,可以使得启动界面更加统一 后记 rEFInd启动引导程序还是很秀,主题也挺美观,下面放一张效果图(虚拟机中) ?

    7K10

    VM加载过程是通过引导加载

    加载过程 JVM加载过程是通过引导加载器(bootstrap class loader)创建一个初始类(initial class)来完成,这个类是由JVM具体实现指定。...即当程序创建一个类实例对象。 当 JVM执行 getstatic 指令时会初始化类。即程序访问类静态变量(不是静态常量,常量会被加载到运行时常量池)。...即程序给类静态变量赋值。 当 JVM执行 invokestatic 指令时会初始化类。即程序调用类静态方法。 对类进行反射调用时,如果类没初始化,需要触发其初始化。...AppClassLoader 应用程序加载器:面向我们用户加载器,负责加载当前应用classpath下所有jar包和类。...结论 双亲委派模型保证了Java程序稳定运行,可以避免类重复加载,也保证了 Java 核心 API 不被篡改。

    71430

    Linux: 深入解析GRUB2引导加载核心原理

    GRUB2(GRand Unified Bootloader 2)是现代计算机系统中广泛使用引导加载器。...GRUB2不仅支持多种操作系统,还支持多种文件系统和设备类型,成为Linux系统中最常见引导加载器。...第二阶段(Stage 1.5/Stage 2):第一阶段加载器会加载GRUB2核心映像文件(core.img),该文件包含了必要模块和文件系统驱动程序。...随后,core.img会加载位于/boot/grub/目录下第二阶段引导加载器。 第三阶段:第二阶段引导加载器会加载GRUB2配置文件(grub.cfg),并根据配置文件中指令引导操作系统内核。...通过配置grub.cfg文件,可以实现多操作系统共存和引导。例如,在Linux和Windows双系统中,GRUB2可以配置为在启动时提供选择菜单,让用户选择启动Linux或Windows。

    70110

    清除linux系统多余引导

    由于我把系统给升级(update)了,在grub引导模式出现新旧版本(Grub与Grub2)引导系统分别为正常启动和进入恢复模式各2个引导项,如下图显示:百度找不到相关或类似的教程,只好半夜起来研究,...此时我们选择新版本引导项(旧版本引导是无法登录系统),进入系统后打开终端界面,使用cd命令切换到/boot分区,再用ls命令查看该分区,此时应该会有显示grub和grub2这两个文件夹,重点在grub2...这个文件夹内,cd命令切换到/boot/grub2/目录下,再用ls查看目录下内容,使用VIM编辑器找到并打开gurb.conf文件,找到多余引导代码行删除并保存后方可重启。...多余代码可以从启动时选项中参考,重启后就剩下新版本正常启动和恢复模式了,grub.conf文件中每一个menuentry就是一个引导项,所以找到你要删引导项,删除整个menuentry{}即可。

    6.2K20

    Arch Linux引导式安装程序是迈向正确一步

    Arch Linux发展方向? 尽管很多人对此感到惊讶,但默认情况下包含官方安装程序实际上是非常明智举动。...在该安装程序 GitHub 页面上有这样描述: “引导性安装程序会给用户提供一个友好逐步安装方式,但是关键在于这个安装程序是个选项,它是可选,绝不会强迫用户使用其进行安装。”...尽管这看上去可能有些反直觉,但是这个安装程序实际上能够增进 Arch Linux 可定制性。...总结 有了这一新功能,Arch Linux 似乎正在向着“用户友好”这一软件设计哲学靠近,新安装程序为新手和高级用户提供了广泛好处。其中包括更广泛定制性和更大用户社区。...总而言之,这个新变动对整个 Arch Linux 社区都会产生积极影响。 你对这个 Arch Linux 安装程序怎么看?是否已经尝试过它了呢?

    1.1K30

    JVM 类加载机制_类加载机制作用和过程

    这里解释一下动态绑定和静态绑定: 静态绑定: 在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中方法),此时由编译器或其它连接程序实现。...2.类加载时机 这里加载”只是类加载过程一个阶段,代表这“类加载这一过程开始,jvm并没有强制性约束在什么时候开始类加载过程。 一般我们说类加载,指的是整个加载过程。...:通过数据流和控制流分析,确定程序语义是合法、符合逻辑; 符号引用验证:对类自身以外信息进行匹配性校验, 比如符号引用中通过字符串描述全限定名是否能找到对应类等等。...5.初始化 类初始化阶段是类加载过程最后一步。在前面的类加载过程中,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导和控制。...到了初始化阶段,才真正开始执行类中定义java程序代码(字节码)。 这里我们可以回头看准备阶段,我们知道准备阶段会调用类构造器()方法.

    54020

    PHP程序员玩转Linux系列-nginx初学者引导

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转Linux...系列-备份还原MySQL 5.PHP程序员玩转Linux系列-自动备份与SVN 6.PHP程序员玩转Linux系列-Linux和Windows安装nginx 翻译自官网文档 nginx有一个master.../ { root /var/www/html; } } 这个location块指定了"/"前缀,比较请求URI,对于匹配到URI,这个URI会被拼接到root指令指定路径后面...中找原因,这两个文件目录在/usr/local/nginx/logs或者/var/log/nginx 配置简单反向代理服务 nginx最常用功能就是作为反向代理服务器,意味着这个服务要接收请求,把请求引到被代理服务...我们将配置基本反向代理服务器,这个服务处理来自本地目录图片文件请求,并把其他所有请求发给代理服务器.在这个例子中,两个服务都会被定义在一个nginx实例中.

    51110

    详解 Linux 常用目录作用

    详解 Linux 常用目录作用 一 常用一级目录 ? ? 注意: 1、根目录下bin和sbin,usr目录下bin和sbin,这四个目录都是用来保存系统命令。...2、bin目录下命令时任何用户都能执行,sbin目录下命令只有超级用户才能执行。 3、media用来挂载光盘,misc挂载磁带机,mnt挂载U盘。它们都是空目录。...4、proc和sys目录不能直接操作,这两个目录保存是内存挂载点。 5、可以在家目录root或home,以及tmp目录下随便放内容。...mozilla udev firmware jvm-commmon polkit-1 udisks2 games jvm-exports python2.7 x86_64-redhat-linux6E...srv tmp var boot etc japan lib64 mnt opt root sbin sys usr 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站支持

    2.7K10

    GOT段在linux系统中实现代码动态加载作用和其他段说明

    因此必须有机制让程序在运行过程中,在调用系统API时候有办法去确定所调用系统函数对应入口地址,这就是代码运行时对应动态加载过程。...后者其实是.got段一种特定形式,.got段在程序加载和执行过程中还有其他形式和作用,在后续章节我们再研究。 上一节我们以调研系统函数puts为例描述了动态加载基本过程。...4003f0这个位置其实对应一段代码起始地址,这段代码作用是从.got.plt段里面取出一个数值作为下一步跳转地址,然后通过Jmp跳转到取出地址所在位置,将程序控制权交给那里代码。...一开始从.got.plt取出地址其实是系统动态链接库入口地址,于是跳转过去之后动态链接库会接管程序控制权,这时候原来push压入堆栈数值就产生作用,根据该数值连接器就能知道代码想要调用哪个系统接口...他们类型属于SHT_RELA,这些段作用在于帮助链接器实现代码重定向。

    2.3K20

    Linux目录作用【值得收藏】

    /dev:存放linux系统下设备文件,访问该目录下某个文件,相当于访问某个设备,常用是挂载光驱 mount /dev/cdrom /mnt /etc :系统管理文件和配置文件放置处,需要配置服务等等时候访问.../home :用户主目录基点,比如用户user主目录就是/home/user,可以用~user表示 /sbin :超级管理命令,这里存放是系统管理员使用管理程序,用户可以使用哪些管理程序 /tmp...:公共临时文件存储点 /root :系统管理员主目录 /var :某些大文件溢出区,大多数存日志信息 /user :软件放置处 /boot :存放开机及内核文件 /opt:给主机额外安装软件所摆放目录.../bin: /usr/bin: 可执行二进制文件目录,如常用命令ls、tar、mv、cat等 ?

    2.3K30

    linux 虚拟内存作用

    虚拟内存作用 利用磁盘起到缓存作用,提高进程访问磁盘速度。 虚拟内存可以为进程提供独立内存空间,并通过动态链接库共享内存。...虚拟内存可以控制进程对物理内存访问,隔离权限,提高系统安全性, 缓存 虚拟内存是使用内存空间,同时将磁盘上访问频发加载到内存,来增快访问速度,使得占用很小内存空间,看起来很大。...在其中使用就是局部性原理,当操作系统访问未被缓存页,就会发生缺页中断,操作系统需要将磁盘上未被缓存虚拟页加载到物理内存中。...通过增加虚拟内存,避免了程序直接访问任意内存,修改了其他程序使用数据导致程序崩溃,虚拟内存可以将不同进程使用虚拟地址彼此隔离。...目前linux系统,采用四层页表结构页表结构,每个9位,最低12位作为偏移量。

    3.5K20

    Linux程序运行时加载动态库失败解决方法

    Linux下不能加载动态库问题 当出现下边异常情况 ....cluster export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MPI_HOME/.share/lib 在终端执行source /etc/profile 使配置文件生效 程序运行时加载动态库失败解决方法...另外一个原因就是已经安装了该共享库,但是执行需要调用该共享库程序时候,程序按照默认共享库路径找不到该共享库文件。...ldconfig命令用途, 主要是在默认搜寻目录(b和/usrb)以及动态库配置文件/etc/ld.so.conf内所列目录下, 搜索出可共享动态链接库(格式如lib*.so*), 进而创建出动态装入程序...如果程序需要库文件比系统目前存在库文件版本低,可以做一个链接。

    3.5K11

    mysql锁机制_类加载机制作用和过程

    大家好,又见面了,我是你们朋友全栈君。 Mysql锁: 在多线程当中如果想保证数据准确性是如何实现呢?没错,通过同步实现。同步就相当于是加锁。加了锁以后有什么好处呢?...那么我们MySQL数据库中功能也是类似的,处理事务隔离性中,可能会出现脏读、不可重复读、幻读问题,所以,锁作用也可以解决这些问题!...在数据库中,数据是一种供许多用户共享访问资源,如何保证数据并发访问一致性、有效性,是所有数据库必须解决一个问题,MySQL由于自身架构特点,在不同存储引擎中,都设计了面对特定场景锁定机制,所以引擎差别...锁机制 : 数据库为了保证数据一致性,而使用各种共享资源在被并发访问时变得有序所设计一种规则。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/188183.html原文链接:https://javaforall.cn

    38810

    Android开发实现ViewPager引导页功能(动态加载指示器)详解

    本文实例讲述了Android开发实现ViewPager引导页功能(动态加载指示器)。分享给大家供大家参考,具体如下: 先看效果图咯~ ?...现在几乎每个App都会有引导页,是不是感觉很炫很厉害,所以就想做出来一个学习一下~让自己App看起来更加美观~ 现在来分析一下: 这个引导页可以分为俩部分~ 1.小红点–来提醒这是第几页了~ 2....实例化并且加载适配器: viewPager.setAdapter(new MyAdapter()); imageViews=new ArrayList<ImageView (); for(int i=...,以至于让红点滑动跟好看(就比如第一个点到第二个点途中也会有红点) //滑动时候 @Override public void onPageScrolled(int position, float...activity操作技巧总结》、《Android操作json格式数据技巧总结》、《Android资源操作技巧汇总》及《Android控件用法总结》 希望本文所述对大家Android程序设计有所帮助。

    1.7K40
    领券