系統在經由 BIOS 開機之後,接下來的工作由 BootLoader 接手,所謂 BootLoader 便是載入各種作業系統核心的程式,它會負責找出核心的位置,並讓你的電腦開始載入核心,然後將工作交給作業系統負責。如果您想把 MS Windows 9X/NT/2000/XP 及 Linux 等等全部安裝在同一台電腦上時,便需要多重開機,以載入不同的作業系統,這些工作便是由 BootLoader 負責。
在不同的硬體平台上,也必須使用不同的 BootLoader。這個在規劃如何安裝 Linux 之前也是很重要的工作。
在這裡將會提供 4 種多重開機的方法給您做參考:
索引
另外,由於 BIOS 的限制,這些開機管理程式是否能支援由 1024 以後的磁柱位置開機、或是能否由第二個硬碟開機、是否支援多種作業系統... 等都是評估的重點。
LILO (Linux Loader) 是 Debian GNU/Linux 所內建的多重開機程式。LILO 幾乎可以在任何狀況之下載入任何作業系統,是目前最佳的多重開機程式之一。
它的設定檔為 /etc/lilo.conf,其選項說明如下:
重新設定 LILO:/sbin/lilo<Enter>,其選項如下:
修復 LILO:
移除LILO:也可以使用 DOS 開機片,開完機後下達 Fdisk /mbr 即可把 LILO 從 MBR 中移除掉。
/sbin/lilo -u
在安裝 Debian GNU/Linux 時,會將原本的 MBR 資料儲存在 /boot/boot.0300 這個檔案中。
LILO 的設定檔位於 /etc/lilo.conf,您可以依以下方法來讓 LILO 支援多種作業系統:
# /etc/lilo.conf # 支援可以由 1024 磁柱以後開機 lba32 # 指定開機裝置。在這裡是寫入 MBR boot=/dev/hda # 指定 root 目錄 (/) 所在的磁碟分割區 root=/dev/hda1 # 指定開機選單樣式 # 可指定包括 bmp、compat、menu 及 text # install=/boot/boot.b install=/boot/boot-menu.b # 指定 map 檔案位置 map=/boot/map # 在開機時是否出現開機選單。 # 如果是使用多重開機時還是出現比較好。 # 即使沒有設定,開機時按下 <Ctrl> 一樣會出現開機選單哦! prompt # 設定等待時間,單位為 0.1 秒 delay=40 # 指定 VGA 的文字模式(normal、extended、ask、<mode>) vga=normal # 指定 Kernel 選項 # 在這裡是將 /dev/hdd 模擬成 SCSI 硬碟,及關閉 frame buffer 的功能 append="hdd=ide-scsi video=vga16:off" # 預設的開機項目。在本例中可為:Linux、Win2K 及 WinME 。 default=Linux # 設定 Linux 的開機項目 image=/vmlinuz initrd=/initrd.img label=Linux read-only # 加入 MS Windows 2000 的開機項目 other=/dev/hda2 label=Win2K # 加入 MS Windows ME 的開機項目 other=/dev/hda3 label=WinME
修改完畢後,下達 lilo -v -v -v 讓這些設定寫入 MBR 中。就這樣 LILO 就能夠支援從各式各樣的 OS 上開機了。 LILO 可以指定從邏輯分割區、另一顆硬碟、超過 1024 磁柱後的分割區開機,是功能極強大的開機管理程式,推薦使用!因為 LILO 設定太簡單、可以任意從任何磁碟分割區開機,我們在這裡就不用著墨太多了。
注意: 雖然 LILO 功能強大,但是 Microsoft Windows ME 的開始磁區還是『絕對』不要位於 1024 磁柱之後!因為在安裝Microsoft Windows ME 時,有報告指出如果它的開始磁區位於 1024 磁柱之後時,它會把開機檔案『強迫』寫入第 1023 磁柱,因而會造成第 1023 磁柱上的資料損毀!不可不慎呢!
如果 LILO 開機時直接就載入 Linux 而沒有出現多重開機的畫面,這並不是 LILO 壞掉囉,只要在電腦開機時按下 <Ctrl> 鍵,多重開機的畫面就會出現了。
參考資料:
GRUB is a GPLed bootloader intended to unify bootloading across x86 operating systems.
可以讓您載入 Linux, FreeBSD, Windows...etc 且特別的是 GRUB 可以在啟動時認得檔案系統,因此您可以在開機時載入任何在檔案系統上的 kernel。
1.安裝及設定:
[root]# apt-get install grub [root]# grub-install /dev/hda [root]# update-grub
2.編輯 grub 的選單,確定 kopt, groot 設定正確。
[root]# vi /boot/grub/menu.lst
title Windows 95/98/NT/2000 root (hd0,0) makeactive #這個選項我實測過,不用加也可以正常啟動windows chainloader +1
3.設定 /etc/kernel-img.conf
postinst_hook = /sbin/update-grub postrm_hook = /sbin/update-grub do_bootloader = no
此外,grub 也支援[背景圖]。想知道怎麼設定請參考 [GRUB Splash Image Howto] 或是到這裡看此討論串http://moto.debian.org.tw/viewtopic.php?t=1187
自製背景圖簡易範例:
[root]# mkdir /boot/grub/images [root]# convert -resize 640x480 -colors 14 image.png /boot/grub/images/image.xpm && gzip /boot/grub/images/image.xpm [root]# vi /boot/grub/menu.list
SPFdisk 內有多重開機的功能。使用方法很直觀,詳細方法請直接參考 [官方網站] 上的說明。SPFdisk 支援了由 1024 以後的磁柱位置開機,也可以由第二個硬碟開機,支援各式各樣的作業系統,是不可多得的開機管理程式。但是 SPFdisk 會強迫把其它的開機分割區的 Partition System ID 隱藏起來,以致作業系統無法辨試該分割區,算是美中不足之處。不知在新版中是否已拿掉這個功能?如果要移除 SPFDisk,可以使用 DOS 開機片,開完機後下達 Fdisk /mbr 即可把 SPFDisk 從 MBR 中移除掉。而使用 SPFdisk /mbr 也可以做到相同的功能哦!
除了利用 Linux 的 LILO 之外,MS Windows NT/2000/XP/2003 也有自已的開機管理程式。
MS Windows NT/2000/XP/2003 預設一定會把 Microsoft Windows Boot Manager 安裝在您的電腦上。Microsoft Windows Boot Manager 並不是使用 MBR,而是利用位於 系統分割區(System Partition,即包含 MS Windows NT/2000/XP/2003 開機程式的分割區) 裡的開機檔案來做到多重開機的功能。如果想改換 Microsoft Windows Boot Loader 來當做開機管理程式時步驟很單純,只要使用 Fdisk 將 開機分割區 指向 MS Windows NT/2000/XP/2003 的 System Partition 即可。
它的設定檔為 C:\boot.ini。它的檔案內容看起來是這樣子的:
{{[boot loader]}}
{{timeout=10}}
{{default=C:\BootSect.lnx}}
{{[operating systems]}}
{{multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft MS Windows 2000 Professional" /fastdetect}}
{{C:\BootSect.lnx="Debian GNU/Linux 3.0"}}
{{C:\BootSect.dos="Microsoft MS Windows Millennium Edition"}}
其中的 BootSect.lnx 及 BootSect.dos 則必須到 Linux 下,使用以下方法來產生:(MS Windows NT/2000/XP/2003 無法自動產生這些檔案)
dd if=/dev/hda2 of=~/BootSect.lnx bs=512 count=1(假設您的 Linux 是裝在 /dev/hda2) dd if=/dev/hda3 of=~/BootSect.dos bs=512 count=1(假設您的 MS Windows ME 是裝在 /dev/hda3)
然後把 BootSect.lnx 及 BootSect.dos 放到 MS Windows NT/2000/XP/2003 的 System Partition,即 C: 下即可。即使這個 System Partition 的格式是 NTFS 的話也可以用這個方法哦。
更進一步說,如果您想在一台電腦上安裝 MS Windows 2000 + MS Windows ME + Linux,那麼安裝步驟如下: