Feb
19
@ 2010-05-29
我手头已经没有交叉编译工具链了,这个newstar,可能只适用于武大信息学部宿舍8栋,有问题估计帮不了忙了,真抱歉。
如果需要dd-wrt的,可以试试在这里的这个(tomato也许也能用呢):
http://www.right.com.cn/forum/viewthread.php?tid=29702&extra=page%3D2
-----
@ 2009-05-01
建议看看这篇文章:开源无线路由器固件上 Bug 的故事
http://blog.xiaoding.org/post/bug-story-on-open-source-routers-2.html
就是说,其实WL-520gu的交换芯片BCM5354是有个BUG的,如果使用多播协议的802.1x认证可能无法搞定。。。
-----
花了这么多天的时间,果然是值得阿!
寒假在家里搭建的buildroot确实可以交叉编译,但是编译出来的东西在路由器上不能运行!
于是很郁闷地看了不少资料,才发现,原来dd-wrt和tomato固件都是基于linux-2.4的,
但是寒假搭建的那个,linux内核直接down的是2.6.28....
反正是牛头不对马嘴了。
于是去下载openwrt提供buildroot来搭建交叉编译工具链。
说简单也很简单:
1. svn下来openwrt的buildroot
$ su
$ mkdir /cross
$ cd /cross
$ svn co svn://svn.openwrt.org/openwrt/branches/whiterussian/
2. 参照这篇 [在ubuntu8.10 下建立 ARM-Linux 交叉编译环境] 的内容进行如下修改:
1) 安装一些必须工具
$ sudo apt-get install bison flex build-essential patch libncurses5-dev
2) 修改一些系统文件
a)ubuntu的sh是链接到dash的,修改回bash
$ cd /bin
$ sudo ln -sf bash /bin/sh
b)用用新立得软件包管理器安装gcc-4.1(自带的gcc4.3.2无法编译成功!但不用卸载),然后
$ sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (gcc只是一个soft link,回头再链回到gcc-4.3就可以了)
如果不安装gcc-4.1,就会出现2个问题:
~~ /usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments
编译到这里的时候提示这个错误,是因为没有第三个参数,gcc 4.3.2严格的语法检查不让通过;你可以修改 gcc-<版本号>/gcc/collect2.c的1575行附近,加上第三个参数0777,变成 redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777); 然后就可以继续编译
~~ 尽管可以继续编译,但是还会出现这个问题:*** buffer overflow detected ***: mipsel-9tdmi-linux-gnu-ar terminated
哈,编译出来的这个程序根本就有问题!所以还是老老实实地安装gcc 4.1吧!
3) 安装配置
$ cd whiterussian/openwrt
$ make menuconfig
应该不用选太多东西,不过libgcc, libpcap, uClibc++最好选上,因为编译newstar需要它们。
4) 开始搭建toolchain
$ make
安装过程中会需要下载n多个包,速度超慢,建议是开始下载的时候按下Ctrl+C,然后复制下载链接到迅雷下载,然后再copy到这个目录的dl目录下面
5) 不出意外,搭建好了!配置环境变量
$ export PATH=$PATH:/cross/whiterussian/openwrt/staging_dir_mipsel/bin
可以把这一行加入到.bashrc或者/etc/profile中,免得每次要编译都输入一遍:)
6) 下载这个newstar.mips.tar.gz (@2009-02-19 19:00修正了一个BUG)
下载文件 (已下载 2446 次)
$ tar zxvf newstar_mips.tar.gz
$ cd newstar.mips
$ make
如果有需要,可以修改feli_net.cpp里面的几个文件的路径,比如log,tmp,config。
注意Makefile里面有个 ARG=-static,也就是这个是静态编译的,大小有1.8MB呢,不过反正我有个1G的U盘空间,无所谓——还是有个USB口来得好阿!
7) 拷到路由器,配置运行
$ telnet 192.168.1.1 //telnet到路由器的命令行下
$ ./newstar config
我用的asus wl-520gu,WAN网卡是vlan1,配置的时候interface填这个就OK!
$ ./newstar
8) 如果需要编译其他程序
$ mipsel-linux-g++ -static hello.c -o hello.out
哦也哦也哦也!手机可以上校园网了!!!!!
我手头已经没有交叉编译工具链了,这个newstar,可能只适用于武大信息学部宿舍8栋,有问题估计帮不了忙了,真抱歉。
如果需要dd-wrt的,可以试试在这里的这个(tomato也许也能用呢):
http://www.right.com.cn/forum/viewthread.php?tid=29702&extra=page%3D2
-----
@ 2009-05-01
建议看看这篇文章:开源无线路由器固件上 Bug 的故事
http://blog.xiaoding.org/post/bug-story-on-open-source-routers-2.html
就是说,其实WL-520gu的交换芯片BCM5354是有个BUG的,如果使用多播协议的802.1x认证可能无法搞定。。。
-----
花了这么多天的时间,果然是值得阿!
寒假在家里搭建的buildroot确实可以交叉编译,但是编译出来的东西在路由器上不能运行!
于是很郁闷地看了不少资料,才发现,原来dd-wrt和tomato固件都是基于linux-2.4的,
但是寒假搭建的那个,linux内核直接down的是2.6.28....
反正是牛头不对马嘴了。
于是去下载openwrt提供buildroot来搭建交叉编译工具链。
说简单也很简单:
1. svn下来openwrt的buildroot
$ su
$ mkdir /cross
$ cd /cross
$ svn co svn://svn.openwrt.org/openwrt/branches/whiterussian/
2. 参照这篇 [在ubuntu8.10 下建立 ARM-Linux 交叉编译环境] 的内容进行如下修改:
1) 安装一些必须工具
$ sudo apt-get install bison flex build-essential patch libncurses5-dev
2) 修改一些系统文件
a)ubuntu的sh是链接到dash的,修改回bash
$ cd /bin
$ sudo ln -sf bash /bin/sh
b)用用新立得软件包管理器安装gcc-4.1(自带的gcc4.3.2无法编译成功!但不用卸载),然后
$ sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (gcc只是一个soft link,回头再链回到gcc-4.3就可以了)
如果不安装gcc-4.1,就会出现2个问题:
~~ /usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments
编译到这里的时候提示这个错误,是因为没有第三个参数,gcc 4.3.2严格的语法检查不让通过;你可以修改 gcc-<版本号>/gcc/collect2.c的1575行附近,加上第三个参数0777,变成 redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777); 然后就可以继续编译
~~ 尽管可以继续编译,但是还会出现这个问题:*** buffer overflow detected ***: mipsel-9tdmi-linux-gnu-ar terminated
哈,编译出来的这个程序根本就有问题!所以还是老老实实地安装gcc 4.1吧!
3) 安装配置
$ cd whiterussian/openwrt
$ make menuconfig
应该不用选太多东西,不过libgcc, libpcap, uClibc++最好选上,因为编译newstar需要它们。
4) 开始搭建toolchain
$ make
安装过程中会需要下载n多个包,速度超慢,建议是开始下载的时候按下Ctrl+C,然后复制下载链接到迅雷下载,然后再copy到这个目录的dl目录下面
5) 不出意外,搭建好了!配置环境变量
$ export PATH=$PATH:/cross/whiterussian/openwrt/staging_dir_mipsel/bin
可以把这一行加入到.bashrc或者/etc/profile中,免得每次要编译都输入一遍:)
6) 下载这个newstar.mips.tar.gz (@2009-02-19 19:00修正了一个BUG)

$ tar zxvf newstar_mips.tar.gz
$ cd newstar.mips
$ make
如果有需要,可以修改feli_net.cpp里面的几个文件的路径,比如log,tmp,config。
注意Makefile里面有个 ARG=-static,也就是这个是静态编译的,大小有1.8MB呢,不过反正我有个1G的U盘空间,无所谓——还是有个USB口来得好阿!
7) 拷到路由器,配置运行
$ telnet 192.168.1.1 //telnet到路由器的命令行下
$ ./newstar config
我用的asus wl-520gu,WAN网卡是vlan1,配置的时候interface填这个就OK!
$ ./newstar
8) 如果需要编译其他程序
$ mipsel-linux-g++ -static hello.c -o hello.out
哦也哦也哦也!手机可以上校园网了!!!!!
Feb
18
前两天到了。
整了一下,基本上是这样的,刷过了n个固件,dd-wrt和tomato的不同版本。最后觉得还是tomato1.23 ND USB FTP Samba版本的比较不错,刷进去以后可以直接支持USB并开启FTP和Samba,但是就是不识别我的2GB Kingston行货,于是跟阿牛换了一个1GB的Kingston水货。于是开启了Samba。
信号确实不错。
试了一下交叉编译好的newstar,运行有错,郁闷。想静态编译newstar,但是交叉编译工具报错。
回头试一下hello world再说吧。
整了一下,基本上是这样的,刷过了n个固件,dd-wrt和tomato的不同版本。最后觉得还是tomato1.23 ND USB FTP Samba版本的比较不错,刷进去以后可以直接支持USB并开启FTP和Samba,但是就是不识别我的2GB Kingston行货,于是跟阿牛换了一个1GB的Kingston水货。于是开启了Samba。
信号确实不错。
试了一下交叉编译好的newstar,运行有错,郁闷。想静态编译newstar,但是交叉编译工具报错。
回头试一下hello world再说吧。
Feb
16
@ 2010-08-20 BS一下不看manpage的自己
也就是说,只需要用 sed -i 就可以直接替换文件中的内容
======以前的分割线======
要用sed批量修改文件的内容,但是用这个命令解决不了问题:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} > {} \;
因为bash把 > 解释为find命令输出的重定向。
修改一下:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} \> {} \;
还是不行,因为 sed 去寻找一个名为 > 的文件进行处理
再修改:
find -name "*.php" -exec "sed -e 's/aaa/bbb/' {} \> {} " \;
还是不行,因为find去找一个名为 "sed -e 's/aaa/bbb/' {} \> {} " 的程序来执行
那是囧之又囧阿。于是去baidu,去google,
但是无论baidu还是google "find -exec 重定向"
都搜不到相应的解决方案,这样的问题居然没有人遇到过?
于是用google搜了一下
搜到了这一页: http://www.loisch.de/linux.html
看来还是国人太ooxx了,sigh。
解决方案其实很简单:绕个弯,把 -exec 的命令给shell来执行
注意:下面的命令一定不要在有用的文件上直接尝试!!!!!!
哦也!没有错误提示了!
然后 ls -al 一下,爽!所有文件大小都变成 0 了!
为什么捏?那篇文章里面解释了:
因为bash检测到需要重定向到那个文件,所以事先把那个文件清空了。
那篇文章里面提到一个修改bash配置的解决方案,但是不通用,建议还是用他说的第二种方案:
嘿,这下爽了!
引用
$ man sed
...
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
...
...
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if extension supplied)
...
======以前的分割线======
要用sed批量修改文件的内容,但是用这个命令解决不了问题:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} > {} \;
因为bash把 > 解释为find命令输出的重定向。
修改一下:
find -name "*.php" -exec sed -e 's/aaa/bbb/' {} \> {} \;
还是不行,因为 sed 去寻找一个名为 > 的文件进行处理
再修改:
find -name "*.php" -exec "sed -e 's/aaa/bbb/' {} \> {} " \;
还是不行,因为find去找一个名为 "sed -e 's/aaa/bbb/' {} \> {} " 的程序来执行
那是囧之又囧阿。于是去baidu,去google,
但是无论baidu还是google "find -exec 重定向"
都搜不到相应的解决方案,这样的问题居然没有人遇到过?
于是用google搜了一下
引用
linux find using "-exec" sed redirect
搜到了这一页: http://www.loisch.de/linux.html
看来还是国人太ooxx了,sigh。
解决方案其实很简单:绕个弯,把 -exec 的命令给shell来执行
注意:下面的命令一定不要在有用的文件上直接尝试!!!!!!
引用
find -name "*.php" -exec bash -c "sed -e 's/aaa/bbb/' {} > {}" \;
哦也!没有错误提示了!
然后 ls -al 一下,爽!所有文件大小都变成 0 了!
为什么捏?那篇文章里面解释了:
因为bash检测到需要重定向到那个文件,所以事先把那个文件清空了。
那篇文章里面提到一个修改bash配置的解决方案,但是不通用,建议还是用他说的第二种方案:
引用
find -name "*.php" -exec bash -c "sed -e 's/aaa/bbb/' {} > {}.tmp; mv -f {}.tmp {}" \;
嘿,这下爽了!
Feb
15
发信人: Felix021 (Felix), 信区: Linux_Unix
标 题: 校园网锐捷客户端 newstar for linux 情人节专版 (傻瓜化操作)
发信站: BBS 珞珈山水站 (Sun Feb 15 03:21:19 2009)
(附件的tarball里包含源代码和编译好的x86_32的可执行程序)
花了不少时间整这个东西,现在用起来相当简单了。
下载下来,解压,运行 ./install.sh 输入管理员密码,就安装好了。
要联网,运行newstar,不需要再输密码,
程序自动在后台与服务器通信,不需要留着一个terminal
也不需要nohup, screen, setsid什么的了。
其他还要手动的地方就是添加到开机自启动脚本/etc/rc.local里面去。
当然,也可以添加到 会话 里面,但是这个是在X Window登录以后才运行的。
过几天会搞个ASUS WL-520GU无线路由,能刷linux(如dd-wrt固件)
看看能不能把newstar集成进去,待续。。。
--
newstar for linux @ 2009-02-14 情人节专版(修正日志读取与清除的BUG)
下载文件 (已下载 2103 次)
本程序由felicia(feliciacrazy@qq.com修改自superstar源码
由felix021(felix021@gmail.com)添加连接和注销之外的功能
注: 第1,2步可以直接运行 sudo ./install.sh 来完成
1. 编译
标 题: 校园网锐捷客户端 newstar for linux 情人节专版 (傻瓜化操作)
发信站: BBS 珞珈山水站 (Sun Feb 15 03:21:19 2009)
(附件的tarball里包含源代码和编译好的x86_32的可执行程序)
花了不少时间整这个东西,现在用起来相当简单了。
下载下来,解压,运行 ./install.sh 输入管理员密码,就安装好了。
要联网,运行newstar,不需要再输密码,
程序自动在后台与服务器通信,不需要留着一个terminal
也不需要nohup, screen, setsid什么的了。
其他还要手动的地方就是添加到开机自启动脚本/etc/rc.local里面去。
当然,也可以添加到 会话 里面,但是这个是在X Window登录以后才运行的。
过几天会搞个ASUS WL-520GU无线路由,能刷linux(如dd-wrt固件)
看看能不能把newstar集成进去,待续。。。
--
newstar for linux @ 2009-02-14 情人节专版(修正日志读取与清除的BUG)

本程序由felicia(feliciacrazy@qq.com修改自superstar源码
由felix021(felix021@gmail.com)添加连接和注销之外的功能
注: 第1,2步可以直接运行 sudo ./install.sh 来完成
1. 编译
Feb
13
实验室派发U盘,给了一个Newsmy V3(4GB)的U盘。
看到包装盒上面说可以搞成USB HDD,很happy
于是按照提示去newsmy网站下载附加的软件
下载下来一看,就跟普通MP3的哪个什么异度空间似的,超无聊
打开另外一个检测工具看看,眼睛一亮:是个量产工具!
想起以前整我那个威刚1GB U盘的时候了。
于是大概看着随便乱点一通,非常华丽地,U盘挂掉了,哦也!
识别不出容量,就像一个空的读卡器,量产工具也搞定不了,总是显示Fail
心里爆寒。。才刚刚买回来的。。。
网上查到了一些东西,将就着看看,但是没啥用
唯一有用的是无意中查到了newsmy在武汉的售后服务点,记录下来。。
然后无意中在量产工具里发现这个主控芯片是SM325AC的
可是这个量产工具里面最高只有323的,怪不得不行。
于是上网搜了一下,周折了n久终于在mydigit找到一款 SM32X量产工具G1219
http://bbs.mydigit.cn/read.php?tid-19748.html
注册,下载,哦也!然后简单设置一下,就搞定了!
现在这个U盘插上以后,可以识别出一个USB CDROM和一个USB HDD(基本磁盘)
可以对USB HDD再进行分区,真爽,真爽!
我进行的量产步骤是这样的:
看到包装盒上面说可以搞成USB HDD,很happy
于是按照提示去newsmy网站下载附加的软件
下载下来一看,就跟普通MP3的哪个什么异度空间似的,超无聊
打开另外一个检测工具看看,眼睛一亮:是个量产工具!
想起以前整我那个威刚1GB U盘的时候了。
于是大概看着随便乱点一通,非常华丽地,U盘挂掉了,哦也!
识别不出容量,就像一个空的读卡器,量产工具也搞定不了,总是显示Fail
心里爆寒。。才刚刚买回来的。。。
网上查到了一些东西,将就着看看,但是没啥用
唯一有用的是无意中查到了newsmy在武汉的售后服务点,记录下来。。
然后无意中在量产工具里发现这个主控芯片是SM325AC的
可是这个量产工具里面最高只有323的,怪不得不行。
于是上网搜了一下,周折了n久终于在mydigit找到一款 SM32X量产工具G1219
http://bbs.mydigit.cn/read.php?tid-19748.html
注册,下载,哦也!然后简单设置一下,就搞定了!
现在这个U盘插上以后,可以识别出一个USB CDROM和一个USB HDD(基本磁盘)
可以对USB HDD再进行分区,真爽,真爽!
我进行的量产步骤是这样的:
Feb
11
今天回顾汇编,顺手写了一个,居然还可以运行,挖咔咔,自恋一下
datas segment use16
str1 db "hello world!", 0dh, 0ah, "$"
datas ends
stacks segment use16
db 256 dup(0)
stacks ends
codes segment use16
assume cs:codes, ds:datas, ss:stacks
start: mov ax, datas
mov ds, ax
lea dx, str1
mov ah, 09h
int 21h
mov ah, 4ch
int 21h
codes ends
end start
Feb
5
这篇文章尾烂了,大家多给点意见,好充实其中的内容;也提出里面的不足。
---
我觉得这样的文章应该有人写过的,但是Google里面貌似没有(或许有英文版)
Baidu给了一个,不过不是很像样 http://baike.baidu.com/view/94274.htm
那我就写一个吧,这也是momodi大牛在上个学期初委托给我的一件事情。
这篇文章面向的对象是没有多少基础,或者是才学C语言或数据结构的同鞋们。
--
首先,什么是acm/icpc?ACM/ICPC(ACM International Collegiate Programming Contest, 国际大学生程序设计竞赛)是由国际计算机界历史悠久、颇具权威性的组织ACM(Association for Computing Machinery,国际计算机协会)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛。
——这段定义来自 百度百科 -> ACM/ICPC,其实说简单了就几个字:想算法,写程序,解题目。
---
我觉得这样的文章应该有人写过的,但是Google里面貌似没有(或许有英文版)
Baidu给了一个,不过不是很像样 http://baike.baidu.com/view/94274.htm
那我就写一个吧,这也是momodi大牛在上个学期初委托给我的一件事情。
这篇文章面向的对象是没有多少基础,或者是才学C语言或数据结构的同鞋们。
--
首先,什么是acm/icpc?ACM/ICPC(ACM International Collegiate Programming Contest, 国际大学生程序设计竞赛)是由国际计算机界历史悠久、颇具权威性的组织ACM(Association for Computing Machinery,国际计算机协会)主办的,世界上公认的规模最大、水平最高的国际大学生程序设计竞赛。
——这段定义来自 百度百科 -> ACM/ICPC,其实说简单了就几个字:想算法,写程序,解题目。
Feb
4
zz from http://hi.baidu.com/cf881001/blog/item/88510d39f38a5b2496ddd85c.html
png透明 AlphaImageLoader
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=bEnabled,sizingMethod=sSize,src=sURL)
enabled:可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true:默认值。滤镜激活。false:滤镜被禁止。
sizingMethod:可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。crop:剪切图片以适应对象尺寸。image:默认值。增大或减小对象的尺寸边界以适应图片的尺寸。scale:缩放图片以适应对象的尺寸边界。
src:必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。
禁止选取网页内容
在IE中一般用js:obj.onselectstart=function(){return false;}
而firefox用CSS:-moz-user-select:none
滤镜的支持(例:透明滤镜)
png透明 AlphaImageLoader
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=bEnabled,sizingMethod=sSize,src=sURL)
enabled:可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true:默认值。滤镜激活。false:滤镜被禁止。
sizingMethod:可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。crop:剪切图片以适应对象尺寸。image:默认值。增大或减小对象的尺寸边界以适应图片的尺寸。scale:缩放图片以适应对象的尺寸边界。
src:必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数,滤镜将不会作用。
禁止选取网页内容
在IE中一般用js:obj.onselectstart=function(){return false;}
而firefox用CSS:-moz-user-select:none
滤镜的支持(例:透明滤镜)