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

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

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

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

    Linux启动引导参数grub

    内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导参数多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导参数。...内核引导参数精选 由于引导参数多如牛毛,本文不可能涉及全部,因此本文只基于 X86_64 平台以及 Linux-3.13.2 精选了一些与设备无关的引导参数以及少部分与设备有关的引导参数,过时的参数、非...(Linux-2.6.23之后)而言,当BIOS询问内核:"你是Linux吗?"...initramfs中的脚本必须自己分析各个内核引导参数(/proc/cmdline)并完成根文件系统的挂载与切换,当然也包括启动真正的"init"进程。...io_delay={0x80|0xed|udelay|none} 设置IO延迟方式 0x80(CONFIG_IO_DELAY_0X80) 传统的Linux IO延迟方式,久经考验,也最安全 0xed

    9.4K20

    Linux学习笔记之Linux启动引导过程

    这就是 Linux 引导的整个过程。现在让我们深入挖掘一下这个过程,并深入研究一下 Linux 引导过程的一些详细信息。 系统启动 系统启动阶段依赖于引导 Linux 系统上的硬件。...然后该例程会调用内核,并开始启动内核引导的过程。 当 bzImage(用于 i386 映像)被调用时,我们从 ....Init 当内核引导并进行初始化之后,内核就可以启动自己的第一个用户空间应用程序了。这是第一个调用的使用标准 C 库编译的程序。在此之前,还没有执行任何标准的 C 应用程序。...在桌面 Linux 系统上,第一个启动的程序通常是 /sbin/init。但是这不是一定的。...在很多情况下,我们可以调用一个简单的 shell 脚本来启动必需的嵌入式应用程序。 结束语 与 Linux 本身非常类似,Linux引导过程也非常灵活,可以支持众多的处理器和硬件平台。

    10.4K41

    如何在Linux上编辑内核引导参数

    更改或编辑内核启动参数非常重要,当您想要修复在引导过程中导致错误,测试新功能,激活其他驱动程序或禁用系统上的功能的问题。...这通常是在计算机上只安装一个Linux发行版的情况下,所以没有经验的用户可能不知道如何访问grub的选项来更改内核启动参数。 为此,您可以在出现闪屏时简单地按住“Shift”键。...如果以错误且不可读的方式编写,内核应忽略文本,并转到下一个参数。 这通常意味着这样的错误通常不会导致系统故障。 有许多参数可帮助用户在引导过程中确定其系统操作的所有方面。...作为本教程的一个例子,我将假设我们正在更改内核引导参数来处理导致X服务器启动失败的GPU驱动程序更新。 我们可以做的第一件事是添加一个参数,使我们能够禁用当前使用的驱动程序。...其中一些将与我们描述的方式类似,但有些可能不会。

    3.3K00

    Linux内核启动参数详解

    1.环境: Ubuntu 16.04 Linux linuxidc 4.4.0-89-generic #112-Ubuntu SMP Mon Jul 31 19:38:41 UTC 2017 x86_64...x86_64 x86_64 GNU/Linux 2.查看当前linux内核启动参数: cat /proc/cmdline 笔者的输出内容如下: BOOT_IMAGE=/boot/vmlinuz-4.4.0...-4202-4513-b39b-cde6a5d9753f :这一串可以用root=/dev/sda1(假如根文件系统在第一个分区)来代替,但是不能用root=(hd0,msdos1)来代替 ro : 启动时以只读方式挂载根文件系统...所以去掉此项将会迎来很多打印信息 splash: 显示开机动画 vt.handoff=7 : 图形界面会去使用tty7,此项用来禁止splash占用tty7,因此如果将splash参数去掉,此项就无效了 4.添加新的启动参数...update-grub命令无法满足更细致的内核参数修改需求

    5.6K20

    Android启动流程——1序言、bootloader引导Linux启动

    从系统角度看,Android的启动程序可分为: 1、bootloader引导 2、装载与启动Linux内核 3、启动Android系统 3.1、启动Init进程 3.1、启动Zygote 3.1、...从初始化引导到第一个用户空间来研究Linux启动进程。...BootLoader完成系统的引导以后并将Linux内核调入内核之后,调用do_bootm_linux(),这个函数将跳转到kernel的其实位置。如果kernel没有被压缩,就可以启动了。...1、为什么以只读的方式 以只读的方式挂载根文件系统,之所以采用只读的方式挂载根文件系统是因为:此时Linux内核仍在启动阶段,还不是很稳定,如果采用可读可写的方式挂载跟文件系统,万一Linux不小心宕机了...检查完毕后可读可写的方式挂载文件系统。 初始化硬件设备:Linux除了在启动内核时以静态驱动部分的硬件外,在执行rc.sysinit时,也会试着驱动剩余的硬件设备。

    4.9K21

    linux aarch64启动不了,引导AArch64 Linux

    这篇文章基于Russell King所写的《the ARM booting document》,并与AArch64 Linux kernel的所有公开版本相关。...在本文中,我们使用术语“boot loader”来简单地定义在控制权传递给Linux kernel之前,在CPU上执行的所有软件,这可能包括Secure Monitor和hypervisor代码,或者仅仅是一小段预备好最小引导环境的指令代码...会跳回code0处来恢复正常引导过程。...该基地址一下的内存目前Linux并没有使用,因此强烈建议基地址就是于RAM的开始地址,从映像开始,必须保证有image_size大小可用空间给kernel映像使用。...boot loader应该让每一个CPU按下列方式进入kernel: – 主CPU必须直接跳转到kernel映像的第一条指令,由主CPU传递的设备树blob必须为每一个CPU包含一“enable-method

    4.8K10

    Linux系统修改默认内核启动顺序

    grub2-set-default "CentOS Linux (3.10.0-123.9.3.el7.x86_64) 7 (Core)" 3、执行如下命令,确认配置成功。...2、在grub.conf文件中决定开机使用哪个内核版本做启动的参数是default,默认值为0,代表从最新的内核启动。代表启动内核版本从上往下依次是0、1、2等。...3、如果要选择从旧版内核,即系统最开始的内核启动,则把default值改为1 ,然后重启服务器从新的内核进行引导。...三、centos8修改内核启动顺序 1、查看默认内核 grubby --default-kernel 2、 查看所有内核 grubby --info=ALL 3、修改默认启动内核 grubby --set-default...=0 ##修改为 GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-31-generic" 3、更新修改后的grub

    8.9K20

    Linux 独立启动方式安装 Archiva

    apache-archiva-2.2.3 移动到文件夹 /opt 使用命令,将解压缩后的文件夹移动到 /opt/archiva 文件夹下 mv apache-archiva-2.2.3 /opt/archiva 启动.../bin/archiva console 你将看到下面的启动选项 确定安装成功 如果你能够通过给定的 UI 和端口看到管理员的 Web 界面的话,那么就表示你的安装已经成功了。...将 archiva  在 CentOS 中安装成服务 在 Linux环境下,archiva  安装目录下的 bin/archiva 是直接启动的,你可以为你的 CentOS 创建一个启动 link 到这个文件中...但是在我们测试后,发现直接将 archiva 拷贝到 /etc/init.d 中是无法启动的,所以你最好是创建一个链接。...https://www.cwiki.us/display/ArchivaZH/Linux+Installing+Standalone

    1.2K60

    linux内核启动流程分析 - startup_64

    283行是设置startup_64函数的编译后地址为0x200,这个可以通过以下方式确认: ? 由上可见,startup_64的编译后地址就是0x200。...由之前的文章 linux内核启动流程分析 - efi_stub_entry 可知,rsi中存放的是boot_params的地址,而BP_kernel_alignment又是boot_params中的kernel_alignment...init_size值是大于bzImage文件的大小的,因为bzImage是一个压缩过的内核,如果我们想要执行到真正的内核,还要在内存中对bzImage解压缩,init_size指定的多余的空间就是为了解压缩用的...当我们要把bzImage移动到init_size的结尾部分时,其实只要移动bzImage里的compressed部分就好,因为这里有我们真正需要解压缩的内核及其相关代码。

    2.4K20

    linux内核启动流程分析 - efi_main

    上一篇文章 linux内核启动流程分析 - efi_stub_entry 中,为了叙述方便,我们只是粗略的讲了下efi_main函数,这里我们再具体看下。 ?...有关boot_params的创建及其hdr的初始化,我们在 linux内核启动流程分析 - efi_pe_entry 中有讲到,这里就不再赘述。 继续看该函数的其余部分。 ?...而710行中的image_offset是kernel在内存的起始地址到compressed部分起始地址(startup_32的地址)的偏移量,这个在 linux内核启动流程分析 - efi_pe_entry...linux内核构建结束后,最终生成的文件是 arch/x86/boot/bzImage,这其实是个压缩过的内核,在kernel启动过程中,还要在内存中对内核进行解压,进而得到真正的内核。...综上可知,712行中的buffer_end表示的是kernel在启动过程中,需要使用的内存的结束地址。 714到717行是一些条件判断,在这些条件下,需要拷贝内存中的内核到合适的位置上。

    3.7K30

    SpringBoot 通过SpringApplication 引导启动

    文章目录 通过SpringApplication开始引导启动 SpringApplication类是用来执行Spring框架启动引导类。...有两种方式可以进行启动引导: 通过静态方法 SpringApplication.run启动。 先创建 SpringApplication实例,在调用的实例方法 run进行启动。...无论是以上哪种方式,最终都是通过创建SpringApplication实例,在调用run()启动。...new SpringApplication——创建引导启动的实例 在创建SpringApplication实例的时候,会根据用户输入和工程环境做一些基础配置,供之后引导启动中使用。...从类中加载initializer和listener放在集合 设置是否为Web环境(先确认用户是否指定,未指定则根据工程目录下是否有servlet相关环境) 从工程环境中决定主入口的类 run()——开始引导启动

    15910
    领券