Archive

Archive for October, 2007

Feisty下的alsa怎么不响了?

October 13th, 2007 Fwolf 2 comments

我的Ubuntu feisty是从dapper直接升级过来的,现在好像还记得刚升级完之后,用mplayer放电影没声音,声音驱动换oss就没事了,也没太在意。后来开始用mame玩模拟器游戏,一直没有声音,就以为是mame或者rom的问题。再后来发现mame有关于声音的设置,而别人的介绍里面说的mame没有声音的问题不是好几年之前的,就是一些rom中本来就不包含声音的情况。从这里开始察觉,是我机器的问题,具体说就是alsa声音驱动不响了。

硬件不会有问题,驱动换oss马上放电影就出声,所以问题在软件上,到网上一查,alsa没有声音的情况还不少,但好像都不顶用。

最后翻到了ubuntu Edgy升级到Feisty后系统没有声音,问题解决,我和他的情况相同,果然是$HOME/.asoundrc文件的问题。

升级到Feisty之后,在$HOME下有两个文件,.asoundrc.asoundconf和.asoundrc,.asoundrc的有效内容只有一行:

</home/fwolf/.asoundrc.asoundconf>

就是引用.asoundrc.asoundconf的内容,相当于一个Include语句,而.asoundrc.asoundconf的内容有4行:

!defaults.pcm.card I82801BAICH2
defaults.ctl.card I82801BAICH2
defaults.pcm.device 0
defaults.pcm.subdevice -1

这个是系统默认的配置,此文件系统也不建议直接修改,只要注释/取消注释.asoundrc文件中的那一句就可以了。不用重启机器,甚至也不用重启X,只要注释掉.asoundrc中那一句,alsa立刻就好了,mame里也有声音了,mplayer里选择alsa声音驱动也有声音了;而只要取消注释,mame和mplayer里就没有声音了,所以确定就是这里的问题。

看了一下.asoundrc.asoundconf配置文件选项的官方解释,感觉那4句哪一句都挺正确的,可就是只起反作用。

所以,下次alsa不响的时候,记得先看看这两个配置文件。

Related posts

Categories: Linux Tags: , , ,

单网卡双ip连接nfs服务器,好像不行

October 12th, 2007 Fwolf 2 comments

环境:防火墙作为网关,下设两个网段,A网段为192.168.0.0/24,防火墙上的网关地址为192.168.0.1,有一服务器地址为192.168.0.2;B网段为192.168.2.0/24,防火墙上的网关地址为192.168.2.1,有一客户机地址为192.168.2.5,只有一块网卡,需要增设一个ip,连接A网段服务器上的nfs服务。服务器和客户机操作系统均为ubuntu 7.04。

nfs服务器比较好架,apt安装nfs-kernel-server及相关包即可,默认服务端口2049不动,配置文件/etc/exports的内容为:

/home/fwolf     192.168.0.5(rw,sync,subtree_check)
/home/share     *(ro,subtree_check)

不要装成了nfs-user-server,那个是nfs v2,不是nfs v3,不支持4G以上的文件。限制了/home/fwolf只有主机192.168.0.5才能访问。客户端可以收工mountnfs服务器:

sudo mount -t nfs svrname:/home/fwolf local_mount_point

也可以写到fstab中:

svrname:/home/fwolf        local_mount_point nfs     defaults 0 0

如果现在用B网段的客户机访问A网段的服务器,因为路由走的是防火墙(防火墙的配置好像也有点问题,不过改不了,不行的根源可能就在于此),防火墙上看到客户机的地址是防火墙上配置的另外一个C网段地址,所以要给客户机增加一个A网段的ip,不通过防火墙直接访问。

单网卡增加双ip要用到别名,所以/etc/network/interfaces文件的内容如下:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.2.5
netmask 255.255.255.0

auto eth0:0
iface eth0:0 inet static
address 192.168.0.5
netmask 255.255.255.0

两个地址都不设置gateway,然后在rc.local中添加静态路由设置:

route add -net  192.168.0.0/24  gw  192.168.0.1     dev eth0:0
route add default gw 192.168.2.1 dev eth0

然后重启网络并执行rc.local:

sudo /etc/init.d/networking restart; sudo /etc/rc.local

现在,看一下路由表:

$ route
Kernel IP routeing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     192.168.0.1     255.255.255.0   UG    0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.2.1    0.0.0.0         UG    0      0        0 eth0

按照设想,如果从客户机上访问A网段,那么应该对应路由表的第一行,使用网关192.168.0.1,服务器上看到的地址自然就是192.168.0.5,如果访问其他网段,应该走默认网关192.168.2.1,对应本机ip地址192.168.2.5。但是,我的实践证明并不是这样,甚至在rc.local加上了下面几句中任何一句或者全部也不行:

route add -net 192.168.0.0/24 dev eth0:0
route add -host    192.168.0.2   dev eth0:0
route add -host 192.168.0.2 gw 192.168.0.1 dev eth0:0

偶尔的时候,能够成功,但是感觉不稳定,所以算是失败了,感觉有3种可能:

  • 防火墙工作方式问题,这个自然没法改动了
  • 路由命令添加得不对,我觉得应该没错误吧
  • 此路根本不通,单网卡不能设多ip,只能用多网卡,我觉得这个不太可能

暂时的,只能放宽nfs地址限制,或者用速度较慢(尤其在局域网内)的sshfs来实现了。

参考

Related posts

Categories: Linux Tags: