红联Linux门户
Linux帮助

基于syslinux(isolinux)光盘引导

发布时间:2014-09-14 10:35:38来源:linux网站作者:cattlex

注1: isolinux:http://www.syslinux.org/wiki/index.php/ISOLINUX
注2:Syslinux 4.05 released.发布,大家可以去前往下载最新的版本:http://www.syslinux.org/wiki/index.php/The_Syslinux_Project
注3:从官网上的Changelog可以看出,remove the .img file support。这点很重要,需要详细了解的请前往:http://www.syslinux.org/wiki/index.php/Syslinux_4_Changelog


本文的目的是基于对linux下制作启动光盘的研究.我使用的syslinux核心文件来自官方网站的4.03版。


步骤一:

解压下载的syslinux文件,提取如下的文件:

isolinux.bin       注:光盘镜像引导文件  
isolinux.cfg       注:启动菜单的配置文件;自编辑  
memdisk          注:引导IMG镜像的文件  
vesamenu.c32(或menu.c32)  注:官方提供的二种窗口模块  
chain.c32         注:指定分区启动  如:chain.c32 hd0,1 (或chain.c32 hd0,2)  
reboot.c32       注:重新启动计算机的文件  
m16-640x640-syslinux.jpg(或syslinux_splash.jpg)  注:自己可以定义新的图片作为背景,图图片格式 640*480  jpg/png)


步骤二:

将提取的文件按照如下的文件目录放置:("//" 表示注释内容,使用的时候去掉)

根目录(iso-dir)  
|      
|---isolinux---| isolinux.bin  
|                   | isolinux.cfg  
|                   | memdisk  
|                   | vesamenu.c32(或menu.c32)  
|                   | chain.c32  
|                   | reboot.c32  
|                   | m16-640x640-syslinux.jpg(或syslinux_splash.jpg)  //这个文件的名字是可以自己定义的,图片也是可以自己更换的  
|  
|---boot-----存放IMG镜像以及启动文件 //主要就是放置一些winpe 或者 grub 再或 dos等的一些文件。


步骤三:

isolinux.cfg 配置文件的编辑 (如下式样本,自己可修改其中的内容“//”后为注释内容,使用时去掉)
F1 readme.txt    //注:F1~~F12 自定义热键,个人建议使用linux格式编译这些文档,否则会显示乱码等,对中文的支持不好,所以使用英文编写  
F2 isolinux.cfg   //同上  
default vesamenu.c32  //注:默认启动窗口  
MENU BACKGROUND m16.jpg  //注:窗口的背景图案  
MENU TITLE xxxxxxxxxxxx  // 注:窗口菜单的名称
LABEL boothd   //注:单项菜单名,区分不同的启动项使用的,在光盘启动的时候不显示,这个是不能和后面的重复的
MENU LABEL Boot System of HD0,1  //注:在窗口中显示单项菜单名,即光盘启动时显示的文件名
kernel /isolinux/chain.c32 hd0,1 // 注:指第一硬盘第一分区启动  
LABEL xxxxxxxxxxxxx  
MENU LABEL xxxxxxxxxxxxxxxxx  
kernel /isolinux/memdisk  //注:IMG镜像引导器 少于2.88MB的镜像,不需指定C/H/S,这个文件很重要,不要做更改  
append initrd=/boot/xly.gz  //注:IMG镜像可采用wingzip 压缩  
LABEL ghost  
MENU LABEL Symantec GHOST 11.0.2 Corporate Edition  
kernel /isolinux/memdisk c=214 h=2 s=18 floppy   //注:大于2.88MB 必需指定C/H/S  
append initrd=/boot/onekey.gz   //如果这*.gz或者是img、iam等的文件大于了2.88MB,需要指定C/H/S。推荐软件:GDParam查看  
LABEL peldr
MENU LABEL Boot WinPE of Windows XP SP2  
kernel /boot/peldr.bin  // 注:此文件需经处理,见引导文件处理 ,此处处理所需要的软件loadbin (windows平台下)
LABEL grldr  
MENU LABEL Goto Grub4dos Boot Menu  
kernel /boot/mygrldr   //注:此文件需经处理,见引导文件处理,本人并没有进行尝试,理由:本人采用grub1/grub2代替这里  
LABEL g2ldr  
MENU LABEL Goto Grub2 Boot Menu  
kernel /boot/g2ldr  // 注:同上面的注释,官网上貌似没有现成的,因为需要自己编译,可以使用super grub这个公司的文件
LABEL reboot  
MENU LABEL Reboot Your Computer  
kernel /isolinux/reboot.c32 // 注:启动计算机

主要写在此条目的最后:有很多的实用的设置(可能我并不需要,或者这项功能我并不知道)我没有列举出来,比如设置字体颜色等等,需要的朋友再去查看其他的资料吧。

附 isolinux.cfg 简单示例

default iso-dir

prompt 0 // prompt=1这是说,向用户提示输入选择,直接回车就是缺省选项了。当然,如果使其等于0则,不向用户提示输入选择。

LABEL Fedora
kernel /isolinux/vmlinuz
append initrd=/isolinux/initrd.img


步骤四:

在准备制作ISO的目录里添加一个子目录,比如boot/isolinux/,然后放入 isolinux.cfg和一个对所有光盘都一样的isolinux提供的引导介质 isolinux.bin,当然还要放入相应的kernel,initrd等我们需要在引导时调用到的文件,然后制作iso的时候要使用-b参数,来指明要使用isolinux.bin文件启动:

mkisofs -o output.iso \

-b isolinux/isolinux.bin –c isolinux/boot.cat \

-no-emul-boot -boot-load-size 4 -boot-info-table \

iso-dir/

最后的参数就是指定的光盘的目录了,-c参数的那个文件是自动生成的,不用太担心,其余参数都是固定的。


至此,整个系统的启动和制作过程就已经完成了。可以说有了这些知识,就可以设计一个简单的启动光盘,至于光盘的功能,需要用户根据自己的需求来修改和调整!


在linux使用命令mkisofs命令:

mkisofs -o myiso.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table iso-dir

解释:    
mkisofs是产生ISO光盘镜像的命令;  
-o 输出文件
-b 引导程序
-c 引导目录文件
-l 允许32 字符长度的文件名(取代默认iso9660标准的8.3文件名)  
-J Joliet文件系统(Windows兼容)  
-r RockRide Unix扩展支持
   

注:这种方法就不做解释了,不会的朋友就自己man一些。(但是貌似我的系统里没有mkisofs的man文档呢)