Zonhan's Blog Rotating Header Image

OSX與多重啟動:二、分割表的概念

什麼是分割表( Table)?顧名思義,自然就是一張表格,專門記錄你的硬碟如何切割;沒有切割,哪裡來的D槽?沒有D槽,又哪裡來的空間存放那些楚楚動人的愛情動作片呢?咳咳,抱歉離題了。總而言之,磁區的分割與規畫是很重要的。讓我們來瞭解 Windows 和 是怎麼處理磁區分割的。

Windows 和大部分的 OS,使用的是較為老舊的 Master Boot Record,簡稱 。這個分割表的特色就是只能擁有最多四個主要分割區;當你有了四個主分割區,其他分割區就只能以隸屬於其中一個主分割區的邏輯分區存在。當主分割區毀了,底下的邏輯分割區自然也跟著說再見。舉個例來說,如果我們把 Windows 放在主分割區,接著把 安裝在 Windows 主分割區下的邏輯分割區;當 Windows 因為中毒而毀了分割表, 也就跟著掰掰囉。這就是 最大的缺點。

採用的是新式的 Table,簡稱 。這個分割表最多可擁有 128 個主分割區,沒有邏輯分割區,因此沒有分割區互相影響的問題;其中在安裝 時,會多佔用一個200MB 大小的 EFI 磁區。

既然 和 Windows 採用的分割方式不同,那 的 Bootcamp 是怎麼處理 windows 和 共存的問題?原來 將前四個分割區,加入了 的分割表,也就是混合 成為 / 磁區;這四個分割區同時具有 的分割表,這樣就能處理不支援 的作業系統了。不過別忘了,第一個分割區被 EFI 所佔用,因此能用的 分割區只有三個,但拿來處理 Windows 是綽綽有餘的。

那,其他的 OS 呢?較新的 Linux Distro,都能安裝在 分割區上,FreeBSD 8.0 也可以,其餘的可就不敢保証了,乖乖用 分割區去處理吧。


OSX與多重啟動:一、作業系統的啟動程序

上, 和 windows 的磁區分割與多重啟動,是由 Bootcamp 統一處理的,但是在一般的 PC 上,因為 EFI 的問題使得 Bootcamp 無法使用,必須用另外的方法去處理。

我們先來瞭解何謂多重啟動。每個存在作業系統(OS)的分區,最前段都記錄著一些資訊,告訴電腦要去哪裡找這個作業系統的啟動程式();當電腦開機後,先進入BIOS,BIOS會偵測活動分區(一個硬碟裡只存在唯一的一個)裡的開機資訊,偵測到後就丟給該 OS 的啟動程序去處理。

最簡單的情況,就是只有一個 OS,啟動程序如下:

但是,當有多個 OS 存在時,該怎麼處理呢?有些 OS 的 具有引導其他 OS 的功能,只要自動偵測其他磁區的開機資訊,或是自行編輯開機表就可,像是 Linux 常用的 Grub2。如下:

  • BIOS -> Grub2─┬─> Win -> Windows (XP. Vista. 7)
             ├─> Linux
             ├─> (Chameleon. PCEFI. BootThink) ->
             ├─> 其他 OS 的 -> 其他 OS
             ├─> ...

但有的 OS 的 就沒這麼強大,可能只有引導自己或其他小部份 OS 的功能,就得靠其他引導程式的輔助。舉個例:

  • BIOS -> NTldr ─┬─> windows
             └─> tboot ->

上例是僅存在 Windows XP 和 的情況。BIOS 偵測到 NTldr (Windows NT , XP 用的就是這個), 接著可選擇啟動 Windows,或是藉由額外加入的 tboot 來啟動 。很簡單,但是擴充性很差,就只適用 XP 和 共存的情況,並不支援 Vista、Win7 或 Linux 等等其他的 OS。由於 Win7 即將推出,我們自然不考慮這種方式。

如果打算安裝 Linux,Grub2 自然是不錯的選擇,但是一般人很少接觸 Linux,因此這個方法只推薦給 Linux 使用者。那一般人該用什麼方式呢?別煩惱, 用的引導程式 Chameleon、PCEFI、BootThink等等,都支援其他 OS 的自動偵測與引導喔~


[Leopard on X61] 解決10.5.8的休眠or睡眠問題

記得前一次在直升10.5.8時,產生了無法休眠或睡眠的問題,造成許多筆記型電腦使用者的困擾;所幸這個問題現在已經有解了,那就是安裝 SleepEnabler.kext

安裝方式同前面所述,解壓後放至主分區的 Extra/Extensions 或 EFI 磁區的 Extra/Extensions 下即可。

ps. 順便更新了安裝前準備的 efi.tgz 檔案

[Leopard on X61] 升級 OS X 10.5.8

10.5.8 終於在今日釋出,這可能也是的最後一個版號了。讓我們來看看它修正了什麼問題:

關於 Mac OS X 10.5.8 Update

建議所有執行 的使用者都安裝“10.5.8 更新”,此更新項目包含了一般的作業系統修正,可改進 的穩定性、相容性和安全性,同時還修正了以下特定項目:

  • 加入 AirPort 網路的相容性和可靠性問題。
  • 導致“顯示器系統偏好設定”無法顯示部份螢幕解析度的問題。
  • 可能影響 Bluetooth 可靠性的問題。

可以發現,這次的修正和我們之前安裝時遇到的問題息息相關,來看看安裝後修正了什麼:

  1. 開機時的螢幕亮度
    之前開機在進入系統時,亮度會自動降至最低,需要用另外的方法解決;現在進入系統時,它就會自動調至最高亮度。
  2. 藍芽子卡的偵測
    在10.5.7,藍芽子卡有經常性消失的問題,需常常重開機或直接刪除AppleHPET.kext才能偵測到;這個問題在10.5.8得到修正。其實並沒有,是因為我之前已刪除了 AppleHPET.kext。
  3. 左側的 USB 孔 (仍待驗證)
    前一版會不時降成 USB 1.1 的超慢速,在此一版本恢復正常。可能也是我刪除 AppleHPET.kext 的緣故。

至此, on 終於可以說是臻於完美。就讓我們等待 Snow 的降臨吧!

註:剛才發現一個嚴重的問題:休眠失效了。解決方法是刪除 IntelCPUPMDisabler.kext 或 Disabler.kext (讓內建CPU電源管理無效的kext),用回系統內原本的 AppleIntelCPUPowerManagement.kext,但是要先 Patch 過 DSDT 才不會 Kernel Panic。我的 不知為何 Patch 後還是會產生另一個問題。還是暫時忽略好了 (汗)…

2009/8/23 休眠問題已經有解了,請參考[Leopard on X61] 解決10.5.8的休眠or睡眠問題

[Leopard on X61] 六、結語

跟著跑一次安裝,你就知道大致的流程如下:

① 用Boot-132 CD開機,讀入原版安裝片

② 用Disk Utility分割磁區

③ 把事先準備好的開機程式、破解和驅動丟到 EFI 分區,用update.sh產生驅動檔的Cache檔Extension.mkext

④ 進行系統安裝,並升級至最新

⑤ 針對不能存在EFI分區的驅動,進行系統安裝後的驅動安裝(這部份的檔若升級後有被新版本覆蓋,須再次進行驅動的安裝)


EFI裡的驅動要升級或改用其他驅動:

① 掛載EFI分區 ( sudo mkdir /Volumes/EFI; sudo mount_hfs /dev/disk0s1 /Volumes/EFI )

② 將要用的驅動檔丟到該分區的 Extra/Extension/ 下

③ 切換至 Extra/ ,執行 sudo ./update.sh,更新Cache檔

④ 執行 sudo umount -f /Volumes/EFI,卸載EFI分區,並重開機

大部分的硬體皆能在完整流程後成功驅動,的確是一台很好的 實驗機,只可惜沒有多重觸控板,瀏覽的順暢度仍比不上真正的MacBook。要用上最低限度的雙指觸控,改用T61或X300會比較好,尤其是X300,基本上和的配備相同,但加上了多重觸控板和WebCam,螢幕和鍵盤比大,重量較輕,續航力更是大大勝過/X61S/X61T,是X系列裡最適合上的機器。

由於MacBook的顯卡已全改用NVIDIA的顯示晶片,但 X系列為了省電和散熱的考量,不太可能採用獨立顯示,因此之後的 X系列對顯示上的支援將愈來愈低。我想,要完美的安裝上 ,往後的機型應該是不太可能了。