FreeBSD 5.x 中 gbfs 的修正,及安装方法

发表于:2007-06-09来源:作者:点击数: 标签:
附件是针对FreeBSD5.x系列的gbfs的修正文件。 安装方法: (以下操作必须以root的身份进行) 1.downloadthegbfs-1.0-for-freebsd5.xR.tar.gzto/tmp 2.cd/usr/ports/chinese/gbfs 3.makeextract 4.cdwork 5.tarzxvf/tmp/gbfs-1.0-for-freebsd5.xR.tar.gz [color

附件是针对FreeBSD 5.x 系列的gbfs 的修正文件。

安装方法:
(以下操作必须以 root 的身份进行)
1. download the gbfs-1.0-for-freebsd5.xR.tar.gz to  /tmp
2. cd /usr/ports/chinese/gbfs
3. make extract
4. cd work
5. tar zxvf  /tmp/gbfs-1.0-for-freebsd5.xR.tar.gz
[color=red:6f254b0ec9]sorry,这里有最重要的一步,要 cd .. 
要不会说make: don't know how to make patch. Stop,因为我们还要用原先port的Makefile[/color:6f254b0ec9]

6. make patch
7. make
8. make install clean
(其中6.7步可以省略,直接运行8就可以,其实只是命令形式上的省略,实际make install时,系统会自动帮你patch 和 make)

这个ports 好像是statue 维护的,应该让他另外提交一个port,区分两个不同分支gbfs patch。     

[color=red:6f254b0ec9]因为freebsd启动的时候,mount /etc/fstab 中的分区是在加载gbfs的cd9660和msdosfs模块之前的,所以mount 分区的时候就会调用原source code的msdosfs module。所以不能在/etc/fstab中加上要mount的分区,要在启动后再mount就行了。
其实也可以直接在/etc/fstab 中mount 分区,只要把 /usr/local/modules 目录下的两个文件覆盖掉kernel module目录中的相同文件就可以,当然还要删掉rc中的gbfs.sh,要不会出现重复加载的错误。 
5.x 的modules 目录在 /boot/kernel/ 下,这个目录下包含了你系统的当前核心和所有模块,这和4.x系列不同。
[/color:6f254b0ec9]


    [color=red:6f254b0ec9][size=18:6f254b0ec9]请到[url=http://www.kingisme.com/quakelee/]FreeBSD汉化之家来下载[/url][/size:6f254b0ec9][/color:6f254b0ec9]

 quakelee 回复于:2003-06-24 20:28:54
??
兄台能不能给个下载连接?
这个确定能用不?

 Matteo_NET 回复于:2003-06-24 20:31:01
应该没有问题,我在5.1上试过,是在原gbfs上修改的,原gbfs只是在两个fs中添加了cs的编码。

如果有问题的话,请大家及时反馈。

 红袖添香 回复于:2003-06-24 20:36:39
...

那个补丁是针对什么的,为什么可以省略?  :em14:

 Matteo_NET 回复于:2003-06-24 20:40:07
gbfs 的 port就是两个diff, 在source tree中的msdos 和 cd9660 两个部分添加了中文编码,是编译后的module可以识别中文。

 quakelee 回复于:2003-06-24 20:41:31
[quote:1f5ae9f233="Matteo_NET"]附件是针对FreeBSD 5.x 系列的gbfs 的修正文件。

安装方法:
(以下操作必须以 root 的身份进行)
1. download the gbfs-1.0-for-freebsd5.xR.tar.gz to  /tmp
2. cd /usr/ports/chinese/gbfs
3. make extract
..........[/quote:1f5ae9f233] 
能不能用邮件发给我,我放在我的空间里
现在看不到,所以不知道是patch还是新的源文件

 Matteo_NET 回复于:2003-06-24 20:45:08
发到你hotmail的信箱里了。

 quakelee 回复于:2003-06-24 20:47:41
[quote:6ee223b93a="Matteo_NET"]发到你hotmail的信箱里了。[/quote:6ee223b93a]     
啊~
不要呀那个破邮箱老收不到,发到这里吧
刚才忘了写了不好意思
quake@263.net

 Matteo_NET 回复于:2003-06-24 20:50:46
发了,发了

 quakelee 回复于:2003-06-24 20:54:05
[quote:78e8db7a48="Matteo_NET"]发了,发了[/quote:78e8db7a48]      :P  :P  :P 
谢了哦~

 Matteo_NET 回复于:2003-06-24 20:55:19
赶快找些同志测试测试,反馈一下。

:):):):):)

 quakelee 回复于:2003-06-24 20:56:48
我现在测试不了,只能贴上让大家测试了,sigh,穷呀
还有个问题,我看了文件,是两个patch,不用patch打一下行不?
省略6、7是啥意思?

 quakelee 回复于:2003-06-24 21:02:32
好了搞定了,说说上面两个问题咋回事?

 Matteo_NET 回复于:2003-06-24 21:06:38
现在说说gbfs整个port的安装过程。 (简单的 make install的过程实际如下)
首先是下载port需要的文件(这是废话)
然后make extract, 在这一步过程中会解压下载的文件到 work,然后拷贝/usr/src 下的cd9660 和msdosfs的source code 到work 里。
然后会运行make patch,这一步在普通的port中是在原文件打上for bsd的patch,不过在这个port里是对cd9660和msdosfs运用gbfs的两个diff。
然后就是make, make 就是建立cd9660和msdosfs两个modules,然后是make install,就是安装modules和执行脚本gbfs.sh 。
其实freebsd 的ports安装只用make install,但是其实就是以上步骤的连续运行。

 红袖添香 回复于:2003-06-24 21:06:59
[quote:e583458ac0="quakelee"]我现在测试不了,只能贴上让大家测试了,sigh,穷呀
还有个问题,我看了文件,是两个patch,不用patch打一下行不?
省略6、7是啥意思?[/quote:e583458ac0]    

7 是可以省略,Makefile 中 install 前肯定是要判断那些文件在不在,不在的话,就会 build 前面所需文件,就是 make 了。

不过  6 ...  :em14:

 Matteo_NET 回复于:2003-06-24 21:09:55
我看了你网站,不需要下载4.x的gbfs,其实4.x的gbfs也是两个diff,我只是稍微修改了一下这两个diff,使其符合5.x的source code

 lzn88 回复于:2003-06-24 21:10:24
# make extract
===>  Extracting for zh-gbfs-1.0
>> Checksum OK for gbfs-1.0.tar.gz.
# cd work/
# tar zvxf /tmp/gbfs-1.0-for-freebsd5.xR.tar.gz
cd9660.diff
msdosfs.diff
# ls
.extract_done.zh-gbfs-1.0       gbfs.sh
cd9660                          msdos
cd9660.diff                     msdosfs.diff
# make patch
make: don't know how to make patch. Stop


???

 quakelee 回复于:2003-06-24 21:12:38
是呀是呀,我也是奇怪的我记得ports只能自动打上files里面以patch-开头的补丁,没听说能把目录中.diff文件也当成补丁自动打,除非改Makefile~

 quakelee 回复于:2003-06-24 21:14:40
[quote:3c0a6a3440="Matteo_NET"]我看了你网站,不需要下载4.x的gbfs,其实4.x的gbfs也是两个diff,我只是稍微修改了一下这两个diff,使其符合5.x的source code[/quote:3c0a6a3440]     
我没用ports装过gbfs,都是手动编译的,所以我不知道~
不明白为啥是两个diff呢?
原来4.x是两个完整的文件呀

 quakelee 回复于:2003-06-24 21:16:54
猛然间发现那个4.x的包包里面忘了打上源码了,靠~

 Matteo_NET 回复于:2003-06-24 21:17:25
步骤6的patch,是patch的当前的ports,而非是其他依赖关系的patch。
因为现在相当大部分的新软件是直接for linux的,然后port到freebsd上,所以对其makefile和一小部分的source code 进行patch。

而gbfs的安装过程,他的port的Makefile定义的patch的行为就是对cd9660和msdosfs分别进行两个diff的patch,和普通port的make patch的定义不太一样。

 quakelee 回复于:2003-06-24 21:19:31
[quote:6b08bc60ba="Matteo_NET"]步骤6的patch,是patch的当前的ports,而非是其他依赖关系的patch。
因为现在相当大部分的新软件是直接for linux的,然后port到freebsd上,所以对其makefile和一小部分的source code 进行patch。

而gbfs的安装过..........[/quote:6b08bc60ba]     
啊~
ports里面的那个东东是修改/usr/src里面的两个源码文件来得么?

 Matteo_NET 回复于:2003-06-24 21:20:59
[quote:50e552f3ed="lzn88"]# make extract
===>  Extracting for zh-gbfs-1.0
>> Checksum OK for gbfs-1.0.tar.gz.
# cd work/
# tar zvxf /tmp/gbfs-1.0-for-freebsd5.xR.tar.gz
cd9660.diff
msdosfs.diff
# ls
.extract_d..........[/quote:50e552f3ed]     

对不起,漏了一步,请看顶楼贴。

 Matteo_NET 回复于:2003-06-24 21:23:10
[quote:bd1c234f47="quakelee"]    
啊~
ports里面的那个东东是修改/usr/src里面的两个源码文件来得么?[/quote:bd1c234f47]     

你可以连接到ftp.freebsd.org 的ports/distfiles ,下个gbfs-1.0.tar.gz 回来看看就是两个diff而已。

看看/usr/ports/chinese/gbfs/Makefile 就知道是什么回事了。

 quakelee 回复于:2003-06-24 21:26:45
偶最开始是用cjacker给我的源码编译的,当时好像不是diff的~
记不得了,后来我就编译过两次,忘了是怎么弄得了,记得最开始的包包里面还有cjacker写的说明:(

 lzn88 回复于:2003-06-24 21:27:06
那就是怎么做?

 quakelee 回复于:2003-06-24 21:28:55
[quote:28fb2f396a="lzn88"]那就是怎么做?[/quote:28fb2f396a]     
我短时间试验不了了,请大家有条件的赶快试验一下,看看步骤上有没有问题,我就是和mathew探讨一下

 Matteo_NET 回复于:2003-06-24 21:34:58
我估计cjacker但是给你的就是打好了patch的cd9660和msdosfs的source code

 quakelee 回复于:2003-06-24 21:36:09
[quote:272da6f012="Matteo_NET"]我估计cjacker但是给你的就是打好了patch的cd9660和msdosfs的source code[/quote:272da6f012]     
可能,55555555555,那个源码包在那块坏掉的硬盘上 :em16:  :em16:  :em16:  :em10:

 xmake 回复于:2003-06-24 21:41:13
我也要!xmake@tom.com

 quakelee 回复于:2003-06-24 21:42:46
[quote:896b958bc1="xmake"]我也要!xmake@tom.com[/quote:896b958bc1]     
别激动,我已经放在主页上了,下载就行了

 xmake 回复于:2003-06-24 21:48:29
昏这个东西太好了啊。。。弄了好久没搞定。大头班长那个搞不定。哎。看看这个了。你搞定了写个详细的出来啊。。。

 Matteo_NET 回复于:2003-06-24 21:50:13
[quote:35195d5cf2="xmake"]昏这个东西太好了啊。。。弄了好久没搞定。大头班长那个搞不定。哎。看看这个了。你搞定了写个详细的出来啊。。。[/quote:35195d5cf2]     

quakelee网站上的那个就是我给的文件,不需要下载4.x的文件

 quakelee 回复于:2003-06-24 21:51:56
[quote:138c9e0c78="Matteo_NET"]    

quakelee网站上的那个就是我给的文件,不需要下载4.x的文件[/quote:138c9e0c78]    
忘了应该写上你的名字hoho
疏忽了

 Matteo_NET 回复于:2003-06-24 21:54:01
[quote:41fb1a2c50="quakelee"]   
忘了应该写上你的名字hoho
疏忽了[/quote:41fb1a2c50]     

写不写我的名字无所谓,只要大家知道下哪个文件就行了。

其实还是改感谢cjaker 提供这个patch,感谢statue 维护这个port。

 lzn88 回复于:2003-06-24 21:56:53
我make patch make install都成功了,重新启动后还是一样啊,我的kernel上已经去掉了msdosfs之类的了,还有什么问题吗?我在gnome下看到的还是???问号

 Matteo_NET 回复于:2003-06-24 22:00:06
[quote:bc59c94d42="lzn88"]我make patch make install都成功了,重新启动后还是一样啊,我的kernel上已经去掉了msdosfs之类的了,还有什么问题吗?我在gnome下看到的还是???问号[/quote:bc59c94d42]     

你启动的时候看到load gb-msdos, gb-9660 了吗?
运行 kldstat,看看加载这两个modules了没有

 Matteo_NET 回复于:2003-06-24 22:06:51
因为freebsd启动的时候,mount /etc/fstab 中的分区是在加载gbfs的cd9660和msdosfs模块之前的,所以mount 分区的时候就会调用原source code的msdosfsmodule,请看下面的解决方法。
你弄张中文目录的cd,mount一下看看,能不能正常。    

 [code:1:3dead7291d]汉化的XFree86和KDE后,下一个要解决的问题就是FreeBSD的中文文件名问题。这才是真正的FreeBSD汉化。不过操作起来很简单。在FreeBSD中,当你用ls中文文件名的时候,看到的不是各种乱码,而是多个?号或者-号。这时候,需要安装gnuls和gbfs包。使用上面的Ports操作,可以很容易安装他们。安装后reboot系统。你会在启动信息里看到一些错误信息:

module_register: module cd9660 already exists!
linker_file_sysinit "cd9660.ko" failed to register! 17

如果你没有看清楚,查看/var/log/message。查看/usr/local/etc/rc.d看到里面多了一个启动脚本gbfs.sh。其内容是用kldload加载/usr/local/modules下的模块。到/usr/local/modules/下看看,看到里面有两个模块文件cd9660.ko和msdos.ko。使用kldload来手动加载cd9660.ko。依然显示上面的错误。上网查资料才知道,需要修改kernel配置文件注释掉以下几行:
options MSDOSFS #MSDOS Filesystem
options CD9660 #ISO 9660 Filesystem
options CD9660_ROOT #CD-ROM usable as root, CD9660 required
然后重新编译并安装内核。ok先试试,反正FreeBSD编译内核的速度奇快。编译、安装内核后,reboot。但错误依然。这是怎么回事?这时,我在想为什么要注释掉上面呢三行,难道说要让FreeBSD不支持msdos和cd文件系统?显然不是,因为我还是可以mount上fat分区。我想,这可能是要强制FreeBSD对msdos和cd文件系统的支持在module模式下运行。而我在/etc/fstab中添加了在启动时mount我的fat分区的内容。因此FreeBSD先使用了原来的msdos.ko。当gbfs.sh加载自己的msdos.ko时,当然回出现错误了。ok,试试看。把/modules/cd9660.ko和/modules/msdos.ko备份一下。然后把/usr/local/modules/msdos.ko和/usr/local/modules/cd9660.ko拷贝到/modules下,删除/usr/local/etc/rc.d/gbfs.sh。reboot系统。在~/.cshrc下增加如下内容:

alias ls 'gnuls --show-control-chars'

这回看看msdos下的中文文件名。哈哈,OK了。[/code:1:3dead7291d]

 lzn88 回复于:2003-06-24 22:12:14
I got it!!!
跟4.X的时候一样,忽然想起来,不能在/etc/fstab中加上要mount的分区,要在启动后再mount就行了,好像是/etc/fstab执行在load这两个之前
不过如果是在刚安装新的没有msdosfs的内核后不要重新启动,装上gbfs再重启就可以

 lzn88 回复于:2003-06-24 22:15:21
5.X下我没找到/modules

 Matteo_NET 回复于:2003-06-24 22:17:46
[quote:b700778d61="lzn88"]I got it!!!
跟4.X的时候一样,忽然想起来,不能在/etc/fstab中加上要mount的分区,要在启动后再mount就行了,好像是/etc/fstab执行在load这两个之前
不过如果是在刚安装新的没有msdosfs的内核后不要重新启动,装?..........[/quote:b700778d61]     

其实也可以直接在/etc/fstab 中mount 分区,只要把 /usr/local/modules 目录下的两个文件覆盖掉kernel module目录中的相同文件就可以,当然还要删掉rc中的gbfs.sh,要不会出现重复加载的错误。

你现在应该可以看见中文目录和中文文件名了吧。

 quakelee 回复于:2003-06-24 22:19:01
快点lzn我也想知道结果哦 :D

 Matteo_NET 回复于:2003-06-24 22:19:36
[quote:68234c5661="lzn88"]5.X下我没找到/modules[/quote:68234c5661]     

我记得应该都在/boot/kernel 下,你到/boot目录下看看,应该有个kernel目录的就是你当前内核的所有东西都在里面。

我机器上是4.8,记不太清楚了。

 lzn88 回复于:2003-06-24 22:43:36
能看到中文了,能播中文mp3了,不过好像有点问题,改不了中文的目录名和文件名

 Matteo_NET 回复于:2003-06-24 22:48:38
改名时出现的错误提示是什么?mount的分区是否writable?
你能在rxvt等终端下,在msdos的分区 mkdir 中文目录吗? 或者mv 一个中文文件到另一个中文文件名?

 quakelee 回复于:2003-06-24 22:50:08
[quote:3799adaf7c="lzn88"]能看到中文了,能播中文mp3了,不过好像有点问题,改不了中文的目录名和文件名[/quote:3799adaf7c]     
再试试~

 lzn88 回复于:2003-06-24 22:52:57
的确不能
不能将英文名的文件改成有中文的,不能将有中文的改加英文的或中文的
我是root,不会是权限不够吧

 quakelee 回复于:2003-06-24 22:54:50
啊~,以前没发现有这种问题的?

 lzn88 回复于:2003-06-24 22:56:40
以前??
Nautilus下没有中文啊,改英文为英文的都没有问题

 quakelee 回复于:2003-06-24 22:58:44
[quote:269d1b7394="lzn88"]以前??
Nautilus下没有中文啊,改英文为英文的都没有问题[/quote:269d1b7394]     
Nautilus下面怎么会没有中文??? :shock: 
原来nautilus下面可是有中文的
msdos分区里面的中文都能显示出来的

 Matteo_NET 回复于:2003-06-24 23:00:02
你可以在控制台或终端下试试吗?我没有用过Nautilus
在终端下mv 或 mkdir看看

 lzn88 回复于:2003-06-24 23:00:40
[quote:115c72df2e="Matteo_NET"]改名时出现的错误提示是什么?mount的分区是否writable?
你能在rxvt等终端下,在msdos的分区 mkdir 中文目录吗? 或者mv 一个中文文件到另一个中文文件名?[/quote:115c72df2e]     

都有

 quakelee 回复于:2003-06-24 23:04:02
[quote:783f4a5d6d="lzn88"]    

都有[/quote:783f4a5d6d]     
那不可能呀nautilus应该也能改的~

 lzn88 回复于:2003-06-24 23:04:14
[quote:d77b9a5c3c="Matteo_NET"]你可以在控制台或终端下试试吗?我没有用过Nautilus
在终端下mv 或 mkdir看看[/quote:d77b9a5c3c]     

看来是Nautilus的问题,终端下可以mkdir及mv中文名文件,不过ls是???相信是ls的问题,装上gnuls应该就没问题了

 Matteo_NET 回复于:2003-06-24 23:06:17
[quote:d4bf40897f="lzn88"]    

都有[/quote:d4bf40897f]     

都有? :shock: 

都有什么?能不能详细点?

 Matteo_NET 回复于:2003-06-24 23:07:25
我就估计是Nautilus的问题,呵呵,ls 的问题只有通过gnuls 解决。

好了,大功告成。 :):):):):)

 lzn88 回复于:2003-06-24 23:07:43
[quote:1a8ae642fd="quakelee"]    
Nautilus下面怎么会没有中文??? :shock: 
原来nautilus下面可是有中文的
msdos分区里面的中文都能显示出来的[/quote:1a8ae642fd]     
是么,那我的怎么都是问号?要是能显示出来,这gbfs不就用不着了?

 quakelee 回复于:2003-06-24 23:14:18
nautilus以前没有问题的呀?
gnome2.2我都用过可以显示的呀

 lzn88 回复于:2003-06-24 23:26:17
[quote:f995clearcase/" target="_blank" >cc898c="Matteo_NET"]    

我记得应该都在/boot/kernel 下,你到/boot目录下看看,应该有个kernel目录的就是你当前内核的所有东西都在里面。

我机器上是4.8,记不太清楚了。[/quote:f995cc898c]     

cp进去了,重启ok了,没有删gbfs.sh

 Matteo_NET 回复于:2003-06-25 10:48:55
up 一下

 哈蜜瓜 回复于:2003-06-25 11:47:14
FreeBSD 5.1下gbfs测试成功,非常感谢!
望能尽快成熟,并加入FreeBSD ports

 zyme 回复于:2003-06-25 13:20:00
各位,看看我的两个“lnk"怎么显示不出汉字,而是怪符号??
这个图里,谢谢
http://www.chinaunix.net/forum/viewtopic.php?t=98009&start=15#645961

 哈蜜瓜 回复于:2003-06-25 14:50:40
:arrow: 

[img:5f975e35fe]http://www.linuxsir.com.cn/photo/freebsd/freebsd51.png[/img:5f975e35fe]

 Matteo_NET 回复于:2003-06-25 15:28:02
[quote:13f0fcda8a="zyme"]各位,看看我的两个“lnk"怎么显示不出汉字,而是怪符号??
这个图里,谢谢
http://www.chinaunix.net/forum/viewtopic.php?t=98009&start=15#645961[/quote:13f0fcda8a]    

这个问题不关gbfs的事,你可以试试建立一个者几个汉字的文件夹看看是否成功。

我这里还有个更有意思的问题呢 

http://www.chinaunix.net/forum/viewtopic.php?p=651122#651122

 哈蜜瓜 回复于:2003-06-25 18:40:32
刚才我比较了两种msdos的diff,发现修改的地方也只有两处,对吧?
statue兄刚才把这两个diff和原有的两个打包成新的gbfs-1.1,看来新的gbfs ports马上就会出现。
ftp://freebsd.sinica.edu.tw/pub/statue/gbfs/gbfs-1.1.tar.gz

 Matteo_NET 回复于:2003-06-25 18:55:40
对,因为原理是一样的,都是在source code中添加chinese unicode的编码。
主要是因为5.x的source code和4.x的有些地方有变化,只是针对这些变化做些小改动就可以了。
我今天早上把文件发给statue兄的,statue兄说做成一个port就可以了,还得麻烦statue兄修改port的Makefile了,应该很快就可以提交了。

 哈蜜瓜 回复于:2003-06-25 19:01:17
估计statue兄可能会根据FreeBSD的版本来选择不同的补丁。
其实考虑到本身修改较少,可否直接在ports中加入修改这一差别的功能?

 Matteo_NET 回复于:2003-06-25 19:30:17
[quote:651c2137b4="哈蜜瓜"]估计statue兄可能会根据FreeBSD的版本来选择不同的补丁。
其实考虑到本身修改较少,可否直接在ports中加入修改这一差别的功能?[/quote:651c2137b4]     
这个当然是可以的,稍微修改一下port 的Makefile , 加入对版本的判断,反正gz文件中两种版本的patch都有,根据判断后得到的结果,应用不同的patch就可以了。所以说,还得改动port的Makefile,这个就有劳statue兄了。

 哈蜜瓜 回复于:2003-06-25 19:32:02
兄弟能否弄个ntfs.diff的中文补丁出来?
big5fs有这个diff,不过在ports中被broken了。
这里保留了4.0stable的ntfs中文目录补丁过的源代码。(可惜我一直找不到diff)
ftp://freebsd.sinica.edu.tw/pub/statue/gbfs/cnfs2.tgz

 statue 回复于:2003-06-25 20:06:33
http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/53707

 Macolex 回复于:2004-12-30 14:41:20
好, 好!!

好贴!!

原文转自:http://www.ltesting.net