Recompile Linux Kernel in Debian

應該還不是「正確」的方法 (因為 apt-cache search linux-source 時還看到 linux-patch-debian-2.6.18 與 linux-tree-2.6.18 這兩個套件),不過先記下來好了:

$ apt-get install linux-source-2.6.18
$ apt-get install kernel-patch-grsecurity2 (這是 patch)
$ cd /usr/src
$ tar yxf linux-source-2.6.18.tar.bz2
$ cd linux-source-2.6.18
$ zcat ../kernel-patches/diffs/grsecurity2/grsecurity-2.1.9-2.6.18.1.patch.gz | sudo patch -p1
$ sudo make menuconfig
$ sudo make all (其中 all = vmlinux modules bzImage,參考 make help 的說明)
$ sudo make install
$ sudo modules_install
$ cd /boot
$ sudo mkinitrd -o initrd.img-2.6.18-grsec 2.6.18-grsec
$ sudo update-grub
$ cd grub
$ vim menu.lst (把 initrd 的部分補上去)

Update:yjchou 說 linux-source-2.6.18 這是已經經過 Debian 處理過的版本了,在網頁說明上也有提到:

This package provides source code for the Linux kernel version 2.6.18. This source closely tracks official Linux kernel releases. Debian's modifications to that source consist of security fixes, bug fixes, and features that have already been (or we believe will be) accepted by the upstream maintainers.

我沒有炸掉純粹是運氣好選對了 @_@

Recompile Linux Kernel

每次要更新都要跑 找一堆指令的順序,剛剛找到篇 11/22 才寫的文章,已經被 收起來了:How To Compile A Kernel

不過剛剛開起來就 panic 跟我說找不到 root,再去研究看看好了... :p

Update:補充一下,在解開 kernel 的目錄下 make help 可以看到可用指令的說明。

Debian 3.1

由於幹活需要,晚上十一點多回到家就裝了台 起來,透過 apt 的幫忙 (以及 大神相助),弄到三點多的時候就差不多把需要的東西都弄好了,有個 PPPoE 的問題在網路上沒找到解答,記錄下來問問看...

用 pppoeconf 設定好後可以生出 ppp0,也可以用 pon 撥上去,但是撥上後卻沒有設定 default routing。用 找發現要設定 "defaultroute" (有些文件有提到當已經存在 default route 的時候還要設 "replacedefaultroute"),但看了一下 /etc/ppp/options 發現沒有這兩個指令 (暗示著系統不認得這兩個指令),於是只好自己寫個 script 到 /etc/ppp/if-up.d/ 下,在連線建立後設定 default route。不過這樣感覺怪怪的,有什麼建議嗎?

TamperData

一個月前我在 的 Blog 上看到他利用 這個 Addons 觀察 HTTP 抓取的 Timeline:Graphing requests with Tamper Data,除了傳統的表格外,他還有圖可以直接看,整個頁面的抓取流程相當的清楚。像是 首頁的情況:

前陣子我在某個人的 Blog 上看到想要分析 HTTP 抓取的時間分析時有提到有這樣的東西,可是我忘記軟體的名稱了 (而且當時我也忘了是在 的 Blog 上看到的),只好寫一篇記錄下來... :p

SVK

這幾天試著用 看看能夠做什麼事情,其中一個簡單好用的功能是自己建立 local repository 自己用,但是不用像 另外架設 apache server 或是跑 svnserve。在 ports 裝完 svk 後,這是一些筆記內容:

$ svk mkdir //local/myproject

第一次跑的時候會告訴你 ~/.svk/local 不存在,問你是否要建立,選 yes 建立後就可以 checkout 這個目錄:

$ svk checkout //local/myproject myproject

svk checkout 的東西不像 svn 會有 .svn 的目錄,感覺乾淨多了。接下來就進入 myproject 目錄改東西加東西,改完就如同 svn 一樣,用 add 指令加進去:(當然你也可以用 import 這個指令)

$ svk add Makefile *.c

然後 commit:

$ svk commit

輸入 commit log 以後就塞進去了。

FreeBSD 7-current

把自己的桌機換成 7.0-CURRENT,準備測一些最近 team 在發展的東西,另外也比較方便測試 ports 是否能在 7.0-CURRENT 上安裝...

不過升級完以後發現比起 6.x 慢相當多,要看看還有什麼地方可以調整的... (kernel 裡可以拿掉的 debug options 都拿掉了,留下 {D,G,K}DB 要在踩到地雷時看是踩到那個 bug)

用 OpenSSL 加密/解密

除了是個 library 外,還提供了 CLI (command line interface) 操作,你可以透過 openssl 這隻程式對檔案加密解密。

先輸入:

$ openssl help

由於沒有 help 這個指令,所以會出現可用指令列表。在 Cipher commands 會列出很多可用的 cipher,我個人偏好用 Blowfish CBC (bf-cbc),主要原因是速度非常快。

加密的指令是:

$ openssl bf-cbc -in input.txt -out output.txt

輸入進去後就會問你要設定的密碼。而解開只要加上 -d,把 -in 改成加密後的檔案,-out 改成要輸出的檔案即可:

$ openssl bf-cbc -d -in output.txt -out input.txt.orig

然後輸入密碼解開,如果密碼錯誤會出現 bad decrypt 的錯誤訊息,接下來你可以用 cmp 或是 diff 比較檔案是不是一樣。

接下來講比較實用的部分。最近 提供的硬碟空間愈來愈大了,於是你可以拿 來備份 (不要放到 www 目錄下),但你又不想直接把 .tar.gz 直接丟上去,這時候你就可以在壓縮的時候順便加密:

$ tar -zc -f - /backup/this/directory | openssl bf-cbc -k password -out mybackup-20061114.gz-bf-cbc

其中 -k 後面接的就是 key,而不指定 -in 代表從 stdin 讀入。

如果你想要把檔案拆小一點,可以把 -out 拿掉 (表示從 stdout 輸出),再 pipe 給 split 切開。(也許切成 600MB 再燒成光碟?)

lighttpd 的 async I/O 支援

lighty 1.5.0 and linux-aio 這篇告訴大家 開始支援 async I/O 了。

async I/O 將 read request 丟給 kernel 後先去做其他事情,等到 kernel 處理完以後再用 callback routine 告訴 已經完成讀取。這使得 kernel 可以最佳化讀取的順序以達成 I/O 效率的提升,另外一方面 也可以趁機去做其他的事情。依照作者自己的測試,這使得 throughput 提升了 80%。而在作者在 Blog 上炫耀 上的 performance 大幅提升後,也有人 上丟出 patch,接下來就是等待了... :p

Microsoft 與 Novell 沒有誠意的合作

最重要的精神之一是「散佈的自由」(列在 的第一項),但 這次跟 合作的授權條款是禁止散佈的:Microsoft's Patent Pledge "Worse Than Useless"

這次的授權內容只包括了 可以互相使用對方的專利而不被告,但不得再散佈,於是這些使用微軟專利的軟體只能在 上跑,而不能在其他 平台上跑:(標粗體的部分)

Microsoft hereby covenants not to assert Microsoft Patents against each Individual Contributor (also referred to as “You”) for Your distribution of Your personally authored original work (“Original Work”) directly to openSUSE.org, but only if, and to the extent, (i) Your Original Work becomes part of SUSE Linux, SUSE Linux Enterprise Desktop or SUSE Linux Enterprise Server, and (ii) You ensure that as a result of Your contribution, openSUSE.org, and all further recipients of Your Original Work, do not receive any licenses, covenants or any other rights under any Microsoft intellectual property. This pledge is personal to You and does not apply to any use or distribution of Your Original Work by others.

授權內容請參考 上的 Community Commitments - Microsoft & Novell Interoperability Collaboration