如是觀齋


此心本真如,妄想始蔽覆,顛倒無明,長淪生死,猶盲人夜行,永不見日。業相既起,境界為緣,業起緣生,重重束縛,何有自在?
須知體即法身,相即般若,用即解脫,若止觀則成定慧,定慧以明心,德相圓矣!

2007年11月7日 星期三

如何在筆記型電腦外接式硬碟第二分割區中Live安裝Ubuntu 7.10(續篇)

前提:
1. 設定BIOS把CDROM設為第一順位啟動,USB設備設為第二順位啟動,硬碟第三順位啟動。
2. ASUS M2400n NB內建HD(XP分C:(primary),D:(LBA extend)NTFS)+外接HD(分XP F:(primary)NTFS,Ubuntu Ext3(primary),Ubuntu SWAP)。
3. Ubuntu 7.10 Desktop版Live CD。

方法一:(摘要,詳閱上篇)
1. 插入CD重開機開始安裝,至ReadyToInstall步驟(7/7)按Advance鈕在「用來安裝開機程式的裝置」方框預設「(hd0)」改為「(hd1)」。
2. 繼續安裝至出現「重新啟動」對話方塊出現。
3. 暫停改開Terminal視窗,鍵入「sudo gedit /target/root/grub/menu.lst」開啟menu.lst在有關ubuntu選項的地方將(hd1,1)改成(hd0,1),XP選項將(hd0,0)改成(hd1,0)。並在「savedefault」和「chainloader+1」間加入如下幾行後存檔離開。
map (hd0) (hd1)
map (hd1) (hd0)
makeactive
4. 在「重新啟動」對話方塊按重新啟動。
5. 每次要用UBUNTU時,要在開機前插入外接式硬碟並開機按F2手動更改BIOS啟動的第三順位硬碟為外接式硬碟,就可啟動多重開機選單。以後不拔除外接式硬碟重新開機使用時都沒影響還是多重開機選單,但是拔掉再重開機,BIOS會自動以內建硬碟遞補第三順位啟動XP,即使插入外接式硬碟,不修改BIOS之下,都是直接XP開機。想進UBUNTU,記得插入外接式硬碟再開機或重開機並修改BIOS以外接式硬碟為第三順位開機就可以了。

方法二:借用軟碟免MBR開機法(不可行)
A將開機程式bootloader安裝在軟碟,亦即設定帳號密碼後面的Ready to Install畫面,按Advance鍵將開機程式安裝從內置硬碟「(hd0)」改在軟碟「/dev/fd0」
備註:[[實驗結果]]因為NB接上借來的USB軟碟在我的AMI BIOS當成USB設備,會在第二順位優先於硬碟開機,改「(hd2)」、「/dev/sdc」可以安裝但重新啟動會出現Hard Disk Error,因為Ubuntu當他是SCSI硬碟處理,但實際上是軟碟,所以認為是SCSI硬碟錯誤。另安裝時檢查/root/grub/device.map發現內容如下:
(fd0) /dev/sdc
(hd0) /dev/sda
(hd1) /dev/sdb
(hd2) /dev/sdc
雖然有(fd0),但因為Ubuntu當他是SCSI硬碟處理,沒有軟碟所以改「/dev/fd0」、「(fd0)」在安裝至98%安裝Grub installer時當掉無法安裝, 出現警告方塊通知有嚴重錯誤。故而以下步驟無法進行而失敗。
建議:PC大概可行,但無PC可供實驗。
B 安裝完先開Terminal終端機視窗輸入「dd if=/dev/fd0 of=bootsect.lnx bs=512 count=1」將開機程式彙整輸出到bootsect.lnx檔,存在Windows可以存取的地方(用FAT格式,可以是軟碟或隨身碟,但不可以是XP下的NTFS分割區)(已安裝者在Terminal終端機視窗輸入grub-intall /dev/fd0,但作者不確定是否可行)。
備註:[[實驗結果]]根據Grub Manual 上開指令只是匯出Stage1(Grub installer太大,所以拆成Stage1,Stage1.5,Stage2等三階段,前面512bits為Stage1),一旦啟動Grub,不管安裝到哪一部硬碟,皆會image至root/grub目錄找Stage2繼續啟動過程,這步驟並不完全,詳見下面附錄。
C 移除軟碟或隨身碟,重新啟動Windows系統
D插入軟碟或隨身碟,拷貝該檔到C碟,即c:\bootsect.lnx
E 修改c:\boot.ini在最後面加上一行「c:\bootsect.lnx=”Linux”」存檔重開機即可多重開機

方法三:(不可行)
1. 插入CD重開機開始安裝至出現「重新啟動」對話方塊出現。
2. 暫停改開Terminal視窗,鍵入「sudo gedit /target/root/grub/menu.lst」開啟menu.lst在有關root選項改rootnoverify。有關ubuntu選項的地方將(hd1,1)改成(hd0,1),XP選項將(hd0,0)改成(hd1,0)。
3. 重新啟動。
<拆掉外接硬碟後,因為裝在MBR的Grub抓不到外接硬碟/root/grub內的目錄stage1,stage1.5,stage2資料而ERROR 21>

方法四:
1. 插入CD重開機開始安裝至出現「重新啟動」對話方塊出現。
2. 暫停改開Terminal視窗,鍵入「sudo gedit /target/root/grub/menu.lst」開啟menu.lst修改如下:
default 0 [下面新增一行default saved]
timeout 10 [下面新增一行 fallback 4]
在title ubuntu 7.10開機選項下最後面新增一行「savedefault fallback」,其他後面如title 內有recovery 、memory test、windows XP的都不用管後存檔離開gedit。

title Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,1)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=d1d0a41a-f0bf-4de1-b906-bacc2f294f39 ro quiet splash nolapic
initrd /boot/initrd.img-2.6.22-14-generic
quiet
savedefault fallback

3. 在Terminal視窗,鍵入「sudo grub-install /dev/sda」,然後再鍵入「sudo grub-install –root-directory=/dev/sdb」。
4. COPY /root/grub內的目錄資料至C:\如不行先COPY至USB軟碟或隨身碟,以方便裝在MBR的Grub抓到/grub內的目錄stage1,stage1.5,stage2資料。
5. 重新啟動。
<<未試:拆掉外接硬碟後,如果是因為裝在MBR的Grub抓不到/root/grub內的目錄資料而ERROR可能還會ERROR>>

方法五:Grub4Dos
GNU GRUB主要是突破boot loader原先512 bytes限制,利用3 stages方法擴大成多重開機及彈性開機,把GRUB安裝到硬碟MBR的傳統方法是:先運行root (xxx,x),然後setup (xxx)——前面一句是指定一個分區partition,該分區須存放有/boot/stage1和/boot/stage2文件,後面的setup (xxx) 是將引導代碼寫入指定磁片的MBR。這樣安裝的GRUB,其MBR引導代碼被設置為從固定的分區載入stage2,一旦該分區出了問題,系統便無法引導;如果我們想刪除該分區,或格式化分區,或者做一些會引起該分區序號改變的操作,就需要預先重新安裝一次grub,重新指定存放stage檔的分區,否則也會引導失敗。這一點就是我們的問題所在。
而Grub4Dos,其MBR引導代碼並非固定地指向某個分區,而是搜索所有分區的 root 目錄,查找並載入grldr,只要某分區上存有一份grldr,就能啟動。而且安裝時可以將原微軟的MBR備份,啟動時如果找不到grldr,便自動載入備份的MBR。顯然這種方式更加靈活、穩健,適合我們需要。所以GRUB4DOS雖然保留了GNU GRUB的全部命令和功能,包括setup命令,但不推薦使用傳統的安裝方式。而且它的引導代碼雖然可以搜索硬碟,但識別檔系統的能力有限,目前僅限於FAT12/FAT16/FAT32/NTFS/EXT2/EXT3這幾種,所以有時可能需要專門設一個分區來存放grldr。

下載Grub4Dos後,在Windows XP下指令將其安裝在第一顆硬碟的MBR:
grubinst (hd0)
安裝後, 複製grldr 及menu.lst 到每一個 FAT16/FAT32/NTFS/EXT2 partition的root directory 。

或是透過Windows XP的bootloader啟動,在Windows XP作業系統的c:\boot.ini(此為隱藏檔)最後面增加下面一項:
c:\grldr="GRUB4DOS"
並將grldr、menu.lst、grub.exe(從網站下載最新版本解壓縮可得)複製到C:\,下次windows開機即會有新開機選項 "GRUB4DOS" 。

上面grubinst方法尚未實驗,我是用修改boot.ini方法,確實會自動搜尋partition,不管外接式硬碟是否接上均可正常運作,而且不用修改BIOS或其他參數,加裝或修改刪除XP以外作業系統或刪除MBR、修改增刪partition都沒有影響,非常方便,但是有個缺點,外接式硬碟接到別台電腦就要修改別台電腦的boot.ini及copy檔案,比較不方便,如果是接到別人的電腦不喜歡你亂改系統設定,那就沒辦法了,只能使用方法一,但加裝或修改刪除XP以外作業系統或刪除MBR、修改增刪partition,就會受到影響必須自行修改MBR或UBUNTU的menu.lst。

方法六:參考Grub GNU軟碟開機法借用修改版(尚未實驗)
A依方法一全部安裝。
B進UBUNTU的終端機視窗,鍵入
sudo -i[enter]
接下來輸入下列指令將Bootloader匯出至軟碟:
CD /usr/lib/grub/i386-pc[enter]
dd if=stage1 of=/dev/sdc bs=512 count=1[enter]
dd if=stage2 of=/dev/sdc bs=512 seek=1[enter]
C 接下來輸入下列指令:
dd if=/dev/sdc of=bootsect.lnx bs=512 count=1[enter]
將開機程式彙整輸出到bootsect.lnx檔,存在Windows可以存取的地方(用FAT格式,可以是軟碟或隨身碟,但不可以是XP下的NTFS分割區)(已安裝者在Terminal終端機視窗輸入grub-intall /dev/fd0,但作者不確定是否可行)。
D因一旦啟動Grub,不管安裝到哪一部硬碟,皆會image至root/grub目錄找Stage2繼續啟動過程,所以必須讓GRUB可以image到root以外目錄如軟碟:
#mke2fs /dev/fd0
#mount -t ext2 /dev/fd0 /mnt
#grub-install --root-directory=/mnt fd0
#umount /mnt
E因GRUB不懂mount point,所以必須寫成
#grub-install --root-directory=/boot /dev/hd0
-------------------
F 移除軟碟或隨身碟,重新啟動Windows系統
G插入軟碟或隨身碟,拷貝該檔到C碟,即c:\bootsect.lnx
H 修改c:\boot.ini在最後面加上一行「c:\bootsect.lnx=”Linux”」存檔重開機即可多重開機

方法七:參考Grub GNU光碟開機法借用修改版(尚未實驗)
$mkdir iso [開一個資料夾做bootable image上層目錄]
$mkdir -p iso/boot/grub [開一個grub目錄]
$cp /usr/lib/grub/i386-pc/stage2_eltorito iso/boot/grub
[你也可以在iso/boot/grub 放menu.lst或copy檔案在iso下,最後make ISO9660 image檔]
$mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso
[最後會產生grub.iso 檔,可已燒成CD,而且mkisofs已設定可用stage2_eltorito 開機,(4 bit是因應老機器),而且不用再到menu.lst 去setup,除非有多台光碟機,否則booting device代號將會是(cd)。該開機光碟機雖然永遠可以存取,但假如你想從其他光碟機存取檔案,你還是需要使用下開指令進行初始化。
cdrom --init '初始化ATAPI CDROM
map --hook '使ATATPI CDROM立即生效啟用,執行這個指令後,就可以用(cd0), (cd1)等代號來存取CDROM
chainloader (cd0) '從第一顆光碟啟動
boot
]

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁