Category Archives: Linux

魔鬼的组合:OpenWrt+Dnsmasq

且不说给我的WHR-HP-G300N刷了OpenWrt之后遭遇的重重劫难,单说一个DNS给我带来的困扰。

我坚持认为我的设备必须拿到别的环境马上可用且没有多余配置,所以家用网络但凡能用dhcp解决的问题绝对不用static,那么很明显DNS也是要通过DHCP分配的,而不是写在终端上。于是…

我习惯给网络配置两个DNS,一个114dns和一个本地ISP分配的,也就是114.114.114.114和202.99.224.68,因为114dns性能更好,但是一旦遇到特殊情况,ISP的DNS作为备用,最后DNS请求统一通过路由器进行转发,为终端提供192.168.x.1的DNS服务器。这样的配置在路由器的原生系统上并没有什么不妥,但是在OpenWrt上就会出现以下情况:

1、当我把dns设置在interface wan的时候,DNS请求看起来会随机发往两个DNS服务器的其中一个,或总是发往相应更快的那个。于是总是ISP的DNS解析我的请求。

2、当我把dns设置在interface lan的时候,DNS转发的行为与配置在wan上时一致

3、当我把dns配置在dhcp配置文件的Dnsmasq区域时,不管是否禁用自动查询resolv.conf.auto文件,DNS转发的行为与配置在wan上时一致

4、当我把dns配置在interface wan,且启用自动查询resolv.conf.auto文件,且配置严格按照resolv顺序查询后,DNS请求如我所愿按顺序发到了第一行的114DNS

5、我猜测,如果把dns配置在interface lan,其他配置按照上一条进行,也可以满足需求

那么问题来了:

1、如果我希望使用dhcp配置文件的Dnsmasq区域负责DNS配置时,要如何才能实现顺序解析

2、为什么一个集成化的路由器系统可以在wan、lan和dnsmasq上分别配置dns服务器

3、option serverlist server两种配置究竟有什么鬼区别

DD-WRT 低端配置一路指西

一般来说没什么特别需求的人还是别用这类的奇怪固件了,原厂的都够用 由于 Buffalo 的路由器都是用的 DD-WRT 的定制固件,我被研究了一下这东西

很多人刚刷完 DD-WRT 之后发现无线信号比原厂固件差很多,那么我们应该研究一下这些设置
事先定义:我使用的设备是 Atheros 平台的渣渣产品,设置界面与 broadcom 芯片的界面有显著区别
事先定义2:好些文档没看懂,一下分析可能都不对

Wireless Channel

古早时代 r18000 之前的版本可能会出现选择频道 11 导致发射功率低下的问题,如果你就打算在这种古老版本上吊死的话,需要注意这个设置 而对于目前的任何版本,选择 Any 即可

Regulatory Domain(管制区域)

DD-WRT 的文档中说这东西会影响 TX Power 与 Antenna Gain 之和的最大值,全球的各国、地区的管制功率最大的就是加拿大,达到了 36dBm ,这也是 DD-WRT 所能设置最大 dBm

TX Power(发射功率)

官网文档建议将这里设置为管制区域允许的最大值,但是这个地方的功率只是最大值,一般来说设备不会一直以这个功率进行发射,而且具体功率能达到多应该是也受到了设备的硬件限制,在管制区域限制的范围内多试一试或许可以找到一个比较好的值

Antenna Gain(天线增益)

很多人误解增大这里的值可以增加发射功率,但是根据 DD-WRTBuffalo 的文档,增大这个值可以『聚焦信号』
当这个值为 0 时,无线电的覆盖范围是一个球体,而增大这个值之后,无线电覆盖范围被纵向压扁、横向扩展为一个铁饼、铜锣烧、M&M豆的形状
这个设置对于普通人家是很有用的,因为一般人的房子都是一个横向大跨度、纵向三米的空间,一个压扁的覆盖范围恰好合适
Buffalo 的某些高功率系列设备可以提供 5dbi 的天线增益,需要这个设置的可以参考该值
注意,这个值与 TX Power 之和必须小于等于 Regulatory Domain 的限制

Buffalo 文档截图
antenna_gain

TX Antenna Chains 和 TX Antenna Chains

对于多天线的设备来说,正确的选择这两个选项才能真正实现与硬件相符的 MIMO 效果,具体设置需要根据不同设备进行测试,不过一般来说两个都选最全面的那个就差不多

观察是必须的

以上设置每做一步就应该在 Status – Wireless 里观察一下当前的 TX Power 和各个接入设备的信噪比,以确定操作对性能的具体影响

其他

以上是针对信号方面的设置,而对于 11n 的设置就比较简单了,Wireless Network Mode 设置为 NG-Mixed 或者 N-Only,Channel Width 设置为 Turbo(40MHz),而加密类型应选择 WPA2+AES 的形式


好好用你们的原厂固件,别瞎 Justin Bieber 折腾这些没用的东西,真正带来的效益是几乎看不到的

绝对是个人恩怨(笑)

今天 ArchLinux 的一个更新附带了 这个 说明
尝试更新,果然提示了包冲突

grep ‘^lib/’ /var/lib/pacman/local/*/files

查看可以发现引起这个问题的是 usbmuxd-git 这个包,于是我的怨念终于再次爆发了

各种桌面环境都有包依赖 upower ,而 upower 居然依赖 libimobiledevice ,而 libimobiledevice 依赖 usbmuxd ,而 libimobiledevice 和 usbmuxd 都还是一年多前的版本…

官方源中的 libimobiledevice 1.1.1-2 是 28.04.2011 版本第二次打包
libimobiledevice 1.0.7(stable) 在 22.03.2012 更新
官方源中的 1.1.1-2 (unstable) 随即被标记过时
官方源 2012-04-23 的更新居然只是重新给 1.0.7 打了第三个包

官方源中的 usbmuxd 1.0.7-2 是 2011-03-22 版本的第二次打包
usbmuxd 1.0.8 在 2012-04-07 发布
官方源中的 1.0.7-2 在 2012-04-14 被标记过时
官方源 2012-05-05 的更新居然只是重新给 1.0.7 打了第三个包

如果 libimobiledevice 不更新是因为版本号回滚太猎奇,那么后面在 08.04.2012 发布的 1.1.4(unstable) 怎么也不更新?
更何况 usbmuxd 的版本号是很明确的,为什么也不更新?


以下开始扯淡


于是只有一个解释

usbmuxd 在 12.01.2012 被 Nikias 从 Hector Martin 手中接管
一定是因为 archlinux 官方源维护 usbmuxd 的人是 Hector Martin 的好基友才永久的保留了他开发的最后一个版本,一定是这样的!

这绝对是个人恩怨(各种意义上)!

一般用户

什么?
你不能 PPPoE over wifi ?
你不能不能玩各种游戏?
你不能…

什么都不能,干嘛不去死

管你 sunpinyin 多强大,比不上搜狗就不行
管你 mplayer 多强大,随手装上就全有硬解吗,就能自动下载字幕吗
管你 GIMP 多强大,比 PS 方便吗
管你开源不开源,代码给我有鸟用
你有迅雷吗,你有 QQ 吗,你有人人桌面端吗,你有 iTunes 吗,你有 360 吗

一般用户是很现实的,人家不关心你这是不是朝阳产业,人家要的是蛋糕,至于奶怎么挤、面怎么磨, who fucking cares

那些掌握着技术的家伙非常适合开发那些用户看不到却很重要的东西,因为这些东西不需要在意用户的感受,也不用和用户商量。他们开始的时候也就是这样做的,估计就是这样养成了不关心用户体验的毛病
我们可以注意到,真正提供最佳用户体验的软件几乎没有开源社区搞出来的,要么是私有,要么是后开源


这时候很多人就要说了

有本事自己写一个

你会踢球吗?还不是照样天天骂国足?

其实对于最终用户来说,自由软件根本不自由,他们无法改变什么,就像面对封闭软件一样

为毛 Linux 总给人糟糕体验!?

之前某天 Archlinux 把 grub2 从 1.99 更新到了 2.00beta2 ,这个更新并不是来自 testing repo ,因此可以看作是足够稳定的版本。
在印象当中,更新过程没有给出任何在更新之后需要手动操作的提示,而重启之后我看到了几个 file not found 。虽然最终系统还是可以正确引导,但明显是有问题的,于是我开始解决这个问题。
简单的问题,直接运行 grub-install 重新复制相应的文件到 /boot/grub 就好了。然后重启发现之前手动配置的 framebuffer 分辨率失效了,取而代之的是默认配置时刺瞎狗眼的 640×480 分辨率。于是继续解决新出现的问题。
grub 使用 vbe 定义的分辨率模式,而 vbe 最后一个版本出现于 1998 年,显然这货几乎不支持任何宽屏分辨率。以前如果手动定义一个 vbe 没有的 1366×768 分辨率,它会自动匹配一个 1024×768 的分辨率,虽然不能点对点显示,但是至少在 Y 轴上科学了。然而 2.0beta 严格要求定义的分辨率必须是 vbe 所支持的,否则果断瞎你狗眼。
好了,换上一个还算科学的分辨率之后顺手看了一眼 grub2 的配置文件 /boot/grub/grub.cfg ,注意到这东西并没有使用已经被安装到当前目录的字体文件,而是与以前的版本一样使用了 /usr/share/grub/ 里相同的字体,虽然接着改也是可以的,但是不知道这样的配置用意如何,就先不去管它了。

话题再回到 framebuffer 分辨率。这个东西不仅影响 grub 那个命令行界面的显示效果,还会影响之后所有终端的显示状态(不是终端模拟器),那么它理应自动适配一个点对点的分辨率;即便不能自动适配,也应该支持我所使用的烂大街的分辨率;即使不支持这个分辨率,也应该在我配置这个分辨率时帮我选择一个替代的分辨率;如果突然觉得不想再帮我找到那个替代的分辨率,你 TM 就应该在安装的时候提示我!

问题就是在这里,不知道开发者是不是认为 Linux 的用户理应了解怎么这个系统是怎么运作的。作为用户,我不仅要给开发者擦屁股,还要面对擦不完的屁股,还要研究他们的消化系统是什么结构来预测下次拉屎是在什么时候,而且他们拉屎之前还不打算通知我…

用户体验是把用户当白痴一样的照顾,不是当白痴一样耍。

ArchLinux 不错的

装 ArchLinux 已经两个月了吧,说说感受

~~~~~~希望 Linux 可以和 Mac OSX 一样免调教的现在可以出门右转了~~~~~~

如果说 ubuntu 提供的是现成的家具, arch 就是宜家,对于很多人来说确实非常麻烦,但是对于有爱的来说就是很好的体验了。
由于结构相对简单,遇到任何问题都很容易找到原因,方便解决问题对于 Linux 这样一种必然会出问题的操作系统来说是非常重要的。

虽然没有好用的 GUI ,但是 arch 的包管理系统非常简单易用,尤其是在安装 yaourt 之后。官方的 stable repo 足够稳定,软件包也非常充足。
而由用户维护的 AUR 则可以方便的获取各种尚未进入官方 repo 的包,而且还能直接抓取源码编译安装,可以方便的跟进一个经常变化的软件(比如 fcitx 和 hotot)。
不管是追求稳定还是希望尝试新鲜事物,arch 都可以提供方便的条件。

对于我这个水平的用户来说,刚刚开始安装、调教的时候确实感觉 Arch 的 Keep It Simple, Stupid 很 stupid ,需要调教的部件实在太多了,配置好 arch 实在是很辛苦,但是一旦配置好就会比 ubuntu 这种系统稳定的多。
现在来说除了 linux 没有正经游戏、 emule 、 iTunes 之外, arch 已经可以完成各种任务了,当然考虑到 GIMP 、 audacity 这种标准的软件的“重功能、轻体验”的 linux 图形界面软件,这类的操作还是回到 windows 比较靠谱。

强力推荐 Hotot

Hotot 是一个 linux 平台的 twitter 客户端软件,基于 python 和 webkit 。
非常轻量化,目前的的大小只有 2mb 左右,但是可以提供非常全面的功能,如果认为功能不足,还可以使用扩展。同时,这家伙对 twip4 的支持非常完善。
目前这款客户端仍在测试的状态,还不是很稳定,但是已经可以胜任日常使用。

这个项目是由一位有爱的推友 @shellex 主导的。

更具体的介绍、截图可以看 Hotot 的 官网 和 google code 上的 项目页面
另外我在 这里 抢先提供一下 Hotot for amd64 的 deb 包,这个包随时都会更新

强烈推荐 ubuntu tweak 的清理 PPA 功能

ubuntu tweak 最新 0.5.5 加入了一个清理 PPA 的功能,这个功能不是简单的从软件源里删除一个 PPA ,而且附加了自动降级的功能

我之前多次吐槽过一个 PPA ,ppa:nvidia-vdpau/cutting-edge-multimedia ,这个倒霉的 PPA ,从来没靠谱过,源里的 mplayer 能用 vaapi 却不能用 vdpau , ffmpeg 安装之后各种使用相关库的软件找不到库,后来 VLC 全面悲剧,在后来导致 ubuntu 的媒体预览失效。然而,这个 PPA 相关包太多,依次降级简直是摧残生命。

终于 ubuntu tweak 清理 PPA 功能,自动降级,全面解决问题

同样,如果你对 ppa:telepathy/ppa 深恶痛绝,也来试试吧

最近的一些研究

上回说到有一个神奇的 PPA 提供支持 vaapi 的 mplayer ,但是最近这个源的一个更新导致源里的 VLC 和 mplayer 集体报销,一气之下自己 svn 了一个 mplayer ,目前用起来十分舒适,我主要说一下关于字幕的问题。

有些字幕在 mplayer 上播放的时候会出现 “too long” 的报错,这个时候就可以把字幕当作 ass 字幕进行处理,使用 -ass 参数进行播放,当然如果直接写进配置文件也可以,但是这样也有后遗症,字幕字体大小不受 mplayer 控制,而是按照字幕自身设置,结果就是某 cucn201 放出的 mkv 内嵌字幕显示超大,如果定义 0.5 倍大小,某 Halo: legend 外挂字幕又太小,所以这个参数还是按照需要添加好了

昨天折腾了一下 ubuntu 的字体,终于能按照自己的需要分别定义中文、英文字体了。去修改 /etc/fonts/conf.avail/69-language-selector-zh-cn.conf ,每个字体族只留需要的两个字体,第一个为英文,第二个为中文,重启。

因为 ubuntu 里面的通知区使用的是衬线体, google 的搜索结果也是衬线体,而中文的衬线体一般都很难看,所以这里就是设置的关键,我这里的衬线体用的是文泉驿正黑,这个字体内嵌还了点阵,优化小字体的显示效果




serif


DejaVu Serif
WenQuanYi Zen Hei




sans-serif


DejaVu Sans
WenQuanYi Micro Hei




monospace


DejaVu Sans Mono
WenQuanYi Micro Hei Mono


当然如果对其他非 zh-cn 字体有需求,还需要改其他的几个 69 文件

除此之外,还要选择合适的抗锯齿类型,在我这里 轻微(slight)的效果就很好

fx 也要挨个设置字体

效果图两张

4k 威武

今天从 delectate 同学的博客上下载了一个他从 youtube 下载的 4k 视频,下面是他播放时的效果:

因为很感兴趣,所以从youtube把视频下载了下来,没想到 4096 x 2304 (16:9)把我卡的啊……先是用mplayer file播放,默认xv输出器,直接崩溃,提示fatal error。使用mplayer -vo x11 file播放,卡死,彻彻底底卡死……x差点崩溃。强退后发现compiz,metacity已经崩溃了。 我用 vaapi 硬解码的 mplayer 播放了一下,果然可怕, CPU 占用率飙高,就算开了跳帧也严重卡,而且影音不同步,播放的时候看到 mplayer 也出现了各种问题,我贴出来各位参考一下:

$ mplayer '/home/wheat0r/下载/Life_in_the_Garden_4k_resolution.mp4' -framedrop
MPlayer SVN-r31303-4.4.3 (C) 2000-2010 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing /home/wheat0r/下载/Life_in_the_Garden_4k_resolution.mp4.
libavformat file format detected.
[lavf] stream 0: audio (aac), -aid 0, -alang und
[lavf] stream 1: video (h264), -vid 0
VIDEO:  [H264]  4096x2304  24bpp  23.976 fps  6445.1 kbps (786.8 kbyte/s)
Clip info:
major_brand: mp42
minor_version: 0
compatible_brands: isomavc1mp42
libva: libva version 0.31.0-sds6
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/va/drivers/nvidia_drv_video.so
libva: va_openDriver() returns 0
Couldn't open video filter 'ass'.
ASS: cannot add video filter
[ass] Init

[ass] Updating font cache

Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
[VD_FFMPEG] VA API accelerated codec.

Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)

==========================================================================
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
AUDIO: 48000 Hz, 2 ch, s16le, 119.2 kbit/7.76% (ratio: 14897->192000)

Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))

AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
Unsupported PixelFormat 61
[VD_FFMPEG] Trying pixfmt=1.
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [vaapi] 4096x2304 => 4096x2304 H.264 VA-API Acceleration  [zoom]
[ASPECT] Warning: No suitable new res found!
[vo_vaapi] Using 1:1 VA surface mapping
[vo_vaapi] vaCreateContext(): resolution not supported
FATAL: Cannot initialize video driver.
Unsupported PixelFormat 61
[VD_FFMPEG] Trying pixfmt=0.
Unsupported PixelFormat 61
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
Try appending the scale filter to your filter list,
e.g. -vf spp,scale instead of -vf spp.
[VD_FFMPEG] Trying pixfmt=2.
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [vaapi] 4096x2304 => 4096x2304 Planar YV12  [zoom]
[ASPECT] Warning: No suitable new res found!
A:   3.0 V:   0.4 A-V:  2.628 ct:  0.021   0/  0 ??% ??% ??,?% 50 0

**** Your system is too SLOW to play this!  ****

Possible reasons, problems, workarounds:
- Most common: broken/buggy audio driver
- Try -ao sdl or use the OSS emulation of ALSA.
- Experiment with different values for -autosync, 30 is a good start.
- Slow video output
- Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU
- Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,
e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
- Broken file
- Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)
- Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?
- Try -nocache.
Read DOCS/HTML/en/video.html for tuning/speedup tips.
If none of this helps you, read DOCS/HTML/en/bugreports.html.

A:  16.8 V:  16.7 A-V:  0.105 ct:  0.021   0/  0 77% 25%  0.8% 262 0
Exiting... (Quit)