bios

Linux启动过程

爷,独闯天下 提交于 2019-12-02 20:12:08
Linux启动过程 前言:   Linux 是一种自由和开放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。在加上用户空间的应用程序之后,成为Linux操作系统。Linux是自由软件和开放源代码软件发展中最著名的例子。   接触Linux的时间也不算短了,一直都是直接使用Linux操作系统进行一些工作,很少去了解系统从开机到能使用的整个过程,感觉有需要好好理解下整个系统的启动过程,故写这篇博客加深一下理解。 先通过一张图来简单了解下整个系统启动的流程,整个过程基本可以分为POST-->BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel。下面会详细说明每个过程的作用。 图1-1:系统启动流程 BIOS   BIOS(Basic Input/Output System),基本输入输出系统,该系统存储于主板的ROM芯片上,计算机在开机时,会最先读取该系统,然后会有一个加电自检过程,这个过程其实就是检查CPU和内存,计算机最基本的组成单元(控制器、运算器和存储器),还会检查其他硬件,若没有异常就开始加载BIOS程序到内存当中。详细的BIOS功能,这边就不说了,BIOS主要的一个功能就是存储了磁盘的启动顺序,BIOS会按照启动顺序去查找第一个磁盘头的MBR信息,并加载和执行MBR中的Bootloader程序

0xffff0 and the BIOS

心不动则不痛 提交于 2019-12-02 18:53:29
When a pc first boots up, it starts executing at physical address 0xffff0. This address contains a jmp instruction to the BIOS. Now for my question, I always assume the physical addresses are mapped to RAM. If RAM initially contains garbage values, what exactly puts the jmp instruction in 0xffff0? Is the jmp instruction always the same or is it different for different BIOS's? Does 0xffff0 map from RAM to BIOS then (meaning it's "hard mapped")? The top 64kB or so are mapped to BIOS ROM, not RAM. Take a look at PC boot sequence . As Ignacio already answered, it's "hard-mapped" to BIOS read-only

How to check the BIOS version or name in Linux through a command prompt? [closed]

廉价感情. 提交于 2019-12-02 18:48:49
I want to retrieve the current BIOS version and name while working on the terminal. What could be the commands to find it? BIOS version is exposed through the SMBIOS tables. On Linux, we can access this with dmidecode (which requires root privileges to run). To show only BIOS information, use -t bios to specify that we only want to see entries of the type BIOS, and -q to silence unnecessary output. # dmidecode -t bios -q BIOS Information Vendor: Phoenix Technologies LTD Version: 6.00 Release Date: 02/22/2012 Address: 0xE72C0 Runtime Size: 101696 bytes ROM Size: 64 kB Characteristics: ISA is

How is the BIOS ROM mapped into address space on PC?

爷,独闯天下 提交于 2019-12-02 17:19:27
The x86 CPU begins execution at physical address 0xFFFFFFF0. There at the end of the address space the BIOS ROM is located. The first instruction the CPU executes from the ROM is far jump which causes the CS segment to be reloaded so the next instruction is executed from within the physical region 0x000F0000 - 0x000FFFFF. What causes the ROM to respond on both regions? Is there some special address decoding logic on PC? I found comment in Bochs source code that states that last 128K of BIOS ROM is mapped to 0xE0000 - 0xFFFFF. However I cannot find more info about this. Clearly this is

计算机基础2

余生长醉 提交于 2019-12-02 16:47:22
python是编程语言 语言 一种事物与另外一种事物沟通的介质 所以说编程语言是程序员与计算机沟通的介质 什么是编程: 就是程序员用计算机所能理解的表达方式(编程语言)把自己的思维逻辑写下来,编程的结果就是一堆文件 什么要编程? 或者说为什么要和计算机沟通,让计算机按照人的逻辑执行程序,取代并解放人力 完整的计算机系统 3层结构 应用程序 (不能直接操作硬件,如果要操作硬件,需要向操作系统层发出请求) 操作系统 (往上服务于应用软件,往下控制硬件) 计算机硬件 五大组成 控制器:统筹规划硬件与软件的运行,调控计算机各组成部分协调合作 运算器:可以完成数据的 算数运算 与 逻辑运算,得到想要的结果 存储器:需要再次使用的数据可以通过存储器进行 临时 或 永久存储 - 内存: 基于电工作,通电能存数据,断电数据消失 - 外存: 外部存储(硬盘),永久保存数据 输入input设备:将外界的信息,通过输入设备,提供给计算机 输出output设备:从计算机内部提前想要的数据 数据的处理流程 数据先通过输入设备到内存,然后CPU从内存里取出数据在进行处理,最后处理完的数据给到内存,内存给到输出设备显示 计算机三大核心 cpu: 中央 控制器 + 运算器 内存:临时存储数据,断电后消失 硬盘:永久存储数据,断电后还拥有 CPU 控制器+运算器=CPU 功能: 控制+运算 工作方式: 取值---

2.3.3 IDE磁盘【译】

╄→尐↘猪︶ㄣ 提交于 2019-12-02 15:49:56
现代个人计算机器磁盘是从IBM PC XT进化而来,XT的磁盘控制器位于插件卡中,控制着10MB的希捷磁盘。希捷磁盘由4个磁头,306个柱面,每个磁道有17个扇区。控制器能够操作两个驱动。操作系统读写磁盘的方式是:把参数放进CPU寄存器,然后调用PC内建只读内存中的BIOS(基本输入输出系统)。BIOS发布机器指令来加载硬盘控制器寄存器。 从控制器位于分开的板子上,到控制器和驱动紧密集成,技术的飞速发展始于20世纪70年代中期的IDE驱动(电子集成驱动器)。然而,BIOS的调用规范由于向后兼容的原因并未发生变化。调用规范通过给磁头,柱面和扇区编号来给扇区编址,磁头和柱面从0开始编号,扇区从1开始。这种选择可能是来自早期BIOS程序员犯的错误,他在8088汇编器中编写他的杰作。磁头编号有4位,扇区编号有6位,柱面有10位,最大的驱动可能有16个磁头,63个扇区和1024个柱面,合计1032192个扇区。这样一个最大的驱动能存储504MB,在当时看起来似乎是无限的,在今天肯定不是。(你会抱怨今天新买的计算机不能驾驭超过1000TB的驱动吗?) 很不幸的是,不久,504MB以下的驱动诞生了,但是它的结构是错的(比如,4个磁头,32个扇区,2000个柱面共计256000个扇区)。由于一成不变的调用规范,操作系统无法给扇区编址。就这样,磁盘控制器开始撒谎了,假装驱动结构处于BIOS的限制下

手动制作BIOS和EFI多启动U盘

旧街凉风 提交于 2019-12-02 14:31:30
原文链接:https://www.lainme.com/doku.php/blog/2017/07/%E5%88%B6%E4%BD%9Cbios%E5%92%8Cefi%E5%A4%9A%E5%90%AF%E5%8A%A8u%E7%9B%98 准备分区 U盘使用的是MBR分区表(GPT应该也行),并分为两个区: 第一分区:FAT32格式,作为引导分区/EFI分区,大小以100MB为宜。 第二分区:EXT4或其他你喜欢的格式,存放ISO和其他文件。 安装引导 启动引导使用GRUB,并假设第一分区是/dev/sdb1。先挂载分区 sudo mount /dev/sdb1 /mnt 然后安装BIOS引导 sudo grub-install --target=i386-pc --boot-directory=/mnt/boot --recheck /dev/sdb 再安装EFI引导 sudo grub-install --target=x86_64-efi --efi-directory=/mnt --boot-directory=/mnt/boot --removable --recheck 配置引导 假设其他文件都存放于第二分区(/dev/sdb2),并包含以下目录/文件 -- slax/ -- images/archlinux.iso -- images/ubuntu-gnome

完全定制个性化linux安装界面

六月ゝ 毕业季﹏ 提交于 2019-12-02 12:09:58
最近定制了一个ubuntu的安装界面,感觉比较有意思,写上来,有兴趣的朋友可以实践一下... 先介绍一下grub和isolinux,以及一些开机引导程序... 1)BIOS:basic input output system,一般的情况下是归结于firmware这一类的.这里是为了连接通顺,就简单的说一下bios.BIOS是用户在按下电源的那一刻,负责和硬件沟通并呈现到用户面前的那些信息,可以通过显示器看到的.BIOS做的工作主要有四点: a)检测并初始化:对主板上的芯片进行检测,并通知芯片开始工作; b)记录系统的设置值:主要会去读CMOS里面的内容; c)中断的处理:主板上的资源都是由BIOS分配的,IRQ也是; d)加载操作系统:安装的操作系统是由BIOS转给引导扇区的,然后再去激活操作系统. 2)grub:相信大家都听过,它是一个很强悍的开机管理程序,特点就不说了,自己去查查.但是最大的好处,就是很有弹性的设置模式,多重开机管理的时候,可以快速的访问多重开机选项,而且浅显易懂.grub开机有三个阶段,这里的目的是定制安装界面,不详细说grub引导,可能会在下一篇中详细描述一下系统的开机过程:).grub配置文件在linux下的/etc/grub/grub.conf,可以去看看,很容易明白.安装过个操作系统的时候,主要也是改grub... 3)isolinux

[日常] 小白来装机基本概念BIOS与硬盘分区

爷,独闯天下 提交于 2019-12-02 11:53:43
这两天因为在linux进行测试,先是搞坏了linux的系统,然后在重装linux系统后搞坏了引导。在修复引导的过程中,搞坏了本机的win8系统,再次修复引导与重装linux后,linux可以访问了,windows系统重装后还是不行,引导部分也还是不行。从我的经历可以体现出,使用linux作为日常系统具有极大的风险,因为他的权限非常高并且某些软件的依赖有可能修改本地界面的依赖库,修改后非常容易使得界面无反应,大家一定谨慎使用。 当我们在装系统的时候,第一件事肯定是要先进入电脑的BIOS设置界面,那么这个BIOS到底是个什么东西呢? BIOS是Basic Input Output System的缩写,它的意思就是基本的输入输出系统,是介于硬件与操作系统之间的一个系统,本质上是一个软件,被集成在了主板上。英特尔后来又升级了BIOS的规范,BIOS就升级为了UEFI BIOS。新电脑一般使用的为UEFI BIOS,并且可以进行配置选择,选择成传统的BIOS也叫legacy。 当使用UEFI BIOS的时候,UEFI需要去访问EFI分区,寻找操作系统的引导文件。 在安装的时候还有个Secure Boot的选项,这选项本身是为了安全,却被微软演化成了防止更改预装的windows系统为其他系统的工具,因此这个选项都是建议关闭的。 在我自己可以进入的linux系统中使用,使用fdisk

asm change cmd background color

微笑、不失礼 提交于 2019-12-02 10:20:23
问题 I wrote the part that changes the text color, but I can't find a way to change the background color, this code is for tasm assembly: model small stack 256 .data ent db 0ah,0dh,'$' array db 2,4,5,6 db 7,8,9,5 db 1,2,3,4 db 5,6,7,8 temp dw 0 .code main : mov ax,@data mov ds,ax mov ah, 06h mov al, 0 mov cx, 0 mov dh, 79 mov dl, 79 mov bh, 4h int 10h This is a my code but it doesn't work: mov ah, 0bh mov bh, 01h mov bl, 2h int 10h mov ah, 02h mov dl, 34h int 21h mov ax,4c00h ; exit from program