Tag: debian

在PowerEdge R410 下安装Debian6

昨天第一次在一台 R410 上装了Debian 6 ,想不到还出问题了。。。竟然不能直接就用netinst 安装好Debian,居然还是缺驱动。

安装的过程中,它会检测硬件,但是竟然出错了,“load missing firmware file” ,驱动也指出来了,是这个:bnx2/bnx2-mips-09-5.0.0.j3.fw 。原因在于,这个网卡驱动在Debian6 时变成了non-free 的驱动了,Debian installer 也告诉我了,需要把这个firmware 下载到一个removable media ,然后插入即可。问题就在这里开始解决吧。

弄来一个U 盘,格式化为FAT 吧,然后到这里下载两个firmware :

http://194.95.9.96/debian-installer/amd64/temp/lib/firmware/bnx2/

bnx2-mips-09-5.0.0.j3.fw
bnx2-rv2p-09-5.0.0.j3.fw

下载回来,放在U 盘的根目录的 bnx2/ 目录里面。

在出现load missing firmware file ,让你插入removable media 的时候,ctrl + alt + F2 跳转到另一个终端,然后把U 盘挂载上去。我当时是/dev/sdb4 ,mount /dev/sdb4 /mnt 。

这个时候,那两个firmware 应该在

/mnt/bnx2/bnx2-mips-09-5.0.0.j3.fw

/mnt/bnx2/bnx2-rv2p-09-5.0.0.j3.fw

然后ctrl + alt + F1 回到安装的终端,按 YES 吧。

然后就过去了,继续如常安装吧。

我参考自这个页面:http://bbs.chinaunix.net/archiver/tid-2312139.html ,只是记录一下自己的经历,和他的做法稍有不同。

Debian 6 刚发布的时候,在我的老东家,机房的同事就说装Debian 6 有点问题,结果帮我们装了个Debian 5 ,让我们自己升,够坑爹的。我就在想,会不会就是因为这个驱动的问题导致的呢?或者,在FAI 下还真不好解决,下回我也试试FAI 安装Debian6 .

ssh sftp 的设置

今天有个同事说他的 secure file transfer 使用不能。

看了下,貌似是 sshd_config 的配置有点问题,再看了下,原来是red hat 的配置用在了debian 上。

在 rh 系下,sshd_config 应该是

Subsystem       sftp    /usr/libexec/openssh/sftp-server

在 debian 下,应该是

Subsystem       sftp   /usr/lib/openssh/sftp-server

路径不一样了。。。

debian 下nginx 快速搭建FCGI环境

我的想法是。。。快点,快点,再快点!!

apt-get install spawn-fcgi php5-cgi

用 spawn-fcgi 启动 fcgi ,

spawn-fcgi -a 127.0.0.1 -p 8000 -u nobody -f /usr/bin/php-cgi -C 5 ;

在 nginx 里配置加一句:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:8000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

然后把一个 php 放在 /home/nginx/html 里,就可以使用了。

resin 在debian testing下的ipv6 问题

最近装的resin 3.0.x 都很不顺利,经常起不来,jvm.log 爆出这样的错:

Can’t connect to parent process through socket 48403
Resin needs to connect to its parent.

resin 3.0.x 大概是这样的工作机制的,起一个perl 作为一个master process ,这个master process 再负责起一个jvm 负责处理java 请求。而log 中的意思,就是 jvm 无法与这个master process 连接通讯,结果就起不来了。

国外也有朋友与我同样的问题呢:http://bugs.caucho.com/view.php?id=350

后来我看到这篇文章 http://people.debian.org.tw/~chihchun/2010/02/03/connectivity-issue-of-java-with-ipv6/,觉得终于找到正解了!

大概的意思就是,jvm 是支持ipv6的,可惜一般情况下,debian 会启动 ipv6 的 network interface ,但是,并没有其相应的路由,这样,java 就找不到路去连接 parent process 了。

既然是ipv6 的问题,剩下的问题就是如何关闭ipv6 了。

以下这个帖子比较全,linux 下n种禁用ipv6 的方法:http://hi.baidu.com/ramboo0913/blog/item/71efa09959ddcb0b6f068cc8.html

但是,这些方法,只是关闭以模块的形式载入内核的ipv6,如果已经把ipv6 编译进内核,那以上的方法都是不奏效的。我的debian 通常会升级到 testing ,很不幸,ipv6 已经在内核中了。可以这样查看,uname -a 看一下我使用了哪个内核,结果是“2.6.30-2-amd64” ,然后去 /boot/ 中,查看config-2.6.30-2-amd64 这个文件,这个文件记录了编译内核的参数,会见到 “CONFIG_IPV6=y” ,证明ipv6 已经编译进内核了,如果是模块的话,应该是“CONFIG_IPV6=m” 的。

其实判断ipv6 是否以模块的形式载入,很简单。

命令 ip addr | grep inet6 有输出,但是 lsmod | grep ipv6 却没输出,证明了ipv6 已经编译进内核了。

那这种编译进内核的情况,如何解决呢??google 告诉我,修改 /boot/grub/menu.lst ,把

kernel          /boot/vmlinuz-2.6.30-2-amd64 root=/dev/cciss/c0d0p1 ro

改为

kernel          /boot/vmlinuz-2.6.30-2-amd64 root=/dev/cciss/c0d0p1 ro ipv6.disable=1

reboot 即可。

其实还可以在线地关闭ipv6 ,运行命令

$sudo /sbin/ip addr del <ipv6address>/<prefixlength> dev ethX

文中还提到一个方法,就是在resin/bin 下,修改wrapper.pl,在

#
# Additional args to pass to java after command-line args.
#

后,加一句

$EXTRA_JAVA_ARGS="-Djava.net.preferIPv4Stack=true";

这样也就默认使用ipv4了。

其实文章已经说得很明白的了,我只是稍微简化一下,觉得不能理解的,还是参看一下原文吧。

祭出google 大神无数,终于解决问题。我这个SA 啊,就是一个靠google 混饭吃的。。。

———————————————–

updated :

新装的 debian 的内核参数,都是

net.ipv6.bindv6only = 1

的,而旧的都是

net.ipv6.bindv6only = 0

这样就解释了为什么resin 一启动就要 ipv6 了,但可以找不到 ipv6 的路由。。。sign….