2012年6月29日 星期五

我又移民了: Fedora 17 KDE 安裝筆記及 ibus 的眉角

幾個月前被三秒緯勸敗一部 ThinkPad x220i, 不過 SimplyMepis 11 的 kernel 太舊, 播影片會當掉。 學期當中一直放著沒處理。 最近又聽三秒緯在說 Fedora 17 的好處, 於是趁著暑假 比較閒 可以認真從事學術(?)研究, 就把它裝起來了。 我在 x220i 上裝完之後, 又在組裝牌桌機上裝一次。 看到 三秒緯的安裝那麼順利, 不禁感嘆 人帥真好啊! (謎之音: 跟年輕的其他優勢比較有關係吧?) 而且組裝桌機的 m61pme-s2p 主機版上面所採用的顯示晶片是 nvidia 家的, 居然把我的 linux 整個給當掉了! 以下是我的安裝筆記, 希望可以幫其他類似遭遇的朋友省下一些時間和頭痛。

一、 從下載到開機

原先有試過 Fedora 17 官方版, 但是對我而言超級重要的 autoraise 功能 (滑鼠移到一個視窗, 它就自動跳到最上層, 不必點) 在 gnome 3.4 裡面卻不知道該如何設定。 我甚至沒弄懂內建的 window manager 到底是不是 mutter; 然後又找到一篇 沒人回應的求助, 就決定放棄 gnome 了。 又根據 這篇 下了 grep flags /proc/cpuinfo 指令, 發現我的組裝桌機的 cpu 是 64 bit 的! 我竟然把它當做 32 bit 用了一兩年! 於是到 官網 下載 Fedora-17-x86_64-Live-KDE.iso。

一樣採用 無光碟愛地球環保安裝, 把映像檔的內容拷貝到救命碟上, 並且把 isolinux/isolinux.cfg 裡面的設定拷貝到 boot/grub/menu.lst 改一下語法, 變成這樣:

    title       Fedora 17 x86_64 KDE installation
    kernel      (hd0,4)/isolinux/vmlinuz0 root=live:LABEL=f17-x86_64-kde rootfstype=auto ro liveimg quiet  rhgb rd.luks=0 rd.md=0 rd.dm=0
    initrd      (hd0,4)/isolinux/initrd0.img

並且設定隨身碟上放置光碟內容那個分割的 label: e2label /dev/sdz5 f17-x86_64-kde 其中 f17-x86_64-kde 可以任意取一個名字, 只要跟 menu.lst 裡面的設定一樣就好。

二、 放鬆安全檢查與加速

安裝過程沒得選語系, 不過大致上都還蠻簡單的。 一如以往, 遇到 install boot header on ... 的時候, 我選擇不要裝在 MBR, 而是裝在安裝分割; 自己另外再手動修改我原本的 boot/grub/menu.lst 。 裝完之後第一件事, 建議先編輯 /etc/selinux/config 把其中的 SELINUX=enforcing 改成 SELINUX=permissive 或者更乾脆 完全取消: SELINUX=disabled 因為我的家目錄用 symbolic link 指到資料分割底下的目錄, 方便不同版本的 linux 共享。 如果不這麼設定的話, 連登入都會有問題; 而 apache2 也無法啟動。 要重新開機或至少 telinit 1 才會生效。 至於這麼做到底犧牲了多少安全性... 那就以後再研究吧。

其次重要的是幫 yum 加速: yum install yum-presto yum-fastestmirror 詳見 12 YUM Tips and Tricks。 前者可以用 「比較差異」 的方式加速舊套件的更新; 後者則是自動找一個較快的映射站。 Gnome 版兩者都是內建的; KDE 版一開始並沒有裝後者。

三、 危險的組合: nvidia 顯卡遇到 OpenGL

我在組裝牌桌機上裝好之後, 覺得 X Window 卡卡的, 滑鼠抓著視窗移動時, 視窗好像追得很喘的感覺, 滑鼠必須不時停下來等視窗。 然後就給我死當! 整部機器! 我的 linux 很久沒這種經驗了! 原來是 OpenGL 不穩定; 改了這個設定就好了: 在 ~/.kde/share/config/kwinrc 裡面的 [Compositing] 那一節, 把 OpenGLIsUnsafe=false 改成 OpenGLIsUnsafe=true。 或者這樣也可以: 按照 這篇 在 /etc/xorg.conf.d 底下隨便建一個檔案, 內容是

        Section "Extensions"
            Option             "Composite" "Disable"
        EndSection

這裡是另一位受害者。 看來是因為我們的顯示晶片都是 nvidia 的 GeForce。 不太確定這只是單純的技術問題, 或是跟 Linus Torvalds 大大對 nvidia 嚴重不滿 的原因有關...

四、 中文化

再來是安裝中文套件: yum install cjkuni-ukai-fonts cjkuni-uming-fonts kde-l10n-Chinese-Traditional ibus ibus-table ibus-chewing im-chooser 。 也可以用 yum search ibus- 看一下其他還有哪些有趣的輸入法可以安裝。 比方我多安裝了 ibus-pinyin 跟 ibus-table-chinese-cangjie (其實我根本不會用; 不過等一下要拿來解釋 ibus-setup) 又, 雖然不必裝任何套件 konsole 就已經可以顯示中文, 不過我個人偏好看楷書字體。

中文顯示有兩種設定方式。 第一種方式是從系統層次做全面設定 (感謝 好馬哥 迅速 e-mail 解惑! 我無以為報, 只好 請馬哥去金錢豹!) 請編輯 /etc/sysconfig/i18n 這個檔, 加入以下:

        XIM=ibus
        XIM_PROGRAM="/usr/bin/ibus-daemon -d -x"
        XMODIFIERS=@im=ibus
        GTK_IM_MODULE=ibus
        QT_IM_MODULE=ibus
        LANG="zh_TW.UTF-8"
        LC_ALL="zh_TW.UTF-8"

(如果舊的設定有衝突的, 請註解掉 -- 例如 LANG="en_US.UTF-8") 這樣中文化比較完整, 而且以後所有的用戶都可以用中文。

另一種比較麻煩的方式是在 個人的啟始命令稿 .xsession 裡面加上

        export XMODIFIERS=@im=ibus
        export GTK_IM_MODULE=ibus
        export QT_IM_MODULE=ibus
        export LANG="zh_TW.UTF-8"
        export LC_ALL="zh_TW.UTF-8"

並且在 system settings => startup and shutdown => 左側選 autostart 裡面新增一個自動執行的程式, 填入 /usr/bin/ibus-daemon -d -x 這樣下次登入就會自動啟動 ibus。 可是這個方式中文化可能有漏洞: 像是同樣在 autostart 裡面啟動的 workrave 就會變成英文顯示。 所以還是用馬哥教我們的方式吧。

接下來, 在終端機下, 用自己 (而不是 root) 的身份執行 im-chooser 選取以 ibus 作為輸入法。

ibus-setup 的選取語言介面 再執行 ibus-setup (或者剛剛在 im-chooser 的介面底下選擇 preferences... 也可以) 這個一定要講一下, 它的介面真的很奇怪耶, 你...知道嗎? 點一下 「input method」 分頁, 你很可能會納悶: 「啊我明明裝了好幾個 ibus 的輸入法, 為什麼只顯示一兩個? (或是零個!)」 (如圖的左上。) 點一下 「select an input methoda」 如果沒看到 Chinese 就再點一下 「show all input methods」 (圖的左下) 「可是為什麼 Chinese 也是灰色的, 不能選啊?」 原來 很多人都有這個疑問。 請注意 Chinese 左邊的那個小小的右箭頭: 點下去就會變成小小的下箭頭, 而且會出現很多中文的輸入法啦! (圖的右側) 請把你要的加進去吧。 (咦, 嘸蝦米? 請確認中文環境設定正確, 然後看 這一帖。)

最後, 在 KDE 選單下, 也有一個語言設定要設一下, 屬於 KDE 所管的選單才會變中文。 system settings => locale => coutry/region & language => languages => 把 "Chinese Traditional" 加到 "Prefered Languages" 並且按 apply。

登出再登入, 以上所有的中文設定就會生效。

五、 安裝及更新其他好用套件

加上兩個套件庫: 一個是安裝 Adobe flash 要用到的; 另一個是大家都推薦的超豐富 rpm 套件庫 rpmfusion

        rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm
        (若你安裝的是 32 bit 版本, 請把上面的 x86_64 改成 i386)
        rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux
        rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm

Rpmfusion 還提供 nonfree 的套件。 Flash 套件的名稱叫做 flash-plugin; 如果看影片, 中文字幕變成空心方塊, 有兩種可能的原因: (1) 你像我一開始一樣, 沒有安裝 TED 指定要用的 cjkuni-uming-fonts 字型 (2) 你可能需要 修改 /etc/fonts/conf.d/49-sansserif.conf (因為每個人的系統所裝的字型不同, 所以其中的字型名稱可能需要下 fc-list 指令, 依你家的實際狀況修改)。 另外像是 rar 我到處都找不到, 卻在 這裡 發現。

然後用 yum search 關鍵詞 把你愛用的套件名稱查出來, 通通放在一個文字檔內, 每列一個套件名稱, 靠在最左邊, 像這樣:

        [ essential ]
        firefox
        lynx
        httpd
        php
        gpm

        [ nice ]
        flash-plugin
        drgeo
        gnuplot
        ...

比方說這個文字檔名叫做 favorite-rpms.txt 好了。 那麼下指令: yum -y install $(grep '^[a-z]' favorite-rpms.txt) ; yum -y update 安裝及更新軟體, 然後你就可以去休息幾十分鐘了。 (如果沒有加 -y 的話, 就要枯等 yum 問完問題才可以離開電腦。) 記得把 favorite-rpms.txt 存起來, 以後安裝別臺電腦很好用。

[7/25 補充] 今天才發現 F17 的 KDE 版已經內建 Calligra Suite 辦公軟體套件, 所以其實不需要再安裝 libreoffice 或 OO.o 了。

六、 [7/26 新增] 其他善後和疑難雜症

七月份, 我在一部 2004 年的華碩 z9100 筆電上安裝 F17。 本節內容大部分來自這次的安裝經驗。

在 Fedora 底下, 若希望某些系統服務在開機時自動啟動, 可以用 chkconfig 指令設定。 例如希望一開機就自動啟動 apache2, 可以這樣下: chkconfig httpd on

如果你的印表機是 HP 的, 建議直接把 hplip 列入套件安裝清單當中。 像我的 HP OfficeJet 4255 在 foomatic 的兩個資料庫當中都找不到 (rpm -ql foomatic-db | grep -i 'officejet *42'rpm -ql foomatic-db-ppds | grep -i 'officejet *42' 都顯示空字串); 但在 hplip 的資料庫當中就有出現。 (grep -i 'officejet *42' /usr/share/hplip/data/models/models.dat) 據說 印表機的驅動程式會視需要自動安裝 不過萬一要是離線時才連上印表機, 一時還真搞不清楚為什麼就是找不到我要的型號。

我在舊筆電華碩 z9100 底下, 發現螢幕下方的面版 (panel) 經常會消失 -- 例如想把主選單裡的應用程式拉下來變成捷徑的時候, 或是 firefox 新增完套件要重新啟動的時候。 比較一下消失前後的 ps x 結果, 發現死掉的是視窗管理員 kwin。 用 「firefox addon crashes kwin」 搜尋到 這頁, 但找不到解法。 所以乾脆換一個視窗管理員。 yum install openbox 之後, 在 「系統設定」 的 「預設應用程式」 的 「視窗管理員」 裡面, 就會出現 openbox 的選項。 輕薄短小, 很夠用。

同樣是這部 z9100 筆電, 在 /var/log/messages 裡面出現一大串 drm:intel_prepare_page_flip 這樣的錯誤。 看到 drm 就覺得背脊發涼: 這不是微軟跟蘋果世界才有的東西嗎? Linux 需要這幹嘛? (請見8F留言) 沒空研究了... 管他的, 反正舊筆電只拿來上網/寫字, 先隨便解決一下敷衍過去就好。 按照 這篇 的做法, 把以下內容:

    <driconf>
        <device screen="0" driver="dri2">
            <application name="Default">
                <option name="vblank_mode" value="0" />
            </application>
        </device>
    </driconf>

貼到 ~/.drirc 裡面去, 錯誤訊息就不再出現了。 如果要對整個系統任何使用者都生效, 應該是要放到這裡吧: /etc/drirc 。 ( 見這篇)

還是 z9100, 開機過程很快閃過一個錯誤訊息。 檢查 /var/log/boot.log 發現這個訊息: Failed to start LSB: Init script for TCSD. 用 yum provides /usr/sbin/tcsd 查出這來自一個套件 trousers -- Trusted Computing Group's Software Stack 哇靠, 信任運算 在我的機器上做什麼? 我不需要手銬啊! 這篇 跟我一樣不解。 趕快把沒用的東西關掉: chkconfig tcsd off

安裝完最愛的一堆套件之後, 開機時開始出現類似這樣的警告訊息: type=AVC msg=audit(1343215879.567:72): avc: denied { search } for pid=990 comm="login" name="/" dev="sda5" ino=2 scontext=system_u:system_r:local_login_t:s0-s0:c0.c1023 tcontext=system_u:object_r:file_t:s0 tclass=dir 原來是先前的 selinux 所印的。 那就讓這些所有的安全警告全部就地合法吧:

    audit2allow -M mycertwatch < /var/log/audit/audit.log
    semodule -i mycertwatch.pp

第一句話是要分析 selinux 過去的警告訊息, 產生一組新的 (放行用的) 安全規則文字檔, 叫做 mycertwatch.te (名字可自取); 第二句則是從這個文字檔產生出一個核心模組, 真的納入系統的規則。 有些訊息還是消不掉; 不過已經少很多了。 詳見 這帖部落格 以及 audit2allow 的用法說明

研究室的 HP dx5150 記憶體只有 1G, 裝了 64 bit 幾乎跑不動, 硬碟經常狂轉簡直就像當掉一樣。 有一次用 top 指令發現有一個 prelink 程序吃掉最多資源。 既然 prelink 並非必要套件, 就把它刪了吧。 又改安裝 32 bit, 系統就正常多了。

為了幫學生製作救命碟 (開學兩週了還沒配到助教, 有點煩耶...) 我需要用舊版的 grub 0.97。 但是 fedora (應該是多數的主流版本吧 orz) 都已經升級到 grub2 了, 就是不給裝舊版。 此外, fedora 官方的 grub 0.97 會讓我的 mk-boot-usb 失效。 於是 rpm -qa | grep grub 找出所有 grub2 套件, 全部刪掉: yum remove grub2 grub2-tools grub-eif。 再搜尋 「grub 0.97 rpm xpm」 找到 支援開機圖片的版本。 下載之後用 rpm -i --force grub-0.97-*.rpm 安裝就 ok 了。

七、 其他參考資料

以下有些文章只是搜尋到就順手蒐集進來, 也許哪一天有用。 也請搜尋 「fedora 17 tips」。 另外有一些是我自已遇到的怪問題的解答。 或 「fedora tips」。

  1. Fedora 17 安裝後的十件事
  2. How to make Fedora 17 more user-friendly with easyLife
  3. yum localinstall package.rpm
  4. Static IP Address Fedora 16
  5. booting process ignores rc.local?
  6. Scanner has stopped working - Xsane reports 'no devices found'
  7. error: you have not created a bootloader stage1 target device

12 則留言:

  1. http://askubuntu.com/questions/149576/auto-raise-broken-in-gnome-3-4-1
    這篇有人回應了:)

    回覆刪除
  2. 謝謝! 摘要一下: gnome 3.4.1 已不再使用 gconf-editor。 要改安裝 dconf-tools 並執行 dconf-editor 進入 org/gnome/desktop/wm/preferences 修改就可以 autoraise。

    回覆刪除
  3. yum -y $(grep '^[a-z]' favorite-rpms.txt)
    要加install吧

    回覆刪除
  4. 您好,請問嘸蝦米是怎麼放進去的呢?
    我在網路上看到之前的用法: 在/usr/share/ibus-table裡,放入tables與icon兩個目錄,分別把圖檔與db檔放在裡面,但是在FC17裡,好像沒有效果。

    回覆刪除
  5. 在 Fedora 17 上安裝 ibus-table 的嘸蝦米輸入法 :-) 還有, 請檢查一下本篇所說的 ibus-setup 的眉角哦。

    回覆刪除
  6. 在 2004 年的華碩 z9100 舊筆電上面也裝了一次, 遇到一些新的問題, 7/26 補了一大節。

    回覆刪除
  7. 那個drm指的是Direct Rendering Manager而非Digital Rights Management

    回覆刪除
  8. 原來老師改用 Fedora 了啊,有空可以試試看 Debian 7.0 (現在的 stable),搭配 MATE 可以找回 Ubuntu 10.04 的感覺 :P

    回覆刪除
  9. Hi Chu-Siang! Fedora 我只用了幾個月哦。 後來這一兩年我都用 http://newtoypia.blogspot.com/2013/09/antix.html 。 嗯, 有在考慮用 debian 做一個精簡版以便開機隨身碟可以自我複製。 http://newtoypia.blogspot.com/2013/09/puppy.html 跟 slax 一樣都很神奇, 可是遇到問題時較難搜尋到答案...

    回覆刪除
  10. 在下現在對隨身碟比較沒興趣了,畢竟效能真的差太多了,不過有考慮拿來教小朋友就是。

    回覆刪除