ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2010年3月18日 星期四

new feature in 2.6.33 : compcache

Linux 2.6.33 版 新增 compcache 功能,對小/舊系統的效能有很大的幫助。 他的原理大概是:
利用一塊記憶體作為 swap file 的存放地點。 swap file 以壓縮過的方式存放。
這樣的好處是:因為cpu壓縮/解壓的速度比 HD Read/Write 的速度來得快。 所以可以減少 memory swap 的時間。 Project 在 Google Code : compcache linux kernel 的任何 project 都有benchmark,在 compcache project 的 wiki 裡有一堆: Performance
但是benchmark的的結果,在 500MHz cpu, 512MB RAM 的系統上,沒有比用 HD 作 Swap 好多少.

2010年3月16日 星期二

driver module for kernel 2.6

在 LDP (Linux Document Plane) 有一篇文章(http://tldp.org/LDP/lkmpg/2.6/html/lkmpg.html#AEN245) The Linux Kernel Module Programming Guide有教學: 取得 目前安裝 的 kernel source code: (後來發現不需要 source,只要header就可以 : ref )
$aptitude install linux-source
會 download 在 /usr/src/linux-source-2.6.31.19.tar.bz 然後把他就地解開 - 在 /usr/src 2.6 版的 driver module 要用 kernel source 的 kbuild 系統來 build。 所以要 build driver module,要download kernel source。 詳細的 build 方法在 kernel source code 的 Document\kbuild\modules.txt 有說明。 大概是說,Makefile 只要寫成: obj-m += mymod.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 就可以
如果要 build '另一個 kernel source ' 的 driver module: all: make -C /home/checko/linux-2.6.32.19 M=$(PWD) modules 但是 自己目錄下的 linux-2.6.32.19 要 configure 好。 但是他還是會 complain 說沒有 configure 好, ERROR: Kernel configuration is invalid. include/linux/autoconf.h or include/config/auto.conf are missing. Run 'make oldconfig && make prepare' on kernel src to fix it. run 過 make oldconfig && make prepare 後,又說找不到 : Building modules, stage 2. MODPOST 1 modules /bin/sh: scripts/mod/modpost: 沒有此一檔案或目錄 make[2]: *** [__modpost] Error 127 make[1]: *** [modules] Error 2 make[1]: Leaving directory `/home/checko/linux-2.6.32.9' make: *** [all] Error 2 所以就要buld script 出來: make scripts這樣再 make module就 OK 了
到 /lib/modules/$(shell uname -r)/ 去看,可以看到 build link 到 /usr/src/linux-headers-$(shell uname -r) .config 就在這個 folder 裡。
所以..實際上只需要 linux-header 就可以?
的確,有linux-header 就可以。不需要 linux-source .config 也可以在 /boot 下找到,只是檔名變成 config-`uname -r`
make 完 install 的時候如果fail 可以 dmesg 出來看 eror message。 如果是: no symbol version for module_layout 大概是你的 kernel source 和你的 running kernel 版本不一樣吧..
在 debian, ubuntu 下就要 apt-get update, upgrade 一下。

有關教學的補充: cat 的 sample.. 在 insmod 完後,用 dmesg 看一下取得的 Major number 是多少 (我的是251)。 然後用 mknod /dev/chardev c 251 0 建好 device node。 然後才可以用 cat /dev/chardev 呼叫到 device_read( ) function。

2010年3月2日 星期二

run another vncserver

這裡 看到的.. 原來可以這麼簡單,就直接 run 另一個 VNC server 起來。 這樣,前一個 qemu 起不來的問題就可以解了..
vncserver :1
啟動 vncserver,使用 graphic console 1 graphic console 0 是目前的 windows (除非你是在console mode)。 vncsever listen port 從 5900 開始,所以 console 1 是 5901

標籤

網誌存檔