黑莓系统5.0以上系统在没有购买使用黑莓网络服务的手机上的断网现象一直比较恼人。几个月前有人做出了“黑莓续断膏”,原理是自架一台服务器,程序模拟MDS服务的简单回应,可以忽悠手机继续在线。 5.0系统断网自动修复程序黑莓断续膏(AntiBrokenNet!) BrokenNetFixup断网修复工具 区别是前者后台自动修复,后者要手动运行修复。 从网友的留言看出,虽然软件虽然有效,但没有稳定的服务器,软件刚出现时候确实有一批地址提供了服务,但很快就失效了。北京小C这里提供了模拟MDS服务器的程序,是VC写的一个小UDP服务器,虽然原理很简单,但用一台Windows的服务器来跑成本太高了,当然很难稳定提供。 其实服务只是很简单的几行代码,稍微改了一下就可以在Linux下面运行。一台低端Linux VPS的费用大概一年200RMB,这个费用对大多数人来说都不是什么问题的,所以推荐想要稳定防断网服务器的人去弄一台,一台可以很多人共享了。VPS侦探 、Lowendbox上有很多这样的推荐。 Linux版本的MDS服务器代码在Google Code上,可以直接下载。 在服务器(Debian/Ubuntu系统)上编译并运行: 1 2 3 4 5 sudo apt-get install build-essential wget http://ptcoding.googlecode.com/svn/trunk/mds_server.c gcc -Wall -o mds_server mds_server.c sudo cp mds_server /usr/local/bin/ /usr/local/bin/mds_server 现在可以设置手机的续断软件使用这个服务器来连接断网测试了,手机连接的时候,会实时打印出手机的连接信息跟PIN码。 当然最好把程序加入系统自动启动: sudo touch /var/log/mds_server.log sudo chown nobody /var/log/mds_server.log sudo sed -i '/^exit 0/isu nobody -c "nohup /usr/local/bin/mds_server >>/var/log/mds_server.log &"' /etc/rc.local 这样程序会在系统启动后自动在后台运行,运行的LOG会记录在/var/log/mds_server.log文件当中。 下面也无偿提供一枚MDS服务器,就是跑在我的Linux服务器上的。 [...]
作为秘籍,本文包含折腾Xen所必须了解,但是在一般能找到的教程里面都没提及的资料。这里不包含一些必须的步骤等,所以很可能你需要先浏览这些资料,并让浏览器同时开着这些页面随时查阅: DebianWiki Xen DebianWiki DebianInstaller/Xen XenWiki HowTos Ubuntu Doc/Xen Ubuntu 9.04上的XEN虚拟服务器(一) 安装XEN (二) 安装虚拟机 在 Debian 上安装和配置 Xen 一:Xen工具及其关系 《在 Debian 上安装和配置 Xen》一文把在Debian上安装Xen简化成一道命令: On Debian Lenny 5.0 : apt-get install xen-hypervisor-3.2-1-amd64 xen-linux-system-2.6.26-2-xen-amd64 xen-utils-3.2-1 xenstore-utils xenwatch xen-shell xen-tools On Debian Squeeze 6.0 apt-get install xen-linux-system xen-hypervisor xen-utils xen-tools xen-hypervisor主要只有一个文件:/boot/xen-3.2-1-amd64.gz,就是宿主内核; xen-linux-system则是打了Xen补丁的Linux内核,这个内核脱离hypervisor是无法启动的,只适用于虚拟机;dom0对hypervisor来说也是虚拟机之一,domU也可以直接用这个内核启动。 xen-utils则是运行在Dom0上的程序,比如xend、xm,作用是跟hypervisor通讯,是主要由Python编写的一系列程序。 xen-tools是如xen-create-image的一系列工具,作为xm工具的前端,用以管理安装虚拟机;这是一套perl脚本,也有很灵活扩展性。 xen-shell是一个交互式的shell,常见用于VPS服务商提供给用户的操作界面,用户根据几个封装好的命令控制虚拟机如重启等工作。(Debian 6.0 下没有了。) xenstore-utils、 [...]
我的U盘是跟钥匙系一起的,最近两次因为U盘插在公司机器上下班后忘了拿,结果回家后在门口游荡,郁闷的等室友回来才有家门进,于是要做这么个东西,关机前检测到没拔U盘,要猛叫猛叫。 原理倒是不复杂,研究了下,检测U盘可以读取/proc/bus/usb/devices,如果主机上插有U盘,会出现Driver=usb-storage这一行的。 *Update: * /proc/bus/usb/devices只有在挂载了usbfs才有; usbutils工具里面除了lsusb,还提供了usb-devices工具,列出内容跟/proc/bus/usb/devices是一样的, 更适合。 然后是关机脚本的运行。Linux关机时候会执行level 0的init脚本,比如对于Debian/Ubuntu,就是/etc/rc0.d下的文件,我工作机跑的是Archlinux,专门为用户自定命令提供了/etc/rc.local.shutdown文件,作为/etc/rc.shutdown的hook,前者不会因为initscripts包的升级安装被覆盖。 至于让主机会叫,当然是主机喇叭了,这里可没有外放音箱。查了下发现beep这个程序,安装后发现功能还不少,可以定制beep的音调,时长等,可玩性很高。于是先找了音谱频率对照表,按把美剧《24小时》里面CTU内常用的电话铃声谱了出来,大概是EEGC 或者 EEC^C的样子,不过因为主板蜂鸣器的结构区别,通常不同频率的音量有些不同。 另外当然也应该有点视觉提示啦,在init script里面,终端支持的东西多着呢,按终端颜色代码,让终端打印红色加粗闪烁体,足够显眼了。 最终效果是这样的: 1 2 3 4 5 6 7 8 9 10 #!/bin/bash # # /etc/rc.local.shutdown: Local shutdown script. # while [[ `usb-devices | grep usb-storage` ]]; do echo -e "\033[31;1;5m!!!!!! Unplug Your USB Driver or I'll Keep SCREAMING !!!!!!! \033[0m" [...]
整系统的备份,应该很多人会想起Ghost,其实开源界有其相应的实现,比如CloneZilla、Partimage,或者原始点的dd,对备份Linux来说,这些Linux原生的工具显然要比需要DOS/WinPE环境的Ghost要更加“原汁原味”,而且开源版的工具功能一点也不少,一样可以网络传输等,而且支持多种格式(或者说格式无关,dd),不过本文关注的,是一个更加原始的方法,tar。 tar的历史都好几十年了,它的用法没有改变,而且相信未来很几十年内都不会变,而且作为一个日常常用的压缩解压工具,很多人都可以对它自如控制。其实,tar是很好的系统备份/迁移工具,它抽象于文件系统,不管是从ext迁移到reiserfs,从普通文件系统到LVM,还是到RAID,比起上述的那些影像工具,tar可以说是最胜任的迁移工具。 其实Ubuntu的社区文档BackupYourSystem/TAR有详细的解析和介绍,我在这里抄录一些重点,不做过多解释,看命令: 创建备份: cd / tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --exclude=/lost+found --exclude=/proc/* --exclude=/sys/* --exclude=/mnt/* --exclude=/media/* --exclude=/dev/* / 恢复备份: tar -xvpzf /home/test/backup.tar.gz -C / 通过网络接收备份并恢复: nc -l -p 1024 | tar -xvpjf - -C /mnt/disk 或者:(这个就不用nc了,也就不需要下面那行,但是要开sshd) ssh user@host cat backfile.tar.gz |tar -xvpzf - -C /mnt/disk 通过网络发送备份: cat backup.tar.gz | nc -q 0 192.168.1.x 1024 通过网络发送备份成文件等,按需自由配置。 【这里用的nc是netcat工具,提供稳定的后台网络连接;另外archlinux下默认安装的gnu-netcat不支持-q参数,意为管道传输完后退出,一般在发送方配置,如果省了,可以人工Ctrl+C结束之】 [...]
笔记本上Synaptics的触摸板比较常见,但关于其配置的资料目前来看比较混乱,主要原因是这两年来桌面环境的变化比较大,搜索出来的结果是不同时期的人的解决办法,往往五花八门让人无所适从,如果想完全控制触摸板,可能需要了解以下的事情: 触摸板是输入设备,首先需要Xorg的支持,所以/etc/X11/xorg.conf里面会有synaptics的配置; 大约08年开始,X11依赖hal来挂载硬件驱动,hal读取/etc/hal/fdi/policy里面的配置,所以会有写hal的配置文件的配置方法; 10年3月,Xorg发布了1.8.0版,不再依赖hal而实现动态加载驱动,依然使用xorg.conf配置驱动参数,还新引入/etc/X11/xorg.conf.d目录里面的配置文件; Xorg的synaptics驱动带有一个配置程序,synclient可对驱动参数动态设置; 各个桌面环境,如Gnome、KDE默认自带了不同程度对触摸板设置的支持; gsynaptics设置程序提供比桌面环境自带的多一些的设置选项,但是这个项目即将面临被荒废;Gnome有个子项目GPointingDeviceSettings,跟gsynaptics功能基本一致但还未被收录到Gnome桌面的默认组件。 在网上搜到的资料,包括各大发行版的Wiki,一般都只会覆盖以上其中一两点的配置描述,而且很多都过时。 从上面这些很“历史性”的事情可以概括出的事实: 使用xorg.conf、synclient来配置触摸板最具体的参数,这点是不会变的; HAL作为一个过渡性组件,对其配置的意义不太大; Gnome等桌面环境启动后会重新设定一些参数,可能会重载xorg.conf的设置参数; gsynaptics提供了一个常驻进程,在进入桌面时候启动,它的配置参数记录在gconf,只要其进程在运行,就会重载所有触摸板的配置参数; 没有一个图形界面的设置工具能提供所有的触摸板高级特性特性设置支持。 下面列举一些触摸板的高级特性: 四边角按钮 触摸板被分布成类似九宫格的区域,除了中间的矩形区域面积较大,四个边角可以设置为一个按钮,比如最常用就是点击右下角就相当于右键,左上角为中键(个人 喜好)。 涉及参数:(2为右键,3为中键) RTCornerButton=2 RBCornerButton=0 LTCornerButton=3 LBCornerButton=0 多点触摸 如果是硬件原生支持多点触摸的,在Gnome的触摸板设置内能够直接打开双指滚动的选项; 模拟多点触摸 非多点触摸的触摸板也可以实现双指滚动,它通过触摸板的感应宽度来判断,即两指的在触摸板的跨度比单指大;但是这需要设置驱动参数: EmulateTwoFingerMinZ=50 #模拟双指感应压力 EmulateTwoFingerMinW=6 #模拟双指感应跨度 VertTwoFingerScroll=1 #使用双指垂直滚动 HorizTwoFingerScroll=1 #使用双指水平滚动 VertScrollDelta=75 #垂直滚动速度 HorizScrollDelta=100 #水平滚动速度 这些参数很可能需要用户自己调试出最适合的组合(如何设置调试请看本文后介绍),以上数值仅供参考。 多指按键 即在触摸板任意地方多指同敲就是相当于某击键,涉及参数: TapButton1=1 #一指,左键,默认 TapButton2=3 #两指,右键; TapButton3=0 #三指,仅适合硬件支持多触点的触摸板,否则没法感应三指同 圆周滚动 即可在某个边沿(通常右)开始手指在触摸板按顺时/逆时针圆周划动,即产生鼠标滚轮滚动作用,通常效率比仅仅使用右侧划动区上下滚动高,特别浏览长网页时(本设置在gsynaptics/GPointingDeviceSettings里面可以直观地设置)。涉及参数: CircularScrolling=1 #打开圆周滚动 CircScrollTrigger=3 #右边沿,除了0代表任意边沿,1~8分别代表从顶开始顺时针的九宫格外围8个位置。 想使用这些高级特征,一个方法是就像多数搜索出来的资料,修改xorg.conf,但如前文说会有弊端,被桌面环境重载,所以我们最好还是使用synaptics驱动自带的小工具synclient。synclient接受k=v的参数,而实时修改X11对触摸板的驱动,也很方便调试,就是运行synclient [...]
最近随着chatroulette、tinychat等的Flash P2P视频应用的普及,突然想念起以前Win下softcam之类的软件,Google了一圈找到个AVLD,Another Video Loopback Device。[请翻墙] AVLD是作为内核模块起作用的,挂载avld,就会生成/dev/videoX,于是Flash、Pidgin、Skype(貌似不行)就能打开这个设备作为摄像头;而AVLD的输入则是对/dev/videoX文件的写入,可以用mencoder、ffmpeg之类的工具把其他视频流转换特定格式后写到/dev/videoX,这就完成整个“虚拟”的过程了。 我在Archlinux下用yaourt从AUR里面安装avld,很快很方便,下面一些例子命令: #把自己加入video组,方便以后写video设备 sudo gpasswd -a boypt video #挂载avld模块 sudo modprobe avld #查看video设备,我的本本自带的摄像头是video0,虚拟的为video1 ls -l /dev/video* #设置虚拟摄像头的分辨率等参数,后面输入的视频必须跟这参数一致,否则会报错,报错信息运行dmesg|tail查看 echo "width=320 height=240 fps=25" > /dev/video0 #用mencoder给虚拟摄像头写入数据 #其中-vf的scale参数设置输出的分辨率,format设置视频颜色参数; #读取端的颜色参数需要跟这里一致画面才正常 #-ss参数可以设置视频从某时间开始播放 mencoder "myvideofile.avi" -cache 8192 -nosound -ovc raw -vf scale=320:240,format=rgb24 -of rawvideo -o /dev/video1 -ss 0:5:0 #从另外的终端运行mplayer查看输出 mplayer tv:// [...]
这次折腾Arch,因为觉得2009.8的包都太旧了,就完全使用了网络安装。网络环境是静态IP,安装前用ifconfig、route、resolve.conf这些配置好,再运行安装程序。网络速度并不慢,使用163的源,下载都有几百K,但是看着pacman,每个包开始前都在那里挂上10来秒,觉得很不妥,有些包很小,下载过程才1秒,但要等这么久才下载,为何呢? 趁着装包,我换到另外的tty测试,比如wget g.cn,因为最近这个域名会被先转到google.cn,再转到google.com.hk,所以看着wget,每次解释域名就得等待10来秒。用w3m打开网站,也一样,在Open socket那里挂着好几秒才开。我用的是google提供的DNS 8.8.8.8,速度不至于这么慢吧,nslookup g.cn,速度很快,一秒钟内就返回了,换了几个DNS,包括本地电信的,OpenDNS的,效果都一样;又怀疑跟IPv6模块有关,跑了v6发现不通才走v4,往modprobe.conf里面禁用了ipv6模块,故障依然。 最后试着做本地的DNS Cache,安装了dnsmasq,没做什么配置,直接启动/etc/rc.d/dnsmasq start,然后resolve.conf里面写nameserver 127.0.0.1,wget马上变得迅速起来了,再看pacman,全都正常。 清空dnsmasq的缓存可给它发送个SIGHUP,如sudo killall -s SIGHUP dnsmasq。(国内的DNS常常收到GFW污染,缓冲了受污染的DNS记录,出现用vpn连出去后上不了某些网站的情况) 以前没留意过本地DNS缓冲有这么大影响,不知道会不会跟最近国内的网络环境有关。
Python 2.6新增的multiprocessing,即多进程,给子进程代码调试有点困难,比如python自带的pdb如果直接在子进程代码里面启动会抛出一堆异常,原因是子进程的stdin/out/err等文件都已关闭,pdb无法调用。据闻winpdb、Wing IDE的调试器能够支持这样的远程调试,但似乎过于重量级(好吧前者比后者要轻多了,但一样要wxPython的环境,再说pdb的灵活可靠它们难以比拟)。 其实只需稍作改动即可用pdb继续调试子进程的代码,思路来自这个博客:子进程的stdin/out/err关闭了,那可以自己重新按/dev/stdout的名称打开来用。当然这指*nix下,win下要麻烦一些,后面再说。 pdb支持自定义输出输入的文件,我再稍作改动,使用fifo管道(Named Pipe)来完成pdb的输出输入的重定向,这样的好处是,可以同时对父子进程调试! multiproces_debug.py 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/python import multiprocessing import pdb def child_process(): print "Child-Process" pdb.Pdb(stdin=open('p_in', 'r+'), stdout=open('p_out', 'w+')).set_trace() var = "debug me!" def main_process(): print "Parent-Process" p = multiprocessing.Process(target = [...]
Page optimized by WP Minify WordPress Plugin