作为秘籍,本文包含折腾Xen所必须了解,但是在一般能找到的教程里面都没提及的资料。这里不包含一些必须的步骤等,所以很可能你需要先浏览这些资料,并让浏览器同时开着这些页面随时查阅: DebianWiki Xen DebianWiki DebianInstaller/Xen XenWiki HowTos Ubuntu Doc/Xen Ubuntu 9.04上的XEN虚拟服务器(一) 安装XEN、(二) 安装虚拟机 在 Debian 上安装和配置 Xen 一:Xen工具及其关系 《在 Debian 上安装和配置 Xen》一文把在Debian上安装Xen简化成一道命令: 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 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服务商提供给用户的操作界面,用户根据几个封装好的命令控制虚拟机如重启等工作。 xenstore-utils、 xenwatch分别是虚拟机间数据共享和虚拟机监控的工具,不是必要组建,可不安装。 二: Dom0的启动 grub2跟xen dom0目前关系不怎么所以如果你用grub2启动遇到挂掉xen启动不起来之类的,换回grub-legacy吧。 装完xen-hypervisor后可以打开/boot/grub/menu.lst看看,第一个选项应该是Xen 3.2-1-amd64之类的,看他的启动参数,是先加载Xen内核/xen-3.2-1-amd64.gz,再按模块挂在Linux内核;如果没有出现,需要运行update-grub。有这个后就可以放心重启了。 /boot/grub/menu.lst文件里面有这么一行配置: 1 2 ## Xen hypervisor options to use [...]
1 2 3 4 5 6 #!/usr/bin/env xdg-open [Desktop Entry] Type=Application Exec=gnome-control-center Name=gnome_con 把上面的内容保存为/usr/share/gdm/autostart/LoginWindow/gnome_con.desktop,注销登出,在GDM画面时自然出现了gnome-control-center的配置窗口,在外观(apprerance)里面可以配置GMD的壁纸、图标主题,电源管理(Power Managerment)可以设置本本的屏幕背光、触摸板鼠标等等等等,跟一般Gnome配置无异。 完成后重新登录,删除上述保存的文件,即可。Ubuntu 10.04, Fedora 12等一大堆跟进了Gnome 2.28以上的发行版都可以这么配置。 关于GDM还有一些较高级的配置可见 Simple Greeter的开发文档 ,需要配置gconf内的选项,可按上述方法,仅把Exec一项改为Exec=gconf-editor;也可使用su -c,用gconftool-2工具设置文档里面提到的键值具体可参看 ArchLinux Wiki Gnome 2.28 Changes 。
黑莓8700支持EDGE网络,用来做GPRS Modem是相当理想的,标准的mini usb接口,蓝牙2.0,完全足够EDGE的网络速度; 本来以为用蓝牙连接会很简单,在blueman里面连接即可,可是实际上,不行: Failed: Modem Manager did not support the connection 之前用blueman连接Nokia的机,是没问题的,看来黑莓的Modem协议有点不同……Google了一下,找到了不少BB在Linux下的资料:How use BlackBerry device with Linux【介绍了Linux对黑莓的配置、同步、安装软件、Modem、Java开发】how to teather blackberry and linux via bluetooth【连BB蓝牙的完整过程,试验不成功】Berry4all 通过USB连接BB Modem的专用程序 测试Berry4all终于能够连接上BB的GPRS,观察Berry4all其实也是建立了串口通信后,使用pppd的协议来建立数据链接的,要连接cmnet,还得修改其conf下的att-chat,即其中的“拨号”协议; blueman虽然不能建立Modem链接,但是还是能够建立起/dev/rfcomm0,即通过蓝牙的串口链接;使用蓝牙教程,基本上都是使用hcitool等工具来配置的,使用起来真的好不方便,而blueman不是刚好帮忙搞定了蓝牙的配对连接等麻烦事情么…… 于是把Berry4all的conf目录的att跟att-chat文件复制到/etc/ppp/peers,参照别的教程的配置,修改att,在开始115200那行前,加入nodetach跟/dev/rfcomm0两行,最后的connect调用chat文件的路径改成connect "/usr/sbin/chat -f /etc/ppp/peers/att-chat",att-chat里面修改一行:OK 'AT+CGDCONT=1,"IP","cmnet"' ,最后运行sudo pppd call att,终于用蓝牙连上了GPRS; 其实使用ppp连接modem的方法是最传统的,也是高度可定制(如连接后配置路由表、IP、DNS),不管是用Cable、USB、蓝牙还是红外,都可以这样完成,Of Linux, GPRS Phones, Serial Cable, Irda, Bluetooth and USB文章里面列举了好多这些例子;我修改了其中的三个脚本:gprs, gprs-connect-chat, gprs-disconnect-chat替代了上面Berry4all的att脚本,因为这脚本里面的注释非常详细,以防以后需要的调整; 这是我打包了修改好后(适用于移动CMNET上网的)gprs脚本,使用blueman连接了rfcomm0后,运行sudo pppd call gprs,就能连接上GPRS,ifconfig查看出现一个ppp0,可以直接上网了; 如果不使用blueman,完全使用bluez的工具的话,可以参照Blackberry [...]
早天在新蛋上入手了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 [...]
Ubuntu 9.04一个特性就是新的通知机制Notify OSD,让人一眼看上去很酷的样子,其实只是基于libnotify的调用,别看又DBUS又OSD那么复杂,其实一点都不神秘,跟PT来: 1 2 3 4 5 6 7 8 #!/usr/bin/python #coding:utf-8 import pynotify pynotify.init ("PT-Title") n = pynotify.Notification ("PT的贺电", "PT再次发来贺电") n.show () 没看错,就是这么几句Python,保存成文件运行试试: 哈哈,很简单吧! 如果你安装了libnotify-bin包,shell里面会有notify-send这个工具: notify-send "PT的贺电" "PT发来贺电" 差不多的效果,我就不抓图了,自己试试! 当然除了python,libnotify还能在很多种语言的库实现,我用aptitude search libnotify搜索了一下,很明显有libinotify-ruby,libnotify-dev,libnotifymm-dev分别是ruby、C、C++方式的绑定,不过,python的pynotify是Ubuntu 9.04里面默认安装的呢…… 详细的开发还是看看Ubuntu的Notification Development Guidelines吧,注意在后部分有很多example的噢!!!
Ubuntu Jaunty 9.04开始正式支持ext4文件系统,关于ext4,其优点应该早有听闻,对任何用户而言都具有难以拒绝的诱惑:对一般用户而言,有更好的磁盘性能,快速的预分配、删除,更可靠的日志,更迅速的磁盘检查(不会像ext3可能花几分钟来check,ext4经常是瞬间完成的)……更专业的描述可以看看IBM文库的这篇《Migrating to ext4》。 从Ubuntu 8.10升级到9.04,一定程度上是看上其对ext4的支持,不过如果为此重新格式化分区重装系统,对于使用积累较多的系统来说代价太高了点(PT现在用的系统是去年的8.04,后来升级8.10,再到现在的9.04……),不过根据《Migrating to ext4》的说法,从ext3到ext4的无损转换是可能的,而且并不耗时间,就如Kernel Wiki里面的Ext4 Howto提到转换所用的命令,其实也很简单: tune2fs -O extents,uninit_bg,dir_index /dev/DEVe2fsck -fD /dev/DEV 查了下tune2fs的man页,uninit_bg是支持快速check的特性,dir_index则是创建二叉树散列的目录查找,至于extents在man页没提到,Kernel Wiki里面说是ext4专有的特性,完成后用e2fsck check一次,这样就完成ext4的转换了,整个过程的耗时并不多。 不过这样转换出来的分区有点不完美的地方是,原本存放在分区内的文件结构还是ext3的结构,由ext4的机制透明兼容,以后存放的文件才是ext4的格式。本来影响不大的,不过相信会影响众多完美主义者的精神状态,所以很多人宁愿把文件全复制出来,格式化了分区再复回去。 IBM的文章内提到,因为ext4支持了在线的碎片整理,对于转换的ext4,使用e4defrag整理一遍,就是纯种的ext4了,不过到目前为止,e4defrag并未完全可用。不过相信不久的将来,转换到纯种ext4完全可以一气呵成的。 最近有谣言说/boot不能是ext4,不然grub引导不了。事实上Ubuntu 9.04已经完全支持ext4,不然此前怎么会有ext4系统的9.04 21秒引导系统的新闻?不过对于升级过来的9.04,安装在/boot/grub里面的程序还是旧版的,没有自动升级,因此可能出现引导问题,相信这也是谣言的出处,所以升级过来的同学要注意了。可以使用grub-install来重新安装一次grub的文件,就如《Upgrade Ubuntu 8.10 to Ubuntu 9.04 and ext3 to ext4 in 10 Minutes》那样。不过grub-install有点要注意,grub-install复制的文件是以/为起始位置的(特别是使用了--root-directory=DIR参数的),如果boot单独分区,同时在livecd里面单独挂载了出来,很可能新复制过去的文件会多了一层boot目录,变成新旧版的引导文件共存以致没法引导grub……(我也感觉我说得一塌糊涂了……总之boot独立分区的同学使用grub-install注意它究竟安装到什么地方去了,看看相应文件的修改时间)。 对于从ext3升级到ext4的系统,还有重要的一点就是fstab,完成上述的操作后,先运行blkid查看分区的新UUID,用编辑器打开/etc/fstab,替换转换了的分区的UUID,当然还有挂载类型改成ext4。
此前用wireshark嗅探研究过Sogou浏览器的代理功能,没什么头绪,有访客留言说用Process Explorer瞧瞧Sogou的进程,今天有空看了下,果然,有一个子进程是用-proxy参数启动的,打开了本地的8081和8082端口在监听,用其他浏览器连8081,发现就是普通的透明代理,而8082则是一个自动配置代理的PAC(Javascript)。 虽然现在我的Ubuntu下已经有了一堆翻墙用的代理软件(没边、门、eTunnel……),但经常速度不甚理想,而且学校校园网的电信出口经常被挤爆,而教育网出口是空的,所以使用Sogou提供的免费教育网代理是个不错的解决办法。 把Sogou弄到Ubuntu下的Wine环境没有任何难度,把Sogou的安装文件夹全部复制到~/.wine/drive_c/sogou下,运行的很正常: pentie@pentie-desktop:~$ wine "C:\sogou\SogouExplorer.exe" -proxy fixme:win:EnumDisplayDevicesW ((null),0,0x32f3c4,0x00000000), stub! fixme:wtsapi:WTSRegisterSessionNotification Stub 0x1002a 0x00000000 fixme:mountmgr:harddisk_ioctl unsupported ioctl 74080 fixme:mountmgr:harddisk_ioctl unsupported ioctl 2d1400 fixme:mountmgr:harddisk_ioctl unsupported ioctl 2d0c10 PID:8 PORT:8081 CPORT:8082 PAC:http://127.0.0.1:8082/proxy.pac?t=626 RET:SUCCESS 在配置Firefox的FoxyProxy,可以像平常那样添加127.0.0.1:8081作为代理,但既然提供了PAC,不妨试试:在Automatic proxy configuration URL内添入“http://127.0.0.1:8082/”,按Test,说找到PAC,解析成功!确定后右下角也出现FoxyProxy的提示。此时在Firefox中打开的网页都是通过Sogou的免费代理了!不过发觉现在的代理速度没此前那么快了。 Ubuntu中有一个工具可以配置全局代理,gnome-network-preferences,运行它可以轻松的让apt-get、telnet之类的程序通过代理来连接外网。 再一次提醒的是,Sogou浏览器代理是“透明代理”,它会转发你的真实IP,没有任何匿名功能,因为他们的服务器也在国内(北京),因此也不会有翻墙功能。 参考了别人的网志:http://dan.febird.net/2008/12/firefox.html 已知缺陷:在流量和连接数比较大时(比如刷开Google Reader),wine出来的SogouExplorer进程占用大量CPU资源,可能是某链接库匹配问题,以致这个方法的实用性不是很高。
此前接触过AVR单片机,发现无论是书店里面的教材,还是网上一大堆的中文资料,无一例外都是说windows下使用WinAVR、ICCAVR之类的,Linux方面的简直只字不提,难道这就是传说中的中国国情?外国情况可很不一样,玩单片机的Geek一般都很哈Linux,做单片机开发的软件一应俱全,当然还是开源的。 昨天从淘宝重新买了条USB的下载线,回来一看是USBasp的设计,附送的光盘当然也是win下的驱动和说明了,忽略。 插上下载器,lsusb,认倒是认出来了,叫做VOIT,那怎么用呢?上网一搜,原来USBasp是德国人的设计http://www.fischl.de/usbasp/,GPL的,其中提到AVRDUDE支持USBasp,当然也有源码下载。不过我用的是Ubuntu,发挥超级牛力的时候到了:sudo apt-get install avrdude,恩,几秒钟搞定,让他们去编译吧! Linux下做单片机开发当然首选GCC,就如这些英文教程说的,下载源码?No,No,APT has Super Cow Powers,继续sudo apt-get install gcc-avr binutils-avr avr-libc 几分钟装完,很好,估计那些下载源码回来编译的同学要去喝两个小时茶才能用了。 万事俱全,先写个单片机的HelloWorld,借用micahcarrick的源码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #define F_CPU 1000000UL /* 1 MHz CPU clock */ #include <util/delay.h> #include <avr/io.h> [...]
Page optimized by WP Minify WordPress Plugin