月度归档:2011年01月

编译sansung S3C4板子上的u-boot

手里有个Dell TrueMobile 1184的无线路由,板子上面已经引出了串口,接上TTL线看了下启动信息,运行的是linux,打算自己编译个u-boot,跑uClinux玩玩。

点击查看原图
点击查看原图

先建立arm-linux-gcc 交叉编译环境:
在ubuntu下以root登录,
将 cross-2.95.3.tar.bz2 文件复制到 / 目录下,
安装:
# tar jxvf cross-2.95.3.tar.bz2
这个命令会在你的 /usr/local/arm/2.95.3 目录下安装 arm-linux-gcc 交叉编译程序,
然后在 PATH 变量中添加一项: /usr/local/arm/2.95.3/bin.
[root@localhost root]# export ATH=/usr/local/arm/2.95.3/bin:$PATH
测试:
把终端关闭,重新打开后执行如下命令:
# arm-linux-gcc –v
建立好交叉编译环境后可以试着编译 u-boot 了。

在/mnt/下面解压u-boot.1.1.2
tar xvf u-boot-1.1.2.tar.bz2
然后cd /mnt/u-boot.1.1.2
1)      make distclean
2)      make B2_config
3)      make
悲剧,报错:make[1]: *** 没有规则可以创建“all”需要的目标“hello_world.srec”。 停止。
查了一下,有人说是make 3.81的一个BUG!http://blackfin.uclinux.org/gf/project/u-boot/tracker/?action =TrackerItemEdit&tracker_item_id=1324
  可以简单的改一个目录 examples下的Makefile来解决。
  将原文件的第58行开始的内容:
  SREC = hello_world.srec
  BIN = hello_world.bin hello_world
  改为:
  SREC = hello_world.o
  BIN = hello_world.o hello_world
修改后运行,成功生成u-boot.bin文件! 终于搞定交叉编译环境!点击查看原图

现在开始做对应Dell TrueMobile 1184的编译。
u-boot-1.1.2/evb4510这个目录就是对应S3C4510的标准板子,这样就方便了,直接编译吧
make distclean
make evb4510_config
make
等待几分钟后,u-boot-1.1.2/已经生成u-boot.bin文件,至于Dell TrueMobile 1184这个板子能不能跑得起来,跑起来之后是不是一切正常,这个还得等明天试了才知道。
又放狗搜索,找到一个U-boot for s3c4510
点击查看原图

 看起来应该更适合我的路由器,那就下载下来编译下。
解压后make报错,提示没有arm-elf-gcc,这个uboot源码看来需要arm-elf-tools交叉编译环境,之前那个u-boot-1.1.2用的是arm-linux-gcc环境,两者貌似还不一样。
直接在linux里面wget下载arm-elf-tools-20040305.sh
,完成后chmod 777,执行报错:tail: cannot open `+43' for reading: No such file or directory
gunzip: stdin: unexpected end of file
抓狂,继续搜索,找到解决方案:
解决方法: 在Linux下(注:不要在Win下) 重新下载一个arm-elf-tools-20030314.sh
建议用VIM(注:不要在Win下)
将第39行的代码:
tail +${SKIP} ${SCRIPT} | gunzip | tar xvf –
改成如下:
tail -n +${SKIP} ${SCRIPT} | gunzip | tar xvf –
问题2:
gunzip: stdin: unexpected end of file
解决方法: 要在arm-elf-tools-20030314.sh 最后一行加入一空行(注,不要在Win下修改,建议用VIM)。
vim这个东西我用的不熟,这里记下过程,算是温故知新:
在正常模式里输入39j跳到第39行,按i进入编辑模式修改,搞定第一个问题;按esc回到正常模式,输入G跳到最后一行,输入o插入一行,搞定第二个问题;然后按esc回到正常模式,输入:wq保存退出,over。
./arm-elf-tools-20030314.sh,顺利安装完成。
切换到刚刚的uboot文件夹,make distclean
make evb4510_config
make
等待几分钟后编译完成,用winhex对比下前后两个u-boot.bin,发现很多地方不同,待明天分别刷进去试验下。

 


nginx限制来路域名

限制某些站嵌入我的图片

                if ($http_referer ~* "x11177\.|dase1yu\.|xiao11\.|m11mm6\."){
                        return 403;
                }
 

lnmp0.5给网站限速

编辑nginx.conf配置文件

在http{}里面,加上这句:
limit_zone one $binary_remote_addr 10m;
然后,在server{}里面加上下面这段:
location /下载文件夹名称/ {
        limit_conn one 1;
        limit_rate 10k;
}
这里limit_conn one 1是指一个IP只能用一个线程下载。
limit_rate 10k是指最大只能下载10k。

mysql 删除bin_log

例行检查服务器,发现磁盘空间异常,du -sh发现/usr/local/mysql/var下面有近2G的空间被MySQL Binary Log文件占用,那就清除它们。
mysql -u root -p 先登录

mysql> show binary logs;
+——————+———–+
| Log_name         | File_size |
+——————+———–+
| mysql-bin.000001 |     19099 |
| mysql-bin.000002 |    714954 |
| mysql-bin.000003 |       263 |
| mysql-bin.000004 |       125 |
| mysql-bin.000005 |   7678507 |
| mysql-bin.000006 |     54963 |
| mysql-bin.000007 |   1327716 |
| mysql-bin.000008 |   1785051 |
| mysql-bin.000009 |  14897541 |
| mysql-bin.000010 | 320912902 |
| mysql-bin.000011 |       125 |
| mysql-bin.000012 | 147692096 |
| mysql-bin.000013 |  19483104 |
| mysql-bin.000014 |   2406374 |
| mysql-bin.000015 |   1018655 |
| mysql-bin.000016 | 408539355 |
+——————+———–+
16 rows in set (0.00 sec)

mysql> purge binary logs before '2011-1-19 23:00:00';
Query OK, 0 rows affected (1.25 sec)

mysql> show binary logs;
+——————+———–+
| Log_name         | File_size |
+——————+———–+
| mysql-bin.000016 | 408557560 |
+——————+———–+
1 row in set (0.00 sec)
OK,清空了日志。
然后禁用日志功能,去/etc/my.cnf注释掉图示的两行:

点击查看原图

purge的语法:
PURGE { BINARY | MASTER } LOGS
    { TO 'log_name' | BEFORE datetime_expr }

The binary log is a set of files that contain information about data modifications made by the MySQL server. The log consists of a set of binary log files, plus an index file.

Examples:

PURGE BINARY LOGS TO 'mysql-bin.010';
purge binary logs before '2011-1-19 23:00:00';

 

CentOS安装编译环境

使用 yum 程序安装所需开发包(以下为标准的rpm包名称)
# yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel gettext-devel pcre-devel
这里我们将CentOS编译安装GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg,gettext-devel等先用RPM 的方式一并安装好,避免手动CentOS编译安装浪费时间,同时也能避免很多错误,这几个小软件的编译很麻烦。这几个小软件编译错误了,GD当然安装不了,php5的编译当然也没戏了。所以对这些采取快速简洁的方式进行安装。对服务器的性能也不会产生什么影响。

CentOS,Apache 403 Forbidden

在CentOS上装了apache2,配置了一个虚拟目录,居然403了,简单,设定虚拟目录的group为apache,权限0700,/etc/init.d/httpd restart重启httpd。

还是forbidden….汗

以前在Debian和ubuntu上从未遇见过这种匪夷所思的问题,查找半天原来这个机器开了selinux,可能是它造成的,试试关闭selinux对apache的保护:

/usr/sbin/setsebool -P httpd_disable_trans 1

重启后,恩,可以访问了,看来是虚拟目录的安全限制造成的。

删除该虚拟目录,然后对它的父目录执行一个指令,改变目录类型:
chcon -t httpd_sys_content_t <目录名>

然后重建目录,重新打开selinux对apache的保护:
/usr/sbin/setsebool -P httpd_disable_trans 0

重启apache,搞定!

直接关闭selinux也可:编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,重启或者运行setenforce 0都行。

给U8110做下系统备份

# cat /proc/cpuinfo
Processor       : ARMv6-compatible processor rev 2 (v6l)
BogoMIPS        : 243.60
Features        : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 6TEJ
CPU variant     : 0x1
CPU part        : 0xb36
CPU revision    : 2

Hardware        : HUAWEI U8110 BOARD
Revision        : 0000
Serial          : 0000000000000000
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00500000 00020000 "boot"
mtd1: 00500000 00020000 "recovery"
mtd2: 00140000 00020000 "misc"
mtd3: 00060000 00020000 "splash"
mtd4: 0aa00000 00020000 "system"
mtd5: 04600000 00020000 "cache"
mtd6: 0bda0000 00020000 "userdata"
mtd7: 01400000 00020000 "userdata2"
# ls /dev/mtd
mtd7ro
mtd7
mtd6ro
mtd6
mtd5ro
mtd5
mtd4ro
mtd4
mtd3ro
mtd3
mtd2ro
mtd2
mtd1ro
mtd1
mtd0ro
mtd0
# cat /dev/mtd/mtd0 > /sdcard/boot.bin
# cat /dev/mtd/mtd1 > /sdcard/recovery.bin
# cat /dev/mtd/mtd2 > /sdcard/misc.bin
# cat /dev/mtd/mtd3 > /sdcard/splash.bin
# cat /dev/mtd/mtd4 > /sdcard/system.bin
# cat /dev/mtd/mtd5 > /sdcard/cache.bin
# cat /dev/mtd/mtd6 > /sdcard/userdata.bin
# cat /dev/mtd/mtd7 > /sdcard/userdata2.bin
 

常用的16M 32M 64M SD内存颗粒,路由改造和升级参考

16m K4S281632F-TC75
16m hy57v281620hct
16m P2V28S40ATP
16m mT48LC8m16A2-75
16m W981216AH-75
16m m2V28S40ATP-6L
16m Em639165TS-6
16m GLT5640L16P-6TC
16m IC42S16800-6TG

32m K4S561632C-TC/L60 166mHZ
32m K4S561632D-TC/L60 166mHZ
32m K4S561632E-TC/L60 166mHZ
32m K4S561632F-TC/U75 133mHZ
32m K4S561632J-UC/L60 166mHZ
32m K4S561632J-UC/L50 200mHZ
32m HY57V561620HT/HLT-6 166mHZ
32m HY57V561620CT/CLT-6 166mHZ
32m HY57V561620TP/CTP-6 166mHZ
32m HY57V561620A/B/C/L/T-75
32m mT48LC16m16A2
32m IC42S16160-6TG
32m GP6LC32G88TG-7

64m hyb250512160be-5 infineon
64m K4S511632D-UC60
64m mT48LC32m16A2-UC60