2008年4月15日 星期二

[愛玩]建立多個作業系統

我的小筆記型電腦為ASUS M5 series,記憶體只有256mb,硬碟也只有小小的60G,想拿他來做什麼比較累人的運算也不太可能,不過如果可以利用硬碟空間來玩玩其他套linux,應該是一個比較物盡其用的方式;於是我花了NT$1250買了一個512mb的ram(micro-dimm的還真難買到),就開始建立我的多個linux OS。 但是選擇哪幾個linux比較好呢?其實這就是個人喜好問題,我是覺得真正要玩到一定的程度,應該要多去碰gentoo, knoppix或是slackware這類型的linux才對;可是我的功力尚淺,我需要選擇擁有較多套件庫支援distributions,支不支援中文倒無所謂,反正裝個中文字型給他就可以解決;另外社群裡要有夠多人玩這套linux,這樣遇到問題才有人可以問;最後就是:自己到底願意花多少時間來維護他呢?衡量這三項因素,我選擇安裝opensolaris, opensuse, fedora, mandriva, scientific linux, debian, ubuntu這七個作業系統;當然,opensolaris並不是linux,不過他是純的GNU/solaris,有全新寫過的kernel,多年前第一次玩Nexenta(opensolaris)時發現他也採用了dpkg的管理方式,跟我在debian的習慣一樣,這使我對於Nexenta深有好感!七個作業系統,真的可以天天開一個來玩呢! 1.分配硬碟空間: 當然我希望可以讓swap越前面越好,於是我設定hda1為1G,Nexenta為8G,其他各套linux都7G,Ubuntu給他7.5G,另外剩下的空間就可以當作各個linux的共用空間。 不過從圖上可以看到,最後卻變成了swap跑到了hda2,怎麼會這個樣子呢?唉!這就是因為我不清楚unix檔案系統怎麼定義linux swap的結果囉!並且我決定要裝在MBR的boot loader是用ubuntu的grub。決定好後,就可以開始安裝了。 2.安裝Nexenta alpha 7 實際上下載nexenta的iso時,會發現有兩種光碟版本,一種叫做core platform,另一種叫做install_cd_alphaX,實際上都是一樣的東西,差別在於預設有沒有x-window。舉一個簡單的例子:debian的使用者我想應該很少人會安裝時選擇安裝「桌面環境」,因為你選擇安裝整個桌面環境代表你會安裝整個gnome,這樣就浪費了debian提供給你「精簡」系統的目的了。大部分的debian users會不選擇安裝桌面環境,而會選擇僅安裝base system,爾後再根據自己的需要滿慢慢建立;而這兩種iso也是一樣,第一是給你一個base system without x-window,需要什麼東西在讓你爾後慢慢疊加,而install_cd則像是你選擇安裝debian的桌面環境,邦你安裝好一個gnome的環境,也可以藉由apt安裝、管理所想要的東西。 不過unix的檔案系統以及對硬碟的使用方式、定義都跟linux不一樣,我整理如下:
partition/disk : [linux表示法] [unix表示法]
-----------------------------------------------------------------
primary master      /dev/hda    /dev/dsk/c0d0
primary slave       /dev/hdb    /dev/dsk/c0d1
secondary master    /dev/hdc    /dev/dsk/c1d0
secondary slave     /dev/hdd    /dev/dsk/c1d1
                   /dev/hda1   /dev/dsk/c0d0p1
                   /dev/hda3   /dev/dsk/c0d0p3
-----------------------------------------------------------------
但是事情並沒有那麼單純。unix系統有以下的限制: *只能安裝在主要分割區。 *只能存取主要分割區。 *安裝時檔案系統不能掛載在一個partition--unix會使用一個主要分割區切成數個小的slices來掛載檔案系統。 *注意:家目錄的位置是在/export/home而不是/home。 當安裝Nexenta到分割硬碟時,由於我只有一顆硬碟,相對單純很多,共有四個欄位可以讓你設定(就是ide的限制--只能讀取4個主要分割區),你可以選擇solaris/solaris2/msdos等的檔案系統,其中可以注意的是,linux swap他定義成solaris檔案系統,而安裝Nexenta所需的ZFS或是UFS則要選solaris2的檔案系統。但是由於我是選用install_cd來安裝,這張光碟片只允許我安裝時使用UFS傳統的unix檔案系統;如果你想用sunos比較傑出的ZFS,則要用core platform這片光碟來建置。 目前的硬碟配置而言,我必須把Nexenta安裝在primary master的第一個partition裡,也就是/dev/dsk/c0d0p1,而unix不直接使用整個partition,分成數個slices則會寫成c0d0s{1,3-7},而c0d0s2則是代表整個partition,所以沒有任何檔案可以掛載在c0d0s2裡面。以我的例子而言:
/               c0d0s0
swap            c0d0s1
/export/home    c0d0s7
以此觀念就可以安新的安裝unix了。至於為什麼我不選用opensolaris其他版本呢?因為諸如SUN的solaris express的community或是development版本,他們需要的硬碟空間最好要12G以上,記憶體也要求最少1G,我的M5肯定會跑不起來,所以不再我這次的測試裡考慮。 安裝bootloader時,我選擇安裝在他的boot sector而非MBR。 3.安裝opensuse 10.3 opensuse是一套很先進的linux OS,可惜我不喜歡用SUSE,opensuse純粹是為了準備NCLP所使用的一個環境,雖然不完全一樣,但總比安裝一個不能update的linux來得好。 之前有幾次使用openesuse不愉快的經驗是,依照nvidia官方驅動程式for suse的教學,將nvidia download加進了套件庫,安裝了x11-video-nvidiaG01,結果重開機之後在x下鍵盤滑鼠都不能動,sax2重跑了也不行。也許是我不懂suse(因為大家好像都用得很開心),所以我使用suse都不裝nvidia的驅動程式的。(鴕鳥心態) 因為我使用debian的習慣都是修改設定檔,頂多重跑一下daemon就可以生效,但是suse系列的linux需要多跑SuSEconfig,因此改了設定檔未必有用,所以我真的不太習慣opensuse。不過他對於一些服務的整合真的很棒,包含對xen的支援,最自豪的apparmor等等,都整合在yast裡面,所以很多人聽說是為了用yast的方便性而使用SUSE!(聽說的啦) opensolaris的ufs,linux的kernel預設是不能辨認的,因此這邊看到的unknown是可以預期的。 4.安裝Fedora 8 Fedora是老牌的redhat不再提供免費版本後的計畫之一,同樣的計畫還有centOS;只不過這次我沒有選centOS的原因是因為他跟fedora太像了,所以就選擇了Fedora。 令人驚訝的是,為什麼各大linux的核心都預設支援了reiserfs,就是redhat家族的沒有...使用ext3有太多不愉快的經驗,對硬碟的使用效率也不好,reiserfs是一套真的很優秀的檔案系統。 在google上可以看到其實有許多方法可以讓Fedora一開始就支援安裝在reiserfs,就是在開機時輸入selinux=0, reiserfs,按enter就可以讓核心支援reiserfs了。 RH官方網站說明預設不支援reiserfs的原因據說是因為selinux的關係,無法完全support acl以及xattr,不過我不懂,因為在suse裡,reiserfs可是支援acl/xattr的阿! 當然在磁碟分割時無法看到ufs,並且boot loader也安裝在/boot裡。 5.安裝Mandriva 2008 Mandriva2008安裝光碟我不選擇那片包山包海dvd,那不但下載很久,很多東西我也用不到。我選擇包含gnome(但不包含中文語系支援)的那片光碟,而且重點是,這片光碟是live_CD,跟ubuntu一樣可以先用live_CD玩玩在安裝唷!沒有中文沒關係,稍後在安裝就好,重點是系統先建立起來;不過此時我發現了兩件非常搞笑的事情.... *安裝時Mandriva竟然給我兩個選項: 1. 升級Fedora release 8 (Werewolf) -->哇哈哈我不知道Fedora可以升級成Mandriva耶! 2.全新安裝 *分割硬碟時,hda1那個UFS,mandriva竟然把他辨識成"Microsoft Xbox filesystem" 我的天阿,mandriva會不會太屌了一點,還是說連這都蓋得出來阿!^^莫非微軟偷偷使用unix來當作xbox的作業系統!原來李連杰說的:「兵不厭詐,這是戰爭!」是真的!^^ Mandriva一如往昔的Mandrake,給人方便使用且親切的感覺,安裝的過程也會偵測是否有windows以進行使用者設定的匯入,不錯,相當貼心,而且mdk.linux.org.tw的速度也很快,其實以後家裡的電腦,mandriva是我的第二選擇。 不過,我嚐試自己編譯oxim,也安裝成功了,但不知為什麼在/etc/sysconfig/i18n裡我就是無法成功的把oxim叫出來...還導致nautilus開不起來...對不起我還不熟mandriva,不過,一些codec都幫我們裝好了,可以看mpeg4的影片唷! 6.安裝Scientific linux 這套linux主要是由美國費米實驗室所主導,核心改編自redhat linux 3,詳細的介紹請參考自由軟體鑄造廠,至於選擇這套linux的原因有很多,因為我對他不熟,想玩玩看,就這麼單純而已。由於也是使用anacoda的安裝程式,所以只要會裝fedora,那麼你就會裝centos, scientific linux, pclinux, pupa5等等的發行套件。 不過這回用selinux=0, reiserfs就無法再次將SL安裝在reiserfs上了。 中文支援度不高,不過只要看官不介意英文介面,那麼安裝個中文字型就可以work for fun了! 7.安裝debian 我第一次玩linux就是玩debian,那安裝可真是難,可是苦有苦的好處,我的好朋友焜銘他訓練我要一步一步安裝自己所要的套件,因此從windows轉到linux的我可真的是遇到超多初學linux沒遇到的問題--openoffice的工具列不會隨著gtk的設定而變化,輸入法出不來,x跑不起來,等等的許多初學的問題都很難解決,可是後來最起碼,我們debianer對於套件名稱都非常熟悉,甚至可以不用作筆記就能從一個base system一個指令一個指令安裝出一個另自己滿意的特製系統,我想有了debian的訓練,跨越其他linux distribution真的相當容易。 不過,我覺得真正強的linuxer其實是那些一開始就玩gentoo/slackware的那些高手,因為那些發行版本似乎開始安裝就要針對系統進行編譯,而且也沒有項我們可以用yum/apt/urpm/yast來進行升級或是安裝套件,這樣的情況下要什麼東西都要先下載他們的tarball來編譯,這針的是花功夫也花時間的事情!!所以其實我真的對於gentoo/slackware users很是崇拜~ 8.Ubuntu的安裝 這真的是我看過最容易安裝的系統了,其安裝過程比windows還簡單,連『下一步』都比windows還少。此時我才把boot loader安裝在mbr,也就是說我用ubuntu的grub來啟動其他的linux。另外有一套linux mint,是一套based on Ubuntu的linux,安裝過也是挺漂亮的,不過站台都在國外且套件庫都比較舊,好笑的是他的sources.list裡預設給你很多ubuntu 7.10的list,我只不過是依照安裝後給我的設定去upgrade,結果...開機的進度bar就變成了ubuntu的,整個傻掉... 9.多個作業系統所要注意的事情: 其實我們的環境很單純,一套unix,然後一些linux,這些*nix們可愛的地方在於自訂性很高,你要他們怎麼跑他就怎麼跑。每一套linux都要開機,其實我可以有兩種選擇: *只在一套作業系統安裝boot loader,其他完全不裝。這樣的配置可以不用管理每一套的開機管理程式,只要在grub裡面寫下欲開機的partition, kernel image的位置以及initrd的位置(有些linux甚至不用initrd,如slackware)就可以開機;不過缺點是,更新kernel之後可能有些版本不會幫你作軟連結,可能要手動去指定精確的kernel-image的名字。 grub(mbr) ---▼ root (hd0,1) ---▼ kernel=/boot/vmlinuz initrd=/boot/initrd.img -----boot *每套linux都把boot loader安裝在自己的boot sector,只有一套裝在MBR。這樣的好處是你可以利用grub的chianloader的威力,讓每一套linux的boot loader管理自己的開機,另一個安裝在MBR的boot loader當大總管,利用chianloader 的方式chianload到其他套開機管理程式。聽起來麻煩或複雜,其實這樣作才真的便利: grub(mbr) ---grub(hd0,5)→grub(hd0,3)→boot -----------------grub(mbr) ---kernel=/boot/vmlinuz initrd=/boot/initrd.img -----boot 也就是可以藉由chainloader指令連到其他管理程式去,甚至連回來也行(假設認為自己容易按錯),這是一個可以參考的好方法。事實上,如果有windows的多重開機,就是利用chianloader的方式把開機的stage0再次交給windows的boot loader;所以說穿了,也沒什麼大學問。 好累喔...改天再來寫各個系統的升級方式吧!

沒有留言: