2013年10月4日 星期五

xboxdrv 模擬 XBOX360 手把

為了對付某些只吃 XBOX360 手把的遊戲(Runner2),我們需要 xboxdrv 將我們的 xpad 相容手把偽裝成正牌 XBOX360 手把。

$ sudo xboxdrv --silent --type xbox360 --device-by-id 046d:c21f --mimic-xpad --detach-kernel-driver

046d:c21f 是 Logitech F710 Wireless Gamepad,請自行代換其 USB device ID(用 lsusb 查)。

2013年10月1日 星期二

tsocks 掛 SOCKS proxy

雖然不是所有的網路程式都有內建 SOCKS proxy 支援,但我們可以透過 tsocks 讓任何程式走 SOCKS proxy 進行連線。

一般 distro 應該都有附,設定也只需要改 /etc/tsocks.conf、指定 SOCKS server 而已。

執行程式的時候只要在前面加個 LD_PRELOAD=/usr/lib/libtsocks.so 讓連結器優先載入 tsocks 的 shared object,就可以讓目標程式使用指定的 SOCKS proxy 連線。

2013年7月13日 星期六

人工封裝 deb 套件

deb 套件基本上是 debian-binary、control.tar.gz、data.tar.gz 三個檔案由 ar 壓起來的壓縮檔。debian-binary 內容為 deb 檔案格式的版本號,通常是 2.0。control.tar.gz 可以解出含有套件資訊的相關檔案,data.tar.gz 則為套件要安裝的內容本身。control 與 data 並不一定要 tar.gz,可以選用其他支援的壓縮格式。

以 Gnome 的 Archive Manager 將 deb 套件解壓縮會直接將 control.tar.gz 解成 DEBIAN 資料夾,並和 data.tar.gz 解出來的東西放在一起。debian-binary 則略過。

如果要解開成原始的三個檔案,可以用原始的 ar 命令:
$ ar x package.deb

壓回去的話要注意 debian-binary 一定要放最前面:
$ ar r package.deb debian-binary control.tar.gz data.tar.gz

更方便的作法是利用 fakeroot 和 dpkg-deb 直接把 DEBIAN 資料夾和要安裝的東西包成 deb 套件:
$ fakeroot dpkg-deb -b [input_dir] [output_deb]

2013年5月30日 星期四

empathy 登入時硬碟大量 I/O 造成系統停頓

Gnome 從 3.2 開始提供 gnome online account 服務,使用者可以加入 Google Talk 與 Facebook 帳號讓 empathy 自動連線並與 gnome-shell 整合。

不知道是不是 telepathy 的 bug 還是設計上本來就這樣,聯絡人的頭像似乎每次登入都會重新做快取,這對 Facebook 這種有大量聯絡人的帳號來說影響很大。每次登入 FB 帳號的時候都會因為硬碟狂轉導致系統停住好幾秒,運氣差的話可能還會觸發 gnome-shell 的當機 feature。

個人的解法是,既然他每次登入都重刷快取(快取都不快取了),那乾脆就丟 ramdisk 吧。在 ~/.cache/telepathy/ 建立一個指向 /tmp 的 symbolic link 並命名為 avatars:

$ ln -s /tmp ~/.cache/telepathy/avatars


原本的 avatars 資料夾可以刪除。這樣登入 FB 就不會讓系統卡住了。


2013年5月24日 星期五

系統全域的 PATH 與 alias 設定

簡單地說會動到以下的設定檔:
  1. /etc/bash.bashrc
  2. /etc/profile 或 /etc/profile.d
  3. /etc/login.defs


首先來看 alias 放不同地方的效果:
  1. 所有的 interactive shell 有效
  2. login shell 有效,用 su 切換的使用者無效

再來是 PATH:
  1. 所有的 interactive shell 有效,X session 無效,su 後無效
  2. su 後無效其他有效
  3. 只有 su 有效

結論:

alias 放 /etc/bash.bashrc

PATH 寫在 /etc/profile 或 /etc/profile.d/*.sh

修改 login.defs 的 ENV_SUPATH 和 ENV_PATH 跟上面同步

2013年5月6日 星期一

目前的開發環境

CPUAMD Phenom x4 945 @3.0GHZ
MBGigabyte GA870A-UD3 rev. 2.0
RAMKingston DDR3 1600 8GB (2GB x 4)
VGAMSI NVIDIA GTX460 768MB
HDDLiteon S100 64GB, WD FAEX SATA 6g 1TB
DVD-RWLITEON iHAS324
PSUSeasonic X650
LCDAOC e2440h
Sound cardOnkyo SE200PCI
TV/Capture cardTimeleak U1, Compro E650
OSDebian 8.1 Jessie

2013年4月24日 星期三

Debian 修改並重編譯套件

下載 source package

$ apt-get source [package]


下載編譯時期需要的套件

$ apt-get build-dep [package]


修改原始碼以後,撰寫 changelog

$ dch -i


編譯並產生套件

$ debuild -uc -us -b