如是觀齋


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

2007年12月12日 星期三

Ubuntu 7.10 自製登入畫面請代為測試並反應使用問題

鑑於Ubuntu 7.10 登入畫面過於單調沒特色,特別自製登入畫面12款如下表(按圖下載)

使用方法:
1.將壓縮檔解壓縮到 /usr/share/gdm/themes/底下,或到『系統/管理/登入畫面/本地端』按「加入」鍵後選該壓縮檔再按「安裝」即可
2.用有管理員權限帳號登入後,到『系統/管理/登入畫面/本地端』就可以看到,你也可以全部安裝,然後在『系統/管理/登入畫面/本地端』之『風格』選『Theme with face browser』,『佈景主題』選『從選取的隨機取樣』,然後在下面勾選你想要的多個登入畫面

特色:
1.全部都是Face List
2.在Ubuntu 7.10 測試OK
3.要有同型桌布可到『系統/偏好設定/外觀設定/背景/加入』選/usr/share/gdm/themes/***/ (『***』為所選登入畫面名稱)下的background.png即可

特別聲明:底圖原始檔為網路取得非本人所有,雖經自行加工,純為測試使用,請代為測試並反應使用問題,測試完請自行刪除

明細如下:





































































名稱

大小

按圖下載

Cats

271.8KB
1024x768



Dolphin

1006.7KB
1024x768



Earth

1.6MB
1024x768



happyUbuntu-list

458.1KB
1600x1046




MoneyHorse

2.8MB
1600x1046



Mouse

705KB
1024x768



Newt

376.4KB
1024x768



NoahArc

2MB
1600x1046



OpenMind

435.5KB
1024x768



Program

1.7MB
1280x1024



Rabbit

373.3KB
1024x768



Sail

1.4MB
1600x1046




註一:
其他『登入畫面』可上http://art.gnome.org/的右下角Desktop Themes之Login Manager滑鼠左鍵點選進入自行挑選。(Gnome用,Ubuntu可用否待測試)

註二:
其他Linux如Fedora『登入畫面』安裝範例如http://apt.nc.hcc.edu.tw/docs/FC3_X/10_gdm/gdm.htm

2007年11月10日 星期六

Boot.ini及XP DOS CMD的指令索引

轉載自http://member.ctinets.com/~alankllam/DOSIndex.html








Windows XP 和 Windows Server 2003 Boot.ini 檔可用的參數選項

Windows XP 和 Windows Server 2003 Boot.ini 檔可用的參數選項http://support.microsoft.com/kb/833721/zh-tw

結論

您可以將許多不同的參數加入 Boot.ini 檔,以改變 Microsoft Windows XP 或 Microsoft Windows Server 2003 啟動的方式。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
BOOT.INI 與 ARC 路徑的命名慣例與用法


其他相關資訊

您可以將下列參數加入 Boot.ini 檔。

注意 這些參數 適用於 Microsoft Windows XP 和 Microsoft Windows Server 2003 (除非另有指定)。

/basevideo
/basevideo 參數會使用與任何視訊卡相容的視訊驅動程式,強制系統進入標準 640x480 16 色 VGA 模式。如果您選取錯誤的視訊解析度或重新整理速率,這個參數可以允許載入系統。將這個參數與 /sos 參數結合使用。如果您安裝新的視訊驅動程式,而該視訊驅動程式無法正確運作,可以使用這個參數啟動作業系統。然後您可以移除、更新或還原有問題的視訊驅動程式。

/baudrate=number
這個參數會設定核心偵錯所使用之偵錯連接埠的傳輸速率。例如,請輸入 /baudrate=9600。如果有連接數據機,預設傳輸速率是 9600 Kbps。Null 數據機電纜線的預設傳輸速率是 115,200 Kbps。9,600 是透過數據機進行遠端偵錯的一般傳輸速率。如果 Boot.ini 檔中有這個參數,就會自動啟用 /debug 參數。

如需有關數據機設定的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
How to set up a remote debug session using a modem
如需有關 Null 數據機設定的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
How to set up a remote debug session using a null modem cable

/crashdebug
當您啟動作業系統時,這個參數會載入核心偵錯程式。發生 Stop 訊息錯誤時,這個參數才會產生作用。如果遭遇隨機產生的核心錯誤,/crashdebug 就非常有用。您可以藉由這個參數,在執行 Windows 一般操作時使用 COM 連接埠。如果 Windows 損毀,這個參數會將連接埠轉換成偵錯連接埠 (這個動作會開啟遠端偵錯)。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
How to set up a remote debug session using a null modem cable

/debug
當您啟動 Windows 時,這個參數會開啟核心偵錯程式。如果您想要透過 COM 連接埠開啟 Windows 系統的即時遠端偵錯,連接至電腦的主機偵錯程式可以隨時啟用這個參數。與 /crashdebug 參數不同的是,不論您是否進行偵錯,/debug 都會使用 COM 連接埠。當您偵錯定期重現的問題時,請使用這個參數。

如需有關遠端偵錯的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
Setting up for remote debugging

/debugport=comnumber
這個參數會指定偵錯連接埠所使用的通訊連接埠,其中 number 是您想要使用的通訊連接埠,例如 COM1。根據預設,/debugport 會使用 COM2 (如果有的話)。否則,參數會使用 COM1。如果您在 Boot.ini 檔中包含這個參數,就會啟用 /debug 參數。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
How to set up a remote debug session using a null modem cable

/maxmem=number
這個參數會指定 Windows 可以使用的記憶體數量 (以位元組計算)。例如,如果您希望 Windows 使用低於 64 MB 的記憶體,請使用 /maxmem=64 參數。

不過,/maxmem 參數不會將保留記憶體列入計算。因此,建議您改用 /burnmemory 參數。/burnmemory 參數會將保留記憶體列入計算。

例如,如果您使用 /Maxmem=64 參數,並且系統需要 64 MB 的記憶體才能載入,則由於保留記憶體的緣故,系統實際上可能沒有 64 MB 可以使用。在這個情況中,Windows 不會啟動。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
The /maxmem switch in the Windows Boot.ini file

/noguiboot
這個參數會停用顯示 Windows 啟動進度列的點陣圖 (進度列會在登入提示之前顯示)。

/nodebug
這個參數會關閉偵錯。如果程式在軟體中有偵錯固定中斷點,這種情況可能會造成 Stop 錯誤。

/numproc=number
這個參數會設定 Windows 在啟動時將執行的處理器數目。您可以藉由這個參數強迫多處理器系統只使用您指定的處理器數量 (number)。這個參數可以協助您疑難排解效能問題和故障的 CPU。

/pcilock
這個參數可以停止 x86 作業系統將硬體輸入、硬體輸出和插斷要求資源動態指派至 Peripheral Connect Interface (PCI) 裝置。您可以藉由這個參數讓 BIOS 設定裝置。

/fastdetect:comnumber
這個參數會關閉指定連接埠之 Ntdetect.com 檔中對序列和匯流排滑鼠的偵測。如果在啟動程序期間有滑鼠以外的元件連接至序列連接埠上,請使用這個參數。例如,輸入 /fastdetect:comnumber,其中 number 是序列埠的編號。可以用逗號分隔來關閉一個以上的連接埠。如果您使用 /fastdetect 並且不指定通訊連接埠,就會關閉所有通訊連接埠的序列滑鼠偵測。

注意 在舊版的 Windows 中 (包括 Windows NT 4.0),這個參數名為 /noserialmice。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
How to disable detection of devices on serial ports

/sos
/sos 參數會在載入時顯示裝置驅動程式名稱。根據預設,Windows 載入程式畫面僅會顯示進度。請搭配 /basevideo 使用這個參數,以判斷觸發失敗的驅動程式。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
Purpose of the Boot.ini file in Windows 2000 or Windows NT

/PAE
搭配 Boot.ini 中相對應的項目來使用 /PAE 參數,以便讓支援「實體位址擴充」(Physical Address Extension,PAE) 模式的電腦能夠正常啟動。在「安全模式」中,即使指定 /PAE 參數,電腦還是會使用一般核心啟動。

/HAL=filename
您可以藉由這個參數,定義在啟動時載入的實際「硬體抽象層」(Hardware Abstraction Layer,HAL)。例如,請輸入 /HAL=halmps.dll 以便載入 System32 資料夾中的 Halmps.dll。在將檔案重新命名為 Hal.dll 之前,可以用這個參數嘗試不同的 HAL。當您想要在多重處理器和單一處理器模式之間切換啟動方式時,也可以利用這個參數。如果要執行這項操作,請將這個參數與 /kernel 參數搭配使用。

/kernel=filename
您可以使用這個參數定義在啟動時載入的實際核心。例如,請輸入 /kernel=ntkrnlmp.exe 載入 System32 資料夾中的 Ntkrnlmp.exe 檔。 您可以藉由這個參數,在啟用偵錯的核心 (使用偵錯碼) 和正常核心之間進行切換。

/bootlog
這個參數會開啟 systemroot\Ntbtlog.txt 檔案的開機記錄。如需有關開機記錄的詳細資訊,請參閱 Windows 說明。

/burnmemory=number
這個參數會指定 Windows 不能使用的記憶體數量 (以 MB 計算)。請使用這個參數確認效能問題,或是與 RAM 消耗相關的其他問題。例如,請輸入 /burnmemory=128 將 Windows 可用的實際記憶體降低為 128 MB。

/3GB
這個參數會強迫 x86 系統配置 3 GB 的虛擬位址空間給程式使用,並且配置 1 GB 給核心與執行元件使用。必須將程式設計為能夠利用額外的記憶體位址空間。當使用這個參數時,使用者模式程式能夠存取 Windows 對使用者模式程式所配置的 3 GB 記憶體 (而不是平常的 2 GB)。這個參數會將核心記憶體的起始點移至 3 GB。Microsoft Exchange Server 2003 和 Microsoft Windows Server 2003 的某些設定會需要這個參數。

如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
Use of the /3GB switch in Exchange Server 2003 on a Windows Server 2003-based system


如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
Information on Application Use of 4GT RAM Tuning

/safeboot:parameter
這個參數會讓 Windows 啟動至「安全模式」。這個參數會使用下列選項:
•minimal
•network
•safeboot:minimal(alternateshell)
您可以將其他 Boot.ini 參數與 /safeboot:parameter 結合。下列範例說明當您從啟動修復功能表選取「安全模式」選項時會生效的參數。

•安全模式 (含網路功能)
/safeboot:minimal /sos /bootlog /noguiboot

•安全模式 (含網路功能)
/safeboot:network /sos /bootlog /noguiboot

•安全模式 (含命令提示字元)
/safeboot:minimal(alternateshell) /sos /bootlog /noguiboot

注意 這些設定都不需要 /sos、/bootlog 和 /noguiboot 參數,但是這些參數可以協助進行疑難排解。如果按下 F8 然後選取其中一種模式,就會包含這些參數。

/userva
當您使用 /3GB 參數時,請使用這個參數自訂配置給處理程序的記憶體數量。這個參數允許更多的分頁表格項目 (Page Table Entry,PTE) 核心記憶體,但是仍然會維持接近 3 GB 的處理程序記憶體空間。

注意「Microsoft 技術支援處」強烈建議使用範圍在 2900-3030 的記憶體,以供 /USERVA 參數使用。這個範圍足以提供夠大之系統分頁表格項目的集區,以應付所有目前碰到的問題。通常 /userva=2900 的設定會儘可能提供接近系統分頁表格項目的最大數量。

如需有關如何使用 /USERVA 參數的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
How to use the /userva switch with the /3GB switch to tune the User-mode space to a value between 2 GB and 3 GB
如需詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
Using the /Userva switch on Windows Server 2003-based computers that are running Exchange Server
How To Manually Edit the Boot.ini File in a Windows Server 2003 Environment
How to edit the Boot.ini file in Windows Server 2003
Description of the Bootcfg command and its uses
HOW TO:編輯 Windows XP 中的 Boot.ini 檔
Bootcfg 命令與其用法的說明

/redirect
使用這個參數會開啟 Windows Server 2003 Enterprise Edition 電腦上的「緊急管理服務」(Emergency Management Services,EMS)。如需有關 EMS 的詳細資訊,請在 Windows [說明及支援] 中搜尋「緊急管理服務」。

如果要編輯 x86 電腦上的 Boot.ini 以開啟 EMS,請同時編輯 Boot.ini 檔的 [boot loader] 和 [operating systems] 區段。如果要執行這項操作,請設定下列項目:

•在 [boot loader] 加入下列其中一個必要陳述式:

redirect=COMx
在這個陳述式中,使用下列其中一個 COM 連接埠編號取代 x:
1
2
3
4
redirect=USEBIOSSETTINGS
這個陳述式讓電腦 BIOS 能夠判斷 EMS 使用的 COM 連接埠。

•在 [boot loader] 底下,加入下列選項陳述式:

redirectbaudrate=baudrate
使用下列其中一個值取代 baudrate:
9600
19200
57600
115200
根據預設,EMS 會使用 9600 Kbps 傳輸速率設定。

•在 [operating systems] 中,將 /redirect 選項加入想要設定使用 EMS 的作業系統項目。下列範例說明這些參數的用法:

[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS redirect=COM1 redirectbaudrate=19200 [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, EMS" /fastdetect /redirect

/channel
將這個參數搭配 /debug 參數和 /debugport 參數使用,可以設定 Windows 透過「電子電機工程師協會」(Institute of Electrical and Electronics Engineer,IEEE) 1394 連接埠傳送偵錯資訊。如果要支援透過 1394 連接埠的偵錯,所有電腦都必須執行 Microsoft Windows XP 或更新版本。1394 連接埠擁有最多 63 個獨立的通訊通道 (編號 0 到 62)。不同的硬體實作在單一匯流排上會支援不同數量的通道。Windows XP 限制最多四個目的電腦。但是,Windows Server 2003 移除了這項限制。如果要執行偵錯,請在偵錯程式執行的電腦 (也稱為主機電腦) 以及要偵錯的電腦 (也稱為目的電腦) 上選取共用通道編號。您可以使用 1 到 62 的任何數字。


設定目的電腦

1.編輯 Boot.ini 檔,將 /CHANNEL=x 選項新增至您已設定要用來偵錯的作業系統項目。使用您想要的通道編號取代 x。例如,請將 Boot.ini 檔的 [operating systems] 區域設定成如同下列所示:

[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /debug /debugport=1394 /CHANNEL=3

2.將 1394 纜線插入其中一個 1394 連接埠。

3.停用目的電腦上的 1394 主機控制台。如果要執行這項操作,請啟動 [裝置管理員],用滑鼠右鍵按一下裝置,然後按一下 [停用]。

4.重新啟動電腦。

設定主機電腦

1.將 1394 纜線插入其中一個 1394 連接埠。

2.安裝核心偵錯程式二進位檔案。

3.啟動命令提示字元。輸入下列每個命令之後,請按下 ENTER:

set_NT_DEBUG_BUS=1394
set_NT_DEBUG_1394_CHANNEL=x
kd -k

4.切換至安裝核心偵錯程式的資料夾,然後輸入下列命令:

kd.exe

當首次啟動偵錯程式時,就會安裝 1394 虛擬驅動程式。這個驅動程式可以讓偵錯程式與目的電腦進行通訊。您必須使用系統管理員的權限登入,才能成功安裝這個驅動程式。

________________________________________
這篇文章中的資訊適用於:
•Microsoft Windows Server 2003 Enterprise Edition
•Microsoft Windows Server 2003, Standard Edition
•Microsoft Windows Server 2003 Web Edition
•Microsoft Windows XP 64-Bit Edition
•Microsoft Windows XP Professional Edition (商用版)
•Microsoft Windows XP Home Edition (家用版

HOW TO:編輯 Windows XP 中的 Boot.ini 檔

HOW TO:編輯 Windows XP 中的 Boot.ini 檔http://support.microsoft.com/kb/289022/zh-tw
結論
本文說明如何從 [啟動及修復] 對話方塊檢視並手動設定 Windows XP 中的 Boot.ini 檔。

在 Windows XP,您可以很快速、簡單的找到 Boot.ini 檔來驗證和 (或) 編輯檔案。

我們建議您在編輯 Boot.ini 檔之前先備份此檔。首先要做的是修改資料夾選項以便能檢視隱藏檔,進而能備份 Boot.ini 檔。


儲存 Boot.ini 的備份1.
以滑鼠右鍵按一下 [我的電腦],再按 [內容]。
-或-
在 [控制台] 中啟動 [效能及維護] 工具,然後按一下 [系統]。
2.在 [進階] 索引標籤的 [啟動及修復] 下,按一下 [設定]。
3.在 [系統啟動] 下,按一下 [編輯]。這會在「記事本」中開啟準備編輯的檔案。
4.在「記事本」的 [功能表] 列中按一下 [檔案],再按 [另存新檔]。
5.以滑鼠右鍵按一下 [另存新檔] 對話方塊的空白區域,指向 [內容] 功能表中的 [新增],然後按一下 [資料夾]。
6.鍵入新資料夾的名稱,例如,temp,然後按 ENTER 鍵,建立名稱為 temp 的資料夾。
7.按兩下名稱為 temp 的資料夾,然後按一下 [儲存] 按鈕,儲存 Boot.ini 檔的備份。


編輯 Boot.ini 檔
如果您要檢視和編輯 Boot.ini 檔:
1.以滑鼠右鍵按一下 [我的電腦],再按 [內容]。
-或-
在 [控制台] 中啟動 [效能及維護] 工具,然後按一下 [系統]。
2.在 [進階] 索引標籤的 [啟動及修復] 下,按一下 [設定]。
3.在 [系統啟動] 下,按一下 [編輯]。


Boot.ini 範例檔案
這是 Windows XP Professional 電腦的預設 Boot.ini 範例檔案。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

這是加入另一個分割區 (執行 Windows 2000 Professional) 之後的上述 Boot.ini 範例檔案。

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(1)rdisk(0)partition(1)\WINDOWS="Windows XP Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows 2000 Professional" /fastdetect


修改 Boot.ini
當您使用 [啟動及修復] 對話方塊修改 Boot.ini 檔時 (您還可以選取預設作業系統、變更逾時值,或手動編輯檔案),下列方法會使用命令列公用程式 Bootcfg.exe。
1.按一下 [開始],再按 [執行]。
2.在 [開啟] 文字方塊中鍵入 cmd。
3.在命令提示字元中鍵入 bootcfg /?。
4.便會顯示 BOOTCFG.exe 的說明與參數。


加入作業系統
在命令提示字元中鍵入:

bootcfg /copy /dOperating System Description/ID#

其中 Operating System Description 是文字說明 (例如 Windows XP Home Edition(家用版)),# 指定必須從中製作備份的 BOOT.INI 檔的作業系統區段中的開機項目 ID。



移除作業系統
在命令提示字元中鍵入:

bootcfg /delete /ID#

其中 # 指定您要從 BOOT.INI 檔的作業系統區段中刪除的開機項目 ID (列出的第二個作業系統的例 2)。



設定預設作業系統
在命令提示字元中鍵入:

bootcfg /default /ID#

其中 # 指定要做為預設作業系統的 BOOT.INI 檔的作業系統區段中的開機項目 ID。



設定逾時
在命令提示字元中鍵入:bootcfg /timeout# 其中 # 指定秒數,一旦超過這個時間,立即載入預設作業系統。



開啟 Boot.ini 檔驗證變更
1.以滑鼠右鍵按一下 [我的電腦],再按 [內容]。
-或-
在 [控制台] 中啟動 [效能及維護] 工具,然後按一下 [系統]。
2.在 [進階] 索引標籤的 [啟動及修復] 下,按一下 [設定]。
3.在 [系統啟動] 下,按一下 [編輯]。

2007年11月9日 星期五

解讀多重啟動引導文件--BOOT.INI

解讀多重啟動引導文件--BOOT.INI 下午 11:55 2005/6/15
原帖 http://www.j4.com.tw/james/compfaq2.php?no=03
轉帖 http://forum.icst.org.tw/phpBB2/viewtopic.php?p=21155&
參考右列小幅補充:http://www.pczone.com.tw/vbb3/archive/t-20236.html 及 2007/11/9
Windows NT類的*作系統,也就是Windows NT/2000/XP中,有一個特殊文件,也就是「BOOT.INI」文件,這個文件會很 輕鬆地按照我們的需求設置好多重啟動系統。「BOOT.INI」文件會在已經安裝了Windows NT/2000/XP的*作系統的所在分區,一般預設為C:\下面存在。但是它預設具 有隱藏和系統屬性,所以你要設置你的資料夾選項,以便把「BOOT.INI」文件顯示出來。我們可以用任何一種文本編 輯器來開啟它,在做修改前,請記得先做備份,以備不時之需...。一般情況下,它的內容如下:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\Windows
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows="Microsoft Windows XP
Professional" /fastdetect
在Windows 2000或者是XP系統中,我們可以很容易的設置「BOOT.INI」文件。那就是在「我的電腦」上面點擊右鍵,選擇「屬性」開啟「系統屬性」對話視窗,再點擊「進階」選擇項,在「啟動和故障修復」裡麵點擊「設置」按鈕, 就可以開啟「啟動和故障修復」對話視窗了,在這裡面我們就可以對它進行詳細設置。

如果你擁有Windows XP*作系統,那麼你可以用「系統配置實用程序」來更方便的編輯「BOOT.INI」文件。具體做法是開啟「開始」功能表,點擊「執行」命令,再在彈出的文本框中輸入「msconfig」點擊「確定」後就會彈出「系統配置實用程序」,再點擊「BOOT.INI」選擇項,就會出現如圖所示的界面。在這裡,我們可以很方便地設置文件。

言歸正傳,現在,來說明一下這個文件內容的含義。
  1.系統載入部分([boot loader])
  這一部分很簡單,只有兩個設定。那就是「timeout=」和「default=」。
「timeout=」就是設定開機時系統引導功能表顯示的時間,超過設定值則自動載入下面「default=」指定的*作系統。預設值是30,單位為秒。我們可以在這裡面設定等待時間的長短。如果將其設為「0」那麼就是不顯示系統引導功能表。
  「default=」則是設定預設引導的*作系統。而等號後面的*作系統必須是已經在「[operating systems]」中存在的。如果想預設為載入另外的*作系統,我們可以參看「[operating systems]」中的*作系統列表,然後把想要載入的*作系統按照格式寫到「default=」後面就可以了。

  2.*作系統部分([operating systems])
  在這裡面,列出了電腦上所安裝的全部*作系統。比如電腦上只有一個*作系統,那麼就只有一條信息,那就是「multi(0)disk(0)rdisk(0)partition(1)\Windows="Microsoft Windows XP Professional" /fastdetect」
在這裡需要注意的是,在英文引號內的文字就是引導*作系統功能表時顯示出來的讓我們選擇*作系統的提示文字,在這裡面我們可以隨意更改。而「multi(0)disk(0)rdisk(0)partition(1) \Windows」這一句就需要些解釋了。因為它涉及ARC(進階RISC電腦)命名,它是x86或RISC電腦中用於標識設備的動態方法。ARC命名的第一部分用於標識硬體適配卡/磁牒控制器,它有兩個選項:SCSI和Multi。 Multi表示一個非SCSI硬碟或一個由SCSI BIOS訪問的SCSI硬碟,而SCSI則表示一個SCSI BIOS禁止的SCSI硬碟。
SCSI 介面 = scsi(x)disk(x)rdisk(x)partition(x)
IDE 介面 = multi(x)disk(x)rdisk(x)partition(x)
x=數值參數。multi(0):代表"第一片"IDE磁碟控制卡,如欲代表"第二片"IDE磁碟控制卡則表示為 multi(1),依此類推【此處如使用的磁碟控制卡類型為SCSI,則表示方式為 SCSI(X) ,(x)是硬體適配卡序號,括號內"X"則視不同驅動程式而定】,Disk(x)表示SCSI總線號,此處為目的磁碟的SCSI ID。如果硬體適配卡為Multi,其正確表示方法就為disk(0),rdisk(x)則表示硬碟的序號,是針對multi而設定的,代表第一顆硬碟...(由"0"開始),如果硬體適配卡為SCSI則SCSI磁硬則忽略此值,設為0即可,【IDE硬碟接在 Primary 的Master設為0、硬碟接在 Primary 的Slave設為 1、硬碟接在 Secondary 的 Master 設為 2,如作業系統是位於IDE2的Slave硬碟,則括號中須填"3"】;
  partition(x)表示硬碟的分區序號,括號內參數由"1"開始。瞭解這些,我們就可以解釋前面那條信息的含義了,即「multi(0)disk(0)rdisk(0)partition(1) \Windows」為,在0號非SCSI設備上的第0號磁牒上的第一個分區裡面的「Windows」目錄下可以找到能夠啟動的*作系統。
  等號後的內容前面已經說過,那個就是引導功能表顯示出來的供我們選擇的提示文字。而後面的「/fastdetect」又是作什麼用的呢?這是一個開關符,用來控制啟動該*作系統時的具體選項,下面再來詳細的介紹各種開關符的含義:
/3GB:這是Win2000
SP3新引入的。這使得用戶區和系統區分為3G比1G的比例。只有用戶使用NT企業版,應用程式也支持3GB選項時,此選項才生效。
  /BASEVIDEO:使用標準VGA方式啟動。這種方式主要用於顯示驅動程序失效時。
  /BAUDRATE:指出用於調度的波特率,如果用戶不設置,則使用預設的9600,而對於線纜Modem則使用19200。
  /BOOTLOG:使Win2000將日誌寫入 %SystemRoot%\NTBTLOG.TXT 。
  /BURNMEMORY=:使NT在已知的記憶體上少使用指定的數量,如果/burnmemory=64,則有64M記憶體NT不使用。
  /CRASHDEBUG:調度器在NT啟動時啟動,只有在內核錯誤時才有用,如果系統經常會無故出錯,這個選項就很有用了。
  /DEBUG:在啟動NT時調入調度器,它可以在任何時間啟動,在錯誤可以再次出現時使用它比較合適。
  /DEBUGPORT= comx :指定用於調度的端口,其它X就指端口號。
  /FASTDETECT:對於Win2000啟動時,它使系統不檢查串行口和並行口。
  /HAL=:允許用戶不使用預設的HAL。
  /INTAFFINITY:設置多處理器HAL(HALMPS.DLL),使編號最大的處理器接收中斷請求。如果不設置此選項,Win2000會使所有處理器接收中斷請求。
  /KERNEL=:與上面的功能相同,不過是針對SMP中的內核而言的。
  /MAXMEM:n:指定NT可以使用的最大記憶體數,如果一個記憶體片損壞,這個開關就十分有用了。
  /NODEBUG:不使用調試信息。
  /NOGUIBOOT:指定此選項會使Win2000不載入VGA驅動程序,也就不會顯示啟動過程和失敗時的蘭屏信息。
  /NOSERIALMICE=[COMx | COMx,y,z…]:在特定的COM中上禁止對串行滑鼠的檢測。如果用戶有一個非滑鼠設備接在COM 口上,這個選項會十分有用。如果此開關未加參數,系統會禁止所有COM口。
  /NUMPROC=n:只允許前N個系統處理器工作。
  /ONECPU:在多處理器中只使用一個處理器。
  /PCILOCK:不讓NT為PCI設置分配IO/IRQ資源,而啟用BIOS設置。
  /SAFEBOOT:安全啟動,這個大家一定十分熟悉,Win2000只啟動HKLM\System\CurrentControlSet\ Control\SafeBoot中 的驅動程序和服務,其後跟三個參數MINIMAL,NETWORK或DSREPAIR之一。MINIMAL和NETWORK在允許網路下啟動系統。而DSREPAIR要求系統從備份設備中調入活動目錄的設置。還有一個選項是"(ALTERNATESHELL)",它讓系統調入由HKLM\System\CurrentControlSet\SafeBoot\AlternateShell指定的SHELL程序,而不使用預設的Explorer。
  /SOS:在調入驅動程序名時顯示它的名字,在因驅動問題而無法啟動時使用比較好。
  /WIN95:在裝有三個系統DOS、Win9x和Windows NT的系統上,讓NTLDR直接調用Win9x。啟動文件BOOTSECT.W40。
  /WIN95DOS:在裝有三個系統DOS、Win9x和Windows NT的系統上,讓NTLDR直接調用DOS啟動文件BOOTSECT.DOS
  /YEAR=:使用指定的年份,如果設置為/YEAR=2005,那現在的時間就是2005年,此選項僅對NT4+SP4和Win2000生效。
瞭解了以上這些,我們就可以更加輕鬆控制好我們系統的啟動了。

Grubinst使用介紹

Grubinst使用介紹



1. 介紹

grubinst是一個用來將GRUB4DOS安裝到硬碟的MBR(或者分區的引導磁區)以及映射檔中的工具。

grubinst.exe是一個命令行方式的程式,它的功能基本上與Gbootlace.com(可以運行在純DOS或者Linux環境)相同,但是跟bootlace.com不同,grubinst完全是用C語言開發的,能夠在Windows NT/2K/XP、Linux和FreeBSD等作業系統下編譯並運行。

grubinst_gui.exe是grubinst.exe的圖形介面shell程式,對於那些不熟悉命令行操作的用戶來說,它提供了更友好的圖形操作介面,目前,grubinst_gui.exe只能運行在Windows作業系統(事實上是只能運行在NT/2K/XP環境)下。

另外請注意,當前版本的grubinst不支持在Windows 95/98/ME下修改硬碟的MBR,對於這些作業系統,請使用bootlace.com。


2. grubinst跟bootlace.com的區別

在bootlace.com裏,硬碟盤等設備只能用設備的BIOS識別號來表示,如0x80表示第一塊硬碟,0x81表示第二塊硬碟等等。而在grubinst中,硬碟則可以用特定的設備檔案名來表示(跟grub的傳統類似),如(hd0), (hd1)...。軟盤機暫時還不支援這種表示方式。

grubinst支援幾個新的選項,主要用於恢復原來的MBR。

--save-mbr=FILENAME
這個選項用於保存原來的MBR到檔中。

--restore-mbr=FILENAME
這個選項用來從前面保存的檔中恢復原來的MBR。

--restore-prevmbr
這個選項用來恢復保存在硬碟或者映射檔中第二個磁區的原來的MBR。

正常情況下,原來的MBR只有一個磁區,它被保存在新的GRLDR MBR中的第二個磁區中。你可以用--restore-prevmbr選項來恢復它。然而,如果原來的MBR的長度超過一個磁區,例如,你安裝了別的引導管理軟體,那麼GRLDR MBR就沒有足夠的空間保存原來的MBR。在這種情況下,你應該使用--save-mbr=FILENAME將原來的MBR保存到一個外部檔中,需要時再使用--restore-mbr=FILENAME選項從保存的檔中恢復它。

3. 用法及示例

取自grubinst 1.1的--help。

grubinst [選項] 設備或檔選項:








































































--help,-h 顯示本幫助
--pause 退出前暫停
--version 顯示grubinst版本資訊
--verbose,-v 輸出詳細資訊
--list-part,-l 列出設備或者檔中的所有分區資訊
--save=FN,-s=FN 保存原來的MBR/引導磁區到檔FN中。
--restore=FN,-r=FN 從前面備份的FN中恢復原來的MBR/引導磁區
--restore-prevmbr,-r 恢復保存在設備或者檔第二磁區中的原來的MBR
--read-only,-t 只是模擬操作,沒有真正的寫操作(測試模式)
--no-backup-mbr 不在第二磁區中備份原來的MBR。
--force-backup-mbr 強制備份原來的MBR到第二磁區(默認選項)
--mbr-enable-floppy 在軟盤機上搜索grldr(默認選項)
--mbr-disable-floppy 禁止搜索軟盤機上的grldr
--mbr-enable-osbr 當分區表非法時(通常是某作業系統的引導磁區),仍然啟動原來的MBR(默認選項)
--mbr-disable-osbr 當分區表非法時(通常是某作業系統的引導磁區),禁止啟動原來的MBR。
--duce disable the feature of unconditional entrance to the command-line.
--boot-prevmbr-first 在搜索GRLDR之前嘗試首先啟動原來的MBR
--boot-prevmbr-last 在啟動原來的MBR之前先搜索GRLDR(默認選項)
--preferred-drive=D 優先啟動磁片編號, 0 <= D < 255.
--preferred-partition=P 優先啟動分區編號, 0 <= P < 255.
--time-out=T,-t=T 在啟動原來的MBR之前等待T秒,如果T是0xff,無限等待,默認等待5秒
--hot-key=K,-k=K 如果在啟動原來的MBR之前按下了指定鍵,則啟動GRUB。K的長度為一個字(word),也就是int16/AH=1中斷的AX寄存器值。高位位元組是對應按鍵的掃描碼,低位元位元組是ASCII碼。默認按鍵是0x3920,也就是空白鍵。
--key-name=S 指定熱鍵的顯示名
--floppy,-f 如果安裝目標是軟盤機,則指定這個選項。
--floppy=N 如果安裝目標是硬碟的某個分區,則指定這個選項。N用來指定分區編號:0,1,2和3對應主分區,4,5,6,...對應邏輯分區。
--sectors-per-track=S 對--floppy選項指定每磁軌磁區數,1 <= S <= 63, 默認是63.
--heads=H 對--floppy選項指定磁頭數,1 <= H <= 256, 默認是255.
--start-sector=B 對--floppy=N選項指定隱藏磁區數。
--total-sectors=C 對--floppy選項指定總磁區數,默認是0。
--lba 對--floppy選項使用LBA方式。如果軟盤機的BIOS支援LBA,你可以指定這個選項。按規定所有的軟盤機BIOS都支援CHS方式,所以最好指定--chs選項。如果既沒指定--lba也沒指定--chs,則LBA指示位元組(一般是啟動磁區第3位元組)的值不會被改變。
--chs 對--floppy選項使用chs方式。如果你的軟盤機BIOS不支援LBA方式,你應該指定--chs選項。我們假定所有的軟盤機BIOS都支援CHS方式,所以推薦使用--chs選項。如果既沒指定--lba也沒指定--chs,則LBA指示位元組(一般是啟動磁區第3位元組)的值不會被改變。
--install-partition=I,-p=I 安裝引導磁區到指定硬碟(或硬碟映射)的分區I。
--boot-file=F,-b=F 改變默認啟動檔案名(默認是grldr)。
--load-seg=S 改變啟動檔的默認記憶體載入段(默認是0x2000:0)。
--grub2,-2 裝載grub2的內核g2ldr而不是grldr。
--output,-o 輸出內置的grldr.mbr(受-b參數的影響)。


示例 1: 安裝GRLDR MBR到第一個硬碟
grubinst (hd0)

示例 2: 安裝GRLDR MBR 到磁片映射檔disk.dsk
grubinst disk.dsk

示例 3: 恢復第一塊硬碟的單磁區MBR
grubinst --restore-prevmbr (hd0)

示例 4: 安裝GRLDR MBR到第一塊硬碟並保存原來的MBR到MBR.sav文件中。
grubinst --save-mbr=MBR.sav (hd0)

示例 5: 從保存的MBR.sav中恢復原來的MBR。
grubinst --restore-mbr=MBR.sav (hd0)

示例 6: 在啟動時10秒內按下空格才載入GRUB
grubinst --boot-prevmbr-first --time-out=10 (hd0)

4. 編譯方法

要編譯grubinst,在Linux/FreeBSD下你需要GCC,在Windows NT/2K/XP下你需要mingw或者Visual C++ 6.0。

mingw:
make -f Makefile.mgw

Visual C++ 6.0:
nmake -f Makefile.vc6

Linux GCC:
make -f Makefile.lnx

FreeBSD GCC:
make -f Makefile.bsd

這裏提供的二進位碼使用mingw編譯。


5. 相關網站

[http://grub4dos.sourceforge.net/ grubinst和WINGRUB主頁]

[http://grub4dos.jot.com/ 最新版GRUB4DOS專案包]

[http://bbs.znpc.net/ 時空論壇有GRUB4DOS專區(中文)]

[http://grub.linuxeden.com/ 與GRUB4DOS相關的各種資訊(中文)]

2007年11月7日 星期三

Grub4dos命令索引

Grub4dos命令如下表:





























































































































































































































































































blocklist

輸出檔的塊清單表達法。

boot

引導已載入的作業系統或磁區鏈式載入器。

bootp

通過BOOTP初始化網路設備。


cat

顯示指定檔的內容。

cdrom

初始化或者停止所有的
ATAPI CDROM 設備。

chainloader

載入磁區鏈式載入器。

cmp

比較兩個文件, 並且報告兩者之間的差異。


color

改變菜單的顏色。

configfile

將指定檔作為配置檔予以載入。

debug

打開/關閉調試模式。


default

把 NUM 項菜單設為缺省值。


device

聲明BIOS驅動器對應的實際物理設備。


dhcp

通過DHCP初試化網路設備。


splashimage

圖形模式下載入背景圖片檔。

foreground

設置圖形模式下的前景色。

background

設置圖形模式下的背景色。


clear

清屏。


displayapm

顯示 APM
BIOS 的相關資訊。


displaymem

顯示 GRUB 所判斷到的當前系統的記憶體分佈,包括所有實體記憶體區域。



displaymem

顯示諸多檔的內容。


embed

如果設備是個驅動器,
則將Stage 1.5嵌入到主引導磁區之後。


fallback

如果調用當前的功能表項時出現錯誤,則跳轉到NUM 項後重試。


commandline

進入命令行方式。


find

在所有分區上查找檔案名
, 並顯示包含該檔的設備。


fstest

切換檔系統的試驗模式。


geometry

輸出驅動器的相關資訊。


halt

關閉系統(電腦)。


help

顯示內部命令的幫助資訊。


hiddenmenu

隱藏菜單。


hide

通過在分區類型上置隱藏標誌,隱藏指定分區。


ifconfig

指定 IP 地址, 子網路遮罩, 閘道和伺服器地址。不帶參數時,將顯示當前的網路配置。



impsprobe

探測 Intel 多處理器規範
1.1/1.4 配置表並使所找到的各處理器啟動進入閉迴圈。


initrd

載入Linux格式的初始化虛擬碟, 並設置必要的參數。


install

安裝STAGE1到指定設備上,安裝載入STAGE2需要的塊列表到STAGE2上。



ioprobe

偵測指定設備的I/O 埠號。


kernel

嘗試載入主引導影像檔(
Linux內核格式)。


lock

如果用戶未被認證,則終止命令的執行。


makeactive

將 root 設備置為活動分區。



map

對設備進行映射。


md5crypt

產生一個 MD5 格式的密碼。



module

對多重啟動影像, 載入啟動模組檔
(不處理該檔的內容, 用戶必須自己確定核心的要求
)。


modulenounzip

與 'module'
類似, 但是禁用了自動解壓縮。


pager

沒有參數時,切換頁模式。


partnew

創建一個新的主分區。


parttype

改變指定分區(PARTITION)的分區類型
(TYPE)。


password

設置密碼。


pause

終止命令的運行,並給出一段資訊。任意鍵按下後,將繼續。



quit

從 GRUB 命令行中退出。



rarp

用 RARP 初始化網路設備。



read

從記憶體的指定位置讀取一個
32-bit 的值,並以十六進位形式顯示出來。


write

寫一個 32 位元的值
VAL 到記憶體位址 ADDR。


reboot

重啟系統(電腦)。


fontfile

指定中文字體檔,並切換到中文顯示方式。


root

設置根分區。


rootnoverify

類似`root'指令
, 但不測試安裝該分區。


savedefault

將當前項設置為默認的引導項。


serial

初始化一個串口設備。


setkey

改變鍵盤映射關係。


setup

自動安裝GRUB.


terminal

選擇一個終端。


terminfo

指定終端的功能。


testload

以多種不同的方式讀取檔
(由FILE指定)的整個內容,並予以比較,以測試檔系統的代碼。



testvbe

測試所指定(MODE)的
VBE 模式。


setvbe

為後續的每個kernel命令行設置
VBE模式。


tftpserver

指定 TFTP 伺服器的
IP 地址。


timeout

設置在自動啟動缺省功能表前所等待的秒數。


title

命名菜單項。


unhide

通過清除隱藏標誌,解除指定分區
(PARTITION)的隱藏。


uppermem

強制指定僅有(KBYTES)
KB 的上位記憶體。


vbeprobe

偵測 VBE 的信息。


blocklist
blocklist FILE
列印出檔 FILE 的“塊清單”表達法(該表達法也是合法的 GRUB 檔案名,並且完全等價於 FILE)。

boot
boot
引導已載入的作業系統或磁區鏈式載入器。

bootp
bootp [--with-configfile]
通過BOOTP初試化網路設備。如果使用了`--with-configfile'參數,此命令將會試圖去載入一個特定的配置檔。

cat
cat [--hex] [--skip=S] [--length=L] [--locate=STRING] FILE
顯示指定檔的內容,或者顯示檔中指定字串的位置。

cdrom
cdrom --add-io-ports=P | --init | --stop
初始化或者停止所有的 ATAPI CDROM 設備, 或者為一個可能的 ATAPI CDROM設備設置附加的 IO 埠。P 的高字指定設備控制寄存器組的埠基址,P 的低字指定設備命令寄存器組的埠基址。"

chainloader
chainloader [--force] [--load-segment=LS] [--load-offset=LO] 
[--load-length=LL] [--skip-length=SL] [--boot-cs=CS] [--boot-ip=IP]
[--ebx=EBX] [--edx=EDX] [--sdi] [--enable-a20] FILE

載入鏈式載入器 FILE。若指定了 --force, 則強制載入而不檢查第一磁區尾部的合法引導標籤(55 AA)是否存在。LS:LO 用於指定有別於 0000:7C00 的啟動映射載入地址。LL 用於指定啟動映射的長度(在 512 位元組至 640K 之間)。SL 用於指定裝入啟動映射之前需要從映射開頭跳過的長度(以位元組計數)。CS:IP 用於指定讓啟動映射獲得控制需要跳轉到的位址。EBX/EDX 分別用於指定在啟動映射獲得控制的那一刻 EBX/EDX 寄存器應有的值。用 --sdi 可以強制把 FILE 當作 Windows XP 的一個記憶體啟動檔格式(System Deployment Image)來對待(請參考微軟相應文檔)。如果你希望在控制傳遞給啟動映射時切斷 CPU 的位址線 A20,可以用 --disable-a20 參數做到。

cmp
cmp FILE1 FILE2
比較兩個文件, 並且報告兩者之間的不同的資訊。

color
color NORMAL [HIGHLIGHT]
改變菜單的顏色。Normal 用於指定菜單項的未選中時的顏色,HIGHLIGHT 則用於指定菜單項的被選中時的顏色。如果你未指定 HIGHLIGHT 色,那麼我們將使用 NORMAL 的反色值。顏色值的格式是 "FG/BG"。FG 和 BG 是顏色的名稱,如下:black(黑), blue(藍), green(綠), cyan(青), red(紅), magenta(粉紅), brown(棕), light-gray(亮灰),dark-gray(暗灰), light-blue(淺藍), light-green(淡綠), light-cyan(淡青), light-red(明紅), light-magenta(淺紅), yellow(黃) 和 white(白)。注意,BG 的值只能是前八個。另外,若想使用閃爍的前景色,你在 FG 前使用首碼 "blink-" 即可。

configfile
configfile FILE
把檔 FILE 作為配置檔立即載入執行(只有當載入失敗時才返回)。

debug
debug
打開/關閉 DEBUG(調試、除錯) 模式。

default
default [NUM | `saved' | FILE]
設置默認啟動的功能表入口項為 NUM (0 代表第一項),或者由 savedefault 所保存的入口項(如果指定了關鍵字 saved),或者先前保存在檔 FILE 中的入口項。當指定了 FILE 時,後續的 savedefault 命令都將把入口項保存到 FILE 中。

device
device DRIVE DEVICE
聲明BIOS驅動器對應的實際物理設備。這條命令只用於grub命令行。

dhcp
dhcp
通過DHCP初試化網路設備。

splashimage
splashimage FILE
圖形模式下載入背景圖片檔。

foreground
foreground RRGGBB
設置圖形模式下的前景色。RR 代表紅色, GG 代表綠色, BB 代表藍色。這些數值都是用十六進位來表示的。

background
background RRGGBB
設置圖形模式下的背景色。RR 代表紅色, GG 代表綠色, BB 代表藍色。這些數值都是用十六進位來表示的。

clear
clear
清螢幕。

displayapm
displayapm
顯示 APM BIOS 的相關資訊。

displaymem
displaymem
顯示 GRUB 所判斷到的當前系統的記憶體分佈,包括所有實體記憶體區域。

dump
dump FROM TO
顯示諸多檔的內容。注意,FROM 所指定的必須是一個 GRUB 檔,TO 所指定的必須是一個 OS 檔。這條命令只在 grub shell 中才有。

embed
embed STAGE1_5 DEVICE
如果設備是個驅動器, 則將Stage 1.5嵌入到主引導磁區之後。如果是個FFS分區, 則可嵌入到該設備餓`引導代碼'區中。並輸出 Stage 1.5所占的磁區數。

fallback
fallback NUM
進入無人干預啟動模式:如果默認啟動入口項出錯失敗,立即用入口項 NUM 來啟動(這裏的“入口項”與 default 命令中的“入口項”意義相同)。

commandline
commandline
進入命令行提示符方式。

find
find [--set-root] [--ignore-floppies] FILENAME
在所有分區上查找檔案名, 並顯示包含該檔的設備。如果使用了 --set-root 選項, 那麼當在某個設備上找到 FILENAME 時, 立即停止查找, 並將此設備設定為新的 root 設備。如果指定了 --ignore-floppies 選項, 那麼查找過程將略過所有的軟碟。

fstest
fstest
切換檔系統的試驗模式。

geometry
geometry DRIVE [CYLINDER HEAD SECTOR [TOTAL_SECTOR]]
輸出驅動器的相關資訊. 在 grub shell 中, 你可以用這條命令設置驅動器參數為任意值。如果你省略了總磁區數, 它將由 C/H/S 的值自動計算出來。

halt
halt [--no-apm]
關閉系統。如果APM(高級電源管理)功能存在,將使用 APM BIOS 關閉系統,除非指定了 `--no-apm' 選項。

help
help [--all] [PATTERN ...]
顯示內部命令的幫助資訊。要查看所有命令的幫助,請使用 `--all' 參數。

hiddenmenu
hiddenmenu
隱藏菜單。

hide
hide PARTITION
通過在分區類型上置隱藏標誌,隱藏指定分區。

ifconfig
ifconfig [--address=IP] [--gateway=IP] [--mask=MASK] [--server=IP]
指定 IP 地址, 子網路遮罩, 閘道和伺服器地址。不帶參數時,將顯示當前的網路配置。

impsprobe
impsprobe
探測 Intel 多處理器規範 1.1/1.4 配置表並使所找到的各處理器啟動進入閉迴圈。

initrd
initrd FILE [ARG ...]
載入Linux格式的初始化虛擬碟, 並設置必要的參數。

install

install [--stage2=STAGE2_FILE] [--force-lba] STAGE1 [d] DEVICE STAGE2 [ADDR] [p] [CONFIG_FILE] [REAL_CONFIG_FILE]
安裝STAGE1到指定設備上,安裝載入STAGE2需要的塊列表到STAGE2上。如果使用了選項'd', STAGE1總是試圖使用安裝STAGE2的驅動器, 而不是啟動盤。STAGE2將載入在指定地址上, 如果未聲明地址, 則自動檢測。如果使用了選項 'p' 或給出了配置檔, 將修改STAGE2的第一個資料塊, 修正實際Stage2啟動時使用的配置檔位置。對於Stage 1.5, 該值為Stage 2的路徑。如果安裝的是Stage 1.5, 且指定了實際配置檔, 則將該配置檔路徑寫入Stage2中。

ioprobe
ioprobe DRIVE
偵測指定設備的 I/O 埠號。

kernel
kernel [--no-mem-option] [--type=TYPE] FILE [ARG ...]
嘗試載入主引導影像檔。其他項將被作為內核的命令行參數而傳遞給內核。使用此命令以前,內核所用到的模組應該被重新載入。參數 --type 用於說明內核的類型,包括 "netbsd", "freebsd", "openbsd", "linux", "biglinux" 和 "multiboot"。參數 --no-mem-option 用於說明不必自動傳遞 Linux 的記憶體參數。

lock
lock
如果用戶未被認證,則終止命令的執行。

makeactive
makeactive
將 root 設備置為活動分區。當然,此命令只對 PC 的硬碟主分區有效。

map

map [--status] [--mem[=RESERV]] [--hook] [--unhook] [--rehook] [--floppies=M] [--harddrives=N] [--ram-drive=RD] [--rd-base=ADDR] [--rd-size=SIZE] [[--read-only] [--fake-write] [--unsafe-boot] [--disable-chs-mode] [--disable-lba-mode] [--heads=H] [--sectors-per-track=S] TO_DRIVE FROM_DRIVE]"
對設備進行映射。這對於磁區鏈式引導是很有用的功能,比如 DOS。這裏,目的驅動器 TO_DRIVE 可以是一個磁片檔(注意,當沒有指定 --mem 時,這要求磁片檔是連續存放於介質中的。另外,若使用了 --read-only 參數, 該功能將使仿真磁片處於唯讀; 若使用了 --fake-write 參數,該功能將使仿真磁片處於假寫,即簡單地返回“寫入”成功,但實際上不執行寫入操作; 若使用了 --unsafe-boot 參數,該功能將使仿真磁片的第一磁區處於可寫; (默認時仿真磁片的第一磁區被保護,不能經由 int13/AH=03h 而寫入)。若使用了 --disable-chs-mode 參數,CHS 訪問功能將被禁用; 若使用了 --disable-lba-mode 參數, LBA 訪問功能將被禁用; H 和 S 指定了虛擬磁片的物理參數。若使用了 --status, --hook, --unhook, --rehook, --floppies, --harddrives, --ram-drive, --rd-base, --rd-size, --memdisk-raw, --safe-mbr-hook, --int13-scheme 諸參數之一,那麼其他的命令行參數將被忽略。--floppies 用於修改 BIOS 資料區 0x410 處的軟碟個數位域。--harddrives 用於修改 BIOS 資料區 0x475 處的硬碟個數位元組。 --mem 參數指定使用記憶體來仿真磁片(此時 TO_DRIVE 可以是 gzip 格式的壓縮檔)。--ram-drive 用於修改代表內存檔的 BIOS 磁片號碼。--rd-base 指定內存檔的起始位址。--rd-size 指定內存檔的大小(以位元組計數)。如果 RESERV <= 0, 那麼至少保留 (-RESERV * 512) 位元組的記憶體用來存放該內存檔的磁區資料;如果 RESERV > 0, 該內存檔將起始於絕對物理位址 (RESERV * 512),而終止於該起始位址所在的連續記憶體塊的結尾(通常等於或接近於實體記憶體的結尾)。

md5crypt
md5crypt
產生一個 MD5 格式的密碼。

module
module FILE [ARG ...]
為多重啟動映射格式的引導映射載入啟動模組檔 FILE(對該檔的內容不作任何解釋, 因此使用這條命令的用戶必須瞭解所提到的內核映射的要求)。其餘參數作為“模組命令行”傳遞, 就像 kernel 命令那樣。

modulenounzip
modulenounzip FILE [ARG ...]
與 module 類似, 但是自動禁用瞭解壓縮。

pager
pager [FLAG]
沒有參數時,切換頁模式。如果使用了 FLAG 參數,那麼它為`on' 時為開啟, 為 `off' 時為關閉。

partnew
partnew PART TYPE START LEN
創建一個新的主分區。START 為起始磁區號,LEN 為其包含的磁區數,TYPE 為其分區類型。

parttype
parttype PART TYPE
改變指定分區(PART)的分區類型(TYPE)。

password
password [--md5] PASSWD [FILE]
設置密碼。當其處於功能表檔的首項時,將禁用所有的互動式功能表編輯功能,包括編輯功能表項(`e`)/進入命令行(`c`)。當正確輸入密碼 (由PASSWD指定)後,載入新的菜單檔(由FILE指定)。如果你沒有指定 FILE 項,那麼上述被禁用的功能將被啟用了。當然,你也可以將此命令用到某個功能表項裏,用以提高系統安全性。參數 --md5 說明密碼(PASSWD)是使用md5crypt 加密的。

pause
pause [--wait=T] [MESSAGE ...]
列印資訊 MESSAGE,然後等待,直到按下一鍵,或者 T 秒過後,命令結束,控制返回到 GRUB,繼續執行下一條命令。

quit
quit
如果 GRUB 先前是從 DOS 啟動的,就返回到 DOS。

rarp
rarp
用 RARP 初始化網路設備。

read
read ADDR
從記憶體的指定位置讀取一個 32-bit 的值,並以十六進位形式顯示出來。

write
write ADDR VAL
寫一個 32 位元的值 VAL 到記憶體位址 ADDR。

reboot
reboot
重啟系統。

fontfile
fontfile FILE
指定中文字體檔,並切換到簡體中文顯示方式。

root
root [DEVICE [HDBIAS]]
設置根分區。設置根分區為指定設備(DEVICE), 然後嘗試掛接該分區以得到分區大小(用於在ES:ESI中傳遞, 磁區鏈式啟動方式要求這樣)。BSD 驅動類型用於啟動 BSD 的核心啟動), 和確定 BSD 子分區所在的 PC 分區。可選的磁片偏移參數, 用於 BSD 核心確定有多少個控制器在當前控制器前。比如: 假設同時有一個IDE和SCSI盤, 而BSD根分區在 SCSI盤上, 那麼磁片偏移就為1。

rootnoverify
rootnoverify [DEVICE [HDBIAS]]
類似於“root”指令, 但不嘗試掛接該分區。這用於有些作業系統安裝在 GRUB 能訪問到的磁片區域之外,或者其檔系統不能被 GRUB 識別出來,但你仍然想把這個設備強制設置為 root 設備的情況。說明:這樣一來,原來在 root 命令中嘗試掛接的那些項目,現在將不起作用了。

savedefault
savedefault
如果沒有指定參數,就把當前功能表項保存為默認的引導項。如果指定了參數 NUM,那麼保存的就是它。如果指定的是關鍵字 fallback,那麼保存的是 fallback 命令所指定的功能表項。如果 T 不是 0,將提示用戶按下 Y 鍵來確認寫盤操作,如果在 T 秒之內沒有按鍵,或者按鍵不是 Y,那麼寫盤保存的操作將被取消。

serial

serial [--unit=UNIT] [--port=PORT] [--speed=SPEED] [--word=WORD] [--parity=PARITY] [--stop=STOP] [--device=DEV]
初始化一個串口設備。UNIT 用於指定要使用的串口設備 (如,0 == COM1); PORT 用於指定埠號; SPEED 用於指定通訊的數率; WORD 為字長; PARITY 為奇偶類型(取 `no', `odd' 和 `even' 之一的值。); STOP 是停止位的長度值; 選項 --device 僅用於命令行模式,用以指定 tty 設備的檔案名。預設值是這樣的,COM1, 9600, 8N1。

setkey
setkey [TO_KEY FROM_KEY]
改變鍵盤映射關係。把FROM_KEY映射為TO_KEY。這裏的鍵必須是字母, 數位, 和以下特殊鍵: escape(轉義), exclam(!), at(@), numbersign(#), dollar($), parenright ()) , caret(^), ampersand(&), asterisk(*), plus(+), percent(%), minus(-), underscore(_), equal(=), parenleft[(], backspace(退格), tab(製錶), bracketleft([), braceleft({), bracketright(]), braceright(}), enter(回車), control(控制), semicolon(;), colon(:), quote('), doublequote("), slash(/), backquote(`), tilde(~), shift(換檔), backslash(\), bar(|), comma(,), less(<), period(.), greater(>), question(?), alt(交互), space(空格), capslock(大寫), Fx(功能鍵) 和 delete(刪除)。

setup

setup [--prefix=DIR] [--stage2=STAGE2_FILE] [--force-lba] INSTALL_DEVICE [IMAGE_DEVICE]
自動安裝GRUB. 這條命令使用更靈活的install命令將GRUB安裝到指定設備上。如果給出了映象設備,將在該設備尋找GRUB,否則使用缺省的根設備。根設備可用 root指令指定。如果你確認系統的 BIOS 應該支援 LBA 模式, 但是 GRUB 卻沒有工作於該模式, 則請指定 `--force-lba' 參數。如若你在命令行中已安裝了一次 GRUB 可是,你卻無法卸載 GRUB 程式所在的分區,請指定 `--stage2' 參數。

terminal

terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules] [graphics]
選擇一個終端。當指定了多個終端以後, 按任意鍵方可繼續操作。如果控制臺和串口都被指定了, 那麼你首先在其中按下鍵盤的終端將被首先選中。如果沒有指定任何參數, 那麼此命令將顯示出當前的終端設置; 參數 --dumb 用以指定一個啞終端, 否則即為 vt100 相容型; 若使用了 --no-echo 參數, 螢幕上將不會回顯輸入的字元; 若使用了 --no-edit 參數, the BASH-like 的編輯功能將被禁用; 若使用了 --timeout 參數, 該命令將等待數秒鐘(由SECS指定); 可使用 --lines 指定最大的行數; 可使用 --silent 選項關閉消息顯示。

terminfo

terminfo [--name=NAME --cursor-address=SEQ [--clear-screen=SEQ] [--enter-standout-mode=SEQ] [--exit-standout-mode=SEQ]]
指定終端的功能。如果此終端為 vt100 相容型的,則可指定換碼順序 (即使用 \e 代表 ESC, ^X 代表控制碼); 在未給任何參數的情況下,將給出當前配置資訊。

testload
testload FILE
描述: 以多種不同的方式讀取檔(由FILE指定)的整個內容,並予以比較,以測試檔系統的代碼。輸出看起來會有點兒混亂,但是,如果沒有錯誤的話,`i=X, filepos=Y' 裏的 X 和 Y 最後必得相等。如果測試即告成功,下一步即可試圖載入內核了。

testvbe
testvbe MODE
測試所指定(MODE)的 VBE 模式。

setvbe
setvbe MODE_3D 為後續的每個 kernel 命令行設置 VBE 模式 MODE_3D(例如 1024x768x32)。

tftpserver
tftpserver IPADDR
指定 TFTP 伺服器的 IP 地址。

timeout
timeout SEC
設置在自動啟動缺省功能表前所等待的秒數。

title
title [NAME ...]
命名菜單項。

unhide
unhide [PARTITION]
通過清除隱藏標誌,解除指定分區(PARTITION)的隱藏。默認的分區是當前的根設備。

uppermem
uppermem KBYTES
強制 GRUB 承認系統中只安裝了 (KBYTES) KB 的上位記憶體。略過任何形式的系統記憶體位址區域查找步驟。

vbeprobe
vbeprobe [MODE]
偵測 VBE 的信息。如果指定了一個模式(MODE 不為空),則僅顯示其資訊

我的上傳圖片

https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGVUPELldIV2VYyF26E8nJzvLQnQcuv1NAZx2gEu1H9C0cwtllY0vY0N3LUBKim1m8v0KLuTp6e0MT0JYEcLw0GtdWkqzdNFIAUUE0SDVqh-3HIHkiP6wrPXtNb56QudGEYeMsp2C4wxgK/s400/header_bg.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWHchbYcm-Llpl5u5d8aYNSHLaYbeC4mJiXVEwJtQEhZ1XNdpsHEH92jh5XtnlKvfEn0ju7BqgwvDSHOJpwyBwCkRpEx0e1wghrpEjrhBDGKSdSpwhD3nx4ASrz00tByLx6JMGPjk4Nj-R/s400/blog-header_bg0.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9OzxUrh58Cdpl1auwm7Dv-JnWVgkUYTr52xdKK5-D-2nAVDfnx1MsAUyYetaTZcN2o3tXchOh82OAJie3HnC4V6fphvseec3U5FiClN-LMWhe1YlzxwmOf4K5kn8KTnvfcviYJ-ygwGsG/s400/blog-header_bg.jpg

如何在筆記型電腦外接式硬碟第二分割區中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
]

在外接式USB硬碟上安裝Ubuntu

轉載自http://www.ubuntu.org.tw/modules/newbb/viewtopic.php?topic_id=5748&forum=11&post_id=25246#forumpost25246
(經實驗部分內容不一定合用,詳情參考本站文章「如何在筆記型電腦外接式硬碟第二分割區中Live安裝Ubuntu 7.10 」)

把一個不再使用的7年歷史的NB 2.5" 10G舊硬碟裝進了外接式USB硬碟盒,想試用看看Kubuntu的功能如何?順利裝好了,但是不像Gnome有restricted driver manager能裝 nVidia driver,上網問了查了都沒得到解決辦法,再者Kubuntu也抓不到外接式USB硬碟上的NTFS partition,裝了ntfs-3g, ntfs-config一樣,裝Breyl則出現全白螢幕,一堆問題乾脆裝回Ubuntu,結果一切順利,以下是一些心得和大家分享.


a.用Garted Live CD先將外接式USB硬碟切割成三個分割區(partition),依序為NTFS或Fat32(存放資料),reiserfs或Ext3(Linux安裝區),SWAP等,NTFS分割區放在第一個位置,主要是為了在Windows底下能讀取資料,因為Windows無法讀取Linux分割區(reiserfs,Ext3等檔案系統),因此必須將NTFS或Fat32放在第一個分割區(partition),這也就是為什麼安裝Windows和Linux雙系統時,必須先安裝Windows之故.

b.確定外接式USB硬碟已接上,再將Ubuntu Live Cd放入光碟機後重新開機,出現開機畫面時,按ESC鍵進入開機選項,選擇光碟機開機,然後就會出現Ubuntu的開機畫面,先按F2選擇中文(繁體),再按開機選項的第一項執行Ubuntu.
進入Ubuntu後,按桌面的Install圖示以將Ubuntu安裝至外接式USB硬碟上,注意每一個步驟以免錯安裝至原本電腦的硬碟,以下為步驟說明.(電腦內的硬碟的代號是/dev/sda,而外接式USB硬碟的代號是/dev/sdb,千萬別弄錯)

1.按桌面install圖示後出現安裝畫面
2.確定中文(繁體)後按下一頁
3.您在那裡:確定時區後按下一頁
4.Keyboad Layout:直接按下一頁
5.Prepare disk space:選手動後按下一頁 (第5,6點最重要,別弄錯)
6.Prepare partitions:這個頁面會出現所有內接式和外接式硬碟 的分割區(partition),把焦點放在外接式硬碟的分割區,如下所示:

/dev/sdb1 5807MB unknown
/dev/sdb2 3981MB unknown
/dev/sdb3 swap 263MB 0MB

點選 /dev/sdb1後按下方的Edit Partition,在出現視窗中的use as:欄位選ntfs,然後按確定,接著點選 /dev/sdb2後按下方的Edit Partition,在出現視窗中的use as:欄位選reiserfs,在mount point:欄位中輸入 /,然後按確定,最後按下一頁.

7.接下來的帳號設定的則依個人需要設定,之後就開始安裝Ubuntu了.

c.安裝完成後移除外接式USB硬碟重新開機時,會發現原本電腦的硬碟(內接式)無法開機,螢幕出現 grub error 21等訊息,此時別緊張,將安裝Ubuntu完成的外接式USB硬碟接上,重新開機,在出現的 grub選單中的下半部會有原本電腦的硬碟開機選項,點選就會進入原先的作業系統(譬如UbuntuStudio),在Terminal鍵入以下指令就能恢復原本電腦硬碟的正常開機:

$ sudo grub-install /dev/sda

d.然後再輸入以下指令,否則下次要以外接式USB硬碟開機以執行Ubuntu時,會發現換外接式USB硬碟無法開機了.

$ sudo su
# cd
# echo '(hd0) /dev/sdb' > /media/disk/boot/grub/device.map
# grub-install --root-directory=/media/disk /dev/sdb
# exit
$

e.最後一個步驟是修改外接式USB硬碟grub中的menu.lst,將其中的(hd1,1)改成(hd0,1)後存檔,一切就大功告成了.

$ sudo gedit /media/disk/boot/grub/menu.lst

f.用外接式USB硬碟開機執行Ubuntu後,再修改檔案/etc/X11/xorg.conf以使其能在其他也使用nVidia顯示卡的電腦上運作:

$ sudo gedit /etc/X11/xorg.conf

檔案打開後增加或確認下面所示 <=== 部份然後存檔

Section "Device"
Identifier "Generic Video Card" <===
# Identifier "nVidia Corporation G72M [Quadro NVS 110M/GeForce Go 7300]" <===
Driver "nvidia"
EndSection

Section "Screen"
Identifier "Default Screen"
Device "Generic Video Card" <===
# Device "nVidia Corporation G72M [Quadro NVS 110M/GeForce Go 7300]" <===
Monitor "Generic Monitor"
DefaultDepth 24
Option "AddARGBVisuals" "True"
Option "NoLogo" "True"
Option "AddARGBGLXVisuals" "True"
SubSection "Display"
Depth 1
Modes "1280x800" "1024x768" "800x600" "640x480" <===
EndSubSection
SubSection "Display"
Depth 4
Modes "1280x800" "1024x768" "800x600" "640x480" <===
EndSubSection
SubSection "Display"
Depth 8
Modes "1280x800" "1024x768" "800x600" "640x480" <===
EndSubSection
SubSection "Display"
Depth 15
Modes "1280x800" "1024x768" "800x600" "640x480" <===
EndSubSection
SubSection "Display"
Depth 16
Modes "1280x800" "1024x768" "800x600" "640x480" <===
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x800" "1024x768" "800x600" "640x480" <===
EndSubSection
EndSection


注意事項:
1.每一次外接式USB硬碟中的Ubuntu更新Kernel之後,必須重複上述d,e兩項步驟,否則會出現 grub error 21等訊息而無法開機.
2.重大Kernel更新後,建議馬上用Clonezilla CD或Clonezilla USB備份整個分割區(partition),以免系統弄壞又需花很多時間建制整個系統.
3.除非知道如何恢復他人電腦的開機選項(Bootloader or GRUB),別在其電腦上進行此外接式USB硬碟中的Ubuntu的Kernel更新,否則會造成電腦無法正常開機.


PS: 隨身碟在Linux中是被當作SCSI硬碟的,因此安裝法應該相同,我沒4G以上的隨身碟,因此無法測試.

How to dual boot Ubuntu and Windows XP without changing the Windows MBR

(轉載文章,網址已忘。經實驗發現方法未必可行,詳情參考本站文章「如何在筆記型電腦外接式硬碟第二分割區中Live安裝Ubuntu 7.10」及「如何在筆記型電腦外接式硬碟第二分割區中Live安裝Ubuntu 7.10 續篇」)
--------------------------------------------------------------------------------

How to dual boot Windows and linux without changing the Windows Master Boot Record:

(I'm assuming you've read other FAQs on how to install linux to your partition of choice. I recommend creating a partition on a second hard drive. That's the risk free option if you don't want to destoy Windows on your primary partition. But you should be able to create a partition on your primary hard drive by using software that can non-detructively resize your Windows partition. QTParted is a good program which can be downloaded if you're running the ubunut live CD. Back up though. It doesn't always work. I don't think the partition resizer in the ubuntu installer can do non-destructive.)

When installing ubuntu, install the boot loader (GRUB) to a floppy disk instead of the MBR. ie. when prompted for grub location enter: /dev/fd0

Boot into ubuntu with the floppy.

Open a terminal window.

Copy your bootloader from the floppy to a file called bootsect.lnx with this command:
dd if=/dev/fd0 of=bootsect.lnx bs=512 count=1

Save that file somewhere that you can access from within Windows. ie a FAT partition, a USB drive, a floppy (but not your boot floppy!) Don't try saving it to an NTFS Windows XP partition from within linux. (Bad!)

Reboot into Windows. (hint: take the floppy out of the drive. Keep it somewhere as a rescue boot floppy.)

Copy bootsect.lnx from wherever you had stored it to c:\bootsect.lnx

Open a file called c:\boot.ini
(It's normally a hidden read-only file, so you may have to change the folder and file options.)

After opening boot.ini add the following line to the end of it and save it:
c:\bootsect.lnx=”Linux”

Reboot your system.

You will be prompted to boot either Windows or Linux and your MBR hasn't been changed at all!

It's magic!
I use this setup to boot ubuntu from the third partition of my second hard drive. As ubuntu is on a second drive I haven't made any changes to my Windows partition at all! Risk free.

(If you do screw up your MBR and can't get into Windows try booting your Windows rescue CD and then type 'fdisk /mbr' to restore it. If you already have ubuntu installed I think you can make a boot floppy this way, but I"m not 100% certain: In a console, type grub-intall /dev/fd0.)

Installing Ubuntu on External USB HDD

轉載自http://www.belutz.net/2007/04/13/installing-ubuntu-on-external-usb-hdd/
UPDATE: 25 May 2007

I just do a fresh install of Edubuntu 7.04 on my external HDD. I did skip Step 8 - Step 11 and it works perfectly.

I just buy an external 2.5〃 HDD. I was planning it to be a medium for backing up my data. But finnaly I decided to install Edubuntu 6.10 in it, so I can boot from the external HDD. Actually the installation process needs a little editing if you want to install Grub in the external HDD and boot from it.

What you need to prepare:

A computer (of course), in this case I use my notebook
An Alternate CD of (U)(Ku)(X)(Edu)buntu
2 cups of coffee

Here’s the step by step procedures:
Step 1
First, you need to set boot order in the BIOS of your computer 1st boot is CDROM, 2nd boot is the USB HDD.
If you are using a PC instead of notebook, it’s better to unplug your internal HDD first so you won’t be confuse which one is the internal HDD and which one is the external HDD.

Step 2
Boot the CD, and choose “Install to HDD”. Answer all the question just like the normal installation.

Step 3
When it comes to Partition Phase, make sure you create a partition in the right HDD.
In my case, my internal HDD is /dev/sda* and my external HDD is /dev/sdb*
If you’re not sure about this, choose “Go Back” option on the lower left of the screen. And then choose “Execute A Shell”. After a shell window appear, type “fdisk -l” (without the quote). It will list all the storage device in your computer. Find the right device of your external HDD and make note of it. And then type “exit” to return to the partition phase.

Now that you’re sure which storage device of the external HDD, you can manually edit the partition or just erase entire disk (I won’t explain about partitioning here).

Step 4
After the installation reach for the GRUB question, answer NO to this question and in the next screen choose the right storage device of the external HDD, in my case is /dev/sdb.

Step 5
After finish installing, it will ask you to reboot the computer and it will eject the CD. Make sure you insert the CD again before the computer rebooting.
When the CD is loaded, choose “Rescue a broken System”

Step 6
When the system comes back up it will ask for a partition to mount. Pick the correct mount point for your external HDD from the list, in my case I choose /dev/sdb1

Step 7
When it comes up to a terminal window (with “Rescue Mode” in the upper/lower left screen), hold down Ctrl-Alt-F2 to open another terminal window.

Step 8
Type these lines in the terminal

mount -tproc proc /target/proc (press enter)

chroot /target (press enter)

su (press enter)

Step 9
I use nano for editing files, if you are more comfortable using vim, by all means it’s ok.
We need to edit the modules file to make sure USB support is added/loaded during Ubuntu startup.

nano /etc/initramfs-tools/modules (press enter)

Add this lines after the last line in the file

ehci-hcd
usb-storage
scsi_mod
sd_mod


Don’t forget to save the file by pressing Ctrl-X

Step 10
Edit the initramfs.conf file to make sure there’s enough time for USB support to load before Ubuntu gets running.

nano /etc/initramfs-tools/initramfs.conf (press enter)

At the top of the file, add this line with all in uppercase letter

WAIT=12

Save the file by pressing Ctrl-X

Step 11
Recreate the initrd.img file to include USB support

mkinitramfs -o /boot/initrd.img-2.6.17-10-386 /lib/modules/2.6.17-10-386 (press enter)

Step 12
Edit the GRUB bootloader menu file

nano /boot/grub/menu.lst (press enter)

Find the Ubuntu menu further down. You have to change it into hd(0,0) instead of hd(0,1) because we want the external HDD to be the first HDD if we boot from external HDD.
There are 3 menu entries for Ubuntu in that file, and change all of them from hd(0,1) into hd(0,0)
Save the file by pressing Ctrl-X

Step 13
Exit the terminal window by typing exit (press enter) until the screen actually says to press enter.
Hold down Ctrl-Alt-F1 to go back to the Rescue Mode terminal and type exit (press enter) to reboot the computer. And make sure the get the CD out from the CDROM drive.

Step 14
After rebooting, Ubuntu will continues to run it’s install process and comes to the desktop. Use the username and password you enter earlier in the install process to start using Ubuntu.

啟動安裝於外接式 USB 硬碟的 Ubuntu

轉載自http://xml.nchu.edu.tw/blogs/?page_id=85

這一次又再度嘗試將 Ubuntu 安裝在外接式 USB 硬碟,主要原因是擁有一個 40G 的 USB 硬碟已經有了一陣子了,我把它分成兩個部份,一個部份是用來備份(約 20GB),另一個部份把它當作 Ubuntu 的開機硬碟,這樣子上班和回家都可以玩同一套 Ubuntu。安裝的過程中也發現了一些小狀況,除了利用這個文件作個紀錄之外,也順便做一些筆記,或許將來用得上。

以下,我會分成幾個部分來探討,但是最重要的是你一定要確定兩部(或者多部電腦)之間,硬體上會不會有很大的差異,如果是,安裝的過程以及之後的使用都會比較麻煩;舉個例子來說,假設你上班的電腦是 ATI 的顯示卡,而家裡的電腦是 nVidia 的顯示卡,那麼你要如何使用 X 的介面?更不要說你想使用像是 beryl 或者 compiz 這一類的超強的 3D X 介面了。如果你也想像我這樣做,請你務必考慮清楚,因為我的狀況比較單純,家裡和上班的電腦都是 nVidia 的卡。


多重開機


電腦內的硬碟首先安裝了 Windows XP Pro 在第一個分割區,然後才把 Windows Vista 安裝在第二個分割區,開機的 boot manager 自然就是 Vista 的開機管理程式。由於不想利用類似 spfdisk 的開機程式把資料寫到 MBR,因此想利用 Grub4DOS 來啟動 XP、Vista、和 Ubuntu。
將 Grub4DOS 以及 Vista 合用的時候,我們無法使用 Grub4DOS (使用的是 0.4.2 版,下載網址https://sourceforge.net/projects/grub4dos) 所提供的 grldr.mbr 來啟動,原因以及目前的解決方式都在利用NT的啟動管理器引導GRLDR.MBR(網址http://www.znpc.net/bbs/viewthread.php?tid=2300&extra=&page=1)這一篇的討論中。



安裝的過程中,我們主要參考 Grub4DOS 的 Grub4dos tutorial(網址http://grub4dos.sourceforge.net/wiki/index.php/Grub4dos_tutorial),對於文件中不是很清楚的地方,我會說明一下。首先修改開機的 boot manager 自然就是 Vista 的開機管理程式,有關 bcdedit 用法,在文件中列出四個指令如下:

bcdedit /create /d "Start GRUB4DOS" /application bootsector
bcdedit /set {id} device boot
bcdedit /set {id} path grldr.mbr
bcdedit /displayorder {id} /addlast
可是難道真的要輸入 {id}嗎?其實,在第一個指令輸入之後,電腦會輸出一個類似 {xxxx-xxxx-xxxx-xxxx} 的 ID,請你把這個 {xxxx-xxxx-xxxx-xxxx} 帶入第二、三、以及四個指令內。



再來就是依照文件,我們需要 “copy grldr.mbr to C:, grldr and menu.lst to the root directory of any FAT16/FAT32/NTFS/EXT2 partition.”。這個地方花了我不少時間,其實,以我的情形來說,grldr.mbr、grldr、和 menu.lst 都是安裝到第一個分割區內;也就是說,如果我開機進入 XP,那麼這三個檔以及 grub 資料夾以及其所有的檔案,都應該在 C 槽;如果我開機進入 Vista,那麼這三個檔以及 grub 資料夾以及其所有的檔案,都應該在 D 槽。



最後,我們需要電腦準備 menu.lst,其內容如下:

timeout 20
default 0
splashimage (hd0,0)/grub/xp2008.xpm.gz

# boot up menu
# 方法一
titleHOME:Ubuntu 7.10
root(hd1,0)
kernel/boot/vmlinuz-2.6.22-12-generic root=/dev/sdb1 ro quiet splash locale=zh_TW
initrd/boot/initrd.img-2.6.22-12-generic
quiet

titleUbuntu 7.10 (recovery mode)
root(hd1,0)
kernel/boot/vmlinuz-2.6.22-12-generic root=/dev/sdb1 ro single
initrd/boot/initrd.img-2.6.22-12-generic

title Load Windows XP Pro
root (hd0,0)
chainloader (hd0,0)/ntldr


title Load Windows Vista
root (hd0,1)
chainloader (hd0,0)/bootmgr

# 方法二
title Find and Boot Ubuntu
fallback 5
find --set-root /sbin/init
configfile /boot/grub/menu.lst

titleUbuntu, memtest86+
root(hd1,0)
kernel/boot/memtest86+.bin
quiet
這個 menu.lst 有幾個地方特別值得說明一下。首先,我們可以在安裝完 Ubuntu 之後,特別去看一下安裝的 kernel 是什麼,一旦知道正確的檔案全名,我們就可以像”方法一”的方式把它定義在 menu.lst 內。這樣的作法有一個很大問題,那就是每一次做了軟體更新之後,你的 kernel 可能也被更新了,那麼你又得來修改 menu.lst。找了一下 Grub4DOS 的文件後,發現了”方法二”的 作法,它可以利用 find 的指令找到最新的 kernel 並載入,非常的方便,試用了幾天之後,我已經把它移到第一個預設啟動的位置。最後,請特別注意一下,啟動 XP 和 Vista 的方式,它們都是利用 chainloader 的指令進行,而且啟動的程式 (hd0,0)/ntldr (給 XP 的) 和 (hd0,0)/bootmgr (給 Vista 的) 都在 (hd0,0),也就是第一個分割區。我想在安裝 Vista 的時候,Vista 也把一些必要的檔案安裝於 XP 的分割區,我實在不是很喜歡這個方式,不過還沒找出其他方式以前,就先這樣嘍。

如果你是利用 DHCP 的方式取得 IP 位址的,每一次重新開機 /etc/resolv.conf 都會被重新設定。如果你希望固定加入(例如)中華電信的 DNS,那麼你可以把下一行加到 /etc/dhcp3/dhclient.conf 檔案內。

prepend domain-name-servers 168.95.1.1, 168.95.192.1;



另一個安裝 Ubuntu 常發生的討厭問題就是時區的設定,在安裝的時候,無論你選擇任何時區,Ubuntu 預設都會假定你硬體時鐘的時區為 UTC (即格林威治GMT)。如果硬碟有其他作業系統,而該系統又將硬體時鐘的時區假定為你所屬時區 (微軟視窗一般會如此)。當你在兩個作業系統交替啟動時,將做成時區混亂,所以建議你把硬體時鐘修正為你所在時區。 否則如果你像我是多重開機,那麼你在 Ubuntu 和 Windows 的時間就會不一樣。因此,在安裝 Ubuntu 的時候,如果你要多重開機,請記得把 UTC 設為 no。如果你已經依照 Ubuntu 的建議設成 yes 的話,你可以依照 Ubuntu 筆記(網址http://www.google.com/notebook/public/00624818301689030111/BDQGkIwoQg9X9h8gi)中的”修正 Ubuntu 和 Windows 時間不同步”來修改如下。

把 /etc/default/rcS 中相關片段如下文字的 "UTC=yes" 改成為 "UTC=no" :

# Set UTC=yes if your system clock is set to UTC (GMT), and UTC=no if not.
UTC=no

重新啟動系統。這時你的時鐘必會快了或慢了幾個小時,可以在Ubuntu進Terminal視窗依以下方法修正:
$ sudo ntpdate time.nist.gov # 根據你所指定的時間伺服器修正你的系統時鐘(軟體時鐘)
$ sudo hwclock -w # 根據修正好的系統時鐘(軟體時鐘)時間修正硬體時鐘的時間


無線網卡


家裡的電腦只能利用無線上網,手邊有 Corega 的 CG-WLUSB2GLV2 USB 無線網卡,在 Ubuntu 環境下嘗試利用這張網卡上網的過程問題重重。本來,USB 硬碟中已經安裝了Ubuntu 的 6.10 版(也就是 Edgy),但是不論是使用 ndiswrapper 或者是 ZD1211、ZD1211B、ZD1211rw 都沒有辦法讓 Ubuntu 認識這張網卡。曾經試圖 email Corega 的技術支援部門,問他們這張卡的 Chipset 是哪一種,有沒有 Linux 的驅動程式等三個問題,只可惜只收到技術支援部門的簡短回答:不支援 Linux;對於這樣簡短的回答,我以後再也不會買任何 Corega 的產品(除非迫不得已)。

在沒有網路連線的情形下,我也不可能把電腦搬來搬去只為了下載 Kernel 的 source 來 compile,在想不出其他更好的辦法下,而且想要試試 Ubuntu 7.10 版,所以在它還剩十天才正式發行的情形下,就把 RC 版下載來試試看。皇天不負苦心人,雖然 ZD1211 的驅動程式仍然不能用,但是 ndiswrapper 終於可以認識 CG-WLUSB2GLV2,wlan0 也終於出現在 ifconfig 和 iwconfig 的輸出了。從 CG-WLUSB2GLV2 的 XP 驅動程式,我猜 CG-WLUSB2GLV2 的 chipset 應該是奇怪的 zd1211bu。可是奇怪的是 lsusb 也找不出 chipset 的資料,XP 內也看不出。ndiswrapper 的安裝方式請參考WifiDocs/Driver/Ndiswrapper(網址 https://help.ubuntu.com/community/WifiDocs/Driver/Ndiswrapper)。

在找資料的過程中,我發現無線網卡在 Linux 的環境中的支援實在不是很完整,安裝也不容易,如果你也想在 Linux 嘗試無線連線,可以參考WifiDocs/WirelessCardsSupported(網址 https://help.ubuntu.com/community/WifiDocs/WirelessCardsSupported)。尤其文章中特別指出 Ralink 2500/RT2400 and Realtek RTL8180 chipsets 的支援比較完整,你如果想買一片無線網卡,或許這些 chipset 的產品可以考慮考慮。


如何調整


Ubuntu 7.10 版的預設 3D 特效是利用 compiz。用了幾天之後,我覺得它並沒有 Beryl 的穩定。再試個幾天,如果還是不滿意,考慮刪除 compiz,改用 Beryl。

有關於 X 的調整:由於我一開始安裝的是 Ubuntu 的 6.10 版(也就是 Edgy;我不確定最新的 7.04 Feisty 版是不是相同),在兩部電腦上的 xorg.conf 的設定無法互相使用。這個時候有兩個方式可以暫時解決:第一個方法就是把 /etc/X11/xorg.conf 移除掉(請重新命名,不要真的移除),第二個方式就是重新設定,設定的語法:dpkg-reconfgure xserver-xorg。設定後,可以利用 /etc/init.d/gdm restart 來重新啟動 X。

或者可以立刻安裝 nVidia 的驅動程式(如果你的不是,你就得到 google 再找找看了),安裝的方式就是輸入

sudo apt-get update

sudo apt-get install nvidia-glx

sudo nvidia-xconfig --add-argb-glx-visuals --composite

重新啟動 X (同時按 Ctrl+Alt+Backspace 鍵)



在我安裝完 nVidia 的驅動程式之後,不論再哪一部電腦,X 都跑的很正常。ㄛ,也因為如此,我也安裝了 Beryl,真的好看而且感覺不出來速度變慢,強力推薦。

將Ubuntu 灌在USB硬碟

轉載自http://smallperh45.blogspot.com/2007/05/ubuntu-ubuntu-usb-ubuntu.html
2007年5月4日 星期五
Ubuntu 正體中文站 - 將Ubuntu 灌在USB硬碟 [論壇 - Ubuntu安裝問題]

xoulous 的文章:


只要你的電腦主機板有支援USB Driver boot就行了


然後就用ubuntu光碟開機進入桌面

到管理 抽取式媒體與裝置 把所有關於 抽取式儲存裝置的選項
{當熱插拔....
插入自動...
.... 到新裝置..自動開啟檔案}
全部取消

備註:
ubuntu 7.04 已經幫你取消了,大概已經有人反應在舊版這個問題
就是你安裝在外接硬碟時,安裝到一半被掛載會影響安裝的進行
而且屢試不爽,6.10之前的版本要自行取消。


安裝時指定裝在你的硬碟,像我在安裝時就顯示叫sdb,那我就
裝在sdb,看你要刪掉整顆重新安裝還是利用剩餘空間,都沒影響


接下來會進入grub安裝,請把安裝grub的位置改掉
原訂式安裝在你的主硬碟,也就是你內建的那顆,我想
把系統裝在外接硬碟,就是不希望動到主硬碟的東西,
免得失敗,資料盡失

我把hd0改成/dev/sdb

他會把grub灌在你的外接硬碟上


但是因為我們要使用外接硬碟當主硬碟開機
所以要修改gurb的開機設定

本來grub 的預設是說
你把grub裝在硬碟然後在給你選要啟動windows或ubuntu

那我們式希望把grub灌在usb hd,就不要去管windows xp

方法是開啟終端機 輸入

sudo -i 以root登入
gedit /boot/grub/menu.lst 編輯開機選單


將裡頭有關ubuntu選項的地方 有(hd1,0)字樣
用(hd0,0)取代

這是告訴他 當我們的bios設usb hd為開機碟時
會以usb hd為主硬碟hd0,所以必須把ubuntu
所在的改成 hd0

即改

title Ubuntu, kernel 2.6.20-14-generic
root (hd1,0)
kernel /boot/vmlinuz-2.6.20-14-generic root=UUID=3199682b-71e1-4367-8451-56d315652f25 ro quiet splash locale=zh_TW
initrd /boot/initrd.img-2.6.20-14-generic
quiet
savedefault

title Ubuntu, kernel 2.6.20-14-generic (recovery mode)
root (hd1,0)
kernel /boot/vmlinuz-2.6.20-14-generic root=UUID=3199682b-71e1-4367-8451-56d315652f25 ro single
initrd /boot/initrd.img-2.6.20-14-generic

title Ubuntu, kernel 2.6.20-12-generic
root (hd1,0)
kernel /boot/vmlinuz-2.6.20-12-generic root=UUID=3199682b-71e1-4367-8451-56d315652f25 ro quiet splash locale=zh_TW
initrd /boot/initrd.img-2.6.20-12-generic
quiet
savedefault

title Ubuntu, kernel 2.6.20-12-generic (recovery mode)
root (hd1,0)
kernel /boot/vmlinuz-2.6.20-12-generic root=UUID=3199682b-71e1-4367-8451-56d315652f25 ro single
initrd /boot/initrd.img-2.6.20-12-generic

title Ubuntu, memtest86+
root (hd1,0)
kernel /boot/memtest86+.bin
quiet

成為

title Ubuntu, kernel 2.6.20-14-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.20-14-generic root=UUID=3199682b-71e1-4367-8451-56d315652f25 ro quiet splash locale=zh_TW
initrd /boot/initrd.img-2.6.20-14-generic
quiet
savedefault

title Ubuntu, kernel 2.6.20-14-generic (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.20-14-generic root=UUID=3199682b-71e1-4367-8451-56d315652f25 ro single
initrd /boot/initrd.img-2.6.20-14-generic

title Ubuntu, kernel 2.6.20-12-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.20-12-generic root=UUID=3199682b-71e1-4367-8451-56d315652f25 ro quiet splash locale=zh_TW
initrd /boot/initrd.img-2.6.20-12-generic
quiet
savedefault

title Ubuntu, kernel 2.6.20-12-generic (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.20-12-generic root=UUID=3199682b-71e1-4367-8451-56d315652f25 ro single
initrd /boot/initrd.img-2.6.20-12-generic

title Ubuntu, memtest86+
root (hd0,0)
kernel /boot/memtest86+.bin
quiet

備註:

假如你是把grub灌在內接硬碟上
那麼而且bios設定用內接硬碟當開機碟
那就會進入內接硬碟上的grub
然後驅動另外一顆次要硬碟,你的usb hd
這時候就被命名為 hd1


這樣一來你可以把所有的東西都灌在外接硬碟
原來的內建硬碟原封不動,也不會互相影響


不知道這種方法能不能用來灌作業系統在usb pendrive
網路上有很多文章 都把ubuntu 灌在 pendrive寫得很複雜
也許不必那麼麻煩,有心人就試一下

以上是個人心得

發表於 2007/07/02 11:45 AM

如何在外置USB磁碟中安裝Ubuntu

轉載自 http://blog.sina.com.tw/mic1491/article.php?pbgid=27258&entryid=570582
(部分內容參照UBUNTU官方論壇原始文章自行翻譯增修,部分內容可能不適用,詳情請參考本站文章「如何在筆記型電腦外接式硬碟第二分割區中Live安裝Ubuntu 7.10」 )

自我幾天前第一次發表有關這個主題(如何在外置USB硬碟中安裝breezy)到現在,我已經從實踐中學到了很多有關Ubuntu安裝進程的知識,並且已經在我的外置USB硬碟上成功安裝過了好多遍Ubuntu.(瘋狂吧,我只是想通過多裝幾遍來弄清楚每次我乾它一下他到底有什麼反應。)



我非常樂意和大家分享我的最新體驗,如果你也正在和這個問題打得火熱的話。

背景(硬體平臺):我有一個內置硬碟,西部數據的,上面已經裝了一個Windows XP Pro系統(這個硬碟在Ubuntu的安裝程式里的分區管理程式中顯示為'hda')。我的外置USB硬碟是希捷的,40G大,是可移動的;這是我在沃爾馬花了120美元買的。

前提條件:系統安裝前你最好確認你的BIOS把CDROM設為第一啟動盤,USB設備設為第二啟動盤,不然在接下來的第四步你就會遇到麻煩的。(如有疏漏,歡迎指正!)

重要提示:別忘了linux是對大小寫敏感的,不管是文件名還是目錄名。(這裡大寫和小寫區別可是很大的。)例如,在linux中,有一個叫“DaBruGo"和一個叫“dabrugo"的文件,他們兩個可是完全不同的兩個文件。

下面就是我現在如何在外置USB硬碟上成功安裝Ubuntu 5.10的經驗:

(1)我沒有使用專家模式來安裝,我只是按下Enter鍵來開始安裝(用的是Install CD,不是Live CD哦)。
啟動後安裝過程會要求你提供一些資訊:
A要求選擇你的語言
B你的所在地區(語言)
C你的鍵盤類型
D偵測你的CDROM
E嘗試偵測你的網路組態
F為你的PC取個名字(家用)或提供HOST NAME(PC位於公司內部網路時問你的網管)
G偵測硬體並開始安裝的硬碟分割階段
(2)在硬碟分割階段,確定注意要讓分割程式格式化整個USB外接式硬碟。(這裡可以使用Ubuntu推薦分割方式,它會自動為你劃分一個ext2或者ext3格式的分區和一個swap分區。)

注意:當處於硬碟分割階段時通常會提示你:... 刪除整個硬碟 SCSI(0,0,0)(sda)

一定要萬分小心,在這個階段你要分割的是SDA,而不是預設的HDA,不然的話會把原來PC內的主要硬碟給整個格式化掉,而這個操作可是不可撤銷的。

再嘮叨一次,一定要百分百的選對你要格式化的硬碟。

(3)當安裝程式進入GRUB多系統引導程式的安裝階段時,務必要讓GRUB裝在USB外接式硬碟,也就是我們現在正在用的這個硬碟,千萬可別裝到別的去啊!(ksafe: 好象無法選擇,但是可以在rescue模式下重新安裝Grub.)

安裝程式會詢問你是否要把GRUB裝在HDA(即你的內置硬碟的MBR)上,這時你要選否,然後在接下來畫面里輸入正確的路徑在這裡即SDA(也就是代表你要把GRUB裝在USB外接式硬碟,依你系統內的硬碟種類與數量代號可能有所不同)。

備註:我把GRUB裝在SDA(外接式硬碟的Bootsector)而非SDA1(外接式硬碟的第一個分割)。亦即該欄位輸入 /dev/sda 而非 sda1。

友情提示:接下來安裝程式會載入一些數據,然後就會彈出CD,要你重啟一下系統。

(4)注意重開機前要再次將光碟放入並確定光碟機已關上。光碟啟動後在"boot"提示符下輸入rescue(以進入rescue模式)(再看一下前面我們提到的前提要件!)

也許你會問,為什麼我們要要以rescue模式啟動呢?這是因為在Ubuntu真正接管機子之前我們得修改一些文件,好讓機子能夠支持USB設備。此外,我們也需要修改一下GRUB的MENU文件設定,好讓GRUB正常運行。

(5)當系統啟動之後他會要求你掛載一個分割區。請從列表中為你的外接式硬碟選擇一個正確的掛載點(mount point)。(我的是掛載在 /dev/disks/disk1/part1,依你系統內的硬碟種類與數量代號可能有所不同)
備註:/dev/disc/ 的掛載點始自disc0(0代表系統第一顆硬碟),因此我的掛載點代表第二顆硬碟「disk1」(亦即我們安裝用的SDA)之上的第一個分割區「part1」。
(6)當終端機TERMINAL視窗出現(RESCUE MODE字樣出現在左上角)時,按下Ctrl-Alt-F2打開一個新的終端機視窗,以便我們的編輯修改工作進行。

(7)在編輯工作開始之前,終端機視窗先輸入下列指令:

mount -tproc proc /target/proc [ENTER]
chroot /target [ENTER]
su [ENTER]

注意:我是用vim來編輯這些文件的。剛開始接觸vim時你會感覺他很怪異,但知道了一些用法之後就好了:按下Intert鍵你就可以在游標所在地輸入文字了,按下ESC鍵你就可以離開Insert模式了,要離開並保存文件的話你可以輸入x然後按Enter。

(8)執行VIM編輯"modules"文件,修改一下好讓Ubuntu在啟動時支持USB設備:

vim /etc/mkinitramfs/modules [ENTER]

在打開的文件的末尾,增加下面幾行:

ehci-hcd
usb-storage
scsi_mod
sd_mod

注意,可一定要先存檔才能退出。(鍵入指令 X 存檔)

(9)執行vim編輯“initramfs.conf”文件,好讓Ubuntu在運行之前有充足的時間載入對USB設備支持的模塊。

vim /etc/mkinitramfs/initramfs.conf
在打開的文件開頭,增加這一行好讓Ubuntu在開始運行之前停留12秒鐘:

WAIT=12 (雖然不確定但這裡全部大寫)
注意,要存檔才能退出。(鍵入指令 X 存檔)

雖然我們為了讓Ubuntu識別這個USB外接式硬碟,已經修改了這兩個文件以載入取得USB支援的必要指令,但我們仍然需要重新編譯(或重新產生)Ubuntu在啟動時使用的這個文件initrd.img,以使這些修改確實生效。

(10)重新編譯(或重新產生)initrd.img 檔案

mkinitramfs -o /boot/initrd.img-2.6.12-9-386 /lib/modules/2.6.12-9-386

備註:在執行完步驟(9)你可以在終端機視窗先執行ls /lib/modules指令察看KERNEL的版本號碼,可能你的版本號碼會比我的2.6.12-9-386還大,執行步驟(10)時應該用你的版本號碼代替。

(11)編輯GRUB啟動MENU檔案,修正一個看來從錯誤硬碟啟動的小錯誤

vim /boot/grub/menu.lst

一直往下翻,直到你找到這麼一段,有一個menu列表(前面沒被加上#當註解的),裡面Ubuntu被提到三次(如果你硬碟上有裝XP的話,接著應該會提到windows XP。)

在這三個ubuntu的MENU選項中都會有root這麼一行,行的右邊可能有寫著(hd1,0)我們都要改成(hd0,0)。因為對 GRUB來說,我們把GRUB裝到了這個USB外接式硬碟的Bootsector,那麼這顆硬碟就是第一顆硬碟(hd0,0),而不是第二硬碟(hd1,0)。

提示:如果你原來內部硬碟有安裝XP而且想從GRUB的MENU設立選項啟動Windows XP,你可以修改一下windows XP項的root這一行,參照上面的把他改為(hd1,0)。 當你更新KERNEL版本時,可能就需要重新執行步驟(11)。一旦更新完KERNEL啟動XP有問題,記得回來檢查root這一行是否需要再改一次。

修改後一定要記得存檔。 (鍵入指令 X 存檔)

(12)離開終端視窗(鍵入exit,然後按下Enter鍵)。按下Ctrl-Alt-F1組合鍵回到rescue模式視窗,然後鍵入exit重啟系統。

在系統重啟前一定要百分百確定你已經取出CD。

(13)重新啟動之後,Ubuntu就會開始安裝,安裝完之後進入桌面環境。用你在安裝過程中設定的用戶名和密碼進入系統。

以上就是我成功地在USB外接式硬碟上安裝Ubuntu 5.10的步驟。如果有誰在這方面一直有疑問的話,我希望這能對你有所助益。如果他真的管用的話,也請讓我知道一下。

如何把ubuntu 7.04(完整Linux系統,非Live CD)裝入隨身碟中(傻瓜必勝版)

轉載自 http://www.wretch.cc/blog/billypan101&article_id=8891814
---------------------------------------------------------------------------------
這篇文章裏,我會非常清楚,一步一步地把如何在一隻4Giga的隨身碟上,安裝最新的ubuntu 7.04版詳細步驟寫出來。

Ubuntu是新一代的Linux作業系統,在國外被認為已經可以取代Windows 作業系統。圖型介面漂亮,必要的功能俱全。最重要的是,它完全免費,不光是作業系統,連用軟體都不必錢。

為什麼要裝在USB隨身碟上?我相信這是一項革命。因為,你可以把所有的軟體帶著走,包括你瀏覽器上的書簽,Cookies,軟體中的特別的設定,你不必在每一台電腦上重新來一次。你不必提著重重的筆記型電腦。更重要的是,你不必每一套軟體裝在每一台電腦上都要再一次合法授權。Ubuntu做的到,它不必安裝,幾乎大部份的PC都可以放上去就用。

如何裝Live Cd版本在網路上已經有人寫過了,不過我現在寫的是裝完整的版本。你可以把新的軟體套件再安裝進去USB,帶了就走,在任何一台個人電腦上使用。工作到一半,你就簡單的存檔,關機,帶走USB隨身碟,離開,插進另一台隨便什麼電腦,開機,叫出存檔,繼續工作。這不是很棒嗎?

我知道你沒玩過Linux,不要怕,就是要把你騙過來,這篇文章就是寫給你看的。Ok,開始了。

準備工作

1。你需要上網抓ubuntu 7.04版的CD-ROM安裝光碟iso檔,ubuntu的正體中文官網在 http://www.ubuntu.org.tw/,
一般所用的PC (intel x86)安裝光碟iso版在此 http://tw.archive.ubuntu.com/ubuntu-releases/7.04/ubuntu-7.04-desktop-i386.iso
抓下來,以燒錄軟體燒成一張光碟,這張光碟就可以直接開機執行一般的工作,它也可以拿來安裝。也有AMD,甚至Mac的版本,官網上都有。

2。你必需要有一隻隨身碟,至少要有4G。當然你也可以把ubuntu安裝在硬碟上,可以和winodws系統並存,不過這在ubuntu官網上有詳細的說明,就不是本文的目的了。
我因此去買了一隻宇瞻Apacer AH320 4G的隨身碟,在順發買的,定價1190元。它是賣場上最便宜的一隻,最重要的是它標明了和Linux相容。
(picture 1)
光碟燒好,隨身碟準備好,還要了解電腦開機啟動程序一下。先別急著裝,下面這段如果你不太熟,多看幾遍。因為過程中無法上網,會不知道怎麼辦。如果你已很熟,可以跳到ubuntu開機畫面那兒。

我們先把光碟放進DVD/CD Player,隨身碟插入USB裏。退出windows,重新開機。一般的主機版,按下電源開機之後,馬上按『Delete』鍵,就會進入到bios設定程序之中。

(picture 2)
此時按『Delete』

(picture 3)
出現設定畫面,每一台的畫面可能不一樣,這台我們要設定在"Advanced BIOS Feature"裏,按『Enter』鍵進去。

(picture 4)
裏面 First Boot Device (第一開機設備)就是我們要設定的,按『Enter』,出現下面那個框,先選"CDROM",按Enter。連按兩次ESC鍵出去,選擇存檔Yes,就會開始以光碟開機。另外第二第三開機先設成Disabled,硬碟,Windows暫時拋棄在一邊。建議其它USB隨身碟和記憶卡也先拔掉,免得安裝搞混。
運氣好的話(一般是不錯),Ubuntu就載入了。

(picture 5)
這是英文介面,30秒之內,按下『F2』,出現語文選單,選最後一個"繁體中文"。(為什麼在最後?每次出國回來,到台灣的班機登機門都是最後的那個,超遠,為什麼?)

(picture 6)
(picture 7)
按第一個進入。

這樣正體中文的ubuntu 7.04就載入了。這版叫雀躍不已的小鹿,是不是你現在的心情?

進入之後,全新的介面,怎麼辦??放心,有我在。最後學這個:

(picture 8)
在畫面上紅色箭頭所指的地方就是瀏覽器Firefox,如果你沒用過也OK,幾乎和IE一樣。要學這個,主要的是你在開機後,就把它打開,在網址輸入:
---> http://www.wretch.cc/blog/billypan101
這樣就能回到這篇文章,一步一步來做下去了,所以,那個網址,給我背起來!! (抄起來也可以啦....)

所以呢,學會了也背好了,就正式開始吧。Ubuntu通常一開機就能上網,後面有我罩著,別怕。現在就去下載那個iso檔,趁這個空檔去買一隻4G的隨身碟。宅男偶而也要出門,快去!!

你回來了?在ubuntu看到這篇文章了?很好,那個Firefox的plug-in先不必管它。我們先來確定幾件事。
1.。桌面上有Install的圖示。如果沒有,你就是不聽話去下載了別的版本,(LiveCD?),出去再抓過。
2。先來確定USB隨身碟的代號,按上面的 "Places",選"Desktop"
(picture 9)

按一下上面"Computer的圖示",看到有"USB FLAS DRIVE:"的那個圖示了嗎?
(picture 10)
那個圖示下面有寫 "disk-1"(你的可能是disk或別的),通常這玩意兒也會出現在桌面,抄下這代號,我們不要弄錯。

3。再來的步驟有點詭異,但很必要,首先,點選畫面上方的 "Application","附屬應用程式",執行"終端機",如下圖:
(picture 11)

通常Linux新手在這裏會被嚇壞,又不敢上網問,會被笑。其實也沒什麼,這和windows下的執行,cmd,跳進DOS視窗差不多。

在這個終端機視窗中,鍵入
『sudo -i』按Enetr,再鍵入
『sudo gedit』按Enter。目的是以root權限開啟gedit這個程式
(picture 12)

你辦到了?真勇敢。詭異的來了,在gedit中鍵入『billypan』,然後選擇存檔,檔名也叫『billypan』,存檔位置,如下圖存在我們確定過是usb隨身碟的那個地方。(我的是disk-1,你的有可能是別的),一定要確定存到USB隨身碟。成功了關掉gedit出去。
(picture 13)

billypan??別罵髒話,我是有點自戀,不過這麼做是有苦心的。這些步驟不能出錯,有錯會讓你抓狂的。
再來我們要再進終端機這個程式一次,如下圖在 "ubuntu@ubunru:~$" 之後,這次鍵入『sudo grub』按Enter。
(picture 14)

在"grub >"符號後,鍵入『find /billypan』按Enetr:
(picture 15)

畫面上出現的 "(hd2,0)" 就是我們要記下的另個東西。你的可能是 "(hd1,0)" 或別的,總之抄下來,這非常重要。
關掉終端機視窗,再執行一次,這次我們換鍵入『sudo fdisk -l』按Enter:
(picture 16)
再一次確定隨身碟的代號是 "/dev/sda"(因為後面是4127M,你硬碟不會這麼小吧。)。你的可能是別的,比方 "/dev/sde" 等等。抄下來。退出終端機視窗。

所以我們總共確定了,USB隨身碟竟然有三個代號,(我的分別是 disk-1, (hd2,0), /dev/sda,你的可能是另一組),Linux系統要樣搞我也沒辦法。這三個代號你的和我的可能不一樣。弄清楚,下面的就容易了。

再來就是安裝了。關掉所有視窗,按桌面上的那個Install的圖示。進入安裝步驟:

>>STEP 1: 不會出錯,按下一頁:
(picture 17)

>>STEP 2: 不會出錯,按下一頁:
(picture 18)

>>STEP 3: 不會出錯,按下一頁:
(picture 19)

>>STEP 4: 會出錯!!小心:
(picture 20)

如果要安裝在硬碟,就選預設選項。我們要裝隨身碟,該是選導引,SCSI1那個選項。可是我選這個沒有反應,不給裝。網路上我看文章有人成功的,我不知道是不是用這個裝。我的APacer AH320隨身碟可是有標Linux相容的,而且,最後我也裝成了,但這兒就是不行。也許別的隨身碟可以,也許ubuntu正不給裝。山不轉路轉,我們改由手動:
(picture 21)

按下一頁,看到 "/dev/sda"了嗎,這我們確定過,是我們的隨身碟。點它,按 "New partition table" 那個圖示。
(picture 22)

出現詢問視窗,按 "繼續"
(picture 23)

再來要開始規劃磁碟分區,把游標移到 "free space" 上,按 "New Partition" 那個圖示:
(picture 24)
有點可怕,對不對?這是隨身碟,怕什麼。在上面 "New partion size in megabytes"的空欄位中,填入 『3500』,表示要用掉 3500M=3.5G。你也可以填入別的數字,不過一定要大於2000。下面 "Mount point:" 空欄中,填入 『/』,就是我們通常在網址上用的那條斜線。畫面最後像上面的那樣,對照清楚了,按右下 "OK"。


在 "/dev/sda1" 下面出現了另一個 "free space",點它,再按 "New partition",這次出現的視窗中,分割大小(partiton size)和掛載點(mount point)不必去管他,預設就Ok,我們要改的的格式是 "use as ",點空白欄的右邊那個有小小的上下箭頭符號的地方,如下圖選擇 "swap":
(picture 25)

這樣步驟4大底搞定。畫面如下,再來按 "下一頁":
(picture 26)

STEP 5: 這裏可以匯入原先在Windows XP中的Documents and Setting一些設定,打勾填入原先Windows XP帳號密碼它就會去抓。Ubuntu想要取代Windwos的陰謀在此昭然若揭,都說了這是一場革命了。不過我現在不要讓事情太複雜化,你要玩,可以,不然,就直接按 "下一頁"過去。
(picture 27)

STEP 6: 填入在未來的新系統上要用的帳號和密碼。這裏就不必寫 billypan了,寫你自已的名字吧。密碼兩次要一樣。填好,按下一頁
(picture 28)

STEP 7: 會出錯!! 小心!!
這一步是最 後,網路上有網友敗在這裏。關鍵在右下面那個 "Advanced" 圖示,你要把它按出來:
(picture 29)

出現詢問視窗:問你要把開機程式裝在那裏?

記得我之前要你找的USB硬碟的代號嗎?那一組三個之中,有一個正是 (hd2,0),這是我的,你自已的或許是 (hd1,0)或 (hd3,)等,把你的代號填進去!!

這裏弄錯,grub往機程式就會去裝在別的地方而不是USB 隨身碟上。如果裝錯,下次進windows xp可能出現 Grub Error 21 的代號。那也沒什麼,以windows xp安裝光碟開機,進入修復主控台,在 c:\windwos>下打 『fixmbr』就能修好了。不過,我們可不要這種麼麻煩。

空欄預設是(hd0,0),把它改成你自已的usb隨身碟代號 (hd2,0) 或是(hd1,0).........,這樣才能直接用隨身碟開機玩。之後按按確定。
(picture 30)
這個改完,就按Step 7 最後面的Install圖示,開始安裝,這要一點時間。
(picture 31)

這時候隨身碟的led燈應該閃個不停。如果你是硬碟的燈在一直閃,那一定是沒有照我的步驟,搞不好是裝到硬碟去了....這也不必難過,乾脆以後就自暴自棄的投入ubuntu的懷抱,把 windows xp給忘了吧.....(什麼?你硬碟裏的A片還沒有copy出來?沒關係,ubuntu也可以用BT,再抓就有了....)

裝完後畫面消失,船過水無痕。最後我們還要進行一步,把grub開機程式設成USB隨身碟。
再一次打開終端機視窗,鍵入『sudo -i』,按Enter,再鍵入『sudo gedit』按Enter:
(picture 32)

這次在gedit視窗中,我們要去開啟位在 "disk-1"的檔案。它在子目錄\boot\grub\之下,打開 menu.lst這個檔案:
(picture 33)

開啟之後, 按上面的 "Search",選擇 "Replace..."這個功能:
(picture 34)

把那個 (hd2,0) (再提醒一次,你的代號可能是別的),填入 "Search for" 空欄中..
下面那個 "Replace with",就直接填入 (hd0,0),意思是要以隨身機當第一開機選項。
填好後按 "Replaced All"圖示,然後在gedit中存檔,出去。(picture 35)
(picture 36)

這樣基本上大功告成。按畫面最右上角那個紅色圖示,關機了。

重開機時按delete,我們把開機裝置改成USB-HDD。其它的第2第3設備都選disable,這樣,就進入我們的隨身系統了。
(picture 37)

開機時會先進入Grub的選項,按預設項目進入,不然等10秒也可以。開機我算過,大概是120秒。還不錯。我現在正用這個 USB系統上網打部落格的,現在我的桌面如下:
(picture 38)

你可以看到,我加裝套件後,youtube可以上,嘸蝦米可以用,可以看.rmvb檔。桌面可以到和Windwos xp十分接近。至於怎麼做,那是下一帖了。網路上文章也不少。現在,我已經愛上ubuntu,決定不買Vista了。(ubuntu也有3D桌面)

最後還有一點。我把這隻UCB隨身碟帶去辦公室的電腦,改bios,開機:
(picture 39)
(picture 40)
(picture 41)
(picture 42)
系統完全正常運作,就和在家裏的一樣。youtube,書簽,嘸蝦米,桌面完全一樣。這可不是LiveCD能做到的。隨身免費完整作業系統終於大功告成。

這時候,眼淚不禁流了出來......
===========================================================================
2007/05/05 補充: 移到第二台電腦時,有時會出現顯卡不相容的問題,這有解決方法,在此: 把我們的 Ubuntu 7.04 USB 隨身作業系統改造成任何電腦都能開機

這是如何把ubuntu 7.04(完整Linux系統,非Live CD)裝入隨身碟中(傻瓜必勝版)這一帖的補充說明,主要原因是,我們把裝好的系統,移下USB插到別的電腦上時,有時會遇到一些顯示卡不相容的電腦,出現無法進入圖型介面時的解決方法:

這一台主機版是Asus的K8V-VM主機版,開機bios抓的到USB隨身碟,但進入後卻出現了無法進入圖型介面的問題:

(picture 43)
(picture 44)

訊息是找不到Screen...(裝孝維,那現在的畫面是什麼)
原先我還想是bios的問題,花了一點功夫update bios,結果一樣。

用LiveCD是可以開的。後來靈機一動,想想乾脆把 \etc\x11\xorg.conf 這個檔幹掉看看:

(picture 45)

你必需先回到原來可以開機的那台電腦,進usb 的 ubuntu中。登出系統,以root身份登入,然後如上圖找出這個xorg.conf檔,按右鍵『屬性』把名字改掉,比方改成 xorg-old.conf

(picture 46)

退出後關機,再回到那一台不爭氣的電腦上試試:

(picture 47)

竟然就可以....眼淚又奪眶而出了....
上圖就是我進入後抓的圖,請仔細看,還有玄機。
首先,這台電腦CPU是AMD!!所以CPU不一樣也OK的!!
另外,我測.rmvb時,畫面又當了,這次試著把preferences(Mplayer畫面按右鍵出來),Video的設定改成用第三個driver,就又可以了....

系統完全成功,USB Ubuntu 真強啊~~

下一步,我的野心是要在那些不支援USB隨身碟開機的主機版上把這玩意兒開出來...(這應該有可能)

再下一步,要在Wii上面把ubuntu開出來....(這就會上CNN頭條了...)

GRUB for DOS 0.4.3中文手冊

GRUB for DOS 0.4.3

一、免費下載:
http://grub4dos.sourceforge.net/
http://grub4dos.freespaces.com/
http://download.gna.org/grub4dos/
http://sarovar.org/projects/grub4dos/
http://grub4dos.jot.com/

二、教學:
http://grub4dos.sourceforge.net/wiki/index.php/Grub4dos_tutorial
http://grub4dos.sourceforge.net/wiki/

三、其他連結(含論壇):
http://sarovar.org/projects/grub4dos
http://freshmeat.net/projects/grub4dos/
http://marc.herbert.free.fr/linux/win2linstall.html
http://www.cn-dos.net/forum/forumdisplay.php?fid=11(United DOS Forum ,DOS聯盟論壇啟動盤室)
http://www.znpc.net/bbs/forumdisplay.php?fid=4(SYSOFT時空論壇,中文)

四、Other Resources(其他資源):
Ralf Brown's Interrupt List: It's cool.
http://www.ctyme.com/rbrown.htm
A Disk Editor View of the NTFS Boot Sector and "Bootstrap Code" http://www.therdcom.com/asm/mbr/NTFSbrHexEd.htm
The Second Extended File System(Internal Layout)
http://www.nongnu.org/ext2-doc/ext2.html
OSD: PC bootstrap
http://my.execpc.com/CE/AC/geezer/osd/boot/
eXtended Memory Specification:
http://freedos.sourceforge.net/freedos/news/press/1991-xms30.html
High-res high-speed VESA tutorial
http://www.monstersoft.com/tutorial1/
BIOS Data Area
http://www.bioscentral.com/misc/bda.htm
Hardware and Software Documentation
http://www.o3one.org/hwdocs.html


五、簡介:
GRUB for DOS(一般簡寫為GRUB4DOS)是GNU GRUB的DOS編譯版本(準確的說,GRUB4DOS是一個基於GNU GRUB Legacy的二次開發版本),它可以運行於真實模式的DOS環境下,而且它還具有很多新功能,例如:它可以通過Windows(NT)的boot.ini((使用grldr檔)、Linux的kexec(使用grub.exe檔)、lilo來啟動。另外,相對於GNU GRUB來說,它的虛擬磁碟功能是另一個重大改進,通過BIOS使用這個內建功能,可以從軟碟或者硬碟映射檔中啟動傳統的DOS/Windows9x系統。


六、特色:
1.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檔的分區,否則也會引導失敗。這一點上grub顯得不夠靈活。

而GRUB4DOS採取了新的策略:其MBR引導代碼並非固定地指向某個分區,而是搜索所有分區的 root 目錄,查找並載入grldr,只要某分區上存有一份grldr,就能啟動。而且安裝時可以將原微軟的MBR備份,啟動時如果找不到grldr,便自動載入備份的MBR。顯然這種方式更加靈活、穩健,所以GRUB4DOS雖然保留了GNU GRUB的全部命令和功能,包括setup命令,但不推薦使用傳統的安裝方式。而且它的引導代碼雖然可以搜索硬碟,但識別檔系統的能力有限,目前僅限於FAT12/FAT16/FAT32/NTFS/EXT2/EXT3這幾種,所以可能需要專門設一個分區來存放grldr。

2.GNU GRUB主要是為啟動Linux系統設計,但同時可借用Windows的boot manager來啟動Windows系統。而GRUB for DOS則兩邊都可以。一種使用grub.exe檔,可以從Linux或DOS文字介面執行,另一種使用grldr檔,可以從MBR/partition boot sector或Windows NT/2000/XP/2003/Vista boot manager進行啟動,也可以當作bootable CDROM的eltorito boot file。

3.GRUB for DOS改良加強GNU GRUB的MAP指令,可以透過image files用來創造虛擬硬碟或軟碟,甚至DOS開啟後,這些虛擬設備仍可存取。

4.圖片背景支援:相信大多數用戶都樂於使用圖片背景來代替單調的黑白畫面。雖然僅能支持 640x480@14位色,但也總比兩色好得多。

5.簡體中文支援:GRUB4DOS中同時發佈有支持簡體中文的grldr和grub.exe,大大方便了中文用戶。

6.光碟機支援:該功能使得用戶可以再GRUB環境下訪問光碟機,並可由光碟機啟動,很實用。


七、安裝方式:

1.Install to MBR

把GRUB4DOS啟動代碼安裝到MBR後,開機後便能直接進入GRUB4DOS。

以下使用bootlace.com(可以運行於DOS/Linux、Windows 95/98/Me、虛擬硬碟)
(1)MBR of first hard drive under DOS, Windows 95/98/Me
bootlace 0x80
(2)MBR of IDE channel 0, primary drive under Linux
bootlace /dev/hda
(3)MBR of hard drive image file aa.dsk
bootlace aa.dsk

以下使用 grubinst.exe(可以運行於FreeBSD/Linux、Windows NT/2000/XP/2003/Vista、虛擬硬碟)
(4)MBR of first hard drive under Windows NT family OSs(Windows NT/2000/XP/2003/Vista)
grubinst (hd0)
(5)MBR of IDE channel 0, primary drive under Linux/FreeBSD
grubinst "(hd0)"
或是用Device Name如下:
grubinst /dev/hda (Linux)
grubinst /dev/ad0 (FreeBSD)
(6)MBR of hard drive image file aa.dsk
grubinst aa.dsk
注意:grubinst有圖形介面grubinst_gui,利用它可以更簡單地把啟動代碼安裝到MBR/啟動磁區裏。

安裝啟動代碼到MBR後,還需要把grldr和menu.lst拷貝到硬碟上任意一個FAT16/FAT32/NTFS/EXT2分區的根目錄裏。
---------------------------------
本方案的優點:
•不依賴於作業系統
•能夠自動搜索硬碟上各個分區的grldr檔
-----------------------------------


2.Install to partition boot sector

GRUB4DOS的啟動代碼也可以安裝到某一FAT16/FAT32/NTFS/EXT2分區的啟動磁區中。當從該分區啟動時,會引導GRUB4DOS。

(1)first primary partition of the first hard drive
grubinst (hd0,0)
or
grubinst --install-partition=0 (hd0)
or
grubinst -p=0 (hd0)
(2)first primary partition of the hard drive image file aa.dsk
grubinst --install-partition=0 aa.dsk
or
grubinst -p=0 aa.dsk

安裝啟動代碼到啟動磁區後,還需要把grldr和menu.lst拷貝到該分區的根目錄裏。

本方案的優點:
•不依賴於作業系統
•不需要修改MBR,因而可以使GRUB4DOS和其他的啟動管理器共存

-----------------------------------------------------------------------------------------
下面的這些啟動方式都不會改變硬碟的主引導記錄(MBR)或者分區的引導磁區。

3.Starting from DOS

(1)在DOS/Windows9x的CONFIG.SYS中使用下列方式:

install=c:\some\where\grub.exe --config-file=FILE

(2)在DOS命令行中直接執行GRUB.EXE。

grub.exe --config-file=FILE

如果沒有使用--config-file選項,缺省的功能表檔是 (hd0,0)/menu.lst。
FILE可以功能表檔的名字,也可以是功能表的內容。例如:

grub.exe --config-file="root (hd0,0);chainloader +1"

在DOS下啟動GRUB4DOS後,可以用quit命令返回到DOS中。


4.Booting via the Windows NT/2000/XP/2003 boot manager

在Windows NT系列作業系統(NT/2000/XP/2003)的c:\boot.ini(此為隱藏檔)最後面增加下面一項:

c:\grldr="Start GRUB4DOS"

如果boot.ini中的timeout值為零,把它設置為大於0的數位,例如timeout=30,然後將boot.ini存檔。把grldr和menu.lst拷貝到C:\。
下一次啟動Windows時,你會發現啟動畫面中多了Start GRUB4DOS這一選項,使用它便可啟動GRUB4DOS。
注意:boot.ini檔一般是隱藏的,你需要在資料夾選項中設置顯示所有檔,或者在cmd中使用以下命令來去掉boot.ini的隱藏屬性:

attrib -s -r -h c:\boot.ini


5.Booting via the Windows Vista boot manager

首先,把grldr.mbr拷貝到C:\下,然後在cmd中使用如下面四個指令:

bcdedit /create /d "GRUB4DOS" /application bootsector
bcdedit /set {id} device boot
bcdedit /set {id} path \grldr.mbr
bcdedit /displayorder {id} /addlast

其中第二、三、以及四個指令不是真的要輸入 {id},在第一個指令輸入之後,電腦會輸出一個類似 {xxxx-xxxx-xxxx-xxxx} 的 ID,請你把這個 {xxxx-xxxx-xxxx-xxxx} 帶入第二、三、以及四個指令內。

然後把grldr和menu.lst拷貝到任意一個FAT16/FAT32/NTFS/EXT2分區的根目錄。
該方案也可應用於Windows NT/2000/XP/2003,但這些系統中修改啟動功能表不是使用bcdedit,而是通過在boot.ini的最後加上這樣的一行:

c:\grldr.mbr="Start GRUB4DOS"

下一次啟動Windows時,你會發現啟動畫面中多了Start GRUB4DOS這一選項,使用它便可啟動GRUB4DOS。
該方案的優點:
---------------------------------------
•不需要修改MBR和啟動磁區
•能夠自動搜索硬碟上各個分區的grldr檔
---------------------------------------

6.Starting from Linux

首先使用kexec patch指令更新你的Linux kernel。
其次鍵入下列指令:

kexec -l grub.exe
kexec -e


7.Loading GRUB for DOS using other boot loader

在下列boot loader中,grub.exe可以當作linux kernel使用。
(1)syslinux
可以在syslinux.cfg中寫入下列段落:
label GRUB4DOS
KERNEL grub.exe
(2)Grub或是另一個GRUB for DOS
可以在menu.lst中寫入下列段落:
title Load GRUB4DOS
kernel /grub.exe(或是kernel (DEVICE)/PATH/grub.exe,例如:kernel (hd0,4)/boot/grub/grub.exe)


八、Windows開機選項(menu.lst)寫法:
在GRUB for DOS的menu.lst中,一般寫法
1.DOS, Windows 95/98/Me: (MSDOS 7+)
title DOS, Windows 95/98/Me
root (hd0,0)
chainloader (hd0,0)/io.sys

2.Windows NT/2000/XP/2003:
title Windows NT/2000/XP/2003
root (hd0,0)
chainloader (hd0,0)/ntldr

3.Windows Vista:
title Windows Vista bootmgr
root (hd0,0)
chainloader (hd0,0)/bootmgr

4.啟動Windows NT的恢復控制臺的CMLDR:
title CMLDR of Windows NT/2K/XP
root (DEVICE)
chainloader (DEVICE)/cmldr

(一)配置檔menu.lst的基本結構

GRUB4DOS的配置檔和GRUB一樣,都是menu.lst。以下是一個例子:

default 0

title Boot First Partition
root (hd0,0)
chainloader +1

title Boot Second Partition
root (hd0,1)
chainloader +1

菜單項是由title來指定,該例子中有兩個title,就是說GRUB4DOS器啟動時會顯示兩個功能表項,功能表的標題是title的參數,也就是 Boot First Partition 和 Boot Second Partition。在第一個title前的命令是全局命令,它們在顯示功能表之前執行。
menu.lst一般放在和啟動檔GRLDR同樣的目錄裏。
以下是該配置檔在啟動時的畫面:
BootScreen1.jpg
高亮的功能表項是當前選擇的功能表,用上下方向鍵可以在不同功能表中切換。如果按下回車鍵,便會以當前功能表中的命令來啟動系統。
在功能表介面按下c鍵,會進入命令行介面:
BootScreen2.jpg
在命令行介面下,你可以手動輸入各個命令。在命令行介面下,按鍵便可以回到功能表介面。

(二)基本命令

以下是一些最為常用的命令

1.help
用來顯示其他命令的用法,例子:
help root

2.default
指定缺省的菜單項,由0開始算起,例子: default 0 該命令必須在第一個title之前指定

3.timeout
缺省的等待時間,如果在指定的時間(以秒為單位)不按任何鍵,則會啟動缺省的功能表項,例子: timeout 10 該命令必須在第一個title之前指定

4.root
用來指定根設備,例子: root (hd0,0)

5.rootnoverify
該命令也可以用來指定根設備。root在設置根設備前,先測試一下該分區的檔系統是否可以識別,而rootnoverify則省略這一測試。 rootnoverify (hd0,0)

6.chainloader
把啟動磁區的內容裝入記憶體,參數+1指的是把分區的第一個磁區,例子: chainloader +1

7.boot
啟動作業系統。在使用該命令前,必須用kernel或者chainloader把系統內核或者啟動磁區/啟動檔裝入記憶體。例子: boot
在配置檔中不需要使用這個命令。這是因為GRUB在執行了功能表項的所有命令後,會自動加上boot。該命令一般在命令行介面裏使用。

(三)設備名字

在GRUB中,硬碟設備用以下的方法來命名:
(hdm)
m是硬碟的序號。序號0相對於BIOS的第一隻硬碟。
硬碟上的分區用以下的方法來命名:
(hdm,n)
n是硬碟m裏分區的序號。主分區最多有4個,其序號為0-3,擴展分區的序號從4開始。例子:
硬碟0上的第一個主分區: (hd0,0)
硬碟1上的第一個擴展分區: (hd1,4)
設備也可以用相應的BIOS設備號來表示。例如,第一隻硬碟設備的設備號是0x80,因此,以下的表示是等價的: (hd0,0), (0x80,0), (128,0)。
另外,對於一些檔系統來說,例如FreeBSD中使用的ffs,或者是Solaris中使用的ufs,在分區中還繼續劃分為子分區。子分區的表示是在分區表示的基礎上加上從a開始計算的子分區序號。例如:
硬碟0上的第一個主分區裏的第一個子分區: (hd0,0,a)
軟碟設備用以下的方法來命名:
(fdm)
m是軟碟的序號。序號0相對於BIOS的第一隻軟碟。
軟碟設備後面同樣可以加上分區或者子分區的序號。
GRUB還有其他一些設備,比如說(cd)是光碟設備,(nd)是網路設備,等等。不過它們在特定的情形下才可以使用。

(四)檔案名字

GRUB的檔案名字是在設備名字的基礎上加上檔的路徑,例子:硬碟0上第一個主分區根目錄裏的aa.img文件: (hd0,0)/aa.img
軟碟0上boot目錄裏的aa.img文件: (fd0)/boot/aa.img
注意:目錄的分隔符號是 / ,而不是Windows/DOS下常用的 \ 。
另外,你還可以用磁區的位移和數量來指定資料,比如:
(hd0,0)0+100,200+1,300+300
表示硬碟0上第一個主分區裏,從磁區0起的100個磁區,然後是從磁區200起的1個磁區,最後是從磁區300起的300個磁區。當位移為零時,可以省略不寫,因此,
(hd0,0)+1
表示的是硬碟0上第一個主分區裏從磁區0起的1個磁區,也就是分區的第一個磁區。
GRUB中紀錄了一個根設備,它由root命令來指定,例如:
root (hd0,0)
根設備上的檔可以省略設備名,例如,使用了以上的root命令後,檔案名 +1 就等同於 (hd0,0)+1。
注意:在GRUB4DOS的擴展中,map命令中使用的檔案名的意義和以上所說的有所不同。在map命令裏,(hd0,0)+1表示的不是硬碟0上第一個主分區的第一個磁區,而是整個分區。

(五)啟動作業系統

1.啟動一般系統

一般來說,作業系統會在其所在分區的第一個磁區裏放入啟動代碼。因此,用以下的一組命令一般可以啟動硬碟0第一主分區上的作業系統:
rootnoverify (hd0,0)
chainloader +1
boot
對於不同的分區,只要修改設備名(hd0,0)就可以了。
注意:大部分的作業系統需要在第一隻硬碟的主分區裏才能正常啟動。
注意:當把該組命令作為menu.lst裏某一功能表項的內容時,最後的命令boot可以省略。
注意:該方法是通用的,它可以用來啟動以下提到的系統,只要分區的第一個磁區中存在啟動代碼。

2.啟動DOS/Windows 95/98/Me

在GRUB4DOS中,chainloader命令可以裝載DOS/Windows 95/98/Me中的io.sys。因此,可以使用類似於以下的一組命令來啟動這些系統:
rootnoverify (hd0,0)
chainloader (hd0,0)/io.sys
boot

3.啟動Windows NT/2000/XP/2003/Vista

在GRUB4DOS中,chainloader命令也可以裝載Windows NT/2000/XP/2003中的ntldr和Windows Vista中的bootmanager。因此,可以使用類似於以下的一組命令來啟動這些系統:

啟動Windows NT/2000/XP/2003:
rootnoverify (hd0,0)
chainloader (hd0,0)/ntldr
boot

啟動Windows Vista:
rootnoverify (hd0,0)
chainloader (hd0,0)/bootmanager
boot

4.啟動Linux

可以用kernel指令裝載Linux內核:

rootnoverify (hd0,0)
kernel (hd0,0)/vmlinuz
boot

在內核(hd0,0)/vmlinuz後可以加上啟動的參數。
當啟動Linux內核時,可以使initrd指令來裝載初始的內存檔。
rootnoverify (hd0,0)
kernel (hd0,0)/vmlinuz
initrd (hd0,0)/initrd
boot
注意:chainloader用於裝載啟動磁區和特定的啟動檔如io.sys和ntldr,而kernel用於裝載Linux內核和符合其標準的啟動檔。在一組啟動命令中,兩者不能同時使用。

(六)修改介面的顏色

GRUB介面的顏色可以用color指令來指定。color中指定了兩組顏色,第一組是正常文本的顏色,第二組是加亮文本(當前選擇的功能表項)的顏色。對應於每組顏色,又需要指定兩種顏色。第一種是前景的顏色,第二種是背景的顏色。因此,在color總共需要指定四種顏色,分別是,正常文本前景,正常文本背景,加亮文本前景和加亮文本背景。
顏色代碼:
black (黑色) red (紅色) green (綠色) brown (棕色) blue (藍色) magenta (紫色) cyan (青色) light-gray (灰色)
----------------------------------------------
dark-gray (暗灰) light-red (亮紅) light-green (亮綠) yellow (黃色) light-blue (亮藍) light-magenta (亮紫) light-cyan (亮青) white (白色)
前景色可以使用全部16種顏色,而背景色只能使用前面8種顏色。
例子:
color cyan/blue white/magenta
正常文本前景: cyan (青色) 正常文本背景: blue (藍色) 加亮文本前景: white (白色) 加亮文本背景: magenta (紫色)
以上例子的顏色在運行時的畫面:
BootScreen3.jpg

你也可以在顏色矩陣中直觀看到各前景/背景顏色搭配的效果。


































































































































































black/black


black/red


black/green


black/brown


black/blue


black/magenta


black/cyan


black/light-gray


red/black


red/red


red/green


red/brown


red/blue


red/magenta


red/cyan


red/light-gray


green/black


green/red


green/green


green/brown


green/blue


green/magenta


green/cyan


green/light-gray


brown/black


brown/red


brown/green


brown/brown


brown/blue


brown/magenta


brown/cyan


brown/light-gray


blue/black


blue/red


blue/green


blue/brown


blue/blue


blue/magenta


blue/cyan


blue/light-gray


magenta/black


magenta/red


magenta/green


magenta/brown


magenta/blue


magenta/magenta


magenta/cyan


magenta/light-gray


cyan/black


cyan/red


cyan/green


cyan/brown


cyan/blue


cyan/magenta


cyan/cyan


cyan/light-gray


light-gray/black


light-gray/red

light-gray/green


light-gray/brown


light-gray/blue

light-gray/magenta


light-gray/cyan

light-gray/light-gray


dark-gray/black


dark-gray/red


dark-gray/green


dark-gray/brown


dark-gray/blue


dark-gray/magenta


dark-gray/cyan


dark-gray/light-gray


light-red/black


light-red/red


light-red/green


light-red/brown


light-red/blue


light-red/magenta


light-red/cyan


light-red/light-gray


black/light-green


light-green/red


light-green/green


light-green/brown


light-green/blue


light-green/magenta


light-green/cyan


light-green/light-gray


yellow/black


yellow/red


yellow/green


yellow/brown


yellow/blue


yellow/magenta


yellow/cyan


yellow/light-gray


light-blue/black


light-blue/red


light-blue/green


light-blue/brown


light-blue/blue


light-blue/magenta


light-blue/cyan


light-blue/light-gray


light-magenta/black


light-magenta/red


light-magenta/green


light-magenta/brown


light-magenta/blue


light-magenta/magenta


light-magenta/cyan


light-magenta/light-gray


light-cyan/black


light-cyan/red


light-cyan/green


light-cyan/brown


light-cyan/blue


light-cyan/magenta


light-cyan/cyan


light-cyan/light-gray


white/black


white/red


white/green


white/brown


white/blue


white/magenta


white/cyan


white/light-gray


color命令一般是作為全局命令,在第一個title前使用。

(七)使用背景圖片
可以用splashimage命令來載入背景圖片:

spashimage (hd0,0)/spash.gz

圖片必須是640x480,14色的XPM格式,可以用gzip來進行壓縮。
使用了該命令後,GRUB啟動時將進入圖形模式。這時,color命令指定的文本顏色將會無效。圖形模式下顏色的設置應該使用foreground命令:

foreground ffff00

以上命令設置字體的顏色。顏色用RGB值來表示,ffff00是黃色。
如果沒有使用foreground命令,缺省的文本顏色是白色。
以上兩個命令在啟動時的效果:
BootScreen4.jpg
該例子中使用的背景圖片可以在這裡下載。
常用顏色的RGB值對應表:


























000000

c0c0c0

800000

ff0000

000080

0000ff

800080

ff00ff

008000

00ff00

808000

ffff00

008080

00ffff

808080

ffffff

splashimage和foreground命令一般在第一個title前使用。

(八)使用中文介面
首先,你必須使用支持中文的版本。並且,要正常顯示中文的功能表,你需要使用fontfile命令來裝載中文字體:

fontfile (hd0,0)/fonts.gz

fonts.gz是字體檔,並且使用了gzip來壓縮。例子中使用的fonts.gz可以在這裡 下載。
fontfile命令可以和splashimage,foreground一起使用。例如:

splashimage (hd0,0)/splash.gz
foreground ffff00
fontfile (hd0,0)/fonts.gz

title 啟動第一個分區
root (hd0,0)
chainloader +1
title 啟動第二個分區
root (hd0,1)
chainloader +1
該功能表的顯示的效果為:
BootScreen5.jpg

九、預設開機選項:
=============================================
find and load NTLDR of Windows NT/2K/XP
find and load CMLDR of Windows NT/2K/XP
find and load IO.SYS of Windows 9x/Me
find and boot Mandriva with menu.lst already installed
find and boot Linux with menu.lst already installed
commandline
floppy (fd0)
back to dos
reboot
halt
==============================================

對應的menu.lst文件(注:取自grub4dos 0.4.3下載包):

# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.

color black/cyan yellow/cyan
timeout 30
default /default

title find and load NTLDR of Windows NT/2K/XP
fallback 1
find --set-root /ntldr
chainloader /ntldr
savedefault --wait=2

title find and load CMLDR of Windows NT/2K/XP
fallback 2
find --set-root /cmldr
chainloader /cmldr
savedefault --wait=2

title find and load IO.SYS of Windows 9x/Me
fallback 3
find --set-root /io.sys
chainloader /io.sys
savedefault --wait=2

title find and boot Mandriva with menu.lst already installed
fallback 4
find --set-root /etc/mandriva-release
savedefault --wait=2
configfile /boot/grub/menu.lst

title find and boot Linux with menu.lst already installed
fallback 5
find --set-root /sbin/init
savedefault --wait=2
configfile /boot/grub/menu.lst

title commandline
savedefault --wait=2
commandline

title floppy (fd0)
chainloader (fd0)+1
rootnoverify (fd0)
savedefault --wait=2

title back to dos
savedefault --wait=2
quit

title reboot
savedefault --wait=2
reboot

title halt
savedefault --wait=2
halt

title memdrive duplicated from floppy image file (hd0,0)/sbm.bin
map --mem (hd0,0)/sbm.bin (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
savedefault --wait=2

title memdrive based on win98 partition (hd0,6)
map --mem (hd0,6)+1 (hd0)
# map --mem (hd0,0)/win98.gz (hd0)
map --hook
chainloader (hd0)+1
rootnoverify (hd0)
savedefault --wait=2


十、虛擬硬碟

map命令在GRUB Legacy中是用作磁碟交換。
比如說,你有兩隻硬碟,但兩隻硬碟上均有可啟動的系統。在第一隻硬碟上啟動時,不需要特殊的處理,直接用chainloader裝載啟動磁區就可以了。不過,如果要從第二隻硬碟上啟動,那麼單單用chainloader是不夠的,這是因為很多作業系統都預設從第一隻硬碟上裝載啟動所需的檔,如果檔不在其上,系統便不能順利地讀取,從而導致啟動失敗。
一個原始的解決方法是在BIOS中修改啟動順序,把需要啟動的硬碟放到最前面。那麼,重啟電腦後該硬碟便會成為第一隻硬碟,從而可以正常啟動。
GRUB中的map命令便是為了解決這個問題而設計的,它可以在運行時交換磁片,而無需修改BIOS。例如:

title Boot First Partition on Second Disk
map (hd0) (hd1)
map (hd1) (hd0)
chainloader (hd1,0)+1
boot

在該例子中,使用了map命令實現了(hd0)和(hd1)的交換。要注意的是,交換是在命令boot後才生效的。因此在chainloader命令中,讀取的仍然是第二隻硬碟。

1.直接映射法Direct mapping(建立虛擬磁碟)

在GRUB4DOS中,大大地擴展了map命令的用法。利用該命令可以建立虛擬磁片,例子:
把(hd0,0)根目錄下的aa.dsk檔映射為第二隻硬碟,並且使用原來硬碟上的系統啟動:

title Create Virtual Disk
map (hd0,0)/aa.dsk (hd1)
root (hd0,0)
chainloader +1
boot

把(hd0,0)根目錄下的aa.dsk檔映射為第一隻硬碟,原來的第一隻映射為第二隻硬碟,並且從aa.dsk裏虛擬出來的磁片中啟動:

title Boot From Virtual Disk
map (hd0,0)/aa.dsk (hd0)
map (hd0) (hd1)
map –hook
root (hd0,0)
chainloader +1
boot

在上面提到,map命令的映射不是馬上起作用的。但是,要從虛擬磁片中啟動,就必須從中讀取資料,因此需要使映射提前起效。在以上的例子中,map --hook的作用便是使前面map命令指定的映射立刻生效。

把(hd0,0)根目錄下的aa.img檔映射為第一隻虛擬軟碟,並從中啟動:

title Boot From Virtual Floppy
map (hd0,0)/aa.img (fd0)
map –hook
root (fd0)
chainloader +1
boot

使用這種方式進行映射後,虛擬磁片的內容和影像檔的內容是同步的,也就是說,如果你修改了虛擬磁片的內容,影像檔也同樣被更新。如果你重啟了機器,該修改的效果仍然存在。
在使用這種方式進行映射時,影像檔在磁片上的存放必須是連續的。
GRUB4DOS中建立的虛擬磁片,包括以下所說的間接映射法(採用記憶體檔),都是通過截取INT 13來實現的。因此在啟動了作業系統後,如果該系統是通過INT 13來訪問磁片的,例如各類的DOS,那麼在進入系統後仍然可以訪問虛擬碟。如果系統是採用其他方式來訪問磁片,例如Linux,各類Unix和Windows NT系列的作業系統,那麼在進入系統後便不能訪問虛擬碟。Windows 9X系列的作業系統比較特殊,它通常是使用保護模式的驅動來訪問磁片,但當它找不到合適的驅動時,會依舊使用INT 13來訪問磁片,因此,在Windows 9X下也可以訪問虛擬磁片。

『備註』:
A.虛擬光碟尚未建置。
B.在直接映射法direct mapping中映像檔image file必須是連續的。

2.間接映射法Indirect mapping(建立虛擬記憶體磁碟)

用map也可以建立虛擬記憶體磁碟,其用法和類似直接映射法direct mapping, 你只需要在map建立虛擬碟的命令中加上--mem參數就行了。例如:

把(hd0,0)根目錄下的aa.dsk檔映射為第一隻硬碟,原來的第一隻映射為第二隻硬碟,並且從aa.dsk裏虛擬出來的磁片中啟動:

title Boot From Virtual Disk
map --mem (hd0,0)/aa.dsk (hd0)
map (hd0) (hd1)
map –hook
root (hd0,0)
chainloader +1
boot

把(hd0,0)根目錄下的aa.img檔映射為第一隻虛擬軟碟,並從中啟動:

title Boot From Virtual Floppy
map --mem (hd0,0)/aa.img (fd0)
map –hook
root (fd0)
chainloader +1
boot

在間接映射法indirect mapping, 映像檔image file的內容是裝載到記憶體後才進行映射,因此映像檔image file不必是連續的,但是你必須有足夠的記憶體memory來存放映像檔image file和啟動系統。
而且,虛擬磁碟和映像檔是分離的,對虛擬磁碟所作的修改不會被更新到映像檔中。

3.Auto MBR creation(自動產生MBR)
影像檔有兩種類型。一種是檔案系統影像,它裏面只包含某一個檔案系統的資料。另一種是磁片影像,它裏面包含了類似於物理硬碟的結構,也就是,影像以MBR開始,然後才是檔案系統的資料。對於虛擬記憶體硬碟,其結構是類似於真實硬碟的,因此在使用map命令進行映射時,應該使用磁片影像。
因此在創造虛擬硬碟時, 需要一個由MBR(包含了類似於物理硬碟的結構)及partition data(檔案系統的資料)組成的映像檔image file來組合成一個實際的硬碟. 如果映像檔image file只包括partition data時, 即需加入MBR以產生完整的硬碟映像檔. GRUB for DOS在mapping硬碟映像檔時, 會測試MBR是否存在, 如不存在,則他會自動使用partition data創造MBR.例如:

title Boot from hard disk image
map --mem (hd0,0)/aa.dsk (hd0)
map (hd0) (hd1)
map --hook
chainloader (hd0,0)+1
rootnoverify (hd0,0)

aa.dsk可以是硬碟映像檔disk image或分區映像檔partition image,後者GRUB for DOS會自己產生MBR.

自動生成MBR還有一個應用,就是直接從硬碟上的裝載分區,從而生成虛擬磁片。例如:
title Load Partition From Disk
map --mem (hd0,0)+1 (hd0)
map (hd0) (hd1)
map –hook
root (hd0,0)
chainloader +1
boot
該功能表的功能是把硬碟上第一個分區的內容裝載到記憶體,並且自動在其前面加上MBR而生成虛擬磁片。然後,把該虛擬磁片映射為第一隻硬碟,原來的硬碟映射為第二隻硬碟。最後,從虛擬磁片中啟動。
在使用該功能表啟動後,系統分區的內容和好像和原來一樣,但這時實際是使用在記憶體裏的虛擬磁片。對分區的修改在重啟機器後便會消失。
該功能表是把整個分區的內容裝載到記憶體,要確定記憶體足夠大,否則命令不會成功。
在map命令中,(hd0,0)+1是指整個(hd0,0)分區,而不是(hd0,0)的第一個磁區。這種表示只是在map命令中適用,在其他的地方,(hd0,0)+1 還是原來的意義。

4.memdisk

syslinux的外部工具memdisk,利用它也可以生成虛擬記憶體磁碟(間接映射法indirect mapping)。這可以由下列兩個範例來比較:

title Boot from virtual disk using internal map command
map --mem (hd0,0)/aa.dsk (hd0)
map (hd0) (hd1)
map --hook
root (hd0,0)
chainloader +1
boot

title Boot from virtual disk using external memdisk
kernel (hd0,0)/memdisk
initrd (hd0,0)/aa.dsk
boot

該命令把aa.dsk裝入記憶體生成虛擬記憶體盤,該虛擬碟作為第一隻硬碟,原來硬碟的序號向後移動。最後,從虛擬碟中啟動。這一系列的操作都是在memdisk內完成的,GRUB的任務只是把aa.dsk裝入記憶體,然後把裝載的位址傳遞給memdisk。

如果只有一隻硬碟,那麼以上的操作可以用以下的命令完成:

title Create virtual disk using map
map --mem (hd0,0)/aa.dsk (hd0)
map (hd0) (hd1)
map –hook
root (hd0,0)
chainloader +1
boot

map和memdisk的區別:
•map是GRUB4DOS內置的功能,而memdisk是一個外部的程式
•map可以直接映射磁片上的檔,而memdisk必須要把檔裝載到記憶體裏。
•map可以把影像檔映射為第二隻硬碟,而而memdisk只能映射為第一隻硬碟。
•map有自動生成MBR的功能,而memdisk沒有。因此memdisk只能使用磁片影像,不能使用檔系統影像。

memdisk功能不支援直接映射法direct mapping或auto MBR creation.

5.虛擬設備(md)

在GRUB4DOS中,你可以用設備(md)來訪問整個記憶體,就和用(nd)訪問網路設備,用(cd)來訪問光碟類似。
GRUB4DOS也擴展了cat命令,它可以用--hex來以十六進位輸出,也可以用--locate=STRING來在檔中搜索字串。
例子:
cat --hex (hd0)+1 以十六進位形式顯示第一隻硬碟的MBR。
cat --hex (hd0,0)+1 以十六進位形式顯示第一隻硬碟第一個分區的啟動磁區
cat --hex (md)+2 以十六進位形式顯示記憶體開始1K的內容,這裏其實是中斷向量表。
cat --hex (md)0x800+1 以十六進位形式顯示記憶體從0x800 * 512 = 1M 開始512位元組的內容,也就是從擴展記憶體開始的512位元組。

6.虛擬設備(rd)

用虛擬設備(md)可以訪問從位址0開始的實體記憶體,而使用(rd)則可以訪問從某一位址開始的記憶體。
map --rd-base=ADDR 用來設置(rd)記憶體設備的開始位址(以位元組為單位)。
map --rd-size=SIZE 用來設置(rd)記憶體設備的長度(以位元組為單位)。
當把grub.exe作為linux內核啟動時,可以用指定初始盤。進入grub後,(rd)設備的開始位址和長度自動設置為初始盤的位址和長度。因此,可以在grub中用(rd)設備來訪問初始盤。
map --ram-drive=RD
用來設定訪問(rd)記憶體設備的BIOS設備名。缺省值是0x7F,表示(rd)對應的虛擬碟是軟碟設備。如果(rd)對應的虛擬碟是硬碟設備,那麼需要設置RD, 使得 0x80< RD < 0xFF。

7.map的其他參數

•--status
用於顯示當前的磁片映射。 map --status

•--floppies=M, --harddrives=N
指定軟碟/硬碟的數目。 map --harddrvies=2 使用該命令後,本地硬碟的數目設為2。

•--memdisk-raw=RAW
RAW取值0或1(預設是1)。RAW=0時,使用int15/ah=87h讀擴展記憶體。RAW=1時,使用內部的函數來讀擴展記憶體。 map --memdisk-raw=0

•--safe-mbr-hook=SMH ,--int13-scheme=SCH
這兩個參數是為了在Windows 9X下能正常使用虛擬碟而設的。
SMH取值0或1(預設是1),當你在Windows 9X下使用虛擬碟時出現問題時,可以試試使用以下的命令: map --safe-mbr-hook=0
SCH取值也是0或1(預設是1),當你在Windows 9X下使用虛擬碟時出現問題時,也可以試試使用以下的命令: map --int13-scheme=0

•--read-only
使用了該參數後,當前進行映射的磁片被設為唯讀模式。 map --mem --read-only (hd0,0)/aa.dsk (hd1)

•--fake-write
使用了該參數後,當前進行映射的磁片看似可寫,但寫入的內容均被丟棄。 map --mem --fake-write (hd0,0)/aa.dsk (hd1)

•--heads=H, --sectors-per-track=S
一般來說,map命令可以正確地計算出影像檔中使用的磁片參數。如果你想手動設置,那麼可以使用這兩個選項。 map --mem --heads=63 --sectors-per-track=255 (hd0,0)/aa.dsk (hd1)


十一、光碟機相關主題
---------------------------
範例:
title 從第一顆光碟啟動
cdrom --init
map --hook
chainloader (cd0)
boot
------------------------------
1.使用ATAPI CDROM啟動

cdrom --init '初始化ATAPI CDROM
map --hook '使ATATPI CDROM立即生效啟用,執行這個指令後,就可以用(cd0), (cd1)等代號來存取CDROM
chainloader (cd0) '從第一顆光碟啟動
boot

2.停用CDROM

map --unhook '移除(cd0), (cd1)等設備代號映射 device mapping消除map --hook效果
cdrom --stop '停止光碟機

『備註』:
A.如果你由光碟啟動GRUB for DOS,GRUB中支援的光碟機設備代號是(cd),它代表用可啟動光碟啟動GRUB時,用於啟動的光碟機設備。該開機光碟機雖然可直接使用,但假如你想從其他光碟機存取檔案,你還是需要使用cdrom --init、map --hook指令進行初始化。
B.在初始化光碟機後,可以用blocklist的方式來訪問其內容:
cat --hex (cd0)16+2 光碟機中使用的磁區大小是2048。
另外,iso9660檔系統驅動程式支援Rock-Ridge擴展,但不支援Joliet擴展,在讀取Joliet擴展的光碟是可能會出現問題。
C.用以下的命令可以指定搜索的埠:

cdrom --add-io-ports=0x03F601F0

以下是預設的搜索埠:0x03F601F0, 0x03760170, 0x02F600F0, 0x03860180, 0x6F006B00, 0x77007300。


3.製作開機光碟

在GRUB中,可以利用 stage2_eltorito 來製作啟動光碟:

mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o grub.iso iso

stage2_eltorito和menu.lst應該放在光碟的/boot/grub目錄裏。

在GRUB for DOS可以用grldr製作開機光碟bootable CDROM的ISO檔: (下列二指令任選其一,但grldr和menu.lst要放光碟映像檔根目錄)

mkisofs -R -b grldr -no-emul-boot -boot-load-seg 0x1000 -o bootable.iso iso_root
mkisofs -R -b grldr -no-emul-boot -boot-load-size 4 -o grldr.iso iso_root

第一種方法告訴 BIOS,希望它能夠裝入整個 GRLDR 檔到記憶體。裝入記憶體後,BIOS 還應該正確設置堆疊,使得不至於把堆疊設置到 GRLDR 的程式體內,造成衝突。一般情況下,BIOS 做到這一點很容易,因為它可以設置堆疊指標為裝入的起始位址。但也不排除存在 BUGGY BIOS 的可能性。
有些 BIOS 不完全符合可啟動的 CDROM 規範,比如 VirtualPC 的就是的。這類 BIOS 只是裝入了一部分 GRLDR 磁區到記憶體,典型的可能只裝入了一個磁區(2048 位元組的大磁區)到記憶體。不過我們的代碼已經替這些 BUGGY BIOS 打了補丁。只要這些 BIOS 能夠設置正確的堆疊,不至於和裝入記憶體中的 GRLDR 磁區資料產生衝突就 OK 了。
也就是說,上述第一種製作光碟的方法,應該沒有多大問題了。這種方法很有可能適應於所有的 BIOS。

第二種方法本身就只要求 BIOS 裝入一個 CDROM 磁區到記憶體(等同於 4 個 512 位元組的小磁區)。這種方法是最保守的,沒有理由會失敗了。微軟的 win2000 啟動光碟就是這麼做的,isolinux 和 stage2_eltorito 也都是這麼做的。如果這種方法失敗了,那麼 win2000,isolinux 和 stage2_eltorito 應該都會失敗的。
對於第二種方法,我們不需要 -boot-info-table 這個參數。但是允許你用這個參數(用了和沒用是一樣的,我們的引導代碼將忽略由這個參數所傳遞的資料結構)。
對於第一種方法也一樣,不需要 -boot-info-table 這個參數,同時也是允許你用這個參數(用了和沒用是一樣的,我們的引導代碼將忽略由這個參數所傳遞的資料結構)。

4.腳本支持
GRUB4DOS中有實現了簡單的腳本支持。目前實現了 && 和 || 兩種操作:
command1 && command2 只有當 command1 的返回值是真時,command2 才被執行
command1 || command2 只有當 command1 的返回值是假時,command2 才被執行
目前不支援操作符的嵌入使用。
例子:
is64bit && default 0 is64bit || default 1
如果is64bit命令返回值是真,那麼預設的功能表項是0,否則,預設的菜單項是1。