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

Linux源码学习笔记 day1 开机时如何加载系统?

今天开始学习 闪客老师的《Linux源码趣读》 在开机的时候,主板上的 BIOS程序 会把硬盘启动区的512个字节复制到内存里的0x7c00的位置,再跳转到这里运行。...开机后初始化 指向BIOS CPU中的PC寄存器,存储着即将要执行的指令的内存地址。开机时需要初始化PC寄存器的值为0xFFFF0。这是Intel手册龟腚的,硬件厂商只是实现而已。...放到第一扇区 Linux-0.11 从bootsect.s开始, 经过编译后,bootsect.s 会被编译成二进制文件,放在启动区的第一扇区。...加载到内存 前面说了BIOS会把代码复制到0x7c00的位置,具体怎么复制的还是得看bootsect.s里的代码: .equ BOOTSEG, 0x07c0 # original address of...这里32位 64位都是 加载到 0x7c00处,这里CPU还处于16位的实模式下,还得兼容老祖宗的位置。看来CPU的发展也有历史包袱。

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

Linux开机启动(bootstrap)

计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。...然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。...引导加载程序储存有操作系统(OS)的相关信息,比如操作系统名称,操作系统内核 (内核)所在位置等。常用的引导加载程序有GRUB和LILO。 随后,引导加载程序会帮助我们加载内核(kernel)。...小结:BIOS -> MBR -> 引导加载程序 -> 内核 内核 如果我们加载的是Linux内核,Linux内核开始工作。...这些脚本执行如下功能: 设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络…… 当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录。

8.2K80

Linux开机流程(中)

它们的关系如下图: 这张图解释了开机过程中grub2阶段的所有过程,boot.img段的boot loader只有一个作用,就是跳转到core.img对应的boot loader的第一个扇区,对于从硬盘启动的系统来说...但直到目前为止,core.img都还不识别/boot所在分区的文件系统,所以kernel.img初始化grub环境的过程就包括了加载模块,严格地说不是加载,因为在安装grub时,文件系统类的模块已经嵌入到了...加载了模块后,kernel.img就能识别/boot分区的文件系统,也就能找到grub的配置文件/boot/grub2/grub.cfg,有了grub.cfg就能显示启动菜单,我们就能自由的选择要启动的操作系统...当选择某个菜单项后,kernel.img会根据grub.cfg中的配置加载对应的操作系统内核(/boot目录下vmlinuz开头的文件),并向操作系统内核传递启动时参数,包括根文件系统所在的分区,init...4.选中某菜单后,kernel.img加载该菜单项配置的操作系统内核/boot/vmlinux-XXX,并传递内核启动参数,包括根文件系统所在分区和init ramdisk的路径。

3.6K30

linux开机启动顺序

LINUX 开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。...一般的开机启动无非就是四步:BIOS加电自检(检测硬件什么之类的,寻找启动磁盘,在启动磁盘加载MBR);Boot Loader(加载grub.conf顺序启动) ;启动内核(内核会尝试挂载根文件系统,根文件系统至少包含...启动第四步--加载内核   根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。...只要其中有一个程序加载获得成功,那么系统就将开始用户层的初始化,而不会再回到init()函数段中。至 此,init()函数结束,Linux内核的引导 部分也到此结束。...3: 接上一步,主机读取boot loader后,会读取里面的信息,知道谁跟谁是待在哪,假如主机想进入linux系统,读取到linux核心是在/boot文件目录中后,将此核心加载到内存中。

8.2K100

linux开机流程(上)

一.简介 计算机启动分为内核加载前、加载时和加载后3个大阶段,这3个大阶段又可以分为很多小阶段,本文将非常细化分析每一个重要的小阶段。...内核加载前的阶段和操作系统无关,Linux或Windows在这部分的顺序是一样的。...由于使用anaconda安装Linux时,默认的图形界面是不支持GPT分区的,即使是目前最新的CentOS 7.3也仍然不支持,所以在本文中主要介绍传统BIOS平台(MBR方式)的启动方式(其实是本人愚笨...在内核加载时和加载后阶段,由于CentOS 7采用的是systemd,和CentOS 5或CentOS 6的sysV风格的init大不相同,所以本文也只介绍sysV风格的init。...bios是按下开机键后第一个运行的程序,它会读取CMOS中的信息,以了解部分硬件的信息,比如硬件自检(post)、硬件上的时间、硬盘大小和型号等。

4.4K20

Linux开机启动(bootstrap)

作者:Vamei 来源:见文末 计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。...然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。...实际上,我们可以在多个分区安装boot loader,每个引导加载程序对应不同的操作系统,在读取MBR的时候选择我们想要启动的引导加载程序。这就是多操作系统的原理。...小结:BIOS -> MBR -> 引导加载程序 -> 内核 内核 如果我们加载的是Linux内核,Linux内核开始工作。...这些脚本执行如下功能: 设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络…… 当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录。

6.4K50

Linux开机流程(下)

加载/sbin/init程序,首先要找到根分区,根分区是有文件系统的,所以内核需要先识别文件系统加载文件系统的驱动,但文件系统的驱动又是放在根分区的,这就出现了先有鸡还是先有蛋的矛盾。...解决方法之二则像传统grub借助中间过渡引导段stage1_5一样,将根文件系统的驱动模块放入一个中间过渡文件,在加载文件系统之前先加载这个过渡文件,再由过渡文件跳转到根文件系统。...,是在内存中模拟出磁盘分区的,所以内核必须要带有它的文件系统驱动,而initramfs则仅仅只是一个镜像压缩文件而非文件系统,所以它不需要带文件系统驱动,在加载时,内核会将其解压的内容装入到一个tmpfs...操作系统初始化涉及了不少过程,大致如下:读取运行级别;初始化系统类的环境;根据运行级别初始化用户类的环境;执行rc.local文件完成用户自定义开机要执行的命令;加载终端; 运行级别 在sysV风格的系统下...在Linux系统中定义了7个运行级别,使用0-6的数字表示。

2.7K20

打造前端 Deepin Linux 工作环境——开机自动加载 ~.bash_profile 文件

打造前端 Deepin Linux 工作环境——开机自动加载 ~/.bash_profile 文件 这个事情非常搞笑,当我把系统根据我的配置搞好之后,我就关机重启了一下。...这说明我们配置的 ~/.bash_profile 文件没有加载,只需要重新执行一下 . ~/.bash_profile 就可以了。但是如果每次启动都要这样运行一次,我感觉还是蛮扯淡的。...我的第一反应是,这应该是 deepin linux 的一个 BUG。本着没有能力开发也要大力配合开发的态度,我去官方提交了一个关于这个问题的用户反馈。 然后我想,肯定不会是我一个人遇到这个问题。...我用的 mac os 也好 arch linux 都是这样设置,而从来没有人给我说过这样不行,到你这,怎么这么多理由呢? 另外,.bashrc 文件是每次打开一个新的终端窗口的时候执行的。

1.3K60

Linux文件系统

(如何管理磁盘文件) 5.1 了解文件系统 有了上面的线性大地址,我们就可以开始构建出文件系统了。...在每个分区内部分组,然后写入文件系统的管理数据,称之为格式化!!! Linux 文件系统特定: 文件属性 与 文件内容 分开存储。...接下来我们来研究文件系统: 每个组里有这些部分: Block Group(占据空间最大的一部分):每个Block Group都有着相同的结构组成。...inode 表 : 存放文件属性 如 文件大小,所有者,最近修改时间等 Linux中文件的属性是大小固定的集合体(一般固定128字节) 不包含文件名,但是都有inode_number,通过inode号来标识一个文件...而Linux系统会进行路径的缓存,来方便我们的寻找工作。 我们一般使用的云服务器会有一个虚拟磁盘vda,系统中会有许多分区。

7710

linux文件系统

Linux是一个基于Unix的操作系统,具有强大的文件系统功能。Linux文件系统是在硬盘上组织和存储数据的一种结构,通过文件系统可以管理文件、目录、权限等信息。...在Linux中,文件系统被组织成一个树形结构,称为文件系统层次结构(Filesystem Hierarchy Standard,FHS),该标准规定了Linux操作系统中各级目录的名称和用途,使得Linux...根目录 根目录(/)是Linux文件系统中的最顶层目录,所有其他的目录和文件都是从根目录开始构建的。在根目录下可以存放各种文件和目录,如用户目录、系统文件、配置文件等。.../proc /proc目录是Linux系统中一个特殊的目录,用于提供进程和系统信息的虚拟文件系统。.../mnt /mnt目录是Linux系统中用于挂载文件系统的目录,通过挂载可以将其他文件系统的内容挂载到/mnt目录下,使得这些文件系统可以被访问。

8.8K00

Linux文件系统

文件系统 磁盘 磁盘的物理结构 磁盘的储存结构 磁盘的逻辑结构 文件系统 分治 inode与数据块 软硬链接 什么是软硬连接 文件与引用计数 文件的三大时间 动静态库 什么是库 库的使用 静态库...动态库 动态库加载 博客同步到腾讯云社区 磁盘 磁盘是一个机械机构,不同于硬盘。...所以讨论文件系统,只要讨论这5G就可以了。 Boot Block:操作系统加电开机启动的时候,所有的信息都在这个区域。 Block group 0:超级块,块组0。...Super Block:超级块对象,保存的是整个文件系统的信息。 如果想清空哪个盘里面的所有数据内容,其实就相当于重写文件系统。一个磁盘,第一步是分区,第二部就是格式化,也就是写入文件系统。...inode与数据块 文件 = 内容 + 属性 Linux中,文件的属性和内容是分批存储的。 保存文件属性的叫inode块:具体大小跟文件系统的版本有关,我的是ext3,128字节。

12.6K00

linux文件系统

Linux 文件系统Linux 操作系统中的重要组成部分,它是文件和目录的组织方式,为用户提供了一个良好的管理和访问文件的方式。...Linux 文件系统具有以下特点:一切皆文件:在 Linux 文件系统中,一切都被视为文件,包括硬件设备、目录、文件、管道等等。这种一切皆文件的思想使得 Linux 文件系统非常灵活。...Linux 文件系统层次结构Linux 文件系统层次结构定义了一组标准目录和文件,使得用户和程序员可以更容易地找到和管理文件。这些目录和文件通常被存储在根目录下。...Linux 文件系统格式Linux 文件系统可以使用多种格式来存储数据,包括 ext2、ext3、ext4、ReiserFS、XFS等。...以下是一些常见的 Linux 文件系统格式:ext2:是 Linux 文件系统的最早版本,它是一个简单的文件系统,不支持日志和数据恢复功能。

8.6K40

Linux文件系统

Linux文件系统Linux系统中所有的设备都统称为文件,所以同样必须要去学习下linux文件系统到底是何物??? 进入系统后我们使用命令ls -ll 就可以查看根目录下所有文件的信息 ?...二进制文件:linux中可执行文件(命令) ? 数据格式文件(一种特殊的文件 data) ? 2、d目录文件 ls -ld 可以显示所有目录文件 3、b块设备文件 ?...二:文件的扩展名 同样linux系统中的文件也有扩展名,不过意义不大,只是为了区分不同的文件 linux中常见的扩展名类型有以下几种: 1、.tar .tar.gz .tgz .zip 这类表示压缩文件...Inode:索引节点,linux中存储设备或分区被格式化为文件系统后,一般都会分成二个部分,第一部分就是inode,第二部分为block,inode存储的是文件的属性信息,我们可以使用ls -i查看Inode

9.7K40

linux文件系统

Linux 文件系统 操作系统中,用来管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。...RAW RAW文件系统是一种磁盘未经处理或者未格式化产生的文件系统。...一般来说有这几种可能造成正常文件系统变成RAW文件系统: 没有格式化 格式化中途取消 硬盘出现坏道 硬盘出现不可预知的错误 EXT EXT是扩展文件系统,目前最新的版本是5.0....HFS(+) 苹果电脑上的文件系统Linux里的文件系统 不同于Windows系统有盘符的概念(C盘、D盘等),Linux里只有一个盘符,是从 " / " 开始的,只有它是没有上级目录的。.../media Linux系统自动识别的一些设备,比如U盘、光驱等,当识别后,linux会把识别的设备挂载到这个目录下。

7.3K30

Linux开机自动挂载磁盘

我们当然可以手动再次将其挂载,但如果每次重启都需要这样手动操作会很不方便;因此我们可以利用自动挂载,这样系统每次开机的时候就可以自动将磁盘挂载上去了。自动挂载可以有两种方式。...第1列是设备名或者卷标 第2列是挂载点(也就是挂载目录) 第3列是所要挂载设备的文件系统或者文件系统类型 第4列是挂载选项,通常使用defaults就可以 第5列设置是否使用dump备份,置0为不备份,...置1,2为备份,但2的备份重要性比1小 第6列设置是否开机的时候使用fsck检验所挂载的磁盘,置0为不检验,置1,2为检验,但置2盘比置1的盘晚检验。...本文需将逻辑卷lv_study挂载到 /lvm_study ,文件系统为ext4 格式,不进行dump备份以及开机磁盘检查。...挂载点必须为已经存在的目录 (3)卸载时必须保证当前磁盘没有发生读写操作 2.修改/etc/rc.d/rc.local文件 将mount命令添加进rc.local文件是另一种实现开机自动挂载的方式

9.5K40
领券