'Arch' Tag

  • 轻量级本地/局域网DNS缓冲:DNSMASQ

    March 30, 2010

    这次折腾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缓冲有这么大影响,不知道会不会跟最近国内的网络环境有关。

  • Acer Aspire 4736ZG 本本上安家Linux的小问题

    September 27, 2009

    早天在新蛋上入手了Acer Aspire 4736ZG本本一台,T4200、1G、NV105M、250G,带蓝牙摄像头等,3600,还送了一台水星无线路由。低端本本为了降低成本,很多都是不装Windows的,这款也是,本来以为原装系统都是Linux,应该对Linux兼容不错的啦,那天到提货点验本本时候,运行一看,傻了,那个什么Linpus,2.6.15的内核,没带X,lshw没有,lspci没有,hwinfo更没有,总之就没什么东西好看的,除了黑漆漆的画面告诉我屏幕没坏点,就匆匆打上包回来了。 第一件事就是用Arch 09.08的Live CD启动重新分区,顺便装好core,但是启动后又傻了,连不上有线网卡……这款机器的网卡是Atheros AR8132的千兆卡,不知道是太新还是太罕见。几经折腾后发现规律:完全关机重开后,Arch就能认到网卡,ipconfig -a能看到eth0,但是ifconfig eth0 up了之后,是这个样子的: eth0 Link encap:Ethernet HWaddr 00:26:18:80:C5:AB UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4294967293 errors:4294967278 dropped:4294967290 overruns:4294967293 frame:4294967281 TX packets:4294967293 errors:4294967284 dropped:0 overruns:4294967293 carrier:4294967291 collisions:4294967281 txqueuelen:1000 RX bytes:4294967293 (4095.9 Mb) TX bytes:4294967293 (4095.9 Mb) Interrupt:28 大堆奇怪的数字,这时候不管dhcp还是手动指定IP,都没法正常工作的,如果这时重启,好,完全认不了网卡了,又要完全关机再开一次。 这个问题在Arch论坛上面也有人碰到,他的是华硕eeePC 1005HA,也是上个月的帖子。[详细情况帖子里面比较完备,但是,未解决] 于是我就转战Ubuntu。Ubuntu 9.04的Live CD版本也是没能驱动好这块网卡的,但是这里找到解决方法,总之就是到Atheros官网下载网卡的驱动,编译,挂载驱动模块,幸好Ubuntu的Live CD跟初始系统都带了GCC和Make utils,编译安装过程倒没什么波折,很快就折腾好连上网了。呃,怎么这么简单?于是试试在台式机的Arch上面编译了这个atl1c.ko,哇,一开始就一屏幕的错误……后来发现这个是这个驱动跟内核兼容问题,Ubuntu好像专门有补丁搞定的,Ubuntu 9.04把内核升级到2.6.28.15-generic网卡就完全正常了,也顺便下载了9.10的Live CD,直接iso启动,发现虽然是31内核,但是网卡工作也正常……好吧……看来要么等kernel彻底搞定这块网卡的驱动,不然只能自己找Ubuntu的patch来编译才能跑Arch了…… Ubuntu很是省心,挂上受限驱动什么3D特效全都出来了,跑了下glxgears,大概2600fps,比台式机的集显好一点吧……7025只有1300左右的fps;更新了一下系统,用Ubuntu [...]

  • 完成一个LCD4Linux的USB屏幕

    September 6, 2009

    暑假之前就注意了LCD4Linux这个Project,简单说,这就是个硬件版conky的驱动服务,用户自己DIY各式各样的硬件屏幕,自己编写驱动、编写各种插件来控制输出到屏幕上的信息,LCD4Linux就是这样一个平台,也是一个geek味道非常浓郁的、可玩性相当高的一个Project。 图片里面是LCD4Linux项目页里面收集的部分人实现的一些屏幕,有像我这样一块小小的1602,也有用块10多寸的液晶屏作成很拉风的监控屏,甚至,挂一个户外广告那样的LED阵列,你也可以转换成VGA信号输出给大屏幕的电视机,或者弄个天线发射出外太空都是可能的…… 这个项目的可玩性就在于硬件的多样性,很可能每个人实现的屏幕都不一样,而作为开源项目,geek们只需或多或少地修改一下别人的驱动就可让屏幕跑起来了。 我实现的这块,是用了一块通用AVR单片机,通过USB接口直接取电和传输的数据的架构,硬件和协议参考的是LCD2USB项目。其原来用的是atmega8芯片,而我手边只有atmega48,算是类似吧,但换换IO口还是在所难免的。 实现一个系统,同时也藉此了解一下相关的技术(不然还真的很难做得出来),首先是USB,USB我们天天在用,但是学校的《微机接口》之类的课程可从来不涉及这些“时髦”技术的,虽然USB已经流行了10多年了。通过V-USB库,在AVR单片机上实现USB设备还真没什么难度,只需要填写设备ID设备名称之类的,然后再实现协议处理函数就完了,在Linux下使用是直接支持,一插上运行lsusb就能认出(Win下需要另外装驱动)。我第一个实验USB就是接了几个二极管开关,用libusb的python binding, pyusb,很容易就控制几个灯。(想起The Big Bang Theory S1E9开头那一段,再import个SimpleHTTPServer,然后让单片机连接几个继电器,就能像他们那样让别人用浏览器来开关我的台灯了,哈!) 其实单纯几个LED都能够作为LCD4Linux的一个设备了,比如能够用来做邮件提醒、pidgin消息之类。同样是用V-USB,有个德国人做了个叫USB-LED-Fader的东东,同样是几个LED,人家可实现了每个灯在pwm控制下以独立的方式闪亮,要知道,atmega8只有两个pwm channel,而USB-LED-Fader里面没有用硬件pwm,而是用io口来输出的,为了实现独立波形,还实现了一个message queue,俨然一个操作系统了……所以他的固件编译出来4K多,即使我修改后也刷不进去mega48里面,就没得看看他的效果了。不过赞一下的是,这个项目虽然是玩具级别的,但是人家的电路、电路板、固件代码(注释)、文档、上位机控制(包括win版、win驱动)通通一应俱全,非常规范和详细,俨然一个商业项目。 将USB模块跟显示屏驱动模块合起来并没什么难度,几个月前我自己写过这个1602的驱动程序,虽然当时花了好几天,但实际上都只是很简单的几个函数。不过这次,因为接上USB后这块28针的mega48就没那么多io给我挥霍了,此前的驱动用的都是8位数据线,现在只能用4位,分两次传送。不过还好,这类HD44780的驱动几乎满地都是,一般外国人写的不像国内一些网站上面的,扔几个函数在那里就完事,LCD2USB的代码里面用的是Peter Fleury的LCD Library,封装得很漂亮,不过原来的代码只能讲4位数据线连接在一组io口的高四位上,而接上外置晶振后的mega48仅剩的带高位PortD,刚好又是几个pwm波输出,我打算另外再扩展协议让LCD2USB带有几个漂亮的提示灯,就重写了一下LCD的两个底层函数,当然不是仅仅重写,不然对不起原来那些漂亮的代码,用了宏定义来设置数据线是接在HIGHER_BIT or LOWER_BIT。 其实相比之下,LCD4Linux最精彩的地方在于它的驱动、插件的编写,新版里面其也支持了Python,意味着做个硬件版twitter器不是什么难事了!不过LCD4Linux本身的安装让我困扰了一天,大概作者没有时间吧,这个项目的主代码很几年没更新了,一个版本更新的跨幅有好几年,以致稍旧点的版本在新版本的内核里面编译不了,比如有个rdtscl的宏调用,在新内核里面被移除了……这个问题在LCD4Linux的SVN里面的版本倒是解决了,但是因为autotool的更新,编译过程又出错,折腾了半天,发现原来autoconf检查python的模块ac_python_devel 因为莫名的原因会让configure文件出错,下载一个新版的ax_python_devel.m4覆盖掉就好了。另外发现AUR里面的lcd4linux-svn包是“弃婴”,于是“收养”了回来更新,添加了个编译的patch,现在Archer们直接yaourt lcd4linux就可以编译安装了,O.O . 还是一句,LCD4Linux的可玩性非常高,说技术性嘛,不算高也不算低吧,召唤大家一起玩一起交流哈……

  • Arch笔记之:U盘中文乱码

    June 1, 2009

    似乎装了HAL的Arch就能自动挂在U盘了,然而U盘目录里面的中文文件全部是???,很明显是编码问题。我用的是en_US环境,不知道有没有关系。 网上不少说法是修改/etc/udev/rules.d/里面的挂载规则,抄了别人的脚本试了下,很不完善,删掉。 本来就能自动挂载了,只是编码问题而已,应该不用改rules吧!重新以编码问题搜索,终于看到解决方案: 运行gconf-editor(类似Win的注册表编辑器的东东,没有就装上),在System->Storage->vfat的mount_options里面添加一条“iocharset=utf8”,好,大功告成!

Page optimized by WP Minify WordPress Plugin

 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org