Canon BJC-240+cups+SAMBA+CentOS

Canon BJC-240 以Parallel 轉 USB 接到電腦上,接上以後是在/dev/usb/lp0。

先設置一下跟cups相關的部份,你要先確定自己在sys群組裡,因為cups會需要權限來寫入設定檔。

cups,我是以web介面去安裝印表機,打開瀏覽器,在網址列輸入localhost:631,然後選新增印表機,首先會要求你輸入名稱以及描述,名稱裡不可以有空白。下一步之後,會要你選介面,這時候就選有偵測到的USB介面。接著會要選驅動程式,我試過raw了,不行,我改用了generic postscript。接著會要你選queue的部份,只有一個可以讓你選,就選吧。至此,cups會要你輸入帳號跟密碼,請輸入你的帳號跟密碼即可。

接著是SAMBA。SAMBA的部份比較簡單,打開 /etc/samba/smb.conf,確定 printcap name = /etc/printcap 、 printing = cups,然後將 [printers] 下的 guest ok、writable、public、use client driver 都設為 yes 即可,如果沒看到就自己補上。接著重新啟動SAMBA。

至此,Windows就可以連上,並且去新增印表機了。

p.s. 這邊不多贅述SAMBA的權限控管,就看是用user或share或其他什麼的,總之要有權限可以存取server就是了。

 

UEFI secure boot impact on Linux閱讀小記

文章:Red Hat, The Linux Foundation and Canonical Publish White Paper on Unified Extensible Firmware Interface的最後有個連結,點選以後可以下載一份PDF文件,標題是UEFI secure boot impact on Linux。文件的前面很仔細的分析了UEFI的種種好處跟壞處,然後分析了對Linux的影響。我有大略看過一遍,最主要的問題都是在於key,UEFI開機時會拿key去驗證bootloader,如果驗證失敗,就不再繼續開機。可是對Linux來說,不可能針對每個OEM製造的機器去簽署bootloader啊,因為這樣會要做很多份bootloader,太麻煩。如果要改那個key的話,又沒辦法。中間後段的時候還有提到一些有的沒的,我偷懶跳過去了,直接看最後的結論。最後就提出幾點建議:

  • 建議OEM可以提供很方便可以開關secure boot的介面
  • 建議OEM(在BIOS廠商的協助下)可以在系統軔體裡提供標準機制去設置key
  • 建議以setup模式賣出,讓作業系統去負責安裝初始key的動作

CentOS 5裝Python 2.6

先確定有EPEL,然後:
$sudo yum install python26
再裝 python26-virtualenv python-pip:
$yum install python26-virtualenv python-pip
製作環境:
$mkdir -p python-envs
$cd python-envs
$virtualenv-2.6 –no-site-packages –distribute myenv
$pip-python install -E myenv yolk
啟用:
$source myenv/bin/activate
$yolk -l

根據changelog取版號

以前上傳ppa之前,都是手動打指令,其實應該要自動化才對,今天跨出第一步。第一步當然就是取版號,deb的版號是從debian/changelog來的,所以要從這裡著手。

當前的版號只會在第1行,一開始就想到用 head -n 1來取,用 awk 印出第2欄。可是第2欄前後有 () 呢?該怎麼拿掉呢?不會是要用 sed 吧? 去 GNU awk manual 翻閱了一會,發現有 match 函數,可以用 re 來取 group,所以用 match($2, /\((.*)\)/,arr); 就可以去掉 ()。

去掉 () 之後,想到應該可以把 head 省掉,也用 awk 處理。NR 是一個特殊的變數,當處理一筆(行)時,這個值就會累加。把它限定為 1,就表示只處理第1行了。於是就可以湊出這麼一段script。

CHANGE=`awk 'NR==1 {match($2, /\((.*)\)/,arr);printf("gcin_%s_source.changes", arr[1]);}' debian/changelog`
ls -l $CHANGE

cpio的pass through

以前沒想過 cpio 的 pass through 可以做什麼,今天要不是有朋友問我,我大概也不會想到這個。是這樣子的,假定有個目錄 a,裏面有很多目錄跟檔案,可是只要複製 a/b/c/file.txt 跟 a/b/file2.txt 到目錄 t 下,可是沒辦法用 cp -r,因為 cp -r 會把整個 a 都複製過去,總不能先複製過去以後再一個一個刪除吧? 本想說這可能要寫 script 來做了,打了 cp,按了 tab,看有沒有什麼可能的指令可用,就看到 cpio,印象中,cpio 可能是可以。

最初的想法是用兩個 cpio 來做,一個建 archive(cpio -o),一個解到指定的目錄(cpio -i),這樣就行了。用 info cpio 一查,發現 cpio -p 應該就可以做了。

所以試了一下,這裡先建立一個 list 檔案,裏面有兩行:a/b/c/file.txt 跟 a/b/file2.txt,a 目錄下有很多目錄跟檔案,並且有 a/b/c/file.txt 跟 a/b/file2.txt。那麼這兩行指令就可以只把list裡指定的兩個檔案複製到 t 目錄下,並且建立必要的目錄:

mkdir -p t
cat list | cpio -p --make-directories t

sis162u與ndiswrapper

原本以為linux的硬體相容性很高,至少好幾年前買的Asus USB無線網卡應該是要可以用的,結果,並不是我想的。不支援,就是不支援。
還好知道這支無線網卡的晶片是SiS162U,就上網Google了一下,發現大家都是用ndiswrapper來裝上Windows的驅動程式,然後讓它運作。
我裝的是ndisgtk這個GUI程式,安裝以後,執行ndisgtk,然後安裝sis162的windows驅動程式,就…大功告成了嗎?
不是,因為我用的sis162 windows驅動程式不知道有問題還是太舊,查了好久,後來我是去SiS官方網站抓了最新的105版的驅動程式下來裝,就沒問題了!!
所以碰到只有Windows驅動程式而Linux不支援的時候,可以用ndiswrapper + ndisgtk 試試看,也許就起死回生。

讀Debian新維護人員手冊

Debian新維護人員手冊記下的:

  • 比較版本:dpkg –compare-versions ver1 op ver2
  • 添加環境變數到 .bashrc 以供識別:
    DEBEMAIL=your.email.address@example.org
    DEBFULLNAME="Firstname Lastname"
  • dh_make 可以快速的從一個 tarball 產生出 tarball 副本跟 debian 目錄,如:dh_make -f ../gentoo-0.9.12.tar.gz
  • control裡的內容,如分類、權重…等可參考 Debian Policy Manual
  • 可以用 dpkg-depcheck -d ./configure去檢查相依性,或者用 objdump -p foo | grep NEEDED 去看用了哪些 library
  • changelog 可以參考Debian Policy Manual, 4.4,是主要定版號的地方。
  • rules 可以用 fakeroot debian/rules target 來執行裏面的特定 target
  • 可以用 debuild 來自動化,在 .devscripts 裡添加
    • DEBSIGN_KEYID=”keyID”
    • DEBUILD_LINTIAN=yes
    • DEBUILD_LINTIAN_OPTS=”-i -I –show-overrides”

    ,然後 debuild -sa、debuild clean

  • 檢查套件:
    • debi xxxx_i386.changes
    • lintian -i -I –show-overrides xxx_i386.changes

Run MiPony on Linux(wine)

因為看到MiPony可以快速下載freakshare.net的檔案,所以就想裝來試試看~
在Linux下,只能用wine,我用的版本是1.3。你得先安裝winetricks(sudo apt-get install winetricks),然後用winetricks裝上 gdiplus, fontfix, dotnet20, ie6(winetricks gdiplus fontfix dotnet20 ie6)。接著再用wine裝上MiPony,就可以了。
目前下載了十幾個檔案,都沒問題,真是太好了!!

GNU IceCat Privacy extension安裝總是失敗

之前都沒注意,直到GreaseMonkey升級,跑不起來,才發現這事情的嚴重性。
上網找了一下,果然已經有人跳腳:http://osdir.com/ml/bug-gnuzilla-gnu/2010-12/msg00057.html
就follow裏面的提供的網址:http://kb.mozillazine.org/Installing_extensions#Global_installation ,照裏面的指示去手動解壓縮 /usr/lib/icecat/extensions/privacy_ext.xpi 到 /usr/lib/icecat/extensions/privacy_features@gnuzilla.gnu.org 就行了。

加快linux開機速度

1 second Linux boot to Qt! 看到的,標題超聳動,不過實際看到影片,真的是很嚇人,根本就是瞬間就開好了。投影片在這裡:The Right Approach to Minimal Boot Times
這個 topic 前兩年很熱門,當然啦,現在因為 Android 的關係,應該會更熱。下面是我看完的一些紀錄跟想法:

  • 使用 Arjan van de Ven 對 kernel aync 的 patch
  • 把不重要的 module 改成 loadable
  • 修改init/do_mounts.c以提早mount root
  • 修改init/main.c裡的init_post,看了以後,我想應該是避免掉open /dev/console還有移掉不必要的步驟以提速。
  • improve memcpy (這我不知道是哪裡的,要再查看看)
  • reduce kernel size:這可以加快 u-boot 載入時間。一般手段就移掉不必要的driver/module。
  • reduce u-boot delay time:u-boot 預設有 delay time,這可以改掉
  • kernel 壓縮或不壓縮:用zImage的話可以減少kernel大小,可是要評估解壓縮時間跟載入時間的平衡來決定壓縮或不壓縮。
  • 利用 gcc 的 –finstrument-functions –function-sections 去 profile function 的時間 (簡報說加了這兩個 argument,就可以在 __cyg_profile_func_enter/__cyg_profile_func_exit 裡放 code,這個要鑽研 gcc 試試看。)
  • 利用ubootchart/bootchart.org工具來測時間。

參考資料: