2015年11月17日 星期二

第一次上傳 Debian package 到 Debian 上去

今天是我正式成為 Debian Maintainer (DM) 之後,第一次自己直接上傳套件到 Debian 裡面。

成為 DM 之後,必需要有 Debian Developer (DD) 的幫忙,開特定套件的上傳權限,DM 才能夠自己上傳套件。

我正在處理的是 kore - Fast SPDY capable web server for web development in C

我參考 DebianMaintainer/Tutorial - Debian Wiki,先用 git-buildpackage -S -sa 將 Debian source package 創建出來,然後再用 sbuild -s -A -d sid-amd64 kore_1.2.3-2.dsc 來編譯成 Debian binary package,然後再用 debsign kore_1.2.3-2_amd64.changes 簽上數位簽章,然後用 dput ftp-master kore_1.2.3-2_amd64.changes 上傳。

只是上傳後馬上收到一封 kore_1.2.3-2_amd64.changes REJECTED 的通知信,覺得很奇怪,我的步驟跟方法應該都正確啊!為什麼會有問題呢?

No target suite found. Please check your target distribution and that you uploaded to the right archive.

===

Please feel free to respond to this email if you don't understand why
your files were rejected, or if you upload new files which address our
concerns.

後來到 OFTC IRC 的 #debian-mentors 求助,結果有人叫我去檢查 kore_1.2.3-2_amd64.changes 的內容,然後我發現了。

...
Distribution: sid-amd64
...

原來是 sbuild 時指定使用了 sid-amd64,所以產生出來的 kore_1.2.3-2_amd64.changes 自然也會是寫著 sid-amd64,手動將它改成 Distribution: unstable 後,再用 debsign 簽章一下用 dput 上傳後就順利的進去了。

2015年11月9日 星期一

手動快速編譯 Ubuntu 14.04 當中 Linux kernel 裡面的 i915 module

首先要下載 Linux kernel source tree

$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

然後進去該目錄,並且切換到 vivid branch (這邊使用的是 Ubuntu 14.04 當中 LTS Enablement Stacks 當中的 vivid)

$ git checkout -b vivid origin/lts-backport-vivid

快速產生目標的 .config

$ cat debian.vivid/config/config.common.ubuntu debian.vivid/config/amd64/config.common.amd64 debian.vivid/config/amd64/config.flavour.generic > .config

執行一些設定腳本

$ make oldconfig && make prepare && make scripts

設定環境變數 (接下來會使用到)

$ export KDIR=$PWD

複製 Module.symvers (如果要編譯的 Linux kernel 跟系統所使用的剛好相同)

$ cp -v /lib/modules/$(uname -r)/build/Module.symvers Module.symvers

不然就需要至少編譯整個 Linux kernel 一遍才行 (-j? 可以參考 /proc/cpuinfo 的數量來決定)

$ make -j8

切換到該 module 的目錄底下,不過 Ubuntu 的 Linux kernel 目前有兩份不同的 i915 module,一份放在 drivers/gpu/drm/i915 底下,另一份放在 ubuntu/i915 底下。

$ cd drivers/gpu/drm/i915

或是

$ cd ubuntu/i915

然後開始編譯 (J=? 可以參考 /proc/cpuinfo 的數量來決定)

$ make -C $KDIR M=$PWD J=8

參考資料:Kernel/BuildYourOwnKernel - Ubuntu WikiDocumentation/kbuild/modules.txt