keywords:Linux, Mac, XP, 多重開機, MacBook pro
我在2009年買了一台15吋的MacBook pro,一直到最近才開始比較有時間去玩他。MacOSX本身當然沒有什麼大問題,但是想到要在MacBook pro上面裝linux跟WinXP就感到很刺激,可以預期的是,因為是intel的cpu,所以os本身應該沒有大問題;但是週邊設備(例如解析度、亮度、觸控版、音效、視訊、有線/無線網路, etc.)就真的很難保證。本文僅作為一篇經驗分享文,沒有太多的技術在內,僅作為筆記分享給需要的看官。
EFI與BIOS
BIOS(Basic Input/Output System)幾乎是普羅大眾學習電腦都會碰到的東西,有著跟pc一樣古老的歷史。簡而言之,他掌控了開機時的自我檢測,包含電壓、記憶體、cpu、硬碟等週邊設備。雖然所有配備都日新月異的在進步,但是bios卻是依然停留在16位元的環境。由於bios自我檢測之後會自動尋找第一個開機的裝置,如果是硬碟,則會尋找他的MBR(master boot record)。而MBR又有非常多的限制,只能有四個主要分割區,如果要安裝多個系統則需要小心維護MBR。這麼多年下來,bios的缺點依然沒有被改進。目前支援GUID的作業系統可以參考wikipedia的資料。
EFI(Extensible Firmware Interface)不但完全擁有BIOS的功能,而且他其實就是一個小型的os,扮演作業系統與韌體之間溝通的角色。能載入硬體的驅動程式,所以在EFI裡可以使用滑鼠、鍵盤。EFI使用的是GUID的分割表方式(或類型),有別於BIOS使用的是ms-dos的分割表模式,使得硬碟能有128個主要分割區,開機管理程式也不再放在MBR(當然,EFI也可以支援MBR),而是會放在GPT(GUID partition table),開機時由EFI去控制要開進哪一個含有作業系統flag的分割區。比起傳統的MBR,要安裝多個os,GPT確實方便且強大多了,只是他會佔用第一個主要分割區,而且不會自動隱藏。
行前準備
- MaxOSX Snow Leopard安裝光碟
- Windows XP安裝光碟
- MintLinux 9安裝光碟
- 決定讓三個os都能讀取的檔案系統:hfsplus
- 完全不使用bootcamp
- 決定安裝順序:MacOSX->Windows->Linux
MacOSX的安裝與硬碟配置
我是從頭重新安裝MacOSX的,為此我還買了一個1T的硬碟來取代裡面原本的250G小硬碟--對於重度使用virtual machine的我,使用固定大小的映像檔需要很大的空間。由於1T的硬碟比較厚,所以MacBook/MacBook Pro系列的才能裝,Air可就裝不下了!
如果你有安裝Leopard(10.5)的經驗--兩片DVD,總共安裝時間大約要兩個小時,非常辛苦;Snow Leopard(10.6)是大幅修改kernel(雖然Apple說是重新撰寫kernel),使得10.6有較好的效能、功能以及較短的安裝時間(約30分鐘左右)。
10.6是我額外去買的,NT 1090,比起windows,我覺得便宜又值得。
安裝MacOSX時,請先到磁碟工具裡,把該硬碟分割成四個分割區(事實上MacOSX會分成五個分割區,第一個就是GPT所佔的分割區啦,約200MB左右)。我對於這顆硬碟的劃分是:120G的hfs+(journalled)給MacOSX,40G的ext4給LinuxMint,100G的fat-32給windows,剩下所有的空間都切成hfs+(journalled),到時候可以在linux裡讀寫hfs+分割區。分割時,給定一個辨識度高的標籤非常重要。
(上圖是我安裝完MacOSX之後在額外安裝NTFS-3g才會有的結果,關於ntfs-3g,請詳閱後面內容。而MacOSX預設並不支援linux的檔案系統,因此就暫時格式化成fat-32或是hfs+都無所謂。)
不選擇其他檔案系統當成共用的分割區,有如下的原因:
- Windows僅拿來打電動用,並不拿來上網或是工作,甚至是聽音樂看影片也不會,因此可以讀取hfs+就可以。
- 在Linux跟MacOS下讀寫NTFS都必須透過fuse/macfuse,速度很慢;Linux目前對於hfs+讀寫支援得相當不錯,速度也很不賴(寫入稍慢,刪除非常快!!)
- hfs+是MacOSX預設的檔案系統格式。vfat非常容易造成磁區破碎分佈的情形,而且單一檔案大小又有4G的限制。
劃分安裝MacOSX的分割類型時,請選擇GUID,否則會無法順利安裝MacOS;另外我會建議安裝MacOSX的分割區最好是MacOS類型+日誌式+區分大小寫,這樣屆時在linux底下才會有比較高的相同感--畢竟linux下的檔案系統都是區分大小寫的。
在劃分時,我遇到無法重新格式化或是切分割區時,我不熟MacOSX底下的指令,我只好塞入linux的live CD去把所有分割區刪掉,再重新開進mac安裝光碟以進行安裝。由於linux的fdisk指令不支援GPT,你必須使用parted/gparted來製作一個可以安裝Mac的分割表。
由於需要跟linux共用資料,因此如果每個檔案都有不同的uid/gid是很麻煩的事情。你可以選擇讓Linux配合BSD的傳統配置(uid/gid=501/20),也可以讓Mac配合linux--我選擇後者。在Debian系列的linux裡,第一個使用者的uid/gid都會是1000,安裝完MacOSX之後,我們就把Mac裡的uid/gid改成1000吧!
sudo su -如果沒有錯誤訊息,表示變更已經完成。請不要作任何動作,直接重開機。
dscl . -change /Users/maxsolar UniqueID 501 1000
dscl . -change /Users/maxsolar PrimaryGroupID 20 1000
chown -R 1000:1000 /Users/maxsolar
再次進入Mac--這個時候我的gid=1000並沒有相對應的群組名稱,但根本無關痛癢--unix世界是認uid/gid,而非名稱。由於我有使用終端機的需求,因此有兩行需要加入~/.profile:
export PS1="\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] " alias ls='ls -FG'如果一切ok的話,請按左上角的蘋果,點選軟體更新,讓系統保持在安裝好patch的狀態。
ntfs-3g for Mac的安裝
NTFS檔案系統在linux下穩定的讀寫已經行之有年,透過fuse的技術,我們一樣可以在user space使用NTFS。mac上使用ntfs也是透過fuse,但是卻是跟linux世界不同的fuse;為了有所區別,Tuxera公司把它稱為MacFuse,總之是相同的原理,讓Mac可以認識ntfs並且在上面進行讀寫。速度不能跟原生的hfsplus相提並論就是了。Windows的安裝
務必確定windows的分割區是最後一個(或是第四個)分割區。由於Windows只認得MBR,在MBR與GPT混雜(hybrid)的情況下,WindowsXP必須要在最後一個(但不能超過第四個)分割區才能成功安裝,否則會出現:
"下列檔案遺漏或損毀,無法啟動Windows:事實上你的windows裡是有這個檔案的,boot.ini的設定也完全沒錯,但如果不是把windows放在最後一個(最多不超過四)磁區,這個問題就會一直存在。
system32\hal.dll
請重新安裝一份上列檔案的拷貝"
假設你的分割區已經配置完成,塞入xp光碟並重開機之後,按住c不放以進入光碟開機,並依照你的規劃選定windows要安裝的分割區。
(利用Mac的diskutil工具都會有128MB的間距,或許有他的意義吧!?只要注意GPT會佔去第一個分割區,我說的第四個是包含GPT分割區。)
安裝完成後,請update以安裝所有修補程式,並且塞入Snow Leopard光碟,裡面包含支援Macbook Pro的所有驅動程式。
安裝好bootcamp驅動程式之後,會發現可以看到MacOSX的hfsplus分割區了!但是第五個分割區卻讀不到,這就是windows XP只認得MBR的證據--只認得4個主要分割區,而GUID則全為主要分割區,所以我所標示的DATA分割區在windows裡是看不到的。不過即使裝了驅動程式,hfsplus檔案系統對windows來說還仍然是read only,需要安裝像MacDrive這類商用軟體才能在windows讀寫hfs檔案系統。
linux的安裝
筆者安裝的是LinuxMint 9,我想其他套linux也是大同小異,只需要額外安裝一些套件即可,只要注意鍵盤格式要選擇USA-Macintosh,以及開機管理程式安裝在自己的root分割區(本例而言是sda3)
LinuxMint是基於ubuntu的封裝版,因此就跟ubuntu一樣,安裝後會自動顯示偵測到廠商私有的驅動程式。我的這台MacBookPro是nvidia Geforce 9400M;當系統剛安裝好時,xorg是載入nouveau(opensource的nvidia晶片驅動程式)可以使用F1/F2調節亮度,但是安裝完nvidia私有驅動程式之後,螢幕亮度會到達100%,而且沒有任何控制鍵可以調低亮度。
為此,我們必須手動使亮度降低才能繼續工作:
smartdimmer -s 20smartdimmer是nvidia控制亮度的一個小程式。當xorg載入的是nvidia的模組時,原本在gnome裡面所有控制亮度的小工具都失效了,也因此只好手動調整亮度。-s表示設定(set),20表示20%的意思。事實上我們還需要一些步驟來修改Macbook,務必執行上一步驟使亮度降低,否則眼睛一定受不了。
增加Mactel-PPA套件庫:
add-apt-repository ppa:mactel-supportaptitude會自動增加套件庫並且下載公開金鑰,一切都是自動化。當然,請務必更新套件庫:
aptitude update我們來安裝一些必要的套件:
aptitude install applesmc-dkms bcm5974-dkms gnome-power-manager isight-firmware-tools macfanctld mbp-nvidia-bl-dkms nvidia-bl-dkms pommed xfree86-driver-synaptics xserver-xorg-input-synaptics xserver-xorg-video-intel pommed gnome-alsamixer以上的套件除了安裝for macbook週邊的firmware之外,還需要pommed daemon幫助我們調整預設亮度。請修改/etc/pommed.conf:
#紅字的區域是我們要注意的地方--啟用fn鍵來控制最上面的快捷鍵,以及啟動時的預設亮度。設定完之後讓pommed重新啟動吧!
# Configuration file for pommed
#
# General configuration
general {
# fnmode: functions keys first (no need to use fn) or last
# Value is either 1 or 2, effect is hardware-dependent
fnmode = 2
}
# sysfs backlight control
# nVidia machines, will fall back to nv8600gmt if not supported by the kernel
lcd_sysfs {
# The sysfs backlight control is a generic interface provided
# by the Linux kernel for backlight control on most graphic cards.
# The brightness range can differ depending on the hardware.
# initial backlight level [12] (0 - 15, -1 to disable)
init = 10
# step value (1 - 2)
step = 2
# backlight level when on battery [6] (1 - 15, 0 to disable)
on_batt = 8
}
# ATI X1600 backlight control (MacBook Pro v1 & v2)
lcd_x1600 {
# initial backlight level [200] (0 - 255, -1 to disable)
init = -1
# step value (1 - 127)
step = 10
# backlight level when on battery [80] (1 - 255, 0 to disable)
on_batt = 80
}
# Intel 945GM, 965GM backlight control (MacBook v1-v4, MacBook Air v1)
lcd_gma950 {
# initial backlight level [0x6f] (0x1f - 0x94 usually, -1 to disable)
init = -1
# step value (0x01 - 0x20)
step = 0x0f
# backlight level when on battery [0x40] (0x1f - 0x94 usually, 0 to disable)
on_batt = 0x40
}
# nVidia GeForce 8600M GT/9400M/9600M GT backlight control
# (MacBook Pro v3-v5, MacBook v5, MacBook v2)
lcd_nv8600mgt {
# initial backlight level [12] (0 - 15, -1 to disable)
init = 10
# step value (1 - 2)
step = 2
# backlight level when on battery [6] (1 - 15, 0 to disable)
on_batt = 6
}
# Audio support
audio {
# Use amixer or alsamixer/alsamixergui to determine the sound card
# and the mixer elements to use here.
# sound card to use
card = "default"
# initial volume [80] (0 - 100%, -1 to disable)
init = -1
# step value (1 - 50%)
step = 10
# beep on volume change
beep = yes
# mixer element for volume adjustment
volume = "PCM"
# mixer element for muting the speakers
speakers = "Front"
# mixer element for muting the headphones
headphones = "Headphone"
}
# Keyboard backlight control
kbd {
# default value for automatic backlight (0 - 255)
default = 100
# step value (1 - 127)
step = 10
# ambient light thresholds for automatic backlight (0 - 255)
on_threshold = 20
off_threshold = 40
# enable/disable automatic backlight
auto = yes
# idle timer - switches off keyboard backlight automatically (timeout in seconds, -1 to disable)
idle_timer = 60
# idle tickms - timer tick rate in milliseconds
idle_tickms = 2000
}
# CD/DVD drive ejection
eject {
# enable/disable eject key
enabled = yes
# CD/DVD device
device = "/dev/dvd"
}
# Beeper
beep {
# enable/disable beeper
enabled = no
# WAV file to use (from pommed: goutte.wav or click.wav in /usr/share/pommed)
beepfile = "/usr/share/pommed/goutte.wav"
}
# Apple Remote - deprecated
# Note: the appleir driver is required for this to work; this driver has been
# obsoleted with Linux 2.6.22, so unless you are running a kernel < 2.6.22 or
# use the appleir driver on a newer kernel, this won't work.
# You should use LIRC instead.
appleir {
# enable/disable the appleir support
enabled = no
}
invoke-rc.d pommed restart這個時候,你應該需要使用fn鍵來調整亮度了。
利用gnome-alsamixer關閉靜音狀態:
這個時候,我們的linux還是啞巴狀態,原因是預設輸出(front speaker)是mute狀態,文字介面的alsamixer並沒有辦法變更mute狀態,我們必須呼叫gnome-alsamixer才能關閉靜音:
確認mute沒有打勾,這樣linux就會有聲音了。當初為了找沒有發聲的原因,幾乎要翻遍了所有設定檔...
使linux可讀寫hfs檔案系統:
由於我們需要讀寫hfsplus,所以我安裝了以下的套件:
sudo aptitude install hfsplus hfsprogs hfsutils安裝好之後,我們已經可以建立並掛載hfsplus檔案系統了。在linux下我們看看分割區長什麼樣子吧:
WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted. Disk /dev/sda: 1000.2 GB, 1000204886016 bytes 255 heads, 63 sectors/track, 121601 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/sda1 1 26 204819+ ee GPT Partition 1 does not start on physical sector boundary. /dev/sda2 * 26 15691 125829120 af HFS / HFS+ /dev/sda3 15707 20929 41943040 ef EFI (FAT-12/16/32) /dev/sda4 20945 121585 808392368 af HFS / HFS+我們在安裝時所切的三個分割區其實是sda{2,3,4},sda1則是GPT的所在。我不清楚MacOS為什麼要在每個分割區之間都隔了一個128MB大小的空間,好在我們只浪費三個128MB...
我希望在家目錄下新增兩個資料夾來放sad2與sda4,先改個/etc/fstab先:
LABEL=MacOSX /home/maxsolar/MacOSX hfsplus defaults,user,users,force 0 0由於linux並未正式支援hfs+的寫入,需注意參數必須加上force才能掛載為可讀寫模式。
LABEL=DATA /home/maxsolar/DATA hfsplus defaults,user,users,force 0 0
Linux與MacOSX共用目錄架構:
在家目錄建立DATA與MacOSX兩個資料夾之後,可以用一般使用者身份掛載:
mkdir ~/{MacOSX,DATA}chown能成功的關鍵在於你必須有在fstab加入force參數,否則永遠都會是read-only的檔案系統,即使你已經在Mac把你的uid/gid改掉了,也是枉然。
mount ~/DATA
chown maxsolar:maxsolar ~/DATA
mount ~/MacOSX
chown maxsolar:maxsolar ~/MacOSX
接著,我們希望家目錄下的一些目錄可以共享:
cd $HOME
rm -r Desktop && ln -s MacOSX/Users/maxsolar/Desktop .
rm -r Downloads && ln -s MacOSX/Users/maxsolar/Downloads .
rm -r Documents && ln -s MacOSX/Users/maxsolar/Documents .
rm -r Music && ln -s MacOSX/Users/maxsolar/Music .
rm -r Pictures && ln -s MacOSX/Users/maxsolar/Pictures .
rm -r Public && ln -s MacOSX/Users/maxsolar/Sites Public
ln -s MacOSX/Users/maxsolar/Movies .
啟用多點觸控:兩指翻頁而非側邊翻頁
到Preferences-->Mouse,到touchpad分頁啟動他!
到目前為止,兩套os檔案可以互通,無線網路、ethernet、視訊都可以使用了,要進入linux只需要按住option鍵,就可以選擇開機磁區;看起來十分美好不是嗎?
rEFIt的迷思
rEFIt是Mac機器上把EFI給視覺化的工具,簡而言之就是一個圖形介面的開機選單程式。我曾經下載了rEFIt來安裝,也成功的出現了三個作業系統的畫面,非常開心!
但是在後續開機進入MacOSX的時候,就無法成功開進MacOSX。在linux底下我用fsck檢查hfs+,發現有幾個block位置不正確,被修正之後才能順利開機;但是下次要進入MacOSX又是同樣的情形。所幸利用cmd+s進入單人模式,出現提示指令進行檔案系統的檢查,又發現有block位置異常,修復之後又可以開機了。我不知道這是什麼原因,但是在我移除rEFIt並且塞入Snow Leopard光碟修復MacOSX分割區之後,就在也沒有這種情形發生了;我不知道各位會不會有這種情形,但是我在也不會再去使用rEFIt了。進入MacOSX是預設值,要進入Linux/Windows只需要按住option鍵,會看到有另一個標示著『Windows』的硬碟,選擇他之後就會看見可愛的grub2選單了。
雖然硬碟裡有三個os,但是EFI的選單還是只會有兩個,且第二個一定是Windows(真鳥)。
一些未解的問題:
- 鍵盤背光燈: 鍵盤背光無法控制--你可以讓他暫時暗下來,但隨後又恢復亮度;只要鍵盤閒置他就會自動關閉,鍵盤一有動作,無論任何情況都會有50%的亮度顯現。
- 在linux下的觸控版: 在linux底下用觸控版移動視窗不能用兩點觸控,但可以使用雙擊+移動,也可以使用單點不放+移動。雖然不太方便,但習慣就好。
- 沒有print screen鍵、number以及insert鍵: 沒有number跟insert鍵只是小問題,在windows打電動時需要trianer時,熱鍵不能用阿@__@|||,但是linux底下沒有printscreen鍵,每次都要點"Take Screenshots",很辛苦。
- iSight會自動隨亮度變化,調整螢幕亮度: 這應該算是好事,只是每次光線變化調整亮度都是調到100%,眼睛差點瞎掉,只好趕快用smartdimmer調低亮度,有點惱人。
- 在linux環境下,耗電較兇: 我自己的感覺是相同工作下,比MacOSX環境少了2小時左右。MacOSX在正常使用下幾乎可以到8小時的使用時間,linux大約只能撐6小時。
- grub無法成功啟動MacOSX,無論是32或64bits 如果我把linux的開機管理程式安裝在MBR,事實上是裝在GPT最前面128Kb的"Protective MBR"。然而這會導致Macbook一開機就進入了grub,而grub的預設值卻無法成功啟動MacOSX,我也不知道原因為何。但如果我安裝在sda3,那麼預設還是進入MacOS,如果要選擇進到XP或是Linux,就按個option鍵來切換。
無法支援MacOSX下的三指/四指觸控的功能,這點很可惜,即使在Windows底下也是如此。
option鍵所能夠顯示的開機選單最多就三個:MacOS,非MacOS以及光碟機(或是firewire/USB),如果實體硬碟上有多個os,也只會顯示兩個而已,我覺得蠻不親切的,而且另一個系統的標籤預設是"Windows",我覺得蠻不好的,但找不到地方改。
參考文章:
沒有留言:
張貼留言