最近更新: 2011-05-24

MeeGo 1.1 編譯 Hanvon 10.1 觸控面板模組

MeeGo 1.1 使用的 Linux 核心是 2.6.35 ,此版本並不支援 Hanvon (漢王)觸控面板,也不支援多點觸控。 必須套用 MeeGo 維護者額外提供的 patch 文件,自行編譯核心。

安裝套件

安裝 MeeGo 後,再安裝編譯核心所需的套件。

sudo zypper install kernel-netbook-devel make gcc diffutils patch

取得 Patch

查看 Hanvon/PixCir touchscreen constantly "clicks" when touched。 下載上列文件中的其中3個patch:

  • 0001-2.6.37-hid-multitouch-support-for-PixCir-based-panels.patch
  • 0002-2.6.37-hid-multitouch-disable-2.6.36-MT-features.patch
  • 0003-2.6.37-hid-multitouch-add-unitec-ids-to-driver.patch

套用此 patch 後,可讓 2.6.35 的核心支持 Hanvon 觸控面板。 但受限於核心功能,僅提供單點觸控。

編譯核心

  • http://wiki.meego.com/Recompile_kernel
  • http://wiki.meego.com/How-to:_getting_new_chipset_support_to_the_MeeGo_kernel
1. 取得 MeeGo 核心原始碼:

下載:

wget http://repo.meego.com/MeeGo/releases/1.1/core/repos/source/kernel-2.6.35.3-10.3.src.rpm

還原:

rpm2cpio kernel-2.6.35.3-10.3.src.rpm | cpio -id

rpm 還原後,會看到很多文件,其中大部份是過往的 patch 文件,略過不理。 我們需要的是 linux-2.6.35.tar.bz 和 patch-2.6.35.3.bz2 。

2. 解開核心源碼

解開 kernel source 與 Patch 文件。

tar xjvf linux-2.6.35.tar.bz
bzip2 -d patch-2.6.35.bz2
3. 套件 Patch 內容

將觸控面板所需的3個更新文件也複製到同目錄下。以便下列操作。

cd linux-2.6.35

# patch patch-2.6.35.3 
patch -p1 < ../patch-2.6.35.3

# patch for hanvon touchpanel
patch -p1 < ../0001-2.6.37-hid-multitouch-support-for-PixCir-based-panels.patch
patch -p1 < ../0002-2.6.37-hid-multitouch-disable-2.6.36-MT-features.patch
patch -p1 < ../0003-2.6.37-hid-multitouch-add-unitec-ids-to-driver.patch

cd ..
4. 產生預設的 kernel config
make -f Makefile.config

會產生多組 kernel config 。 將目標平台的 kernel config 複製到 kernel source , 且文件名稱改為 .config. 本例使用 kernel-netbook.config ,此為 Netbook 平台適用組態。

cp kernel-netbook.config linux-2.6.35/.config
cd linux-2.6.35

# 套用 .config 的內容進行配置。
make oldconfig

在進行 make oldconfig 時,它會詢問幾個新項目,其中一項是在問要不要啟用 hanvon 設備。 答案當然是 yes 。

5. 開始編譯

整個編譯工作,會需要1GB以上的磁碟空間,以及相當長的編譯時間。 我建議在桌上型電腦上進行編譯工作,而不要直接在安裝 MeeGo 的 netbook 或平板機上進行。 以避免儲存空間不足或是編譯耗時的狀況。

# 開始編譯。
make

make modules

# 將各模組安裝到 /lib/modules/2.6.35.3 目錄。
sudo make modules_install

# 將3個核心文件安裝到 /boot 目錄。
# System.map-2.6.35.3  config-2.6.35.3  vmlinuz-2.6.35.3
sudo make install

如果要將已編好的核心文件與模組打包起來,在安裝後,打包下列內容:

  • /lib/modules/2.6.35.3
  • /boot/System.map-2.6.35.3
  • /boot/config-2.6.35.3
  • /boot/vmlinuz-2.6.35.3
6. (非必要) 建立新的 initrd image
cd /boot
sudo mkinitrd -o initrd.img-2.6.35.3 2.6.35.3

最後,更新你的開機程式,例如 grub2:

sudo update-grub

後記

MeeGo 終於趕在本週(5/23,5/24)的年會之前釋出 MeeGo 1.2。 不過根據我先前在 twitter 上得到的消息,MeeGo 1.2 使用的 Linux kernel 版本為 2.6.37。 如無修補,則此版本仍然不適用漢王觸控面板。 如果手頭上的測試硬體機種採用的觸控面板屬於此類,屆時仍然免不了要自行編譯核心。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/15700151.html