ArchLinux 使用 netcfg 建立 Ad-hoc 热点共享上网

Felix Yan | 2011-04-12 | 301 views

为这个问题Felix搜索了一圈, 几个页面上的方法各有问题, 结合自己以前使用Ubuntu里dnsmasq的经验, 拼凑起来成功实现了, 于是就留下这篇笔记啦~
netcfg的前期配置这里不再赘述, 有需求的盆友请移步ArchWiki :)

新建Ad-hoc热点样例:

CONNECTION="wireless"
INTERFACE="wlan0"
SECURITY="wep-old"
IP="static"
ADDR="< 本机IP>"
ESSID="< 网络名>"
KEY="s:< 密码>"
PRE_UP="ifconfig wlan0 down; iwconfig wlan0 mode ad-hoc"
QUIRKS=(prescan predown)

如果网卡不一样请修改=.=

这个配置在我这里可以完全正常工作(虽然不知为何建立的网络会多两个双引号= =|||)

接下来配置dnsmasq: 修改/etc/dnsmasq.conf:

no-resolv
no-poll
server=4.2.2.1
server=2001:470:20::2
dhcp-range=192.168.0.100,192.168.0.200,12h
dhcp-option=3,< 本机IP>
dhcp-option=6,< 本机IP>

注意本机IP要和上面的IP段在一个网段哟^_^
最后…至于通用的iptables和sysctl.conf…我就不说啦..哈哈~~~
Read the rest of this entry »

ArchLinux 小白好奇看 (1)

Felix Yan | 2011-04-11 | 341 views

Hello Felix~
于是…在上次愤怒的卸载掉arch几周之后, 我又忍不住伸出猫爪了~~
这次很乖的Follow着wiki安装, 可是某几个问题依旧没有在wiki上得到(能看懂的)答案, 于是在各种折腾之后…算是解决了吧!
在此记录下解决的过程, 以免自己以后忘掉~!

1, KDE英文locale启用ibus输入中文
首先是需求: 我选择的桌面环境是KDE, 而我要让所有的QT和GTK应用程序都能正确调用ibus输入法!
(题外话: 我把dbus @kdm都加到DAEMONS里才可以正常用KDE4的, 这个wiki里貌似没说耶…)
打开 ~/.bashrc, 在前面加上下面几句:

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

然后重启X就好啦~

注意: 如果在GTK程序里仍然不行(貌似不是必然的…吧?), 还需要编辑 /etc/gtk-2.0/gtk.immodules, 找到

"/usr/lib/gtk-2.0/2.10.0/immodules/im-xim.so" 
"xim" "X Input Method" "gtk20" "/usr/share/locale" "ko:ja:th:zh"

替换为

"/usr/lib/gtk-2.0/2.10.0/immodules/im-xim.so" 
"xim" "X Input Method" "gtk20" "/usr/share/locale" "en:ko:ja:th:zh"

(也就是让en的locale也能调用啦~!)
Read the rest of this entry »

Ubuntu 命令行调节屏幕亮度

Felix Yan | 2011-03-10 | 387 views

今天本猫的本本突然开机后最大亮度只能调到30%, 各种漆黑一片纠结无比, 感觉有可能是intel驱动的bug(未确定)…
然后…很笨笨的一度以为是高压条灯管之类的出问题了, 直到某次重启发觉引导界面很亮- -
各种Google之后找到一篇blog及其评论里比较详细的介绍了两种命令行调节屏幕亮度的方法 原理不一样.其中的第一种解决了我屏幕亮度的问题, 第二种让我写出了一个很蛋疼的程序..恩..下面分别介绍.

1, 用setpci命令对显卡设备操作来硬调节亮度:

sudo setpci -s 00:02.0 F4.B=xx

其中的00:02.0来自于

lspci

命令输出结果中显卡对应的序号, 比如我的:

00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)

而xx对于不同显卡有不一样的取值规律, 在我这里是00最暗, ff最亮(16进制), 而原文作者和我正相反, 读者可以自己试试~~ :)

2, 用xgamma来软调节亮度:

xgamma -gamma x

这里x的取值在0.1到10之间, 0.1最暗, 10最亮.
Read the rest of this entry »

在 Ubuntu 里用 DVD-RAM 光硬盘

Felix Yan | 2011-02-26 | 128 views

Felix 弄来了一摞光硬碟(DVD-RAM), 打开 Wikipedia 看到了那个夸张的10W次重写和30年不损坏, 感到各种爽, 于是插入光驱随便存了一堆东西进去…
于是, 问题来了: Nautilus 把这张 DVD-RAM 当作普通空光碟了, gvfs 仅挂载了一个空刻录目录(就像WinXP自带的刻录功能一样), 而我把一坨东西拖进去点刻录, 会调用 brasero, 然后提示: 剩余空间不足…
WTF? 我的 DVD-RAM 是双面的, 每个单面也有 4.7G, 怎么可能装不下 3.3G 的不大的(小)电影呢?
于是跑去问谷哥, 悲剧的没有遇到和我遇到同样问题的人(貌似 DVD-RAM 实在太小众了?). 但是大家都纷纷指出(见这里)要用udf这个文件系统..于是我打开 Disk Utility, 点Format, 但是在列表中并没有找到udf这个文件系统…
于是…上命令行吧!

sudo apt-get install udftools

然后看看 Disk Utility 里这光盘的设备在哪里(我的在/dev/sr1), 然后手动建文件系统:

sudo mkudffs --utf8 --media-type=dvdram /dev/sr1

然后你会看到类似这样的输出:

start=0, blocks=16, type=RESERVED 
start=16, blocks=3, type=VRS 
start=19, blocks=237, type=USPACE 
start=256, blocks=1, type=ANCHOR 
start=257, blocks=16, type=PVDS 
start=273, blocks=1, type=LVID 
start=274, blocks=2236173, type=PSPACE 
start=2236447, blocks=1, type=ANCHOR 
start=2236448, blocks=239, type=USPACE 
start=2236687, blocks=16, type=RVDS 
start=2236703, blocks=1, type=ANCHOR

然后等光驱没动静之后手动弹出一下光盘再插入, Disk Utility 里就会惊喜的看到插入的 DVD-RAM 被识别出来了! 卷标 LinuxUDF 文件系统: udf. 然后用 Nautilus 挂载上来, 就可以和普通可移动磁盘一样操作了:)
PS: 值得一提的是写入速度确实够慢(3M/s), 不过仅仅用来 Data Backup 还是很不错的.

Ubuntu uwsgi + nginx / bottle 的配置方法

Felix Yan | 2011-01-25 | 1,259 views

首先赞PT大牛帮了很多忙, 本文大部分原型来源于 http://apt-blog.net/moinmoin-on-nginx-via-fastcgi-and-uwgi

UPDATE: 更新到 nginx 1.0 / uwsgi 0.9.6.8 的配置 – 2011/4/15
然而由于现在那几个玩意版本更新挺厉害, 有许多配置都不一样了, 再加上本猫是要让它运行bottle, 所以决定重新整理一下:)

下面这段关于 uwsgi 的介绍 来自PT牛的那篇文章:

uwsgi充当了python解析器的角色,使用wsgi的接口和Python程序交互,这个过程中做了优化,和上层nginx之间则设计了更加轻量的协议。nginx0.8.40以后官方默认带了uwsgi的协议模块,所以使用很方便。

恩, 由上面这段话 我们可以淡定的看出, 官方源里那个残念的0.7.x的nginx肯定是满足不了要求的啦!
Read the rest of this entry »

把完美的notify-osd找回来

Felix Yan | 2011-01-15 | 167 views

写在前面: 本文希望通过一个具体的修改编译安装Ubuntu系统软件包的过程 帮助在编译安装时遇到类似问题的盆友解决问题.

恩, 首先呢, 这个问题仅仅针对启用了 ppa:xorg-edgers/ppa 的 alpha tester 盆友…
这个悲剧已经有两个多月(以上)的历史拉(因为两个多月前Felix才忍不住去report了), 我report的错误参见: https://bugs.launchpad.net/ubuntu/+source/pixman/+bug/623272
不过某位大大(Peter Clifton)给出了解决方案, 这里简单解释一下…

首先获得当前版本的notify-osd的源代码:

sudo apt-get source notify-osd

完成后进入目录, 把下面的patch存成文件 然后用patch命令应用上去:

=== modified file 'src/tile.c'
--- src/tile.c	2009-07-31 11:07:29 +0000
+++ src/tile.c	2010-12-06 00:24:55 +0000
@@ -180,7 +180,7 @@
 
 	// top right
 	cairo_matrix_init_scale (&matrix, -1.0f, 1.0f);
-	cairo_matrix_translate (&matrix, -width, 0.0f);
+	cairo_matrix_translate (&matrix, -1.0f * width, 0.0f);
 	cairo_pattern_set_matrix (pattern, &matrix);
 	cairo_rectangle (cr,
 			 width - pad_width,
@@ -193,7 +193,7 @@
 
 	// bottom right
 	cairo_matrix_init_scale (&matrix, -1.0f, -1.0f);
-	cairo_matrix_translate (&matrix, -width, -height);
+	cairo_matrix_translate (&matrix, -1.0f * width, -1.0f * height);
 	cairo_pattern_set_matrix (pattern, &matrix);
 	cairo_rectangle (cr,
 			 pad_width,
@@ -206,7 +206,7 @@
 
 	// bottom left
 	cairo_matrix_init_scale (&matrix, 1.0f, -1.0f);
-	cairo_matrix_translate (&matrix, 0.0f, -height);
+	cairo_matrix_translate (&matrix, 0.0f, -1.0f * height);
 	cairo_pattern_set_matrix (pattern, &matrix);
 	cairo_rectangle (cr,
 			 x,

然后

patch -p1 -i xxx.patch

Read the rest of this entry »

找回 Ubuntu Natty 里 Compiz 0.9.2.1 版本丢失的附加特效包

Felix Yan | 2010-12-11 | 174 views

Compiz 更新到 0.9 虽然已经过去挺长时间了, 但是 Ubuntu 源似乎一直没有打算把 plugins-extra 也跟上更新到0.9.2.1版本. 搜索了一阵, 在 LinuxQuestion 找到了一个可行的编译方法以配合系统源里的compiz.
步骤:
1, 到 http://releases.compiz-fusion.org/0.9.2.1/ 下载合适版本的plugins-extra.
传送门: http://releases.compiz-fusion.org/0.9.2.1/compiz-plugins-extra-0.9.2.1.tar.gz

2, 解压之:

tar xzvf compiz-plugins-extra-0.9.2.1.tar.gz
cd plugins-extra

3, 执行下面的命令:

mkdir build && cd build
cmake ..

4, 编辑 CMakeCache.txt

gedit CMakeCache.txt

5, 查找下面的内容:

CMAKE_INSTALL_PREFIX:PATH=/usr/local

替换为

CMAKE_INSTALL_PREFIX:PATH=/usr

Read the rest of this entry »

让Ubuntu不在设备变化时将网卡重新编号

Felix Yan | 2010-12-09 | 106 views

如果你和我一样, 常常把硬盘在不同的电脑上插来插去, 或许会烦恼于网卡命名 eth0/eth1, wlan0/wlan1 之类的问题. 如果不喜欢更改电脑后 Ubuntu 自动累加这个计数, 可以用下面的方法设置一下:

sudo mv /lib/udev/rules.d/75-persistent-net-generator.rules /lib/udev/rules.d/75-persistent-net-generator.rules.disabled
sudo mv /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules.disabled

这样重启后, 第一张有线网卡总是 eth0, 第一张无线网卡一定是 wlan0 了, conky等东西也不用重新配置啦 :)

Ubuntu 多网环境自动路由表(区别教育网内外) + 分享到多张网卡网络的实现

Felix Yan | 2010-08-13 | 587 views

首先, 感谢 @BOYPT @jimmy_xu_wrk @tjmao @yegle 等朋友的帮忙!

1, 多网环境, Felix 的环境是 VPN over cernet2 + cernet 双网.

2, 自动路由表, 采用 www.nic.edu.cn 的官方 Free IP 数据.
以下是 Felix 用 Python 写的一个小小的自动生成脚本:

import re
import urllib
a=urllib.urlopen('http://www.nic.edu.cn/RS/ipstat/internalip/real.html').read()
b=re.compile("([\d\.]+)\s+[\d\.]+\s+([\d\.]+)")
c=b.findall(a)
m=["#!/bin/bash","OLDGW=$1","NEWGW=$2","route del -net 0.0.0.0 netmask 0.0.0.0","route add -net 0.0.0.0 netmask 0.0.0.0 gw $NEWGW"]
n=["#!/bin/bash"]
for d in c:
    m.append("route add -net "+d[0]+" netmask "+d[1]+" gw $OLDGW")
    n.append("route del -net "+d[0]+" netmask "+d[1])
e=open('gtwcernet',"w")
e.write("\n".join(m))
e.close()
f=open('gtwcernetd',"w")
f.write("\n".join(n))
f.close()

会在当前目录生成 gtwcernet 和 gtwcernetd 两个文件
然后给他们加上执行权限

chmod +x gtwcernet
chmod +x gtwcernetd

前一个是启用自动路由表
Usage: gtwcernet <教育网网关> <VPN/电信网网关>
后一个是禁用自动路由表
Usage: gtwcernetd
Read the rest of this entry »

Linux 下 Dropbox 的通用更新脚本修改版 – 支持代理

Felix Yan | 2010-08-06 | 576 views

源脚本来自 http://forums.dropbox.com/topic.php?id=12153, 但是不能支持代理服务器, 主要问题是它的”联网检测”用的是ping, Felix将其改成了wget然后判断页面上是否有forums

Patch 如下:

--- a/dbupdate
+++ b/dbupdate
@@ -37,7 +37,7 @@
 declare -r useCount="http://bit.ly/dbupdate_count";
 declare -r nIcon="/usr/share/icons/hicolor/64x64/apps/dropbox.png";
 declare -r userAgent="Mozilla/5.0 (X11; U; Linux i686; $LANG; rv:1.9.1.3) Gecko/20090924 Ubuntu/9.10 (karmic) Firefox/3.5.3";
-declare -r internetTest="ping -c3 -w10 www.dropbox.com | grep -c '64 bytes'" ;
+declare -r internetTest="wget -qO - http://www.dropbox.com | grep -c 'forums'" ;
 bit="auto";
 testing=0;
 q="-q";
@@ -292,7 +292,7 @@
 
 #test connectivity
 printf "Checking for connectivity to Dropbox servers...";
-if [ `eval $internetTest` -lt 3 ]; then { 
+if [ `eval $internetTest` -lt 1 ]; then { 
  echo " FAIL.";
  echo "Failed to connect to \"www.dropbox.com\"";
  exit 1;

Read the rest of this entry »

QR Code Business Card