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

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.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

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.2K20

如何调整Linux内核启动的驱动初始化顺序?

如何调整Linux内核启动的驱动初始化顺序? 【问题】 此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。...此处,内核编译完之后,在生成的system.map可以看到, enc28j60_init在as352x_afe_init之前,所以,无法去读芯片ID。...【解决过程】 【1】 最简单想到的,是内核里面的 arch\arm\mach-as352x\core.c ,去改devices设备列表的顺序。...【2】 在网上看到很多帖子,其说明的也很清楚了,就是: Linux内核为不同驱动的加载顺序对应不同的优先级,定义了一些宏: include\linux\init.h #define pure_initcall...具体添加一个新的优先级的步骤如下: 1.定义新的优先级 include\linux\init.h: #define pure_initcall(fn) __define_initcall("0"

3.9K31

linux内核启动流程分析 - startup_64

由之前的文章 linux内核启动流程分析 - efi_stub_entry 可知,rsi存放的是boot_params的地址,而BP_kernel_alignment又是boot_params的kernel_alignment...字段的偏移量,该常量在下面的文件定义: ?...之前我们说过,init_size表示的是,在bzImageuefi application形式加载到内存时,我们要求uefi为其分配的内存大小。...init_size值是大于bzImage文件的大小的,因为bzImage是一个压缩过的内核,如果我们想要执行到真正的内核,还要在内存对bzImage解压缩,init_size指定的多余的空间就是为了解压缩用的...当我们要把bzImage移动到init_size的结尾部分时,其实只要移动bzImage里的compressed部分就好,因为这里有我们真正需要解压缩的内核及其相关代码。

2.3K20

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启动过程,还要在内存内核进行解压,进而得到真正的内核。...由上图选中行可见,uefi在uefi application形式启动bzImage时,我们要求要为其分配的内存大小确实是init_size,但是,这个init_size是加上了CONFIG_PHYSICAL_ALIGN

3.5K30

Linux启动时间优化-内核和用户空间启动优化实践

内核启动优化 在内核源码自带了一个工具(scripts/bootgraph.pl)用于分析启动时间,这个工具生成output.svg。...用户空间的起点是init进程,所以将内核空间的终点放在启动init进程之前。 这样就可以清晰看到initcall在整个内核初始化的位置。...这些数值的单位是jiffies,jiffies是内核的一个全局变量,用来记录系统以来产生的节拍数。在Linux,一个节拍大致可理解为操作系统进程调度的最小时间片。...2.4.2 用户空间进程启动分析 下图可以分为5部分: 头信息:包含内核uname信息,内核command line。主要从header获取。...Linux启动从进入内核那一刻开始,到用户空间达到可用状态。 这个可用状态定义可能不一致,有的是进入shell,有的是弹出登陆框。但只要有一个固定的终点,就有了优化目标。

52530

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

我们知道启动引导程序(Boot Loader,也就是 GRUB)会在启动过程中加载内核,之后内核才能取代 BIOS 接管启动过程。如果没有启动引导程,那么内核是不能被加载的。...GRUB 的主程序可以直接在文件系统查找内核文件。在系统启动时,可以利用 GRUB 的交互界面编辑和修改启动选项。...GRUB加载内核的过程GRUB 的作用有以下几个:加载操作系统的内核;拥有一个可以让用户选择的的菜单,来选择到底启动哪个系统;可以调用其他的启动引导程序,来实现多系统引导。...那么 Linux 的解决办法是把 GRUB 的程序分成了三个阶段来执行。...接下来内核就可以接管启动过程,继续自检与加载硬件模块了。

23320

linux内核启动流程(文章最后流程图)

原文:linux内核启动流程 本文Linux3.14版本源码为例分析其启动流程。各版本启动代码略有不同,但核心流程与思想万变不离其宗。 内核映像被加载到内存并获得控制权之后,内核启动流程开始。...通常,内核映像压缩形式存储,并不是一个可以执行的内核。因此,内核阶段的首要工作是自解压内核映像。...得到内核入口函数为 stext(linux/arch/arm/kernel/head.S) 内核引导阶段 ENTRY(stext) 。 。 。...部分书籍介绍的内核启动流程基于经典的2.6版本,kernel_init函数还会调用init_post函数专门负责_init进程的启动,现版本已经被整合到了一起。...当内核被引导并进行初始化后,内核启动了自己的第一个用户空间应用程序_init,这是调用的第一个使用标准C库编译的程序,其进程编号时钟为1.

1.6K30

linux内核启动流程分析 - efi_pe_entry

接上一篇文章 linux内核启动流程分析 - efistub的入口函数,我们继续看efi_pe_entry这个函数。 ?...接下来该函数验证了system table的signature是否等于uefi specification定义的signature,以此来判断该次启动是否用的是uefi方式。...在调用完handle_protocol获取了image信息后,该函数紧接着使用了efi_table_attr宏,从image获取image_base的值,即运行时的kernel在内存的起始地址。...接着根据startup_32函数地址和image_base的值,算出image_offset,该offset指的是bzImage的compressed部分在整个bzImage的偏移量(startup...boot_params又被称为zeropage,该结构体用来存放各种启动参数,供后续启动kernel使用,其具体结构如下: ?

2.6K30

linux内核启动流程分析 - efistub的入口函数

最近打算写一个系列文章,主要讲linux内核启动流程。 网上类似标题的文章很多,但大都是从start_kernel讲起,我觉得这是远远不够的。...linux内核启动方式有非常多种,大方向来看分为bios和uefi,在此基础上又有各种各样的boot loader,比如我们常见的grub,它们会根据配置信息,加载linux内核到内存,并通过一定的协议来启动...通过efi stub,linux内核可以在不使用grub等传统boot loader的情况下,直接在uefi硬件上,uefi application的方式启动,可以说是非常简单。...这样,当linux内核 uefi application 的形式,被 uefi 直接启动时,被执行的第一行代码就是这个方法。...或者说,在 uefi 平台上, efi stub形式启动内核时,开机后内核执行的第一个方法就是该方法。 这里为起点,我们就可以开始探索linux内核的完整启动流程了。

3.2K30

linux命令mysql启动,linuxmysql启动服务命令

Linux下使用相关命令可以直接启动mysql服务,下面由学习啦小编为大家整理了linux下mysql启动服务命令的相关知识,希望对大家有帮助!...linux的mysql启动服务命令 linux的mysql启动服务命令1:使用mysqld启动、关闭MySQL服务 mysqld是MySQL的守护进程,我们可以用mysqld来启动、关闭MySQL服务,...其实mysqld_safe是一个脚本,一个非常安全的启动、关闭MySQL服务的脚本。它实际上也是调用mysqld来启动、关闭MySQL服务。...关于mysqld_safe,可以参考官方文档mysqld_safe — MySQL Server Startup Script linux的mysql启动服务命令3:使用mysql.server启动、关闭...[root@DB-Server init.d]# ls my* mysql mysql.server [root@DB-Server init.d]# linux的mysql启动服务命令6: 使用/etc

45.9K50

Linux】《how linux work》第五章 Linux内核启动过程

你现在已经了解了Linux系统的物理和逻辑结构,知道了内核是什么,以及如何处理进程。 本章将教你内核是如何启动的。换句话说,你将学习内核如何将自己加载到内存,直到第一个用户进程开始运行的过程。...引导加载程序在磁盘上找到内核镜像,将其加载到内存启动它。 内核初始化设备和驱动程序。 内核挂载根文件系统。 内核启动一个名为init的程序,它的进程ID为1。这一点是用户空间的起点。...当遇到无法理解的参数时,Linux内核会保存该参数。内核在执行用户空间启动时会将该参数传递给init。例如,如果您添加了-s到内核参数内核会将-s传递给init程序,表示应该以单用户模式启动。...重新启动或开机您的 Linux 系统。 在 BIOS/固件自检和/或启动画面期间按住 SHIFT 键,获取 GRUB 菜单。 按下 e 键查看默认引导选项的引导加载程序配置命令。...分区的附加代码(模块)。 GRUB 执行启动命令,加载并执行配置的 linux 命令指定的内核

21610

深入理解 Linux 启动过程 | QEMU 启动 linux 内核和自制根文件系统

跟我一起来到故事开始的地方,深入 Linux 系统的启动流程,自己编译内核并制作根文件系统,并使用 QEMU 模拟启动。 前置知识# 昨天看到阮老师两篇文章 《计算机是如何启动的?》...说明:本文介绍的方法同样可用于内核调试,但侧重于介绍 使用 QEMU 模拟 Linux启动流程 。...看过文章后应该对启动流程有了大概认识,本文会介绍自制一个简单的根文件系统,即 initramfs (基于 ramfs 的临时文件系统,一种 cpio 格式压缩后的 rootfs 文件系统),如果对这个概念不太理解...,可以来看一下 《 USTC 2021年春季操作系统原理与设计 课程实验一:编译运行Linux内核并通过QEMU+GDB调试》 实验说明 的『先导知识部分』。...总结# 为了在 QEMU 模拟 Linux启动流程,在网上找了许多教程,踩了很多坑,最后找到的 USTC 实验说明真是帮助很大,做完后对 Linux 启动流程有了更加深刻的理解,果然在计算机的世界里

1.7K30

Linux内核的递归漏洞利用

6月1号,我提交了一个linux内核的任意递归漏洞。如果安装Ubuntu系统时选择了home目录加密的话,该漏洞即可由本地用户触发。...背景知识 在Linux系统,用户态的栈空间通常大约是8MB。如果有程序发生了栈溢出的话(比如无限递归),栈所在的内存保护页一般会捕捉到。...Linux内核栈(可以用来处理系统调用)和用户态的栈很不一样。...接下来导致ecryptfs读取 /proc/$A/environ ,最后导致进程A的进程错误。如此循环往复,最终溢出内核栈,使内核崩溃。内核栈如下: [...]...我主要想说明linux栈溢出可能会非常隐蔽的方式出现,即便开启了一些现有的漏洞缓解措施,它们仍然可利用。

2K60
领券