GRUB 與 Solaris 10 1/06 作業系統:x86 平台的新式開機管理程式Shudong Zhou 與 Jan Setje-Eiler,2005 年 12 月 此文件描述 x86 平台上的 Solaris 10 1/06 作業系統開機架構以及使用者經驗。請注意:此文件中的某些詳細資訊若有變更,恕不另行通知。如需支援介面的資訊,請參閱線上手冊與 Solaris 作業系統管理文件。 此文件中所描述的新式開機管理程式在 Solaris 10 1/06 作業系統正式推出之前,可自 OpenSolaris 專案或 Solaris Express 方案取得。 1. 開機程序簡介x86 系統的電源開啟時,BIOS 即會初始化 CPU、記憶體與平台硬體。完成這些作業後,BIOS 會從已配置的開機裝置載入初始啟動程式軟體 (即開機管理程式),並將控制權交給開機管理程式。Solaris 10 3/05 作業系統與先前的版本會使用 Sun 所開發的開機管理程式,其中包含互動式 shell,以及以真實模式驅動程式為基礎的功能表驅動裝置配置輔助工具。 從 Solaris 10 1/06 版開始,即使用開放原始碼 GRUB 或 GNU GRand 統一開機管理程式 (請參閱參考資料 1) 做為開機管理程式。首次提供時是以 GRUB 0.95 版為基礎,日後將在備妥時更新為新版本。Solaris 核心完全與多重開機規格 (參考資料 2) 相容;因此,Solaris 作業系統可透過任何實作多重開機規格的開機處理程式進行開機。 切換為 GRUB 對 Solaris 用戶有多項好處。
最後,藉由採用開放原始碼社群所開發的開機管理程式,Sun 的用戶可享用此社群所提供的大量 GRUB 使用經驗。 2. 以 GRUB 進行 Solaris 作業系統開機GRUB 在取得控制權後,即會在主控台上顯示功能表,要求使用者選擇要啟動的作業系統實例。使用者可挑選功能表項目、使用內建的編輯器修改功能表項目,或在指令模式中手動載入作業系統核心。若要啟動 Solaris 作業系統,GRUB 必須載入 多重開機程式會讀取 核心在取得控制權後,即會初始化 CPU、記憶體與 I/O 裝置,並且會在裝置上掛載 3. 安裝Solaris 作業系統可從 CD、DVD 與網路安裝伺服器進行安裝。Solaris 10 1/06 版本與 Solaris 10 3/05 版本有一些不同之處:
啟動安裝 miniroot 時,會顯示 GRUB 功能表。使用者可透過互動方式編輯開機選項 (請參閱 4.2 節)。GRUB 載入 Solaris 作業系統後,會顯示下列安裝功能表:
使用者自 Solaris 10 3/05 作業系統及更早版本即已熟悉的裝置配置輔助程式與相關聯的互動式 shell,已不復存在。想要在安裝期間增加必要驅動程式 (如主機配接卡驅動程式) 應選擇選項 5,並提供 ITU (Install Time Update) 磁片或 CD/DVD。 選項 6 可進行系統回復。此選項可讓您快速存取根提示,而不需完成系統標識程序。此選項相當於啟動 Solaris 故障安全防護階段作業 (請參閱 4.4 節)。 4. 管理開機子系統4.1 BIOS 一般而言,最好在安裝 Solaris 作業系統前將 BIOS 韌體更新為最新版本。藉由瀏覽電腦製造供應商的支援網頁,通常可以完成此動作。 相較於 Solaris 10 3/05 版本,Solaris 10 1/06 作業系統所使用的是一小組不同的 BIOS 功能。尤其是,核心會透過 Intel 的 ACPI CA 軟體所提供的剖析器,利用「進階配置與電源管理介面」(ACPI) 表格中的更多資訊。 在不符合 BIOS 2.0 規格的系統上,syslog 可能會包含用以剖析 ACPI 表格的相關資訊,例如: ACPI-0725: *** Warning: Type override - [4s] had invalid type (DEB_[\200IODB
此類訊息不具破壞性,而且不會影響正常的系統運作。若因 ACPI 錯誤而無法進行正常系統開機,使用者可在 GRUB 功能表的核心行中將 kernel .. -B ...,acpi-user-options=2 在此情況下,系統會假設有一組標準 ISA 裝置存在,包括鍵盤、滑鼠、兩個串列埠,以及一個並列埠。 4.2 開機選項 若要啟動 Solaris 作業系統,使用者可指定要載入的核心、要傳送至核心的選項 (請參閱 透過 # eeprom boot-file="kernel/unix -v"
若要在 GRUB 功能表上指定相同的內容,請將 GRUB 功能表的 kernel /platform/i86pc/multiboot 修改為: kernel /platform/i86pc/multiboot kernel/unix -v
如需 Solaris 核心所接受的其他開機引數,請參閱
kernel /platform/i86pc/multiboot -B prop1=val1[,prop2=val2...]
若要配置 kernel /platform/i86pc/multiboot -B console=ttya
若特性值包含逗號,則應替值加上引號。下列 GRUB 指令可將 Solaris 主控台快速設為 kernel /platform/i86pc/multiboot -B console=ttya,ttya-mode="115200,8,n,1,-"
簡言之,在 GRUB 功能表中指定 4.3 開機歸檔 開機歸檔指的是檔案 開機歸檔的內容是指定於 4.4 故障安全防護功能表項目 Solaris 10 1/06 作業系統的新增檔案 假設您所新增的套裝軟體含有發生錯誤的驅動程式,系統將會在開機時當機。重新開機時,您可以挑選 Solaris 故障安全防護功能表項目。請在故障安全防護階段作業中,掛載 檔案 4.5 使系統保持可開機狀態 為了確保系統可以開機,GRUB 啟動區段、GRUB 功能表與開機歸檔皆必須維持最新狀態。 GRUB 啟動區段位於 Solaris 分割區中。若啟動區段受損,則應使用 GRUB 功能表位於 開機歸檔必須在修改根檔案系統後進行更新。若在核心檔案更新後系統即故障 (斷電或核心當機),開機歸檔可能不會與根檔案系統同步處理。在此情況下,透過 Solaris Service Manager (請參閱 5. 多重開機設定若有其他可開機的分割區存在,Solaris 安裝程式會嘗試增加其 GRUB 項目。在進行這項寫入時,會辨識 Microsoft Windows 與診斷分割區。使用者可直接編輯 GRUB 功能表,以增加其他作業系統。 假設您在系統中的同一個磁碟上配置了 Solaris 作業系統、Linux 與 Windows,如下所示: fdisk partition 0: Windows
fdisk partition 1: Linux
fdisk partition 2:
slice 0 Solaris 9
slice 3 Solaris 10 1/06GRUB 功能表應如下所示: #---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris 10 1/06
root (hd0,2,d)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
title Solaris 9
root (hd0,2,a)
chainloader +1
makeactive
title Linux
root (hd0,1)
kernel <from Linux's GRUB menu...>
initrd <from Linux's GRUB menu...>
title Windows
root (hd0,0)
chainloader +1
請注意,Solaris 從 Sun 以外的來源取得的 GRUB,目前無法辨識 Solaris on-disk VTOC 與 UFS 格式。Sun 已將變更提交至 GRUB 專案以支援此功能;在把這些變更整合進去之前,只有 Solaris GRUB 可運作。若 Linux 在主啟動區段上安裝了 GRUB,即使您將 Solaris 分割區設為使用中的分割區,您也無法存取 Solaris 作業系統。在此情況下,您可以修改 Linux 的功能表,從 Linux GRUB 進行鏈接載入。或者,您也可以在上述範例中使用 installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t2d0s3 在 Solaris VTOC 與 UFS 實作傳播到標準 GRUB 版本前,只有 Solaris 版本的 GRUB 可運作。 6. 網路開機與無本地磁碟的用戶端若要從網路進行開機,通常必須為 PXE 用戶端配置 DHCP 伺服器,並且需要可提供 TFTP 服務的啟動伺服器。若沒有可用的 PXE/DHCP 伺服器 (或 BIOS 不含 PXE 程式碼),您可以從磁片、CD-ROM 或本機磁碟載入 GRUB,然後在 GRUB 功能表中手動配置網路,再從檔案伺服器啟動 Solaris 作業系統。如需詳細資訊,請參閱「附錄 B」。 設定 DHCP 伺服器是隨站點而異的作業,由本地網路管理員負責執行。請參閱 Sun BluePrints 文件「Configuring JumpStart Servers to Provision Sun x86-64 Systems」:http://www.sun.com/blueprints/0205/819-1692.pdf。 若要啟動 Solaris 作業系統,DHCP 伺服器必須以檔案伺服器的 IP 位址與啟動檔案 ( 6.1 網路安裝伺服器
執行 6.2. 無本地磁碟的用戶端
執行 無本地磁碟的用戶端的開機歸檔會在用戶端關機時自動更新。若用戶端的開機歸檔在用戶端關機期間過期,您可以使用下列指令從伺服器端更新歸檔: # bootadm update-archive -R /export/root/<hostname> 這在為 x86 用戶端提供服務的 SPARC 與 x86 平台伺服器上皆適用。 7. 舊有問題7.1 Solaris x86 開機分割區 若是 x86 系統,Solaris 開機分割區會是 PCFS (FAT) 格式且非常小的 (約 10MB) 主要 在現今的系統中,已不再需要開機分割區。自 Solaris 10 1/06 作業系統開始,使用者就不再有建立開機分割區的選項。從舊版進行升級時,可以保留現有的 x86 開機分割區,讓系統維持在不需手動介入即可開機的狀態。在此情況下,x86 開機分割區會掛載於 7.2 真實模式驅動程式 在 Solaris 10 1/06 作業系統之前,真實模式驅動程式屬於開機程序的一部分。有些現有的核心驅動程式有可能會隱含地依賴對應的真實模式驅動程式,使硬體進入特定狀態。由於真實模式驅動程式不再是 GRUB 開機程序的一部分,所以此類核心驅動程式可能無法正常運作。若您遇到這種情況,請向驅動程式供應商回報此問題,以修正核心驅動程式。 附錄 A:GRUB 基本概念此附錄描述 GRUB 的基本概念。此附錄中的某些詳細資訊若有變更,恕不另行通知。如需詳細資訊,請參閱 GRUB 文件。 A.1 裝置命名 開機管理程式的主要目的,在於將儲存裝置中的資料載入至系統記憶體中。若要使用 GRUB,您必須瞭解 GRUB 如何為裝置命名。 磁片會命名為: (fd0) -- first, second floppy GRUB 只能參考單一網路介面: (nd) -- network interface 且此介面幾乎一律是 BIOS 透過 DHCP 所測試及配置的介面。您也可以從磁片或其他本機媒體啟動 GRUB,藉以配置網路介面 (請參閱「附錄 B」)。 硬碟名稱以 (hd0) -- first bios disk (also the BIOS boot disk 0x81) (hd1) -- second bios disk (BIOS disk 0x81) (hd0,1) -- first bios disk, second primary partition (hd0,0,a) -- first bios disk, first fdisk partition, Solaris/BSD slice 0 and 1 請注意,修改 BIOS 配置後,BIOS 磁諜編號可能有所變更。因此,若您變更 BIOS 開機磁碟順序或修改磁碟配置,GRUB 功能表可能會無效。若要處理與 BIOS 中的磁碟編號相關的開機問題,您必須瞭解磁碟的命名慣例。 A.2 功能元件 GRUB 功能元件包括 請注意,您無法使用 GRUB shell 雖然位於 A.3 GRUB 功能表 預設的功能表檔案為 default 0 timeout 10 serial --unit=0 --speed=9600 terminal serial #---------- ADDED BY BOOTADM - DO NOT EDIT ---------- title Solaris root (hd0,0,a) kernel /platform/i86pc/multiboot -B console=ttya module /platform/i86pc/boot_archive #---------------------END BOOTADM-------------------- #---------- ADDED BY BOOTADM - DO NOT EDIT ---------- title Solaris failsafe root (hd0,0,a) kernel /boot/multiboot -B console=ttya -s module /boot/x86.miniroot.safe #---------------------END BOOTADM--------------------
若要明確指定 64 位元核心,請將 GRUB 核心指令修改為: kernel /platform/i86pc/multiboot kernel/amd64/unix 同樣地,下列指令會啟動 32 位元核心: kernel /platform/i86pc/multiboot kernel/unix A.4 GRUB 指令模式 您可以在 GRUB 提示鍵入指令,以啟動作業系統。若要取得 GRUB 提示,請在 GRUB 功能表上按「c」。鍵入「help」即可取得可用指令清單。按 Esc 會返回功能表。您也可以按「e」,以編輯現有的功能表項目。編輯完成後,請按「b」以修改後的 GRUB 項目啟動系統。 附錄 B:網路部署此附錄描述透過網路在 x86 平台上部署 Solaris 作業系統的最佳方式。此附錄中的某些詳細資訊若有變更,恕不另行通知。如需支援介面的資訊,請參閱線上手冊與 Solaris 管理文件。 B.1 Solaris 網路部署簡介 透過網路部署 Solaris 作業系統的概念,就是將 Solaris 作業系統影像放在集中的位置。任何連線至網路的機器,均可在完全沒有或幾乎沒有管理員涉入的情況下,啟動及安裝所選擇的版本。安裝程序甚至可透過 Solaris JumpStart 軟體自動完成。 若要從網路進行開機,通常必須為 PXE 用戶端配置 DHCP 伺服器,並且需要可提供 使用 PXE 啟動 Solaris 作業系統的運作方式如下:
在一般部署方案中, 在以下幾節中,我們將詳細說明 DHCP 伺服器設定、用戶端需求,以及數個不同的部署方案。 B.2 DHCP 服務 用戶端傳送 DHCP 請求後,伺服器將會收到用戶端的 ID (通常為乙太網路位址)、請求的「類別」,以及用戶端所在的子網路。Solaris DHCP 伺服器會形成符合用戶端請求的回應型巨集:
類別巨集是以 DHCP 請求中的內嵌「類別字串」命名。在 x86 平台上,BIOS 一律會以類別 網路巨集會以子網路的 IP 位址命名。若在 DHCP 伺服器上定義巨集 IP 巨集會以 IP 位址命名。在 x86 平台上啟動 Solaris 作業系統時,很少採用此做法。 用戶端巨集會以用戶端的類型 (01 表示乙太網路) 與大寫的 MAC 位址命名。對於具有乙太網路位址 假設我們在子網路 DHCP 伺服器具有相符的巨集: - PXEClient BootSrvA: 129.146.87.194 BootFile: pxegrub - 129.146.87.0 Router: 129.146.87.1 NISdmain: sunsoft.eng.sun.com - 01000039FCF2EF BootFile: 01000039FCF2EF 實際的 DHCP 回應將如下所示: BootSrvA: 129.146.87.194 BootFile: 01000039FCF2EF Router: 129.146.87.1 NISdmain: sunsoft.eng.sun.com
請注意,用戶端巨集中的 B.3. 最簡單的網路開機設定 您必須要有一部伺服器與一個用戶端,這是最基本的要求。此伺服器應具有執行中的 DHCP 伺服器以及 Solaris 發行軟體影像。用戶端機器所連線的子網路,與能夠支援 PXE 開機請求的伺服器相同。以下是伺服器的設定步驟;假設伺服器的 IP 位址是 a. 移至 Solaris 發行軟體影像的 [工具] 目錄,並且執行: # add_install_client -d -e 0:0:39:fc:f2:ef i86pc
b. 利用下列項目,為 DHCP 服務建立用戶端巨集名稱 BootSrvA: 192.168.0.123 BootFile: 01000039FCF2EF
您可以從 現在您可以啟動用戶端並安裝 Solaris 作業系統。 B.4. 沒有 PXE/DHCP 的網路安裝 您可以從磁片、CD-ROM 或本機磁碟載入 GRUB、手動在 GRUB 中配置網路,並從檔案伺服器下載
與 Solaris 作業系統一起安裝的標準 GRUB grub> ifconfig --address=192.168.0.02 --gateway=192.168.0.1 --mask=255.255.255.0 --server=192.168.123.110 grub> root (nd) grub> kernel /multiboot.I86PC.Solaris_10-1 kernel/unix -B install_media=192.168.123.110:/export/setje/boot_74L2 grub> module /x86.miniroot grub> boot
當然,您必須以您的本地網路環境所適用的值來指定 請務必在使用磁片上的 <format floppy> # mount -F pcfs /dev/diskette /mnt (you may have to disable vold prior to doing this) # cd /boot/grub # /sbin/installgrub stage1 stage2 /dev/rdiskette stage1 written to boot sector on floppy first 2 sectors of stage2 written on floppy
編輯
title Solaris
ifconfig --address=192.168.0.2 --gateway=192.168.0.1
--mask=255.255.255.0 --server=192.168.123.110
root (nd)
kernel /multiboot.I86PC.Solaris_11-1 kernel/unix -B
install_media=192.168.123.110:/export/setje/boot_74L2
module /x86.miniroot
B.5. 管理多個 Solaris 影像 若有多個可用的 Solaris 影像,您必須有辦法挑選每個用戶端所應安裝的版本或建置。以下是一些可行的方法。
案例 (a) 是管理啟動伺服器的標準方式。網路管理員只會對每個用戶端設定 DHCP 服務一次。在此之後,用戶端使用者會登入啟動伺服器,並執行 案例 (b) 必須使用 DHCP 選項 150,才能提供 GRUB 功能表檔案。當使用者為用戶端選取版本/建置時,即會修改 DHCP 配置,以將選項 150 設定為內含選定版本/建置的功能表檔案。請注意,在啟動伺服器上,必須根據前例建立每個版本/建置的功能表檔案。若選取的版本/建置未使用
案例 (c) 僅適用於以 B.6. 自動化部署序列 自動化部署通常會執行下列序列:
部署結束時,機器會進入閒置狀態,等待使用者動作。 在大部分情況下,按 F12 即可手動啟動初始網路開機 (或視平台而定,使用其他按鍵組合)。但是,有些系統並不支援 BIOS 串列主控台重新導向,而要求使用者到實體主控台並不合理。此外,有些 BIOS 所提供的網路開機請求時間非常短,因此使用者經驗相當差。解決方法之一,就是從磁片開機至網路,再重新寫入磁片以開機至磁碟。但此方法已不可行,因為較新的平台已不提供軟碟機。 建議您從磁碟載入 GRUB。在 # bootadm set-menu default=<menu_entry_number> 其中,
title Solaris Jumpstart
dhcp
root (nd)
kernel .../multiboot kernel/unix - install -B console=...
module ../x86.miniroot
一旦安裝系統後,即會自動修改預設的 B.7. 疑難排解 若此方式行不通,應如何處理?以下是疑難排解的一些提示。 a. 用戶端直接開機至磁碟,而未嘗試網路開機。 這通常表示用戶端 PXE ROM 已停用,或已將 BIOS 配置成先從磁碟開機,再從網路開機。解決方法是進入 BIOS 並修改配置。詳細資訊會隨著機器而有所不同。 b. 用戶端嘗試啟動網路,但沒有回應。 執行網路線、介面卡上的 LED 燈號 (若有的話) 等項目的一般檢查。在伺服器上執行 # snoop -v [-d <interface>] 0:0:39:fc:f2:ef
其中,
若沒有 若您看見 PXEClient:Arch:00000:UNDI:002001 c. 用戶端顯示 TFTP 逾時訊息。 若未正確設定 d. 用戶端在下載 TFTP 協定最高可傳輸 65K 的區段。有些 若伺服器執行 Solaris 8 作業系統,您可以從 Solaris 9 作業系統複製 e. 用戶端完成 最可能的原因是主控台輸出送至他處。請確定 GRUB 功能表列上的 f. 用戶端顯示「找不到乙太網路卡」訊息。 從本機媒體啟動 GRUB,再從網路載入 Solaris 作業系統,即可能出現此問題。這表示 GRUB 無法透過 PCI BIOS32 服務找到網路介面。 g. 用戶端顯示「找不到 PnPBios」訊息。 從本機媒體啟動 GRUB,再從網路載入 Solaris 作業系統,即可能出現此問題。在此情況下,GRUB 雖然找到網路介面,但找不到可從網路介面卡安裝 UNDI ROM 的 PnP Bios 服務。 參考資料
Comments (latest comments first)Discuss and comment on this resource in the BigAdmin Wiki
Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License. |
BigAdmin SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics | ||||