veket官方网站论坛

veket

 找回密码
 要注册
搜索
查看: 8525|回复: 10

veket原理分析贴:利用syslinux制作USB启动菜单(超详细)!

[复制链接]
发表于 2010-7-26 08:32 | 显示全部楼层 |阅读模式
利用syslinux制作Dos、WinPE、Slax Linux集成的口袋操作系统

一、概述

U盘具有价格越便宜、携带方便的特点,在工作中可以把一些自己常用的工具整和到里面,在电脑维护方面比较方便。

二、系统的选择

1、dos系统

目前在dos工具盘中比较多,有MS-DOS 7.1,深山红叶DOS工具盘、MaxDos、矮人dos工具盘、超普DOS工具盘等等,在制作中你自己自己选择自己喜欢的dos工具盘,我选择的MaxDos,里面有许多的工具,比如pq、windows密码破解等。

2、WinPE系统

WinPE系统网上提供的版本很多,基本都是修改至老毛桃的WinPE,主要有深山红叶WINPE工具箱、老九WinPE 老毛桃修改之撒手不管版、金手指快速装机U盘版、通用PE工具箱、完美者U盘WinPE维护系统、晨枫U盘维护等,为了使集成时修改最少,这里选择晨枫U盘维护版。

3、Linux

U盘上的Linux比较多,比如Damn Small Linux、Slax Linux、puppy linux、Ubuntu等选择体积比较小的,功能比较完备的,这里选择Slax。

4、口袋操作系统

主要有ceedo、mojopac和PortableApps Suite,根据自己的爱好去选择,我从使用习惯和功能上在这里选了ceedo。

三、u盘启动引导程序的选择

任何一个操作系统在任何一个硬件平台上运行都需要一个引导的过程,即,初始化软件环境、把内核从存储介质放到内存当中去,并开始运行。引导程序上承 BIOS,下接内核的初始化代码,开一次机只运行一次后就不留痕迹了,相当的重要。

可对u 盘引导的引导程序主要有IO、NTLDR、syslinux、Grub等,她们各有特点,从兼容性考虑,我选择了syslinux。syslinux是专门用来引导可移动介质的轻量级引导程序,支持initrd功能,initrd = init ramdisk,就是在启动时使用的一个内存虚拟磁盘,提高了对广泛的硬件支持性。

四、软件清单与说明

1、syslinux-3.73

Syslinux系统文件,可以到下面地址下载:

http://www.kernel.org/pub/linux/ ... x/syslinux-3.73.zip

相关安装教程:

http://syslinux.zytor.com/wiki/index.php/SYSLINUX

2、HP优盘格式化工具

HP优盘格式化工具是用来对u盘进行格式化的工具,也可以直接进行做io的启动u盘。可以到下面地址下载:

http://www.xdowns.com/soft/6/7/2007/Soft_35477.html

3、GDParam

GDParam这个工具可以方便得获取 PC 虚拟启动当中所需要的磁盘镜像文件的c/h/s 参数。在用syslinux启动dos的磁盘镜像时需要指定c/h/s 参数。可以到下面地址下载:

http://www.05sun.com/downinfo/5089.html

4、WinImage

用来创建和修改磁盘镜像的软件,你可以自己创建或者修改dos的磁盘镜像。可以到下面地址下载:

http://www.crsky.com/soft/281.html

5、UltraISO

UltraISO软碟通是一款光盘映像ISO文件编辑制作工具,它可以图形化地从光盘、硬盘制作和编辑ISO文件。可以对下载得到的winpe或者slax光盘映像进行修改。可以到下面地址下载:

http://www.crsky.com/soft/1134.html

6、WinHex

Winhex是在Windows下运行的十六进制编辑软件,在对winpe进行安装文件修改等方面需要的工具。可以到下面地址下载:

http://www.orsoon.com/Soft/4921.html

7、XCAB

XCAB能调用系统的makecab.exe文件,把文件加或目录压缩为CAB,特别支持为 XCMD DEVI 生成 CAB,在对winpe进行修改打包时用到。可以到下面地址下载:

http://bbs.wuyou.net/attachment.php?aid=14397

8、WimTool

WimTool可以对Wim格式文件进行进行操作处理,在修改winpe的外置程序包时必须用的。可以到下面地址下载:

http://www.newasp.net/soft/app/26726.html

9、slax 6.0.9

ftp://ftp.slax.org/SLAX-6.x/slax-6.0.9.iso

10、.晨枫U盘维护V2.0_512M版

http://www.rayfile.com/zh-cn/fil ... -85f0-0019d11a795f/

11、Loadbin

http://download.gna.org/grubutil ... -w32-2008-01-01.zip

12、ceedo

http://www.myfiles.com.cn/soft/5/5224.htm

五、安装 SYSLINUX

1、把u盘格式化,采用fat32格式。你可以用windows或者HP优盘格式化工具进行。

2、在u盘的根创建boot文件夹,在boot下创建syslinux子文件夹

3、把下载得到的syslinux-3.73.zip解压缩到任意文件夹,在其中的win32下有syslinux.exe文件。拷贝syslinux.exe到你u盘的/boot/syslinux文件夹下

4、打开命令行,切换到u盘根目录,进入/boot/syslinux文件夹,执行syslinux.exe,假设你的u盘的盘符为j:

在命令行下依次运行下列命令:

C:\Documents and Settings\xxxxx> J:

J:\>Cd boot/syslinux

J:\boot\syslinux> syslinux.exe -ma -d /boot/syslinux j:

其中 -d /boot/syslinux是把命令生成的启动系统文件ldlinux.sys放到/boot/syslinux目录,可以从该目录寻找syslinux.cfg配置文件。

六、配置启动菜单

1、拷贝syslinux系统文件

启动菜单的配置都在syslinux.cfg文件中。需要几个syslinux文件:

memdisk 引导IMG镜像的文件

vesamenu.c32 二种窗口模块之一

menu.c32 二种窗口模块之一

chain.c32 指定分区启动 如:chain.c32 hd0 1 (或chain.c32 hd1 1)

reboot.c32 重新启动计算机

在解压缩的syslinux-3.73文件夹中搜索以上就几个文件依次拷贝到u盘的/boot/syslinux文件夹下。

2、SYSLINUX.CFG菜单

default vesamenu.c32 默认使用vesamenu.c32窗口模块(必填项)

timeout 60 菜单停留时间,计时单位1/10秒(必填项)

F1 readme.txt 按F1阅读自述文件

F2 syslinux.cfg 按F2显示启动菜单配置文件

MENU BACKGROUND back.png 运行窗口背景图片(必填项)

MENU TITLE 菜单标题

MENU WIDTH 40 菜单选择条长度(必填项)

MENU MARGIN 0 菜单选择条缩进,0不缩进(若删除则自动使用默认值)

MENU ROWS 30 菜单选择条却换,0不能却换(若删除则自动使用默认值)

MENU HELPMSGROW 26 (若删除则自动使用默认值)

MENU TIMEOUTROW 27 倒计时条下移,0不下移(若删除则自动使用默认值)

MENU TABMSGROW 28 TAB显示条下移,0不下移 (若删除则自动使用默认值)

MENU CMDLINEROW 28 TAB信息条下移,0不下移 (若删除则自动使用默认值)

上面这2项的参数必须一致,以免按TAB键后弹出的信息条易位

MENU HSHIFT 0 菜单选择条右移,0不右移 (若删除则自动使用默认值)

MENU VSHIFT 0 菜单选择条顶端,0不下移(若删除则自动使用默认值)

menu color screen 37;40 #00000000 #00000000 none

menu color border 30;44 #00000000 #00000000 none(必填项)

menu color title 1;36;44 #00000000 #00000000 none

七、dos系统的配置

1、在u盘的根建立dos文件夹,从网上下载maxdos系统,或者你自己用WinImage进行创建修改成img文件,比如MaxDOS.img放在dos文件下。

2、取得img文件的CHS参数

syslinux支持gzip或zip压缩格式的磁盘映像,但memdisk自身不能压缩,memdisk支持标准floppy镜像直接启动,非标准(容量大于2880K的)要附加CHS参数。我们可以用GDParam取得img文件的CHS参数。

3、修改SYSLINUX.CFG

打开SYSLINUX.CFG文件在里面添加形如下的内容:

LABEL MaxDOS

MENU LABEL MaxDOS

kernel /boot/syslinux/memdisk c=142 h=4 s=36 floppy

append initrd=/dos/MaxDOS.img

八、slax系统的配置

1、把下载得到的slax-6.0.9.iso完全提取出来放在slax-6.0.9文件夹。

2、把其中的slax文件夹包含子文件复制到u盘的根目录。

3、slax-6.0.9文件夹中的下面vmlinuz、initrd.gz两文件拷贝到u盘的boot文件下。

4、打开slax-6.0.9文件夹boot中的slax.cfg文件,复制其中的:

LABEL xconf

MENU LABEL Slax Graphics mode (KDE)

kernel /boot/vmlinuz

append initrd=/boot/initrdch.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/slax/ locale=CHS.UTF-8

5、把复制的上面内容贴人u盘/boot/syslinux下的SYSLINUX.CFG

九、winpe的配置

1、解压缩下载得到的晨枫U盘维护V2.0_512M版.rar到任意一文件夹。

2、在u盘根新建winpe文件夹。

3、修改winpe OEM信息

解压缩得到的MyFeng/Boot下的WinPE.is_改为WinPE.cab,用winrar打开解压出WinPE.iso,用UltraISO打开,提取出\WXPE\SYSTEM32下的oeminfo.ini和OEMLOGO.bmp进行修改,导入替换掉就可以了,保持iso文件,把新得到的iso文件用xcab软件重新进行打包,得到WinPE.cab,再把WinPE.cab改为WinPE.is_ 。

4、修改winpe外置程序包

解压缩解压缩得到的MyFeng/Boot下的OP.WIM用WimTool解开,然后你可以替换桌面背景图片,加入或者删除一些程序,然后再用WimTool打包成OP.WIM

5、把处理完的OP.WIM、WinPE.is_文件拷贝到u盘的winpe文件夹。

6、打开MyFeng/Boot下的winpe.ini修改其中的关于OP.WIM位置的代码,你也可以修改其他的链接。修改如下。

MOUN %CurDrv%\winpe\OP.WIM,Y:\外置程序,1

保存,然后拷贝到u盘的boot文件夹下。

7、拷贝MyFeng/Boot下的ldrxpe、fon.bin、ntd.com到u盘的boot文件夹下。

8、用记事本修改MyFeng/Boot下的xpsi文件中的WinPE.IS_路径为:

OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=winpe\WinPE.IS_"

保持,然后拷贝到u盘的boot文件夹下。

9、解压缩下载得到的loadbin-0.1-bin-w32-2008-03-01.zip,把其中的ldntldr.bin改名为ldntldr,然后拷贝到u盘的boot文件夹下。

10、修改SYSLINUX.CFG文件,在其中加入下面内容:

LABEL WinPE

MENU LABEL Lite Win PE

kernel /boot/ldntldr

append initrd=/boot/ldrxpe

十、安装Ceedo

把下载得到的Ceedo安装到你的u盘,然后进行配置。

十一、U盘的目录结构和启动配置文件

1、根目录

|---boot----|--syslinux--| sysinux.cfg

|---dos

|---slax

|---winpe

|---Ceedo

|---My Documents

2、参考SYSLINUX.CFG文件内容:

prompt 1

timeout 90

default vesamenu.c32

MENU BACKGROUND back.png

MENU WIDTH 36

MENU MARGIN 0

MENU ROWS 8

MENU HELPMSGROW 14

MENU TIMEOUTROW 22

MENU TABMSGROW 24

MENU CMDLINEROW 24

MENU HSHIFT 40

MENU VSHIFT 2

menu color screen 37;40 #00000000 #00000000 none

menu color border 30;44 #00000000 #00000000 none

menu color title 1;36;44 #00000000 #00000000 none

menu color unsel 37;44 #ff60CA00 #00000000 none

menu color hotkey 1;37;44 #ff60CA00 #00000000 none

menu color sel 7;37;40 #ffffffff #ff60CA00 none

menu color hotsel 1;7;37;40 #ff808080 #ff60CA00 none

menu color scrollbar 30;44 #00000000 #00000000 none

menu color tabmsg 31;40 #aaaaaaaa #00000000 none

menu color cmdmark 1;36;40 #ffff0000 #00000000 none

menu color cmdline 37;40 #aaaaaaaa #00000000 none

menu color pwdborder 30;47 #ffff0000 #00000000 std

menu color pwdheader 31;47 #ffff0000 #00000000 std

menu color pwdentry 30;47 #ffff0000 #00000000 std

menu color timeout_msg 37;40 #aaaaaaaa #00000000 none

menu color timeout 1;37;40 #ffaaaaff #00000000 none

menu color help 37;40 #aaaaaa00 #00000000 none

menu color msg07 37;40 #90ffffff #00000000 std

MENU TITLE Jinjun's Tools Disk

LABEL MaxDOS

MENU LABEL MaxDOS

kernel /boot/syslinux/memdisk c=142 h=4 s=36 floppy

append initrd=/dos/MaxDOS.img

TEXT HELP

More about currently selected:

Run MaxDOS.

ENDTEXT

LABEL WinPE

MENU LABEL Lite Win PE

kernel /boot/ldntldr

append initrd=/boot/ldrxpe

TEXT HELP

More about currently selected:

Run Lite Win PE.

ENDTEXT

LABEL xconf

MENU LABEL Slax Graphics mode (KDE)

kernel /boot/vmlinuz

append initrd=/boot/initrdch.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/slax/ locale=CHS.UTF-8

TEXT HELP

More about currently selected:

Run Slax the best way we can.

ENDTEXT

LABEL reboot

MENU LABEL reboot

kernel /boot/syslinux/reboot.c32

TEXT HELP

More about currently selected:

reboot.

ENDTEXT

十二、使用

在使用中你可以把启动顺序设置u-hdd方式优先。欢迎大家交流
 楼主| 发表于 2010-7-26 08:33 | 显示全部楼层
其实veket在我的理解中也可以直接用ISOlinux来引导,但是写入引导区的是syslinux引导的。

其实俺也不太明白,俺也是菜鸟一个,俺今天最大的愿望就是今天日落之前能变成会员!!!!

那位老大路过直接给个精吧,俺的愿望就达成啦。( ⊙ o ⊙ )。。。
toy 该用户已被删除
发表于 2010-7-27 08:27 | 显示全部楼层
来学习,楼主高手啊
 楼主| 发表于 2010-7-27 10:06 | 显示全部楼层

回复 3# 的帖子

俺也是正在学习,这个毕竟不是自己写的,技术含量不大,但是有源代码的,veket的syslinux源码版本大概是3.51
 楼主| 发表于 2010-7-27 10:07 | 显示全部楼层

回复 4# 的帖子

如果学学嵌入式和汇编,可以尝试自己写引导区程序的。。。
您需要登录后才可以回帖 登录 | 要注册

本版积分规则

QQ|手机版|Archiver|veket官方网站论坛,veketx官方网站论坛,微器人 ( 粤ICP备 11052856 )

GMT+8, 2025-6-2 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表