About me

我的相片
I'm a web and software developer from Kaohsiung, Taiwan.
I design and implement user interfaces, also contribute to open source projects.
http://penkia.net/portfolio

2008年6月4日 星期三

xPUD 0.3 - 15 秒開機的 LiveUSB


檔案請到這邊: xpud-0.3-liveusb.zip 下載.

主要功能


這次比較特別的是引入了快速開機的功能, 大抵是將原本有架構且彈性的系統砍得千瘡百孔, 可說是削足適履的最佳典範.

我測試過的 laptop 和 desktop 平均都可以在 10~15 秒內進入 X. 詳細使用方法請繼續往下閱讀. 請記得這個系統僅供實驗用途, 千萬不要用於主要的工作機器, 不建議也沒有辦法安裝. :)

系統架構


整個系統的映像檔解開後大概長這樣:
xpud-0.3
|-- boot
| |-- fastinit
| |-- initrd.img
| |-- session
| `-- vmlinuz
|-- casper
| `-- filesystem.squashfs
`-- syslinux.cfg

以下分別說明各個檔案的更新:
  • fastinit - 不同於以往的快速開機作法, 這次的 init 程序是一隻 bash script, 更棒的是還獨立於 image 之外, 這表示你可以隨時在 USB 隨身碟上修改而不用重新壓縮整個檔案系統.

  • initrd.img - 大量精簡 script 以後, 批次啟動 udev 的 trigger. 主要目標就是預先建立可以開啟 X 的環境.

  • session - 這也是一隻 bash script, 所有一般 user 應該執行的程式都從這裡開啟. 目前就是依序執行 scim, firefox 和 xterm.

  • vmlinuz - 將 USB 裝置的支援預先編入, 沒有 ohci_hcd 是因為在某些狀況下會有 hang 住的問題.
若是碰到無法 mount root 的問題, 可以在開機時加入 udev 參數, 也就是像這樣 boot: fast udev, 如此一來會完整的啟動 udevtrigger, 代價是可能會多花幾秒鐘.

另外螢幕解析度和滑鼠都是寫在 fastinit 當中, 若使用不同的裝置 (如 USB 滑鼠) 就需要做相對應的修改.

下一步?


應該要開始嘗試用 Poky 來做了. XD

2 則留言:

jserv 提到...

Poky (with stripped OpenEmbedded) 若能配合前述 fast booting / image compressor 的機制,應該很棒!

想像未來只要 bitbake pud-image 就生出這些 images,需要安裝套件時,再 ipkg/opkg install 即可

penk 提到...

yeah, 所以我正開始面對錯綜複雜如義大利麵的 .bb 檔地獄. XD

附帶一題, Mozilla 的 nsLocalFile.launch() 真是又髒又好用阿!!