使用U盘安装CentOS6.2过程详解

很多人都有安装Linux的经历,无非就是插张光盘或者USB到主机上,然后按照提示一步一步进行配置,完了重启一遍,OK。但是这个过程中,系统到底做了些什么事情呢?下面就简单地来说一说。

1. 可启动盘的历史

普通的光盘是基于ISO-9660的标准发展起来的,在光盘上数据被组织为帧和扇区,一个扇区包含98帧,共2352字节,一个700M的CD大概包含了360000个扇区。在大约1994~1995年的时候,凤凰科技(Phoenix Technologies)和IBM的两个牛人(Curtis Stevens和Stan Merkin)在一个墨西哥餐厅边吃午饭边商量可启动盘(Bootable Disk)的规范,商量完后,两人根据餐馆的名字将可启动盘的规范命名为”El
Torito“。这个规范实际上对ISO-9660进行了扩展,规范中定义了可启动光盘的数据结构与映像数据的配置及光盘制作的一些详细说明,同时也隐含地制定了能够读取可启动光盘的BIOS规范。1996年COMPAQ、Phoenix与Intel联合发布的BIOS启动规范(BIOS Boot Specification)1.01,该规范为BIOS厂家提供了制造支持可启动光盘的BIOS的标准。

2. 可启动盘的原理

可启动盘跟普通的数据盘到底有什么区别呢?为什么将它插到电脑上就能够引导系统呢?

根据标准,BIOS会在开机时将检查光盘的第17个扇区(sector 17),查找其中的代码,若找到启动记录卷描述表(Boot Record Volume Descripter),它就根据表中的地址继续查找启动目录(Booting Catalog),找到启动目录后 ,再根据其中描述的启动入口(Boot Entry)找到相应的启动盘映像(Bootable
Disk Image)或启动引导文件,找到启动盘映像后,读取其中的数据,并执行相应的开机动作。

3. 启动盘映像

启动盘映像多很多种,如SYSLINUX、ISOLINUX、PXELINUX、EXTLINUX等,其中PXELINUX用于网络安装,EXTLINUX用于从ext2/ext3/ext4/btrfs文件系统启动。而启动光盘会使用到剩下的两种映像:SYSLINUX和ISOLINUX。

在上面我们提到了自启动光盘的规范”El Torito“,它支持两种启动模式:模拟模式和非模拟模式。

模拟模式将启动信息保存在一个1.44M的FAT格式的映像文件中,就如同将一张1.44M的软盘”镶嵌“到一张光盘中,系统从光盘中加载这个映像文件,然后跟使用软盘一样启动系统。因为受空间限制,这种模式不能用于启动完整的Linux操作系统,通常只用来做Rescue盘、Live
USB或者其他轻量级的启动系统。模拟模式使用的映像就是SYSLINUX,但这种方式一般只用于1999年以前的电脑。

非模拟模式直接将启动信息保存在光盘上,而不是一个模拟的映像文件上,这时用的就是ISOLINUX。从3.72版本开始,ISOLINUX支持”hybrid
mode“模式,能够在ISO映像中放一个启动程序,支持使用同一个映像文件从光盘或者USB启动。现在大部分情况我们用的都是这种方式。

4. ISOLINUX

ISOLINUX目录中一般包含下列文件

名称 说明
isolinux.bin 非模拟模式的启动引导程序。当使用mkisofs命令时,-b参数要指向这个文件
vmlinuz 压缩的内核,引导系统安装。”VM“表示”Virtual Memory“
initrd.img 内存映像文件(initial ramdisk)。解压后可以看出一个简洁的Linux根文件系统
isolinux.cfg ISOLINUX的配置文件
boot.cat 启动目录(booting catalog)文件,保存了所有可用的启动映像
*.msg 一些命令用到的文本文件,比如启动界面的提示信息
*.lss ISOLINUX的图像化启动界面

首先说一下配置文件。isolinux.cfg是一个纯文本文件,里面大概像下面这个样子:

[plain] view plaincopy

  1. <span style="font-size:12px;">default local
  2. prompt 1
  3. timeout 600
  4. display boot.msg
  5. label linux
  6. kernel vmlinuz
  7. append initrd=initrd.img
  8. label rescue
  9. kernel vmlinuz
  10. append initrd=initrd.img rescue
  11. label local
  12. localboot 0xFF
  13. label reinstall
  14. kernel vmlinuz
  15. append ks=hd:sdb1:/ks.cfg method=hd:sdb1:/ initrd=initrd.img ramdisk_size=8192 console=ttyS0,9600 headless cmdline</span>

文件头部可以认为是一些全局设置,default表示超时后系统的默认启动项,prompt为1时表示始终显示启动提示信息,否则需要按某些键才会显示,timeout以0.1秒为单位,等待用户输入的超时时间。

文件后面以label开头的段落就是具体的启动项及参数配置。比如用户输入linux,那表示将用vmlinz为内核,带着参数initrd=initrd.img来启动系统;localboot 0x80表示如果用户输入local,则系统将从第一块硬盘的第一个分区启动,可选参数包括:

  • 0x80 - 第一块硬盘的第一个分区 (C: in DOS)
  • 0x81 - 第一块硬盘的第二个分区(D: in DOS)
  • 0x00 - 一个软盘驱动器 (A: in DOS)
  • ....
  • 0xFF - 从BIOS中列举的下一个设备启动

再说一下initrd.img。initrd.img是一个使用gzip压缩的ext2格式的文件系统映像,它包含了Linux的根目录,解压后能够看到下面的目录结构:

bin  dev  etc  firmware  init  lib  lib64  modules  proc  sbin  selinux  sys  tmp  usr  var

它一般被用来临时地引导硬件到实际内核能够接管并继续引导的状态,主要是用于加载ext3等文件系统及 SCSI 设备的驱动。比如,使用SCSI硬盘,而内核中并没有相关驱动,那么在装入SCSI模块之前,内核不能加载根文件系统,这时就可以从initrd的/lib/modules下加载驱动程序来读取硬盘数据。

5. 安装阶段1

将上面1~4节的内容汇总一下,可以大概得到Linux从光盘或USB安装过程第一阶段的内幕:

Step1. 电源上电后,BIOS根据设置的启动顺序从第一个设备开始启动,假设第一个设备已经被设置为光盘或者USB,启动程序执行/isolinux路径下的isolinux.bin,这个程序读取isolinux.cfg,在启动屏幕上显示所有的启动项。

Step2. 用户选择某个启动项(假设为reinstall)后,引导程序根据参数继续引导过程,加载内核映像vmlinuz和初始RAM磁盘initrd.img,在内存中构建了一个Linux启动所需的虚拟的根文件系统(rootfs)。

Step3. 内核执行initrd.img中的/init程序(这实际上是一个指向/sbin/init的软链接)。init会调用/sbin/loader程序,执行anaconda主程序。

至此,安装引导的第一个阶段结束,这个阶段的主要任务就是找到第二个阶段的引导程序并执行它。

6. 安装阶段2

安装的第二个阶段实际上就是anaconda的执行过程,非交互式安装建议直接参考ks.cfg的手册来理解,本文不再赘述,只简单介绍一下安装盘上相关文件和目录。

安装盘顶层目录除了前面提到的isolinux,还有几个主要的目录,如images、Packages、repodata,另外还有几个文件,如ks.cfg、.discinfo和.treeinfo。

文件或目录名 说明
.discinfo 安装盘识别信息,执行/usr/lib/anaconda-runtime/buildinstall时生成
.treeinfo 记录不同安装方式安装程序所在的目录结构
ks.cfg kickstart文件,非交互式安装的配置文件,包括系统账户、分区以及安装哪些rpm包等都在里面定义
images
<pre name="code" class="screen" style="background-color:rgb(255,255,255)"><code class="computeroutput"><span style="font-size:12px;">包含启动和驱动盘映像文件,最重要的是第二阶段的引导映像</span></code>
<span style="font-size:12px;"><code class="computeroutput"></code></span><pre name="code" class="screen" style="background-color:rgb(255,255,255)"><code class="computeroutput"><span style="font-size:12px;">install.img(rhel6)或stage2.img(rhel5)</span></code>


Packages 包含所有的二进制RPM包
repodata 包含RPM包的描述文件,如依赖关系,包含文件,校验码信息。有四个必要文件:filelists.xml.[gz],other.xml.[gz],primary.xml.[gz]和repomd.xml

使用U盘安装CentOS6.2过程详解

时间: 2024-11-03 21:29:52

使用U盘安装CentOS6.2过程详解的相关文章

VirtualBox安装CentOS6.5图文详解

打开VBox,并且创建CentOS 6.5 64位环境. a)新建虚拟机环境,由于VBox环境没有CentOS的选项,所以可以选择Red Hat Linux(64Bit) b)动态分配硬盘大小所以你可以选择大一点的硬盘空间(不用的话不会占用的,但是C盘性能上没固定的好) 3.下载CentOS 6.5系统 CentOS系统官网:http://www.centos.org 4.安装CentOS a)在VBOX主界面,选择刚刚新建的CentOS64,点击启动. b) 选择你下载的CentOS6.5 的

U盘安装CentOS Linux图文详解

使用UltraISO,将u盘做成启动盘 文件-->打开-->选择CentOS6.6的iso镜像CentOS-6.6-x86_64-bin-DVD1.iso 启动-->写入硬盘映像 原文地址:http://blog.51cto.com/12306609/2058719

CentOS 7 / Ubuntu 15.04 上安装 PHP Laravel 过程详解

Laravel 安装并不繁琐,你只要跟着本文章一步步操作就能在 CentOS 7 或者 Ubuntu 15 服务器上安装. 1) 服务器要求 在安装 Laravel 前需要安装一些它的依赖前提条件,主要是一些基本的参数调整,比如升级系统到最新版本,sudo 权限和安装依赖包. 当你连接到你的服务器时,请确保你能通以下命令能成功的使用 EPEL 仓库并且升级你的服务器. CentOS-7 # yum install epel-release # rpm -Uvh https://dl.fedora

使用U盘安装CentOS6.7操作系统

使用U盘安装CentOS6操作系统 参考:http://www.osyunwei.com/archives/2307.html 一.使用老毛桃制作U盘的ISO启动镜像 二.修改启动顺序,使用U盘启动,测试使用的是联想ThinkpadE430,开机按F12进入UEFI,选择USB启动 三.安装linux系统,进入安装界面 1.选择第一项:Install or update an existing system Choose language:Chinese(Simplified),Tap键选择ok

Android的学习之路(三)项目的启动过程和安装过程详解

应用的安装和启动过程: 安装:第一步:java的编译器会把这个.java文件编译成.class文件 第二部:Android的SDK提供了一个dx工具,这个工具把.class文件转义成.dex文件 第三部:打包操作,把.dex文件和资源文件进行打包,打包成一个压缩文件,然后进行签名.最后就打包成为了.apk文件 第四部:调用adb指令:adb install c:/x.apk安装到模拟器 具体过程:.JAVA---->.class--.dx-->.dex--->打包签名--->.ap

win7配置免安装mysql5.6.19过程详解

本文主要介绍免安装配置mysql5.6.19的过程,整个过程中自己出现很多次失误,经过整理,现将一次可成功的过程记录下来,供大家参考. 准备 在mysq官网 http://dev.mysql.com/downloads/mysql/,下载最新稳定版本. 本文使用的mysql版本为5.6.19,因下载免安装版本,在页面选择"Windows (x86, 64-bit), ZIP Archive"[吐槽一下,越来越大了:217.2M] 解压 将下载的mysql.zip解压到E:\Develo

烂泥:U盘安装Centos6.5

本文首发于烂泥行天下. 使用U盘安装Centos6.5,需要以下几个步骤: 1. 制作U盘linux系统 2. 设置服务器BIOS 3. 安装Centos,注意引导分区的安装 首先要把U盘做成linux启动盘.网上有关这方面的软件比较多,在此我使用的是WinSetupFromUSB这款软件. 此款软件既可以安装windows系统,也可以安装linux.具体使用步骤也可以搜索网络上的教程,在此我只截图做演示. U盘linux安装完毕后,我们现在来设置服务器的BIOS,使其开机U盘启动.这台是HP的

使用HeartBeat实现高可用HA的配置过程详解

使用HeartBeat实现高可用HA的配置过程详解 一.写在前面 HA即(high available)高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有2台机器 A 和 B,正常是 A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至B机器继续提供服务.常见的实现高可用的开源软件有 heartbeat 和 keepalived. 这样,一台 web 服务器一天24小时提供web服务,难免会存在 web 服务挂掉或服务器宕机宕机的情况,那么用户就访问不了服务了,这当然不是我们期望

计算机启动过程详解

计算机启动过程详解打开电源启动机器几乎是电脑爱好者每天必做的事情,面对屏幕上出现的一幅幅启动画面,我们一点儿也不会感到陌生,但是,计算机在显示这些启动画面时都做了些什么工作呢?相信有的朋友还不是很清楚,本文就来介绍一下从打开电源到出现Windows的蓝天白云时,计算机到底都干了些什么事情.  首先让我们来了解一些基本概念.第一个是大家非常熟悉的BIOS(基本输入输出系统),BIOS是直接与硬件打交道的底层代码,它为操作系统提供了控制硬件设备的基本功能.BIOS包括有系统BIOS(即常说的主板BI