Overview of the GeeXboX operating system:zh TW

From GeeXboX wiki

Jump to: navigation, search

GeeXboX 是一種 Linux distribution,旨在使您花最少力氣讓電腦成為媒體中心。它可以從光碟、隨身碟、或網路啟動電腦,而且完全在記憶體中執行以達「快、冷」要求。這意味著主機不需要硬碟或任何型式的儲存媒體。

這份文件將提供全面的結構geexbox操作系統的人已經認識到Linux操作系統. 如果您在這裡看你的利益,你也許會考慮介入Geexbox發展.

這份文件將提供 GeeXbox 作業系統結構概觀給那些對 Linux 作業系統已有基本認識的人。若您對於此處所讀有興趣,或許您可以考慮加入 GeeXboX 的開發。

Contents

檔案系統封裝

就像大部份 Linux 作業系統,GeeXboX 也使用一個多階段開機程序以善用檔案系統封裝。一個檔案系統封裝是將一個檔案系統裝在一個檔案裡或一個保存檔裡。在 unix 下,一個 tar 保存檔可以視為簡單的封裝。GeeXboX 用了幾個不同的壓縮式封裝來降低檔案空間(利於攜帶)。

開機順序

本節處理從光碟開機,但是大部份也適用於從隨身碟開機或硬碟開機。

BIOS

你的電腦供電後的第一件事就是它的 POST(供電後自我測試),然後控制權又交由 BIOS 將自己載入記憶體並依組態執行相關動作。因此為了使用 GeeXboX 光碟開機,您必須擁有一個有能力設定從光碟開機的 BIOS。所有現代化的 BIOS 應該具備這樣的能力。隨身碟也類似。否則您需要準備一份開機用的軟碟片。

MBR

BIOS 從光碟片載入 MBR(主要啟動紀錄)到記憶體中並執行它。BIOS 在光碟 MBR 的位置找 MBR 的動作是根據 ISO9660 標準而定。一般來講,啟動區載入軟體提供 MBR 裡的二進位碼,通常是以組合語言寫成,以「真實模式」執行,這個模式仍然將自己看成 286 且只有 640K 記憶體。一旦核心被啟動,系統切換到保護模式,此時核心可以使用 32bit 定址它的記憶體,而且以全功能方式執行。

ISOLinux

ISOLinux 是 GeeXboX 從光碟啟動時的啟動區載入器(註:安裝到硬碟後則採用 grub,見下面說明),在 ISOLinux 設定檔(/GEEXBOX/boot/isolinux.cfg)中,最重要的參數有三個:指向核心檔(vmlinuz)的路徑,指向根檔案系統(initrd.gz)的路徑,及此檔案系統型態(ramfs)。Here is where the file system wrappers start to play a part.

核心載入記憶體後先解壓縮,啟動區載入器知道如何解壓 gzip 格式的根檔案系統(initrd.gz),並將之解壓到記憶體後掛載之。就這點來看,我們也可以說 ISOLinux 也算是個作業系統,它可以做些有用的事,如后所述,它已經具備一堆作業系統的功能。

GRUB

GRUB 是 GeeXboX 安裝到硬碟後所採用的啟動區載入器,其設定檔在 /boot/grub/menu.lst。

initrd

一旦初始化的檔案系統掛載後,核心將控制權切換到使用者程式,此時我們稱之為使用者空間。以我們的例子是這樣做的:

/bin/sh /linuxrc

這看起來簡單,但是此處會發生不少事,initrd 因為 /bin/sh 是個符號連結而將送控制權送給 /bin/busybox

Busybox

Busybox 可以說是個嵌入式 Linux 專用瑞士刀,一個非常強有力的工具。它可以編製成包含一大堆有用的標準 GNU 程式,而叫用時,它是檢查命令以便作出該命令的適當反應。例如:

% /bin/busybox tar xzf somefile.tar.gz

這將會讓 busybox 以 GNU tar 命令般來解壓指定檔。這也就是為何稱為 多重呼叫執行檔,它可以以很多名字來叫用,而以該叫用名稱來動作,因此一般是以符號連結它成各式各樣的命令。

busybox 以十分簡單的方式出現在 initrd 中,它適合用來完成取得主檔案系統的掛載等開機程序,除非你知道你在做什麼,否則它不適合用來做交談功能。

linuxrc

Linuxrc 是一個 Shell 草稿檔,包含我們目前會遇到的最初的使用者空間執行邏輯。它主要以合理的方式處理核心找到的裝置,還有掛載主檔案系統。

快速瀏覽一下 linuxrc 的任務為:

  • 掛載 RAMFS 及 pivot_root, 將目前的檔案系統移至記憶體檔案系統。
  • 掛載核心檔案系統(/proc, /sys)並讓 busybox 安裝它自己到這個檔案系統上面。
  • 開始核心裝置的 udev 介面
  • 找出我們要啟動的檔案系統及 bin.tar.lzma 所在,並將之解壓到 RAMFS 中。

bin.tar.lzma

這是一個壓縮檔案系統,基本上是一個有著較佳壓縮率的 tar 保存檔,使用時在必要時時它會產生檔案與目錄結構。在這個檔案系統中,裡頭全部是二進位檔、共享函式庫以便有效使用你的電腦硬體,目前它支援非常大量的硬體。這個檔案系統也包含大量的草稿檔以提供各種功能所需的介面,例如 tvon, tvoff,這樣的方式會讓軟體模組化,若對特殊硬體自製 GeeXboX 有興趣,此處也是你的硬體相關函式庫或二進位檔或驅動程式適當的地方。

linuxrc 接著做...

  • 從光碟中複製重要的檔到 RAMFS(記憶體檔案系統)
  • 最後執行 /sbin/Init

init

我們現在處於開機程式的第二步,看起來也比較像"正常"Linux 啟動過程。在眾多事情當中,init 開始執行位於 /GEEXBOX/etc/init.d 中的 scripts 檔,這非常像 debian 系統的作法。


要擴充本文件? 看看 talk 會有些想法.

Personal tools