由於 sane 不支援我的 scanner,為了試試透過 virtualbox 存取 scanner,這兩天在家把新版裝起來玩…
由於 sane 不支援我的 scanner,為了試試透過 virtualbox 存取 scanner,這兩天在家把新版裝起來玩…
根據網路上看到的使用心得,新的 1.6.2 版似乎在 usb 的支援上增強不少,但為了在 guest OS 裡抓到 usb device 也費了不少工夫,一度還以為只有 windows 版才有改進…搞了一個下午才順利偵測到 scanner
網路沒設,主要是處理 usb 的部份,記錄一下大概的步驟:
- 新增 usbusers 群組,把自己的帳號加進去
- 修改 /etc/rc.d/rc.S 中 mount usbfs 的命令,加上 -o devgid=<gid of usbusers>,devmode=664 (我用的 distro 是 Slackware)
- 修改 /etc/udev/rules.d/65-permissions.rules,加一行
SUBSYSTEM=="usb_device", GROUP="usbusers", MODE="0664" - 在 virtualbox 中加入 usb device filter (vid 和 pid 可以透過 lsusb 查到)
處理完以後啟動 guest OS 就可以抓到 device 了,為了證明可以啟動 scanner,掃張圖來看看
這兩天在 slackware 12.1 環境編譯一個有用到 readline 的程式,可是搞了老半天編譯好的程式都沒有 readline 跟 history 的功能。測試一下發現會出現 undefined symbol 的訊息,按照 maillist 上提供的指令 ldd -d -r /usr/lib/libreadline.so.5.2 出現這些訊息: undefined symbol: PC (/usr/lib/libreadline.so.5.2) undefined symbol: UP (/usr/lib/libreadline.so.5.2) undefined symbol: BC (/usr/lib/libreadline.so.5.2) undefined symbol: tgetflag (/usr/lib/libreadline.so.5.2) undefined symbol: tgetent (/usr/lib/libreadline.so.5.2) undefined [...]
這兩天在 slackware 12.1 環境編譯一個有用到 readline 的程式,可是搞了老半天編譯好的程式都沒有 readline 跟 history 的功能。測試一下發現會出現 undefined symbol 的訊息,按照 maillist 上提供的指令 ldd -d -r /usr/lib/libreadline.so.5.2 出現這些訊息:
undefined symbol: PC (/usr/lib/libreadline.so.5.2)
undefined symbol: UP (/usr/lib/libreadline.so.5.2)
undefined symbol: BC (/usr/lib/libreadline.so.5.2)
undefined symbol: tgetflag (/usr/lib/libreadline.so.5.2)
undefined symbol: tgetent (/usr/lib/libreadline.so.5.2)
undefined symbol: tputs (/usr/lib/libreadline.so.5.2)
undefined symbol: tgoto (/usr/lib/libreadline.so.5.2)
undefined symbol: tgetnum (/usr/lib/libreadline.so.5.2)
undefined symbol: tgetstr (/usr/lib/libreadline.so.5.2)
查了一下發現這些東西在 libtermcap 裡,比較簡單一點的方法就是修改 Makefile 或 build script,在 linking 時加上 libtermcap 即可
Debian GNU/Linux device driver check page 在 kerneltrap 上看來的網站,把 lspci -n 的結果丟進去即可,相當方便
Debian GNU/Linux device driver check page 在 kerneltrap 上看來的網站,把 lspci -n 的結果丟進去即可,相當方便![]()
最近弄到 4G ram 可以揮霍,不玩一下 ramdisk 對不起自己…
最近弄到 4G ram 可以揮霍,不玩一下 ramdisk 對不起自己…
首先試著跑一下 64bit Linux 的 Live CD,的確可以直接抓到 4GB 記憶體。不過暫時應該繼續跑 32bit OS,如果不特別處理的話只能抓到 3G 左右的記憶體,因此參考了網路上的一些資料開始做實驗,把 32bit OS 抓不到的空間拿來當 ramdisk 使用
Linux
編輯 kernel 設定,開啟 PAE 後重新編譯安裝 (要選 64GB,如果只選 4GB 重開機後還是只看得到 3.2GB)
設定 tmpfs,若沒有指定大小,預設是系統記憶體最大值的一半 (也就是 2GB)
Windows
下載 Gavotte Ramdisk
執行 ram4g.reg 後,執行 ramdisk.exe 設置 ramdisk。圖文版操作可以參考這篇文章
裝完馬上就可以看到 ramdisk 跑出來了,系統內容顯示的記憶體大小一樣是 3.25GB (沒有被 ramdisk 吃掉)
為求保險重開機看看,第一次重開機發生 signal out of range,螢幕沒有畫面 (感覺是我的硬體不穩…)
強制重開機後順利進入系統,初步看起來正常,而且 boot.ini [...]
我只是想安裝 imagemagick 而已,這是什麼情況…
我只是想安裝 imagemagick 而已,這是什麼情況…
所以我說相依性是邪惡的東西阿…

把 TeXLive 2007 抓下來已經是上個月的事了,可是因為一些雜事所以一直沒動手。今天剛好趁著颱風假把 iso 燒出來玩。安裝 TeXLive 事實上是很簡單的,但要注意的是,TeXLive 有分 DVD 和 VCD,如果不想安裝在硬碟,而是直接取用光碟內的檔案的話,只能下載 DVD iso。我目前是選擇不安裝到硬碟,好為我可憐的小容量硬碟多搾出一點空間。
即使我會安裝字型,但要從無到有設定好 LaTeX 環境還是第一次,多少有點擔心。但在我抓完 iso 到實際動手這段時間中,正好 Sayya BBS 有人在討論,做了一些心理準備後果然一切都很順利,在此先感謝各位大大提供的資訊。另外 iso 中也附上還算詳細的安裝文件,建議動手前先看一下 (頁數不多,不會花太多時間)。
雖然說是不用安裝,可以直接使用光碟內的資料,但因為有時候需要寫入一些設定檔,所以還是得準備一個地方存放新字型和設定檔之類的東西。在安裝程式設置完整個環境後,大概會用掉 3MB 左右。後續安裝的新字型當然得另外計算了。
安裝步驟:
將光碟掛載 (mount) 起來
執行 install-tl.sh 程式 (若安裝在系統中請用 root 權限來跑)
修改設定檔與字型的安裝目錄 (TEXDIR)
選擇 set up to run off CD or DVD
接下來安裝程式會自己設置好一切必要的目錄和檔案。完成後會提示你設定一些環境變數,但實際上可能需要多設定其他的才能用。我最後增加的設定如下:
新增到 .bash_profile
PATH=/mnt/cdrom/bin/i386-linux:$PATH
新增到 .bashrc
TEXMFSYSVAR=/usr/local/texlive/2007/texmf-var
TEXMFSYSCONFIG=/usr/local/texlive/texmf-local
TEXMFLOCAL=/usr/local/texlive/texmf-local
TEXMFHOME=/home/letoh/.texlive2007/texmf-var
export TEXMFSYSVAR TEXMFSYSCONFIG TEXMFLOCAL TEXMFHOME
實際會用到的目錄大概只有 TEXMFSYSVAR 和 TEXMFHOME。讓這些新設定生效後,應該就可以使用 laTeX 等指令來產生文件了。如果系統同時存在舊的 tetex 套件的話,先確認一下 [...]
把 TeXLive 2007 抓下來已經是上個月的事了,可是因為一些雜事所以一直沒動手。今天剛好趁著颱風假把 iso 燒出來玩。安裝 TeXLive 事實上是很簡單的,但要注意的是,TeXLive 有分 DVD 和 VCD,如果不想安裝在硬碟,而是直接取用光碟內的檔案的話,只能下載 DVD iso。我目前是選擇不安裝到硬碟,好為我可憐的小容量硬碟多搾出一點空間。
前陣子一直覺得 cvs 和 svn 並不是真的那麼好用,因此在看了許多人的介紹後,我也決定加入水銀黨了 (誤…
之前在 OSDC.tw 聽過 svk 的介紹後其實就有點心動,想把手上的程式碼轉過去試試,不過安裝起來沒那麼方便,就一直拖著 (是不難啦,但就是懶….)。後來因為要裝 X.org,所以在系統裝了 git,但也就用過那麼一次,看到一大堆指令就放棄了,沒有實際拿來管理檔案。一直到知道 mercurial 的存在,才下定決心要來瞭解一下 DVCS 到底是怎麼回事…
首先是 clone、pull 和 push 的概念,用於 repo 之間的操作。在沒有實際使用 DVCS 前一直不能理解這兩個指令的用途。除了 repo 可以無限複製外,同一個 repo 甚至可以有多個 HEAD。除此之外 tag 和 branch 的概念也不太一樣了,使用觀念上雖然需要不少修正,但在操作上卻沒有增加太多複雜度,反而讓寫程式的人可以更放心修改,更隨意修改
之前使用 cvs 最麻煩的一點是少了網路就什麼都不能做;svn 雖然有一點改善,但也只是比 cvs 好一點而已。除了對網路的依賴性大減外,易用性才是我最欣賞的。以前在在 cvs server 建立新的 module,得先 import,然後再 checkout 出來,同一份專案得經過兩次網路傳輸才能開始使用。但 hg 可以直接把要控管的目錄變成 repo,直接就能開始控管,因為都是在本地端的操作,所以速度相當快
另外在一些文章中有看到 hg 會保留檔案權限 (permission),應該把 etc 丟進去試試看,以後管理系統會更方便,不用複製一大堆備份的設定檔了
唯一比較有礙於推廣的理由大概就是 GUI frontend 的支援了。雖然有一個 hgk 可以用,但也只能看看目前 repo 長什麼樣子 (雖然如此,幫助也很大了)。目前似乎還沒有出現像 wincvs [...]
前陣子一直覺得 cvs 和 svn 並不是真的那麼好用,因此在看了許多人的介紹後,我也決定加入水銀黨了 (誤…
最近在 Debug 程式時總覺得之前弄出來的 output highlighter 不太夠用,雖然可以很方便標出一些關鍵字,但規則一多就得串一大堆,效率不彰。不曉得腦筋怎麼轉的,突然想到 Vim 應該可以好好利用一下…
拜了一下 google 大神果然查到 Vim 有提供 pager 的功能:
Tip #121: Using vim as a syntax-highlighting pager
Using vim as a syntax-highlighting pager
我把 less.sh 複製到 ~/bin/vimless 來用。接下來就是自己改一個 syntax file 來用。我直接拿 vim 內附的來改,一般會放在 <VIM>/syntax 這個目錄底下,抓一個來放在 ~/.vim/syntax 中就可以動手改了。最重要的是程式一開始要輸出 vim modline,例如:
# vim: ft=l3hdebug
這樣丟給 vim 時可以自動啟用正確的 syntax highlight rule。只要程式的 debug message 格式變化不要太複雜,基本上都可以應付。應該可以再配合 colorscheme 來設定顏色,基本上也是參考一下 <VIM>/colors 目錄底下的檔案來改就好。
接下來只要把程式的輸出重導給 [...]
最近在 Debug 程式時總覺得之前弄出來的 output highlighter 不太夠用,雖然可以很方便標出一些關鍵字,但規則一多就得串一大堆,效率不彰。不曉得腦筋怎麼轉的,突然想到 Vim 應該可以好好利用一下…
我常常要在一堆 output 中找特定關鍵字,通常是透過 sed 來加上顏色,不過剛剛覺得一大串指令很煩,寫了個簡單的 script 包起來了
下載 highlighter
使用方式很簡單
some_program | hl <keyword> [<ansi color code>]
或是
hl <keyword> [<ansi color code>] < some_file
這邊的 ansi color code 只要填數字的部份,不用加上前面的 Esc[ 與最後的 m
多個關鍵字比較麻煩,目前只能多跑幾次
some_program | hl <keyword1> | hl <keyword2> [ | hl …]
最近幾個晚上都在嘗試手動將系統更新到 current,雖然沒看文件就硬上實在很勇敢,不過 slackware 的優點就是爛了要救回來也不難,它的套件管理系統有一個很棒的特性:upgrade 其實只是 replace,而且因為不做相依性檢查,所以只要一個指令就可以隨心所欲 upgrade 或 downgrade。就是因為這個特性,即使我已經同時使用 debian 將近四年,我還是離不開 slackware (再講下去會不會變成偽推廣文XD)。總之這幾天瞎搞一陣後,大部份問題都解決了。更新過程中最頭痛的三個項目:glibc、Xorg、與 kernel,在此記錄一下目前的情況…
雖然我已經好幾年都是跟著 current 在更新,不過今年開始的 current 變化相當大,看著 Changelog.txt 幾個月來還是不敢貿然追上….但因為舊的 kernel source 好像有點問題,導致跟 input device 相關的模組或程式都無法編譯,這一點就很令人頭痛了,不但模擬器不能玩,mplayer 也不能用 gamepad 控制了。所以在上週末就痛下決心把系統追上 current。
首先第一個大變化就是 glibc 從 2.3.6 躍升到 2.5。前幾個 slackware 版本一路走來也不過是 2.3.4 到 2.3.6,一下跳到 2.5 實在太刺激了;再加上小時候曾經被升級 glibc 嚇過 (但當時是 glibc1 -> glibc2),所以想了很多事前準備,希望可以將損害降到最小…不過實際在做的時候完全忘了這些準備,一時手滑就直接下了 upgradepkg glibc*.tgz 這樣的指令…沒想到就升級好了,至少玩了一個禮拜還沒出狀況 (但這不是官方建議程序…)。
再來是 Xorg。過去的 Slackware 很單純,只要裝上 x11、x11-devel、x11-font-* 等套件就可以了,雖然每一包都超大一包,但這麼久以來也已經習慣了。這次把這幾個套件通通炸開,像其他 distro 一樣分裝成一堆小套件,不曉得哪幾個是必要的套件,又不想通通安裝,萬一爛掉又得搞上一段時間,所以這個就先放著不動。比較可行的安裝步驟在 cruuent tree 附的文件有寫,要進行的話可以參考。
最後是 kernel。目前的 kernel 是 2.6.21,但因為 gcc 也更新到 4.1.2 了,所以要一併更新,不然新的 module 會無法載入 (我現在才知道安裝新 module 會同時認 kernel 版本和 gcc 版本)。但這還是小事,比較麻煩的是官方 ftp 只附了 smp 版本的 kernel source,而我是用 non-smp 的 kernel,所以編譯出來的 nvidia module 一直裝不起來,這讓我這個久沒自己編譯核心的人差點想自己弄一份來用。不過後來想到 /boot 底下有留一份 config 檔,透過這個組態檔就可以將 source code 轉換成 non-smp 的版本,完整步驟如下:
installpkg kernel-source-2.6.21.1_smp-noarch-2
cp /boot/config-generic-2.6.21.1 /usr/src/linux/.config
cd /usr/src/linux
make oldconfig && make prepare
/path/to/NCIDIA-Linux-x86-1.0-xxxx-pkg1.run
我一直以為自己記性還不錯,但事實證明該忘的還是會忘,繞了那麼多天才想到這種簡單的方法XD
之前用了幾天 smp 版本的 kernel,不曉得是不是因為這樣,在使用 wacom tablet 的時候發生過幾次死當,但我猜很大機會是 gimp 的問題或 wacom driver 與舊版 X 不合 (目前還是用 6.9.0),要再找找 linux 下有沒有其他繪圖軟體可以支援繪圖版的感壓功能,不然就只能更新 X 了。這幾天再觀察看看換回正常版的 kernel 能不能改善這個問題。
另外就是 current 裡提供的 python 目前是 2.5.1,我還在考慮要更新還是再裝一份 (硬碟太小,要裝新東西都得考慮再三…)
最後簡單說明一下官方建議的升級步驟:
- 先裝完 2.6 kernel,確認可以正常開機
- 進入 single mode
- 依序更新 a/glibc-solibs, a/pkgtools, a/sed
- 移除所有 x11-*, fontconfig*, dejavu-ttf*, ttf-indic-fonts*
- 更新 aaa_base 做完才能進行下面的步驟
- 用 upgradepkg –install-new 指令來安裝 l/expat, x/libfontenc, x/fontconfig, x/mkfontdir, x/mkfontscale, x/x11-skel
- 將記註在 Removed Packages 一節的套件都移除掉
- 確認 lilo 的設定並重新安裝一次 若必要請製作 initrd
- 檢查所有新的設定檔 (檔名以 .new 結尾) 合併或更新到目前使用的設定檔
- 注意 passwd, shadow, group, gshadow 等設定檔的更新
- 重新開機或回到 runlevel 3
- 產生新的 xorg.conf 並執行 xwmconfig
詳細的步驟與相關資訊可以參考 current 目錄底下的文件。








