Pages

Thursday, May 24, 2007

upgrade to slackware-current

最近幾個晚上都在嘗試手動將系統更新到 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,我還在考慮要更新還是再裝一份 (硬碟太小,要裝新東西都得考慮再三...)

最後簡單說明一下官方建議的升級步驟:

  1. 先裝完 2.6 kernel,確認可以正常開機
  2. 進入 single mode
  3. 依序更新 a/glibc-solibs, a/pkgtools, a/sed
  4. 移除所有 x11-*, fontconfig*, dejavu-ttf*, ttf-indic-fonts*
  5. 更新 aaa_base 做完才能進行下面的步驟
  6. upgradepkg --install-new 指令來安裝 l/expat, x/libfontenc, x/fontconfig, x/mkfontdir, x/mkfontscale, x/x11-skel
  7. 將記註在 Removed Packages 一節的套件都移除掉
  8. 確認 lilo 的設定並重新安裝一次 若必要請製作 initrd
  9. 檢查所有新的設定檔 (檔名以 .new 結尾) 合併或更新到目前使用的設定檔
  10. 注意 passwd, shadow, group, gshadow 等設定檔的更新
  11. 重新開機或回到 runlevel 3
  12. 產生新的 xorg.conf 並執行 xwmconfig

詳細的步驟與相關資訊可以參考 current 目錄底下的文件。


This article was originally posted on this site.

1 comment:

  1. 後來發現在 slackware-current/extra 目錄有一個 smp2nosmp 的 patch 與 kernel header package...

    不過昨天 wacom tablet 當掉後,nosmp 的 kernel 再起不能,重裝也救不回來,要再研究一下到底是怎麼回事XD

    ReplyDelete