syslinux应用简介

syslinux是一个轻量级的启动装载器,只用Windows的人可能不明白是什么东西,如果玩过Linux,一定知道lilo和grub,是的,所谓轻量级我想就是跟grub们相比而言的,尤其是grub2。

syslinux有很多变种(都是官方的)适用于各种媒质,如syslinux用于从微软的文件系统fat 16/32引导,isolinux用于从光盘引导,pxelinux用于从网络引导,extlinux用于从ext2/3文件系统引导。

从这也可以看出,syslinux对于各种设备的兼容做的很细致,据grub4dos的人说,用于兼容性方面的代码甚至超过了程序主要功能的实现代码。

Ubuntu的Live CD就是使用isolinux来引导的,如果你不想为了一个Alpha版本而浪费一张光盘,可以将iso镜像文件放在U盘或移动硬盘上,轻松的换用syslinux来引导。
将iso镜像中的casper和isolinux文件夹拷贝到移动硬盘的fat32分区根目录,这对于引导系统,只想体验一下LiveCD来说已经足够了,如果你还要进行系统安装等,可能还要其它文件。 将isolinux文件夹改名为syslinux,现在将syslinux文件夹中的isolinux.cfg文件改名为syslinux.cfg。 安装syslinux到移动硬盘。如果是在Windows下,使用下面的命令: syslinux.exe /mfa G:a表示激活分区,f是force的意思,m是写mbr,G:是移动硬盘分区的盘符。运行后会在根目录生成一个ldlinux.sys的隐藏文件。

Ubuntu的Live CD使用的isolinux打了gfxboot补丁,如果你使用官方版本的syslinux,启动后就没有菜单以及语言选择等内容。所以建议大家使用同样打了补丁的Ubuntu版本的syslinux:
sudo aptitude install syslinux mtools
sudo syslinux -f /dev/sdb1
需要mtools是因为要修改fat32文件系统上的文件属性。/dev/sdb1是移动硬盘fat32设备的文件名,不需要mount。
好了,现在插上移动硬盘,将电脑设置为从USB设备启动,OK?如果启动失败,很有可能是分区表的原因,想想当初,我将移动硬盘上的第一个分区设为主分区,fat32格式,也许是个英明的决定。

附记:除了gfxboot,syslinux也有自己的菜单系统这里有一个样例配置文件,在它的邮件列表上,说起gfxboot,有人似乎很不屑suse写的代码。


以前我们很多启动盘采用的是loadlin引导linux内核的模式进行的(比如早期的slackware)。也就是采用win98的dos启动,然后通过loadlin工具引导我们的自己的linux内核,解开我们的安装文件系统。

但是,随着我们接触的硬件机型多样化,目前部分新设备不能采用dos(或win98)引导。

这个时候很多人会采用syslinux来制作启动盘,但是syslinux一般都需要能够将内核和文件系统放到一张软盘上的,如果我们的文件系统很大,又不能裁减,那可就惨了。或者说想在光盘启动的时候选择多个内核/文件系统,syslinux就比较麻烦了。

俺最后发现isolinux这个东西还是不错的,可以支持大文件系统。

关于isolinux的东西网络上介绍的不是很多,下边是俺做过的一些尝试:

步骤一:

制作一个linux系统内核,这个不是我想讨论的话题,制作linux内核的文章网络上随处可以找到,比如我们准备好了一个bzImage

准备一个自己需要使用的文件系统,制作文件系统的过程也不是本文想要讨论的,假设我们准备好了一个文件系统COLOR.gz

找到我们需要做引导的工具isolinux,具体说就是isolinux.bin isolinux.cfg,俺是从RH10的iso映像中抠出来的。:)

准备工作结束。

步骤二:

为自己的iso映像建立一个目录,作为iso的根目录(也就是光盘的根了),比如myiso/

在建立好的目录下,建立一个isolinux目录(这个名称好像是固定的,而其必须有,俺有一次没有建立这个目录,结果引导的系统不能正常检测中断,不知道为什么,郁闷了一晚上)

随后把isolinux.cfg和isolinux.bin放到isolinux目录下。

在iso的根目录下,放置光盘所包含的内容,当然要包含bzImage和COLOR.gz了。

剩下的就是你想要放什么都可以了,呵呵

这时候我们的目录结构就建立完成了。如下:

myiso
|
|---isolinux
| |
| |---isolinux.bin
| |__isolinux.cfg
|---bzImage
|---COLOR.gz
|---readme

步骤三:

配置isolinux.cfg

isolinux.cfg的格式和lilo.conf grub.conf相似:

prompt 1
timeout 100
default myiso

label mysio
kernel /bzImage
append initrd=/COLOR.gz load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=60000 rw root=/dev/ram

不想等待的话可以去掉prompt和timeout,要不然启动的时候还要点一下,麻烦。

步骤四:

一切都做好了,下边我们就可以生成自己的iso映像了。

在linux使用命令mkisofs命令:

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

具体的参数使用大家可以man一下。

以上步骤在linux2.4下验证成功。

建议:

如果我们的COLOR.gz能够做得很小,和bzImage一起可以放到软盘上,我们就可以使用比较常见的syslinux来做引导光盘了.syslinux的使用网上很多,大家有用的时候可以看看。