MBR后的连续的四个扇区中;当然,由于setup.S对应的可执行码是由bootsect装载的,所以,在我们的这个项目中可以通过修改bootsect来根据需要随意地放置setup.S对应的可执行码;...BIOS data segment 0x004a 2 Arch/i386/boot/setup.S 支持32位标志④ 0x004c 2 Arch/i386/boot/setup.S BIOS code...seg length 0x004e 4 Arch/i386/boot/setup.S BIOS data seg length 0x0052 2 Arch/i386/boot/setup.S hd0...参数 0x0080 16 Arch/i386/boot/setup.S hd0 参数 0x0090 16 Arch/i386/boot/setup.S PS/2 device 标志⑤ 0x01ff 1...Arch/i386/boot/setup.S * 注: ① Include/linux/tty.h : CL_MAGIC and CL_OFFSET here ② Include/linux/tty.h
调用INT 0x13中断,将setup.s对应的程序加载到0x90200处,共四个扇区2K 再通过INT 0x13中断,将system加载到0x10000 检查根设备 然后跳到setup.s的第一行指令...设置全局描述符表(将来存放LDT和TSS)以及中断描述符表,GDT -> GDTR,IDT -> IDTR,注:setup.s从0x92000开始,gdt段内偏移相对0x90000要加上512 ?...保留内部不可屏蔽中断0x00~0x1F,重新映射中断号,IRQ0为0x20 将控制寄存器CR0的第0位PE置1,打开保护模式(之后要根据GDT) 跳到GDT的1项指向的地址开始执行,即head.s 参考:《Linux
2 流程分析 2.1 引导内核阶段 2.2 内核启动阶段 2.3 init 进程启动 2.4 shell 命令执行 Linux0.11 考古笔记 最近读完《Linux 内核完全注释》和《品读 Linux0.11...核心代码》,大致理解下 Linux0.11 内核的全貌。...其中将 bootsect.s 搬到 0x9000 地址, setup.s 程序( 2~5 扇区)加载到 0x90200 地址,将 system 模块( 240 个扇区)加载到 0x10000 地址。...最后跳转到 setup.s 程序继续执行。...3)setup.s 程序 setup.s 程序执行时,首先会通过 int 0x10 触发一个读磁盘的中断,通过 BIOS 的中断处理读取一些硬件参数到内存 0x9000 这个位置,然后将 system
发行版 Linux内核的发展过程中,我们还不得不提一下各种Linux发行版的作用,因为正是它们推动了Linux的应用, 从而也让更多的人开始关注Linux。...Linux的 引导程序由汇编代码文件arch/i386/boot/bootsect.S生成, 它利用对BIOS功能的调用将 arch/i386/boot/下的setup.S文件和内核映象加载到内存。...由于bzImage超出了640K这一限制,所以linux设计了一个 bootsect_helper子程序(定义在arch/i386/boot/setup.S中), 引导程序通过循环调用bootsect_helper...将内核映象一块一块的装入内存,当内核加载完毕,系统跳转到setup.S的开始位置开始执行, setup.S仍在实模式下运行,主要功能是设置系统参数 (如:内存、磁盘等), 并为进入保护模式做准备,...当用户选择启动linux系统后,同样也跳转到setup.S上运行。 3、内核初始化 当setup.S执行完后,CPU进行保护模式,并开始执行内核, .
MBR分区在硬盘上的组织形式大致如下: MBR.png 2, 三方协议 想要把操作系统启动起来,是需要多方按照一定的协议进行协作才能完成的,以Linux0.11,BIOS+MBR分区,Intel80x86CPU...此时内存第一次有了操作系统的代码,第一个扇区的内容其实就是linux/boot/bootsect.s的内容,其主要功能就是把第二批第三批代码加载到内存中规划好的位置。...在bootsect中,读取的是从第二个扇区开始的4个扇区,加载到0x90200(SETUPSEG)处,这些内容对应linux/boot/setup.s这个文件。...此时内存的视图如下: linux内存.png所以,我们可以知道,当BIOS运行后,会通过int0x19中断读取第一扇区的内容,BIOS并不管这个扇区里是否有内容。...3, grub 经过多年的发展,引导程序已经由最初像Linux0.11的bootsect.s,setup.s等发展为grub,grub2之类的启动引导程序,第一扇区(主引导记录)也从bootsect.s
这里的内容就是 setup.s 这个文件了。...编译过程 在看setup.s之前,先回顾下操作系统的编译过程: 通过Makefile和build.c达到这样的目的: 把bootsect.s编译成bootsect 并放到硬盘的1扇区。...把setup.s编译成setup并放到硬盘2-5扇区。 把剩下的代码编译成system,并放在硬盘的随后的240个扇区。...期待下一次与你一起揭开setup.s的神秘面纱。
资源下载 首先,我们需要linux-0.11源码、bochs等。我把资源放在百度云盘里了。...Linux0.11)。...安装编译环境 bootsect.S 和 setup.S 是实模式下运行的 16位代码程序,采用近似于 Intel 的汇编语言语法,并且需要使用 8086 汇编编译器和连接器 as86 和 ld86。...编译Linux0.11源码 首先解压下载下来的hit-oslab-linux-20110823.tar.gz,命令如下: tar -zxvf hit-oslab-linux-20110823.tar.gz.../run,就会看到bochs加载Linux0.11成功,界面如下: ? Ubuntu与Linux-0.11之间的文件交换 在oslab目录下,运行mount-hdc脚本,挂载linux0.11。
最近看到这个github仓库flash-linux0.11-talk,觉得还算是蛮有意思的,加上网络编程的课程又有抄写一段tcp协议实现代码或者交一篇linux内核源码阅读的笔记,还是比较讨厌这种低效率的抄写的所以就想写篇文章记录一下粗浅阅读源码后的大概了解...进入linux内核前的准备 开机 如果问电脑是如何一步一步开始运行操作系统的,那么第一件事情当然是按下开机键啦。...加载setup.s 加载bootsect后,接下来我们会加载setup.s这个文件,当然加载这个文件的程序肯定也是写在bootsect.s里面的,让我们继续往下读bootsect.s。...因此到这里结束,加载setup.s的工作也就完成了,接下来就是加载操作系统内核。...我们结合代码来看看如何设置GDT 继续看setup.s endmove后的内容。
此时会生成一个名为Image的文件,它的大小刚好是512KB,我们移动他到linux-0.11目录下 ?...之后的setup.s代码如下所示: INITSEG = 0x9000 entry _start _start: !...之后,可以参考赵炯博士写的《Linux内核完全注释》里有关tools工具的介绍。在这里,我们注释掉下图中的部分。 ? 然后在linux-0.11目录下使用make BootImage命令即可。
保护模式 还是在setup.s文件里,搬完操作系统代码就来到了end_move这个标签处。
今天我们一起来看看,setup.s 都做了啥?
引导扇区代码: bootsect.s jmpi go, INITSEG 读入setup模块后: ok_load_setup read_it ---> 读入system模块 操作系统启动 setup模块,即setup.s...模块被读取到了0x1000处 最后引导扇区执行结束后,设置ip=0,cs=SETUPSEG,SETUPSEG=0x9020,即setup扇区内存开始的地址 ---- 操作系统启动 setup模块,即setup.s...---- 进入main函数 main函数是不会退出返回的,上面给出的main代码还少了两句,具体可以参考linux 0.11源码。
Linux 文件系统 目录 说明 bin 存放二进制可执行文件 sbin 存放二进制可执行文件,只有 root 才能访问 boot 存放用于系统引导时使用的各种文件 dev 用于存放设备文件 etc...是超级管理员 localhost 表示主机名 ~ 表示当前目录(家目录),其中超级管理员家目录为 /root,普通用户家目录为 /home/chan $ 表示普通用户提示符,# 表示超级管理员提示符 Linux...test.tar.gz 文件搜索命令 locate:在后台数据库搜索文件 updatedb:更新后台数据库 whereis:搜索系统命令所在位置 which:搜索命令所在路径及别名 find:搜索文件或文件夹 用户和组 Linux
Linux文件操作 Linux中,一切皆文件(网络设备除外)。 硬件设备也“是”文件,通过文件来使用设备。 目录(文件夹)也是一种文件。...boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件和镜像文件。...deb:deb是Device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。...系统会自动识别一些设备,例如U盘、光驱等,当识别后,Linux会把识别的设备挂载到这个目录下。...---- Linux文件的操作方式 文件描述符fd fd是一个大于等于0的整数。 每打开一个文件,就创建一个文件描述符,通过文件描述符来操作文件。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。...2.3 Linux中的用户 Linux下有两种用户:超级管理员(root)、普通用户。 超级管理员(root):可以再linux系统下做任何事情,不受权限约束 普通用户:在linux下做有限的事情。...Linux具有组的概念,主要是在多人协作的时候,更好的进行权限管理!...而在Linux中不通过后缀区分文件类型!但并不是说Linux不用后缀。 那通过什么区分呢?即ls -l第一个属性列。 Linux文件类型: -:普通文件。...很简单一个道理,Linux系统不以文件后缀作为区分文件类型的依据,但并不代表gcc不需要,Linux系统 != gcc。
从今天开始陆续分享Linux的知识 因为服务器基本是Linux的 所以Linux不学明白 Shell命令不熟 会让你的办事效率大打折扣。 一。...Linux文件系统 Linux文件系统是从Unix结构严进过来的。总结一下Linux顶层虚拟目录及其文件内容。 ?
文件锁 前言 /proc是一个特殊的文件系统。 该目录下文件用来表示与启动、内核相关的特殊信息。 /proc/cpuinfo——CPU详细信息 ...
Linux ESC :wq 和:wq!的区别 Linux ESC:wq 和:wq!...的区别 发布者:IT人在线 | 发表时间:2018-12-4 17:20:43 Linux ESC :wq esc(键退出)->:(符号输入)->wq(保存退出) wq(存盘并退出 write%quite
为了解决内存紧缺的问题,Linux引入了虚拟内存的概念。为了解决快速存取,引入了缓存机制、交换机制等。...要深入了解Linux内存运行机制,需要知道下面提到的几个方面。 首先,Linux系统会不时地进行页面交换操作,以保持尽可能多的空闲物理内存。...其次,Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存中,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存中。...Linux虽然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。...Linux下可以使用文件系统中的一个常规文件或者一个独立分区作为交换空间。同时Linux允许使用多个交换分区或者交换文件。
linux安装.net 下载.net https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.1.4-linux-x64-binaries...下载安装包后执行命令: dotnet-sdk-2.1.302-linux-x64.tar.gz yum install libicu -y cd /root ln -s /data1/soft /data.../soft tar zxvf dotnet-sdk-2.1.302-linux-x64.tar.gz -C /data1/soft/dotnet/ echo 'export DONET_ROOT=$PATH
领取专属 10元无门槛券
手把手带您无忧上云