Chinaunix首页 | 论坛 | 博客
  • 博客访问: 258193
  • 博文数量: 42
  • 博客积分: 2245
  • 博客等级: 大尉
  • 技术积分: 466
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-20 13:02
文章分类

全部博文(42)

文章存档

2012年(4)

2011年(6)

2010年(2)

2009年(6)

2008年(24)

我的朋友

分类:

2008-10-26 14:04:11


我的启动盘 - 中文菜单版

先Show一下界面:
1. CDShell 引导

2. Syslinux 引导同样的光盘

3. Syslinux 引导Slax

原理:
大家还记得在DOS字符模式下显示汉字的方法吧!我采用同样的方法,只不过将其用在引导盘上!
--------------------------------------------------------------------------------
有些朋友可能不熟悉DOS,我详细讲讲原理:
在dos终端模式下是不可以显示中文汉字的,只能显示英文。
汉字与英文的区别是:
1. 汉字代码用2个字节表示,英文用1个字节表示
2. 16点阵汉字要用32个字节存储字模,16点阵英文用16个字节存储字模。
在DOS终端模式下用的是16点阵英文,所以我们有了一种可能性:
可不可以改写终端模式下的16点阵英文字库,使其显示的不是原有的英文字,而是汉字
如:
我们输入AB,正常显示的是AB,但如果改变AB的字模,用汉字的字模代替,这样输入AB字符,并不显示AB,而是显示一个汉字。
将一个汉字从中间劈为两半,左面部分顶替A的字模,右面部分顶替B的字模。

在实际中,当然不能改写AB的字模,前128个字符的字模都不能修改,我们显示英文字符还要用的。只能动用后128字符的字模,这样就带来局限性:
1. 最多只能显示64个不同的汉字(128/2),对于启动菜单,64个不同的汉字足够,如果你超过,那我没办法
2. 不能用DOS后128字符,因为这部分我们用汉字占领了,DOS下的制表符不能用,好多引导软件都用到了制表符。
3. 在VGA模式下,汉字中间会有一个空白,如我的CDShell截图,但在vesavga模式下没有,见syslinux截图

为方便制作,下面的程序就是完成这个转换过程的。
用法:
hzpsf -e 英文字体 -z 中文字体 -c 启动字体 -i 中文版的配置文件 -o 经过处理的配置文件
引导时使用“经过处理的配置文件”, 并在配置文件中引用生成的“启动字体”文件。

不知道讲明白没有,这需要一些技术根底。

我的例子,大家参考
文件:boot_sample.zip
大小:277KB
下载:下载

解压缩boot_sample.zip到A:
syslinux.exe a:
然后用A:启动就可以看到菜单了
--------------------------------------------------------------------------------
我独自编写一个转换程序:

文件:hzpsf.1.0.2.100.zip
大小:2133KB
下载:下载



功能:
1. 提取英文字模和中文字模,做成自己的字体文件。
2. 转换汉字编码以适合对应的字体文件。

具体光盘内容不多说了,从网上都可找到。








阅读(1934) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-11-15 08:57:44

请问为什么我做出来的syslinux菜单,右边总是乱码。 图我已经贴在ccf的你发的原帖。。。

yugliu2008-11-07 13:20:32

就是CDShell做的,中文是用我的软件修改的

chinaunix网友2008-11-06 18:25:06

第一个CDShell是什么做出来的?