1.   首先光盘镜像也就是iso文件采用的是“ISO 9660 ”文件系统 。

cd上的文件都存在这个简单的iso文件系统里,linux可以用mount  -o loop 直接把*.iso文件mount到一个目录查看。

2.  CD ROM 另支持一个叫做“El Torito Bootable CD Specification”     的标准允许用户在cd上指定启动的引导程序。

电脑开机启动时候,BIOS就会去检查cd/dvd上是否有这个启动标志,然后加载引导程序。

在Linux系统,使用mkisofs命令一个iso文件时,可以指定引导程序,例如

mkisofs -o <isoimage> \               -b isolinux/isolinux.bin -c isolinux/boot.cat \                -no-emul-boot -boot-load-size 4 -boot-info-table \               <root-of-iso-tree>        更多的iso文件相关选项可以参考mkisofs的help

3. Linux的光盘安装的话,使用的一般是ISOLINUX引导程序,也就是用这个ISOLINUX是被写到上面那个EI Torito扩展里面去的。 系统启动时就自动加载ISOLINUX引导程序了。

ISOLINUX是  SYSLINUX项目的一系列引导程序中的一个,简单的说就是类似GRUB的一个东西,就是启动然后引导内核。ISOLINUX的特点如其名,区别于 GRUB LILO等的地方,就是他可以认出iso9660文件系统,所以可以读出cd上的内核镜像和inird 镜像,然后引导。

ISOLINUX启动后,默认会去读出cd光盘根目录的一个isolinux.cfg 文件,isolinux.cfg 类似grub的menu.lst,指定的内核镜像位置等。这个isolinux.cfg的语法可以参考syslinux的文档。 这里有一个

比如  指定显示终端可以使用这个选项

---------------------------------------------

SERIAL port [[baudrate] flowcontrol]

Enables a serial port to act as the console.  "port" is a         number (0 = /dev/ttyS0 = COM1, etc.) or an I/O port address         (e.g. 0x3F8); if "baudrate" is omitted, the baud rate defaults         to 9600 bps.  The serial parameters are hardcoded to be 8         bits, no parity, 1 stop bit.         "flowcontrol" is a combination of the following bits:         0x001 - Assert DTR         0x002 - Assert RTS         0x008 - Enable interrupts         0x010 - Wait for CTS assertion         0x020 - Wait for DSR assertion         0x040 - Wait for RI assertion         0x080 - Wait for DCD assertion         0x100 - Ignore input unless CTS asserted         0x200 - Ignore input unless DSR asserted         0x400 - Ignore input unless RI asserted         0x800 - Ignore input unless DCD asserted         All other bits are reserved.         Typical values are:             0 - No flow control (default)         0x303 - Null modem cable detect         0x013 - RTS/CTS flow control         0x813 - RTS/CTS flow control, modem input         0x023 - DTR/DSR flow control         0x083 - DTR/DCD flow control         For the SERIAL directive to be guaranteed to work properly, it         should be the first directive in the configuration file.         NOTE: "port" values from 0 to 3 means the first four serial         ports detected by the BIOS.  They may or may not correspond to         the legacy port values 0x3F8, 0x2F8, 0x3E8, 0x2E8.         Enabling interrupts (setting the 0x008 bit) may give better         responsiveness without setting the NOHALT option, but could         potentially cause problems with buggy BIOSes. NOHALT flag_val         If flag_val is 1, don't halt the processor while idle.         Halting the processor while idle significantly reduces the         power consumption, but can cause poor responsiveness to the         serial console, especially when using scripts to drive the         serial console, as opposed to human interaction. CONSOLE flag_val         If flag_val is 0, disable output to the normal video console.         If flag_val is 1, enable output to the video console (this is         the default.)         Some BIOSes try to forward this to the serial console and         sometimes make a total mess thereof, so this option lets you         disable the video console on these systems.

-----------------------------------------------------------------

SYSLINUX不知道是被封了还是怎么样,主页打不开,这里有个源码目录

可以在里面找到些简单的文档和看看代码什么的,SYSLINUX包括了用于网络引导PXELINUX等程序,可以自己去看一下。

4.  isolinux引导加载Linux内核遵循一个叫做 “Multiboot Specification ” 的标准

这个Multiboot 定义了isoLinux如何去按照指定格式被内核文件加载到内存里面来,还有可以指定模块怎么加载等。

isolinux先去加载自己的mboot.c32模块 以支持multiboot模式,然后mboot32.c32在去根据配置加载内核和模块。

比如一个 isolinux.cfg 是这样的

LABEL Xen   KERNEL mboot.c32   APPEND xen.gz dom0_mem=15000 nosmp noacpi --- linux.gz console=tty0 root=/dev/hda1 --- initrd.img

mboot的代码

在get_modules 函数中就会解析各个模块和参数,然后加载。APPEND 后面的字符串传给mboot.c32  后, mboot.c32 以 “---” 作为分界线, xen.gz dom0_mem=15000 nosmp noacpi   就是把 “dom0_mem=15000 nosmp noacpi   ” 传给 xen.gz模块作为参数。 “console=tty0 root=/dev/hda1 ”传给 linux.gz 模块作为参数。 linux.gz这些就是位于 cd 镜像里面的位置了,一般跟目录下吧。

linux.gz这些加载运行后,自然可以根据multiboo格式,读到 console=tty0 这些参数了。

至此系统引导成功,切换到linux环境,比如指定inird.img 文件系统的某个python程序,然后开始显示界面,提示用户安装。

isolinux.cfg 文件是干什么的的更多相关文章

  1. 如何解决:新建Android程序的时候发生了找不到 \android-sdk-windows\tools\lib\proguard.cfg文件 的错误

    问题概述: 在新建Android程序的时候出现以下错误: 找不到 \android-sdk-windows\tools\lib\proguard.cfg文件 原因: SDK不完整. 解决方法: 方法一 ...

  2. Kickstart 和 Cobbler ks.cfg文件详解

    ks.cfg文件组成大致分为3段 命令段 键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项 软件包段 %packages @groupn ...

  3. 006.ks.cfg文件相关

    一 图形化生成ks.cfg文件 [root@server ~]# yum -y install system-config-kickstart #安装图形化kickstart工具 [root@serv ...

  4. STL简洁 && c++读取cfg文件

    在c++工程中,往往需要修改一些变量来实现不同的功能效果,这是cfg文件的使用可以使得工程更加高效与便利,这篇文章介绍的就是c++读取cfg文件的相关内容,以便及时总结和日后回顾. STL即标准模板库 ...

  5. dsp6657的helloworld例程测试-第二篇-CFG文件

    1. 上一篇疑问,int StackTest()这个函数是怎么运行的,后来在.cfg文件找到了答案,.cfg包含丰富的信息,对于用惯C语言的,确实不太习惯 var Memory = xdc.useMo ...

  6. 生成ks.cfg文件

    RHEL 7下生成ks.cfg文件 环境 + RHEL 7 + 字符界面, 没有安装图形界面 软件包安装 + `yum install system-config-kickstart -y` + `y ...

  7. YOLOV3中Darknet中cfg文件说明和理解

    今天将要说明的是Darknet中的cfg文件,废话少说,直接干!(以cfg/yolov3.cfg为例,其它类似) [net]                        ★ [xxx]开始的行表示网 ...

  8. CentOS7 修复grub.cfg文件

    为了达到实验目的,首先删除grub.cfg文件 重启后发现系统进不去了,这正是我们想要的 进入系统救援模式,通过输入以下命令修复grub.cfg文件 重启后发现能正常引导进入系统了

  9. ks.cfg文件相关

    原文转自:https://www.cnblogs.com/itzgr/p/10029631.html作者:木二 目录 一 图形化生成ks.cfg文件 二 ks.cfg文件相关项解析 一 图形化生成ks ...

随机推荐

  1. PHP数组排序函数array_multisort()函数详解(二)

    array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列 例如array_multisort($a,$b),$a,$b是两个数组,如果排 ...

  2. Nginx初入

    商城项目做了一个多月了,想到必须用到负载均衡,首先分享第一个demo,五月份上线后,会继续分享一系列相关知识. 在nginx根目录下,用了一个园友的批处理文件nginx.bat,用于启动和关闭ngin ...

  3. UNIX环境编程学习笔记(18)——进程管理之进程控制三部曲

    lienhua342014-10-05 1 进程控制三部曲概述 UNIX 系统提供了 fork.exec.exit 和 wait 等基本的进程控制原语.通过这些进程控制原语,我们即可完成对进程创建.执 ...

  4. LD_PRELOAD & LD_LIBRARY_PATH 动态库路径

    参考:http://www.cnblogs.com/waterlin/archive/2011/07/14/2106056.html 143上的glibc较低,同学又不能进行升级(造成全局影响),所以 ...

  5. 【Ubuntu】全局代理

    配置代理,Ubuntu下是修改/etc/environment,在后面加入: http_proxy="http://****.com:8080/" https_proxy=&quo ...

  6. Gridview、DataList、Repeater获取行索引号

    Gridview.DataList.Repeater如何获取行索引号?很多情况下都会用得到,下面贴出代码,注意行索引号是从0开始,不是从1开始,如果要从1开始,请在代码里面+1就行了. Gridvie ...

  7. 怎么用ABBYY在线浏览PDF文件

    ABBYY FineReader 让您可以从在线存储服务中打开图像或 PDF 文件,并将已识别文本保存至在线存储服务中,如 Dropbox.SkyDrive 或 Google Drive 等.通过在 ...

  8. [转]gluProject 和 gluUnproject 的详解

    gluProject 和 gluUnproject 的详解 简介: 三维空间中,经常需要将 3D 空间中的点转换到 2D(屏幕坐标),或者将 2D 点转换到 3D 空间中.当你使用 OpenGL 的时 ...

  9. linux alias使用

    安装一些软件 python redis mysql jdk,都需要添加环境变量,一个路径添加到了环境变量,就可以直接在linux控制台输入  xx命令. 否则不添加环境变量,使用xx就会提示找不到命令 ...

  10. LTS原理分析(version:1.6.9)

    LTS做到分布式唯一执行的原理:LTS采用类似Hadoop作业提交的方式,由JobClient submit作业任务给JobTracker,然后JobTracker会预生成一批作业任务的执行时间记录( ...