史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 應用軟體使用技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2003-07-20, 06:27 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 多重啟動光碟製作全面解析

一、背景資料
  我們都知道,Windows 98直到Windows XP系列的安裝光碟都是可啟動的,但Windows 95安裝光碟卻不能啟動,你知道為什麼嗎?要想知道事情的原因,我們就必須要探尋一下可啟動CD-ROM的起源。
  可啟動CD-ROM(或稱可引導光碟)的概念早在1994年(輝煌的DOS年代)就被提出來了,當時CD-ROM還是PC機的一個昂貴的附屬設備(CD-ROM加音效卡在當時被成為多媒體套件,帶多媒體套件的電腦被成為多媒體電腦),而且在DOS平台下實現光碟引導還存在一些技術上的困難:要在載入DOS之前就必須檢測到CD-ROM,而這一點,當時從軟體上是無法實現的,惟一的解決之道就是修改電腦主機板上的BIOS(或是SCSI與IDE控制器上的BIOS),使之在硬體級而不是軟體級首先識別CD-ROM,並自動載入CD-ROM上的啟動引導器(存放在CD-ROM上特定區域的一段特殊程式碼,用以控制CD-ROM的啟動)。
  1995年1月25日,Phoenix Technologies與IBM聯合發表了可啟動CD-ROM格式規範(Bootable CD-ROM Format Specification)1.0——El Torito規範,該規範中定義了可啟動CD-ROM的資料結構與映像資料的配置及光碟製作的一些詳細說明。實際上,該規範也隱含地制定了能夠讀取可啟動CD-ROM光碟的BIOS的規範,使得符合El Torito規範的可啟動CD-ROM在電腦上能夠正常啟動。如果可啟動CD-ROM有了,但在電腦上無法讀取,豈不還是白搭?!
  隨後,Phoenix又獨自或聯合其他廠家相繼發佈了一系列支持可啟動CD-ROM的規範和標準,其中值得一提的是1996年1月11日COMPAQ、Phoenix與Intel聯合發佈的BIOS啟動規範(BIOS Boot Specification)1.01,該規範為BIOS廠家提供了製造支持可啟動CD-ROM的BIOS的標準。
  El Torito規範原本參見[url]http://www.phoenix.com/resources/specs-cdrom.pdf︴/url]]英文)。
  BIOS啟動規範原本參見[url]http://www.phoenix.com/resources/specs-bbs101.pdf︴/url]]英文)。
  如果你想瞭解更多有關El Torito的故事,比如為什麼稱為「El Torito」,都有誰參與了規範的起草,等等,你可以從下述文件中找到答案:
  [url]http://www.cdpage.com/Compact_Disc_Variations/danaboot.html︴/url]]英文)
  自從El Torito規範推出之後,採用單重啟動映像的可啟動CD-ROM大量湧現,El Torito規範也成為事實上的工業標準。
  可啟動CD-ROM仍遵循ISO 9660的規範,簡單地說,普通CD-ROM+開機功能=可啟動CD-ROM。
  這也就是為什麼Windows 95安裝光碟不可啟動的根本原因——Windows 95發佈時El Torito規範還沒有誕生。
  El Torito規範定義了CD-ROM中啟動映像(bootable image)的配置,還提供了有關可啟動CD-ROM的製作與結構的一些詳細說明。這些說明的技術性很強,要想弄得很明白需要花費一番大力氣。但我們的目的是製作出符合El Torito規範的可啟動CD-ROM,所以沒有必要在理論上瞭解那麼多,很多現成的燒錄軟體以能夠說明 我們製作出完美的單啟動CD-ROM。

二、多重啟動CD-ROM的工作原理
  El Torito規範中不僅定義了單重啟動映像(single boot image)的配置,而且非常富有遠見地定義了多重啟動映像(multiple boot images)的配置。

http://www.shanghainese.net/lb5000/usr/10/10_239.jpg




  圖1是El Torito規範中定義的普通CD-ROM、單重啟動CD-ROM和多重啟動CD-ROM的啟動映像配置圖(圖片來源:http://www.phoenix.com/resources/specs-cdrom.pdf)。從圖中可以看出,可啟動CD-ROM的工作原理如下:
  BIOS首先檢查光碟的第17個扇區(sector 17),搜尋其中的程式碼,若發現其中的啟動記錄磁碟區描述表(Boot Record Volume Descripter),它就根據表中的位址繼續搜尋啟動目錄(Booting Catalog),找到啟動目錄後 ,再根據其中描述的啟動入口(Boot Entry)找到相應的啟動磁牒映像(Bootable Disk Image)或啟動啟始文件,找到啟動磁牒映像後,讀取其中的資料,並執行相應的開機動作。
  相對於單重啟動CD-ROM而言,多重啟動CD-ROM的啟動目錄中包含多個啟動入口,指向多個啟動磁牒映像。
  圖1所描述的多重啟動配置是El Torito規範所描述的多重啟動映像配置,但由於多重啟動CD-ROM在實際工作中的套用較少,目前大多數主機板的BIOS對此支持得不是很好。在這類主機板上,用遵循El Torito規範所製作的多重啟動CD-ROM往往只能引導第1個(預設啟動出口所指向的)啟動映像,而其他的啟動映像莫名其妙地消失了!
  為了解決這個問題,人們又相繼研究出了一些辦法來實現CD-ROM的多重啟動,目前最流行的辦法是「非模擬」(軟碟、硬碟)式BIOS模擬法。其工作原理與El Torito規範所描述的單重啟動映像配置原理基本相同,只是預設啟動的不是軟碟映像,而是1個啟動啟始文件,該啟動啟始文件引導光碟啟動,再由它去搜尋其他的啟動磁牒映像或啟始文件,根據配置文件列出啟動選項共用戶選項。
  目前採用這種方法的工具軟體主要有3個:Diskemu、ISOLINUX/MEMDISK和Boot Scriptor。實際上,Boot Scriptor是Michael K Ter Louw在ISOLINUX的基礎上二次開發的產品,但它對ISOLINUX的功能和效能都進行了非常大的擴充,與ISOLINUX的差別較大,特別是從1.2.3b版開始引入了Diskemu,使其相容性大大提高,所以我們將其作為第3種方法加以介紹。
  這3個軟體的網址分列如下:
  Diskemu:
  http://www.nu2.nu/diskemu/
  ISOLINUX:
  http://syslinux.zytor.com/iso.php
  Boot Scriptor:
  http://www.bootscriptor.org/

三、BIOS模擬法多重啟動CD-ROM的執行流程
  「非模擬」式BIOS模擬法要求有1個引導器和1套啟動映像/表單管理器。引導器必須以非模擬方式載入,即啟動後不能模擬為軟碟或硬碟,這是製作BIOS模擬法多重啟動CD-ROM的關鍵。下面以Diskemu為例簡述其執行流程,ISOLINUX與Boot Scriptor的執行流程與此基本類似。
  Diskemu包含3個主要文件:
  loader.bin:啟動引導器;
  diskem1x.bin:啟動映像/表單管理器;
  diskemu.cmd:預設的啟動表單配置文件,純文本文件,需要用戶手工新增。
  啟動引導器loader.bin是啟動目錄中預設的啟動入口,loader.bin將最先被載入到預設的載入位址0:7c00h。loader.bin被載入後,首先將自己移至位址5000:0h,然後搜尋光碟的根目錄,搜尋文件diskem1x.bin。找到後,diskem1x.bin將被載入到位址0:7c00h,loader.bin的使命完成。diskem1x.bin被載入後,首先也將自己移至位址5000:0h,然後搜尋光碟根目錄,搜尋預設的啟動表單配置文件diskemu.cmd,找到後,顯示其中的表單項,並根據用戶按鍵執行相應的啟動映像。如果沒有在光碟的根目錄下找到diskemu.cmd,或者在diskem1x.bin的載入程序中用戶按下了Shift鍵,diskem1x.bin將進入指令行模式(可以進行各種偵錯)。
  從Diskemu的執行流程來看,其本質是單重啟動, diskem1x.bin載入後,它與啟動表單配合,為用戶提供多個啟動入口,模擬El Torito規範中的多重啟動的啟動目錄,並根據用戶的選項,完成多重啟動的動作。這也正式「BIOS 模擬法」名稱的由來。

四、所需燒錄軟體
  製作多重啟動CD-ROM一般要經過三個步驟:
  準備所需資料→製作光碟映像ISO文件→將ISO文件燒錄到CD-ROM
  燒錄軟體的作用就是完成後兩步操作。
  當然,不製作ISO文件而直接燒錄出多重啟動CD-ROM也是辦得到的,但除非十分有把握,否則最好不要冒險。
  能夠製作多重啟動CD-ROM映像文件的燒錄軟體很多。從BIOS模擬法的工作流程即可知道:只要是能夠製作單重啟動CD-ROM映像文件的燒錄軟體也應該能夠製作多重啟動CD-ROM映像文件。但凡事總有例外:ISOLINUX就很特殊,不是所有的燒錄軟體都適用。後面我們會再討論它。
  我在這裡推薦3個傳統且常用的軟體:Nero、CDImage和Mkisofs。其他一些軟體如Easy CD Creator、CDRWIN等在功能上都與Nero類似,用戶可自行試驗。
  CDImage和Mkisofs可以製作出標準的ISO文件,最新版本的Nero既能製作出其專有格式的NRG文件,也能製作出ISO文件。
  Nero:是德國人開發的一款很傳統的燒錄軟體,功能非常強大,支持中文檔案名及長檔案名,用它製作出來的單重啟動CD-ROM很完美,隱藏掉了所有不必要的東西。但如何用它製作多重啟動CD-ROM恐怕就沒有多少人知道了。Nero的下載位址:
  http://www.nero.com/en/index.html#download
  Mkisofs:執行於Unix下的傳統燒錄軟體,已經被人用cygwin移植到了Windows下。Mkisofs的功能非常強大,提供了豐富的指令行選項如果你對其使用十分熟悉,可以直接使用指令行指令。Windows下的Mkisofs已經被Bart用WBAT改造成了DOS下的表單驅動程式包,使用很方便。Mkisofs的下載位址:
  [url]http://www.nu2.nu/nu2files/cdrpack13.zip︴/url]]Bart改造過的Mkisofs)
  [url]http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html︴/url]]官方網址)
  CDImage:微軟開發的小工具。CDImage也是個指令行程序,提供眾多的參數,現在有不少人為其開發了多種圖形界面版本。CDImage的最大特點就是能夠剔除光碟上的相同文件(只保留1個),從而大大節約光碟空間,這是目前為止製作Windows n合1光碟的惟一工具。CDImage的下載位址:
  http://www.tech-hints.com/prog/cdimage.zip
  [url]http://www.tech-hints.com/prog/cdimagegui.zip︴/url]]圖形界面版)
  下表列出了上面介紹的3中燒錄軟體與多重啟動CD-ROM啟始程序的相容性列表,Mkisofs是最通用的。


Diskemu ISOLINUX Boot Scriptor
Nero 適用 不適用 適用
Mkisofs 適用 適用 適用
CDImage 適用 不適用 適用

五、啟動磁牒映像文件的製作
  這裡我們製作3個啟動軟碟映像文件:1.img、2.img和3.img,各映像文件的內容分述如下。
  1. 1.img:MS-DOS 98SE & Tools,DOS啟動碟和工具集,2.88 MB。
  製作方法:首先製作Windows 98SE的啟動碟,用WinImage將其製作為1.44 MB的映像文件,在WinImage中,執行「Image-Change format」指令,將其格式改為2.88 MB,並進行適當修改,增減文件,做成自己的工具。
  2. PowerQuest PartitionMagic 7,硬碟分區軟體,2.88 MB。
  製作方法:同上,加入DOS版的PowerQuest PartitionMagic 7,在CONFIG.SYS文件中配置2 MB的虛擬磁牒,將PowerQuest PartitionMagic 7調入虛擬磁牒執行,否則在光碟上無法執行。
  3. DocMemory RAM Diagnostic-ver V2.0,記憶體診斷工具,1.44 MB。現在的記憶體質量良莠不齊,裝機時如果出現莫名其妙的錯誤,可以用該軟體檢查一下系統記憶體,說不定能發現點問題。
  軟體下載位址:
  http://www.simmtester.com/software_u...ocMem1_45a.exe
  http://www.simmtester.com/software_u...y/DocMem20.exe
  執行程序,按照提示製作1張啟動軟碟,將此軟碟用WinImage製作成軟碟映像文件。

六、Diskemu
  1. 下載位址與技術我的文件
  下載位址:http://www.nu2.nu/nu2files/diskem1x.zip
  技術我的文件:http://www.nu2.nu/diskemu/(英文)
  2. 軟體主要特點
  可以毫不誇張地說,Diskemu是個劃時代的傳統之作。在Diskemu被開發出來之前,人們要製作1張多重啟動CD-ROM真的需要花費九牛二虎之力:按照El Torito規範需要進行繁瑣的位址計算,找到位址後再去修改ISO文件,最後辛辛苦苦製作出來的多重啟動CD-ROM還不能保證相容所有的BIOS!真是費力不討好。後來,Gary Tong為了解決可啟動CD-ROM無法瀏覽CD-ROM上文件的問題而開發了Diskemu(支持單重啟動CD-ROM),BIOS模擬法這時才真正誕生。Bart Lagerweij繼續這項工作,使Diskemu能夠最多支持20個啟動磁牒映像!但非常可惜,2001年11月,Bart在寫完Diskem1x.bin v1.1 BETA後便停止了對Diskemu的繼續開發(參見[url]http://www.nu2.nu/diskemu,茉/url]^文)。但不可否認,知道現在,Diskemu仍然是非常優秀的,其相容性最好。下面是Diskemu的主要特點:
  (1)支持ISO 9660文件系統。
  (2)使用一種簡單的類似批次處理形式的指令碼語言來執行一定的動作,例如:清屏,顯示提示信息,等待按鍵,執行特定磁牒映像,等等。
  (3)可以快速地編寫自己定制的啟動表單,並啟動相應的磁牒映像。
  (4)為專業人員提供一個指令行偵錯模式,手工執行一些操作。
  (5)自動檢查軟碟映像類型。支持多種軟碟映像:160 KB,180 KB,320 KB,360 KB,1.2 MB,720 KB,820 KB,1.44 MB,1.68 MB,1.72 MB,2.88 MB。
  (6)使用1張可啟動的Diskemu CD-Rom,你甚至可以從另外不能啟動的CD-ROM上啟動磁牒映像文件。當然需要首先用可啟動的Diskemu CD-Rom啟動,然後進入指令行模式,再更換光碟,鍵入「cd \」,再執行光碟上的映像文件(在實際工作中這項功能套用得並不多)。
  (7)它使用一個單獨的引導器(loader.bin),將能夠正確地載入diskem1x.bin,甚至在BIOS不完全相容El-Torito規範的主機板上,也能保證正確引導。
  Bart還有幾個計劃沒有完成,當然也是Diskemu的主要不足:
  (1)檢測第1快硬碟是否看似能夠啟動。
  (2)讓diskem1x直接將信息寫入螢幕緩衝。
  (3)增加顏色功能。
  (4)鍵盤映射(以支持其他國家的鍵盤)。
  (5)增加軟碟映像熱交換功能。
  (6)載入COM文件(COM文件一定不能用DOS功能)。
  3. 軟體使用方法
  Diskemu的相容性非常好,適用於Nero,Cdimage和Mkisofs。這裡我們分別講解利用這三種軟體製作ISO映像文件的方法。
  (1)目錄結構
  假定xcd\root\為多重啟動CD-ROM的根目錄,建立如下目錄結構,將下載到的文件diskem1x.zip展開,將展開後的loader.bin、diskem1x.bin及我們製作的軟碟映像文件1.img、2.img、3.img分別複製到相應位置:
  xcd\loader.bin
  xcd\root\diskem1x.bin
  xcd\root\diskemu.cmd
  xcd\root\1.img
  xcd\root\2.img
  xcd\root\3.img
  如果還希望增加其他文件和子目錄,只需將其複製到,xcd\root\目錄下,這是光碟的根目錄。
  (2)編寫啟動表單配置文件diskemu.cmd
  ;
  :start
  cls
  print
  print  BOOT MENU
  print  ===================================================
  print  [ 1 ] MS-DOS 98SE & Tools
  print  [ 2 ] PowerQuest PartitionMagic 7
  print  [ 3 ] DocMemory RAM Diagnostic-ver V2.0
  print
  print  [ Q ] Quit to command prompt
  print  [ R ] Reboot
  print  [Esc] Boot first Hard Disk
  print  ===================================================
  print  Press the HOTKEY for your choice.
  :mainkey
  getkey
  onkey 1 goto dos98
  onkey 2 goto pq7
  onkey 3 goto docmem
  onkey q quit
  onkey Q quit
  onkey r reboot
  onkey R reboot
  onkey esc boot 80
  ;When no key found...
  goto mainkey
  ;
  :dos98
  cls
  print Starting MS-DOS 98SE...
  run 1.img
  ;when run has failed
  print
  print Failed to run "1.img", press any key to return to the boot menu.
  getkey
  goto start
  ;
  q7
  cls
  print Loading PowerQuest PartitionMagic...
  run 2.img
  ;when run has failed
  print
  print Failed to run "2.img", press any key to return to the boot menu.
  getkey
  goto start
  ;
  :docmem
  cls
  print Loading DocMemory RAM Diagnostic...
  run 3.img
  ;when run has failed
  print
  print Failed to run "3.img", press any key to return to the boot menu.
  getkey
  goto start
  ;
  ;EOF
  配置表單中不要包含製表符(ASCII 9),可以使用空格符。
  (3)用CDImage製作ISO文件
  將cdimage.exe文件複製到xcd\目錄下,開啟DOS視窗,在xcd目錄下執行如下指令:
  cdimage -lMultiBootCD -n -m -bloader.bin root xcd.iso
  執行完畢後,將產生多重啟動ISO映像文件xcd\xcd.iso,我們可利用VMware Workstation(http://www.vmware.com/)或Virtual PC(http://www.connectix.com)測試其效果。正確無誤後,可將xcd.iso燒錄到光碟。
  (4)用Nero製作ISO/NRG文件
  執行Nero 5.5.9.0,選項表單「檔案—開新檔案」,選項「CD-ROM(開機)」,在「可開機的映像文件位置」中選項loader.bin,「模擬類型」選項「不模擬」,「載入扇區」選項預設的「07C0」,「已載入扇區數」必須為「4」,如圖2所顯示。

  
圖2

  隨後將文件diskem1x.bin、diskemu.cmd、1.img、2.img、3.img拖放到光碟根目錄下。
  這樣,最基本的文件就準備齊了,你還可以再適當增加文件和目錄。最後,製作映像文件,可以選項NRG格式,也可以選項標準的ISO格式。利用VMware Workstation或Virtual PC測試其效果。
  (5)用Mkisofs製作ISO文件
  如果你對Mkisofs的用法十分熟悉,可以使用cdrpack13.zip中的指令行程序mkisofs.exe(必須包含cygwin1.dll),否則還是使用Bart為我們製作好的程序包吧。
  首先下載cdrpack13.zip,然後再下載配合cdrpack13.zip的diskemu插件(http://www.nu2.nu/nu2files/diskemu_addon.zip),將下載到的cdrpack13.zip連同子目錄一起展開,假定釋放到目錄cdrpack13,再將diskemu_addon.zip連同子目錄展開到同一目錄下。這樣,目錄cdrpack13中將包含如下子目錄和文件:
  cdrpack13\cdrpack.txt
  cdrpack13\gnugpl.txt
  cdrpack13\main.bat
  cdrpack13\run.bat
  cdrpack13\bin
  cdrpack13\cds
  cdrpack13\lib
  其中,cdrpack13\cds和cdrpack13\lib是包含在diskemu_addon.zip中的,其他的文件和子目錄包含在cdrpack13.zip中。
  將文件diskemu.cmd、1.img 、2.img、3.img複製到子目錄cdrpack13\cds\diskemu\disk1中。如果有其他需要增加的文件,也要複製到該目錄,這是光碟的根目錄。
  修改文件cdrpack13\cds\diskemu\build.mak,將其中的「volumeid:="Diskem1x"」(磁碟區標)和「preparer:="Bart Lagerweij"」(製作人)改為用戶定義的方式。
  執行批次處理程序cdrpack13\run.bat,從「Main menu」中選項「Build & Burn」,按4次Enter鍵,如果不出問題,又會回到「Main menu」,產生的ISO文件存放在cdrpack13\tmp目錄下,檔案名為mycd.iso,利用VMware Workstation或Virtual PC測試其效果。
  如果你想將預設檔案名mycd.iso修改為其他名稱,只需開啟並編輯文件cdrpack13\bin\global.mak中的相應內容。

七、ISOLINUX
  安裝過Linux的朋友應該知道SYSLINUX這個軟體,它是安裝Linux光碟的啟動引導器,著名的Redhat 7.3使用的是SYSLINUX 1.52,Mandrake Linux 8.2使用的則是SYSLINUX 1.67。而ISOLINUX(還有一個PXELINUX)正是SYSLINUX的孿生兄弟。所以其本質上是個小型的Linux。
  ISOLINUX只能配合Mkisofs製作ISO映像文件。為什麼?因為ISOLINUX需要在ISO文件中插入一段特殊的程式碼:El Torito啟動信息表(El Torito Boot Information Table),目前只有Mkisofs能夠自動完成這項工作,而Nero和CDImage則不行。
  1. 下載位址與技術我的文件
  下載位址:
  cdrpack13.zip:
  http://www.nu2.nu/nu2files/cdrpack13.zip
  multi_memdisk_addon.zip:
  http://www.nu2.nu/nu2files/multi_memdisk_addon.zip
  syslinux-1.75.zip:
  http://www.kernel.org/pub/linux/util...linux-1.75.zip
  技術我的文件:http://syslinux.zytor.com/iso.php(英文)
  2. 軟體主要特點
  ISOLINUX是Linux/i386的一個啟動引導器,其核心是Linux,如果用戶配置過LILO,你將發現ISOLINUX的配置文件isolinux.cfg與LILO的配置lilo.conf有點相似。ISOLINUX本身以非模擬方式執行於ISO 9660/El Torito CD-ROMs,這避開了軟碟模擬的磁牒空間容量問題和硬碟模擬會產生的一些相容性問題。
  注意:ISOLINUX 只使用標準的ISO 9660檔案名格式,例如,它不支持Rock Ridge 或Joliet檔案名。當然,它也可以用在使用Rock Ridge和/或Joliet擴展的磁牒上。
  ISOLINUX也支持「長」(level 2)ISO 9660檔案名,所以,如果短格式操作系統(如MS-DOS)的相容性不是一個問題,你可以使用「-l」或「-iso-level 2」參數控制mkisofs來產生標準長檔案名(擴展至31個字串)。
  ISOLINUX預設地內建兩個版本:標準版和診斷版,診斷版帶有額外的診斷信息。如果你使用ISOLINUX遇到了問題,建議你使用診斷版本(isolinux-debug.bin)。
  從1.65版開始,ISOLINUX支持其他操作系統的引導磁牒映像。當然,這一特性依賴於BIOS的功能,現在的大部分BIOS都支持該功能,但仍有可能在一些特殊的系統中不能正常工作。
  ISOLINUX僅支持下列軟碟映像:
  1,222,800 bytes:1 200 KB軟碟(標準5.25英吋軟碟)
  1,474,560 bytes:1 440 KB軟碟(標準3.5英吋軟碟)
  2,949,120 bytes:2 880 KB軟碟(增強3.5英吋軟碟)
  其他的尺寸將被認為是硬碟映像。為了盡可能地在更多的操作系統上正常工作,硬碟映像必須要包含一個已經啟動的分區。儘管如此,還是有很多BIOS不能正常支持硬碟映像。
  與Diskemu相比,ISOLINUX在顯示表單上做得相當出色:不僅支持彩色文本表單,而且還支持圖像!不過它支持的圖像格式太特殊了:LSS16。syslinux-1.75.zip裡提供了一個Perl的處理程序,可以用它將需要的圖像轉換為LSS16格式。syslinux-1.75.zip裡面同時也包含了一個圖像表單的例子。
  ISOLINUX的表單配置文件和映像配置文件是分開的:表單配置文件中只包含顯示的文本和顏色及圖像控制指令,是一個文本文件,映像配置文件是一個對應於表單配置文件的映像啟動指令文件。這種安排多少有些不方便。另外,顏色和圖像等的控制指令是用不可列印ASCII碼控制的,你必須要找到一個適當的DOS下的編輯軟體以輸入這些特殊的ASCII碼,或用Ultraedit的「檢視—ASCII字串表—插入字串」輸入,但在中文Windows下的顯示卻亂得一團糟。
  ISOLINUX本身是無法啟動軟碟映像文件的,它是靠MEMDISK實現的。簡單地說,MEMDISK是1個常駐記憶體的Linux下的磁牒映像啟動器,它攔截BIOS中斷INT 13和INT 15的一切操作。有關MEMDISK的詳細資料請參考http://syslinux.zytor.com/memdisk.php。
  MEMDISK對於大部分映像的工作都是正常的,但有些特殊軟碟的映像,MEMDISK支持得不盡人意,如DocMemory,因此,在使用時需要反覆試驗。
  3. 軟體使用方法
  ISOLINUX只能用Mkisofs製作。這裡我們講解製作ISO映像文件的方法。
  (1)文件與目錄結構
  下載cdrpack13.zip,再下載multi_memdisk_addon.zip插件,將下載到的cdrpack13.zip連同子目錄一起展開,將其釋放到目錄cdrpack13,再將multi_memdisk_addon.zip連同子目錄展開到同一目錄下。這樣,目錄cdrpack13中將包含如下子目錄和文件:
  cdrpack13\cdrpack.txt
  cdrpack13\gnugpl.txt
  cdrpack13\main.bat
  cdrpack13\run.bat
  cdrpack13\bin
  cdrpack13\cds
  其中,cdrpack13\cds是包含在multi_memdisk_addon.zip中的,其他的文件和子目錄包含在cdrpack13.zip中。
  再下載ISOLINUX的最新版本syslinux-1.75.zip,將其展開,將其中的文件isolinux.bin、memdisk複製到目錄cdrpack13\cds\multi_memdisk\disk1\isolinux。
  將文件1.img、2.img、3.img複製到cdrpack13\cds\multi_memdisk\disk1\isolinux中。如果還有其他需要增加的文件,只需複製到目錄cdrpack13\cds\multi_memdisk\disk1\,這是光碟的根目錄。
  修改文件cdrpack13\cds\multi_memdisk,將其中「volumeid」和「preparer」的內容改為用戶定義的方式。
  注意:ISOLINUX必須放在光碟根目錄下的\isolinux目錄中。
  (2)編寫表單配置文件bootmsg.txt(預設檔案名)
  [插入ASCII 12:清屏]
  BOOT MENU
  ===================================================
  [ 1 ] MS-DOS 98SE & Tools
  [ 2 ] PowerQuest PartitionMagic 7
  [ 3 ] DocMemory RAM Diagnostic-ver V2.0

  [ H ] Boot from first Hard Disk
  [ F ] Boot from first Floppy Drive
  ===================================================
  Select the HOTKEY and then Press Enter.
  (3)編寫映像配置文件isolinux.cfg(預設檔案名)
  default 0
  display bootmsg.txt
  prompt 1
  label h
  localboot 0x80
  label H
  localboot 0x80
  label f
  localboot 0x00
  label F
  localboot 0x00
  label 1
  kernel memdisk
  append initrd=1.img
  label 2
  kernel memdisk
  append initrd=2.img
  label 3
  kernel 3.img
  注意label 3,為了能夠使用DocMemory,這裡沒有使用memdisk。
  (3)製作ISO文件
  執行批次處理程序cdrpack13\run.bat,從「Main menu」中選項「Build & Burn」,按4次Enter鍵,如果不出問題,又會回到「Main menu」,產生的ISO文件存放在cdrpack13\tmp目錄下,檔案名為mycd.iso,利用VMware Workstation或Virtual PC測試其效果。

八、Boot Scriptor
  Boot Scriptor是執行在ISOLINUX之上的一個小程序,它允許編寫特殊的高度交互的光碟啟動控制指令碼。它提供了一系列的預設指令,允許用戶用多種方法啟動系統,即通過定制的啟動表單,允許用戶選項啟動哪個選項。
  1. 下載位址與技術我的文件
  下載位址:
  Boot Scriptor 1.2.3b:
  http://tigger.cc.uic.edu/~mterlo1/bs...%20Scriptor%20(1.2.3b).zip
  技術我的文件:
  [url]http://tigger.cc.uic.edu/~mterlo1/bscript/doc.html︴/url]]英文)
  [url]http://tigger.cc.uic.edu/~mterlo1/bscript/cmdref.html︴/url]]英文)
  2. 軟體主要特點
  應當明確指出的是,Boot Scriptor是一個特殊的程式碼模組,也稱為集成啟動映像(Comboot Image),它執行在Isolinux一個特殊版本的最頂層。
  同樣地,它可以扮演ISOLINUX的一個前端,並能夠利用ISOLINUX所提供的所有效能。它同時擴充了ISOLINUX的一系列特性以允許更複雜的啟動指令碼,且支持一種簡單的指令碼語言,該指令碼語言允許多重啟動CD-ROM設計者執行定制的啟動辦法。
  Boot Scriptor是在ISOLINUX之上二次開發的產品,所以ISOLINUX能夠完成的工作Boot Scriptor也能完成。但是,經過作者的不懈努力,最終與Bart達成傳輸協定,引入了Diskemu這一偉大的模組,不僅載入映像文件的速度大大加快,而且最最重要的是,幾乎徹底解決了映像文件的相容性問題。
  Boot Scriptor具有如下主要優點:
  (1)囊括了Diskemu與ISOLINUX的所有優點,可以使用多種方法載入軟碟映像文件。
  (2)將表單配置文件與映像配置文件合併,更利於相互照應,可以編寫更加複雜、更加龐大的指令碼。
  (3)提供了更方便的顏色控制程式碼,使用可顯示字串作為顏色控制符。
  (4)提供了螢幕顯示信息的自動對齊控制,例如非常有用的自動居中功能。
  (5)提供了模組化的功能選項,更利於用戶光碟的定制。
  (6)在Boot Scriptor的指令行模式,指令是可編輯的。
  (7)提供了與ISOLINUX不同的啟始程序,包含El Torito啟動信息表,所以除了可用Mkisofs製作映像文件外,還可以方便地用CDImage、Nero等燒錄軟體製作ISO映像文件。
  (8)與CDImage配合使用,可以製作複雜的Windows 系列 n合1光碟。
  Boot Scriptor的主要缺點如下:
  (1)沒有提供ISOLINUX提供的圖形界面,啟動表單只能使用純文本。
  (2)對ISOLINUX特殊版本的依賴太嚴重,你無法在最新的ISOLINUX上執行Boot Scriptor。實際上,從1.2版開始,ISOLINUX已經作為一個單獨的模組了。
  (3)版本發展速度太快,以致於技術我的文件的更新速度跟不上。
  3. 軟體使用方法
  Boot Scriptor提供了與ISOLINUX不同的啟始程序,修正了包含El Torito啟動信息表問題,適用於Nero、Cdimage和Mkisofs。這裡分別講解利用這三種軟體製作ISO映像文件的方法。
  (1)目錄結構
  假定xcd\root\為多重啟動CD-ROM的根目錄,建立如下目錄結構,將下載到的文件Boot Scriptor (1.2.3b).zip展開,將展開後的文件及1.img、2.img、3.img分別複製到相應位置:
  xcd\loader.bin
  xcd\root\bscript\1.img
  xcd\root\bscript\2.img
  xcd\root\bscript\3.img
  xcd\root\bscript\bscript.bin
  xcd\root\bscript\modules\basic.bsm
  xcd\root\bscript\modules\boot.bsm
  xcd\root\bscript\modules\diskemu.bsm
  xcd\root\bscript\modules\extend.bsm
  xcd\root\bscript\modules\history.bsm
  xcd\root\bscript\modules\hotkey.bsm
  xcd\root\bscript\modules\isolinux.bsm
  xcd\root\bscript\modules\memdisk
  xcd\root\bscript\modules\part.exe
  xcd\root\bscript\modules\rpm.bsm
  xcd\root\bscript\modules\script.bsm

  Boot Scriptor的文件必須放在光碟根目錄下的bscript子目錄中,這與ISOLINUX類似。
  如果還希望增加有其他文件和子目錄,將其複製到,xcd\root\目錄下,這是光碟的光碟根目錄。
  (2)編寫表單配置文件xcd\root\bscript\bscript.ini(預設檔案名)
  start:
  clear
  print c "\n\n\c17===================================================\n"
  print c "\c17  \c1fBOOT MENU\c17  \n"
  print c "\c17===================================================\n"
  print c "\c17  \n"
  print c "\c17  \c1f1\c17 MS-DOS 98SE & Tools  \n"
  print c "\c17  \c1f2\c17 PowerQuest PartitionMagic 7  \n"
  print c "\c17  \c1f3\c17 DocMemory RAM Diagnostic-ver V2.0  \n"
  print c "\c17  \n"
  print c "\c17  \c1fR\c17 Reboot  \n"
  print c "\c17  \c1fF\c17 Boot from first Floppy Drive  \n"
  print c "\c17 \c1f Esc\c17 Boot from first Hard Disk  \n"
  print c "\c17  \n"
  print c "\c17---------------------------------------------------\n"
  print c "\c17  Select the item and then press Enter  \n"
  print c "\c17  or press the HotKey  \n"
  print c "\c17===================================================\n"
  ;
  start1:
  call drawscrn
  setpos 1 7
  print c "\c3f  1\c31 MS-DOS 98SE & Tools  "
  key1:
  getkey
  call mainkey
  onkey space goto item_1
  onkey enter goto item_1
  onkey up goto start6
  onkey down goto start2
  goto key1
  ;
  start2:
  call drawscrn
  setpos 1 8
  print c "\c3f  2\c31 PowerQuest PartitionMagic 7  "
  key2:
  getkey
  call mainkey
  onkey space goto item_2
  onkey enter goto item_2
  onkey up goto start1
  onkey down goto start3
  goto key2
  ;
  start3:
  call drawscrn
  setpos 1 9
  print c "\c3f  3\c31 DocMemory RAM Diagnostic-ver V2.0  "
  key3:
  getkey
  call mainkey
  onkey space goto item_3
  onkey enter goto item_3
  onkey up goto start2
  onkey down goto start4
  goto key3
  ;
  start4:
  call drawscrn
  setpos 1 11
  print c "\c3f  R\c31 Reboot  "
  key4:
  getkey
  call mainkey
  onkey space reboot cold
  onkey enter reboot cold
  onkey up goto start3
  onkey down goto start5
  goto key4
  ;
  start5:
  call drawscrn
  setpos 1 12
  print c "\c3f  F\c31 Boot from first Floppy Drive  "
  key5:
  getkey
  call mainkey
  onkey space boot 0x00
  onkey enter boot 0x00
  onkey up goto start4
  onkey down goto start6
  goto key5
  ;
  start6:
  call drawscrn
  setpos 1 13
  print c "\c3f  Esc\c31 Boot from first Hard Disk  "
  key6:
  getkey
  call mainkey
  onkey space boot 0x80
  onkey enter boot 0x80
  onkey up goto start5
  onkey down goto start1
  goto key6
  ;
  mainkey:
  onkey 1 goto item_1
  onkey 2 goto item_2
  onkey 3 goto item_3
  onkey r reboot cold
  onkey R reboot cold
  onkey f boot 0x00
  onkey F boot 0x00
  onkey esc boot 0x80
  return
  ;
  item_1:
  cls
  print "Starting MS-DOS 98 & Tools\n"
  diskemu 1.img
  goto start1
  ;
  item_2:
  cls
  print "PowerQuest PartitionMagic 5/7\n"
  diskemu 2.img
  goto start2
  ;
  item_3:
  cls
  print "Starting DocMemory RAM Diagnostic-ver V2.0\n"
  diskemu 3.img
  goto start3
  ;
  drawscrn:
  setpos 1 7
  print c "\c17  \c1f1\c17 MS-DOS 98SE & Tools  \n"
  print c "\c17  \c1f2\c17 PowerQuest PartitionMagic 7  \n"
  print c "\c17  \c1f3\c17 DocMemory RAM Diagnostic-ver V2.0  \n"
  print c "\c17  \n"
  print c "\c17  \c1fR\c17 Reboot  \n"
  print c "\c17  \c1fF\c17 Boot from first Floppy Drive  \n"
  print c "\c17 \c1f Esc\c17 Boot from first Hard Disk  \n"
  return
  ;
  eof:
  ;
  上述指令碼非常複雜,除了界面略有簡陋外,幾乎體現了Boot Scriptor的所有精華。其中大量的程式碼是為了實現移動游標鍵,如果不需要使用游標鍵,則指令碼能夠大大簡化。
  (3)用CDImage製作ISO文件
  將cdimage.exe文件複製到xcd\目錄下,開啟DOS視窗,在xcd目錄下執行如下指令:
  cdimage -lMultiBootCD -n -m -bloader.bin root xcd.iso
  執行完畢後,將產生多重啟動ISO映像文件xcd\xcd.iso,可利用VMware Workstation或Virtual PC對其進行測試。正確無誤後,可將xcd.iso燒錄到光碟。
  (4)用Nero製作ISO/NRG文件
  執行Nero 5.5.9.0,選項表單「檔案—開新檔案」,選項「CD-ROM(開機)」,在「可開機的映像文件位置」中選項loader.bin,「模擬類型」選項「不模擬」,「載入扇區」選項預設的「07C0」,「已載入扇區數」必須為「4」。
  隨後將xcd\root\bscript及其下面的全部文件拖放到光碟根目錄下。
  這樣,最基本的文件就準備齊了,你還可以再適當增加文件和目錄。最後,燒錄映像文件,可以選項NRG格式,也可以選項標準的ISO格式。利用VMware Workstation或Virtual PC對其進行測試。正確無誤後,可將xcd.iso燒錄到光碟。
  (5)用Mkisofs製作ISO文件
  用Mkisofs製作Boot Scriptor的ISO映像文件的方法與製作ISOLINUX的方法很類似,所以我們只需對製作ISOLINUX的ISO映像的方法進行適當的改造。
  下載cdrpack13.zip,再下載ISOLINUX插件multi_memdisk_addon.zip,將下載到的cdrpack13.zip連同子目錄一起展開,將定釋放到目錄cdrpack13,再將multi_memdisk_addon.zip連同子目錄展開到同一目錄下。這樣,目錄cdrpack13中將包含如下子目錄和文件:
  cdrpack13\cdrpack.txt
  cdrpack13\gnugpl.txt
  cdrpack13\main.bat
  cdrpack13\run.bat
  cdrpack13\bin
  cdrpack13\cds
  其中,cdrpack13\cds包含在multi_memdisk_addon.zip中,其他的文件和子目錄包含在cdrpack13.zip中。
  刪除子目錄cdrpack13\cds\multi_memdisk\disk1\isolinux,將xcd\root下面的子目錄bscript(連同其中的bscript.ini及軟碟映像文件)複製到cdrpack13\cds\multi_memdisk\disk1下面。
  修改文件cdrpack13\cds\diskemu\build.mak中的「boot」選項為:
  boot:=-b bscript/loader.bin \
  -no-emul-boot -boot-load-size 4 \
  -hide loader.bin -hide-joliet loader.bin \
  -hide boot.catalog -hide-joliet boot.catalog
  一定要刪除「-boot-info-table」。
  將「volumeid」和「preparer」的內容改為用戶定義的方式。
  執行批次處理程序cdrpack13\run.bat,從「Main menu」中選項「Build & Burn」,按4次Enter鍵,如果不出問題,又會回到「Main menu」,產生的ISO文件存放在cdrpack13\tmp目錄下,檔案名為mycd.iso,利用VMware Workstation或Virtual PC對其進行測試。正確無誤後,可將xcd.iso燒錄到光碟。

九、版權聲明
  Diskemu的版權屬於Gary Tong和Bart Lagerweij,1999-2002。
  ISOLINUX和MEMDISK的版權屬於H. Peter Anvin,1994-2002。
  Boot Scriptor的版權屬於Michael K Ter Louw和Bart Lagerweij,2002。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2003-07-21, 01:58 PM   #2 (permalink)
長老會員
 
劍痞憶秋年 的頭像
榮譽勳章
UID - 15
在線等級: 級別:31 | 在線時長:1096小時 | 升級還需:56小時級別:31 | 在線時長:1096小時 | 升級還需:56小時級別:31 | 在線時長:1096小時 | 升級還需:56小時級別:31 | 在線時長:1096小時 | 升級還需:56小時級別:31 | 在線時長:1096小時 | 升級還需:56小時級別:31 | 在線時長:1096小時 | 升級還需:56小時
註冊日期: 2002-12-06
住址: 步雲崖
文章: 280
精華: 0
現金: 15847 金幣
資產: 20867 金幣
預設

謝謝分享∼∼蠻詳細的說明 & 範例~~^_^
往上推!讓有需要的人也能參考!
先前下載的檔案終於可以化成實際的多重啟動光碟了!!
& 順便學會了怎麼製作多重啟動光碟了
先前只會製作單重啟動光碟!
現在又多了一項技能了!!

只不過劣者有個問題如下
「已載入扇區數」必須為「4」。
其中的4是怎麼來的!!是不是 (loader.bin、1.img、2.img、3.img)
因為若要自製的話,這裡的 4 應該要改變才是吧!但不曉得該改成多少才正確!
__________________
一切有為法 如夢幻泡影
如露亦如電 應作如是觀
劍痞憶秋年 目前離線  
送花文章: 150, 收花文章: 33 篇, 收花: 130 次
舊 2003-07-21, 09:37 PM   #3 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

已載入扇區數」必須為「4」。
其中的4是怎麼來的!!
^^^^^^^^^^^^^^
燒錄的設定...........以nero為設定......
nero-cdrom(boot選項)
下面:
number of loaded setors 填入4
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2003-08-16, 01:51 PM   #4 (permalink)
kay
長老會員
榮譽勳章
UID - 10071
在線等級: 級別:6 | 在線時長:71小時 | 升級還需:6小時
註冊日期: 2002-12-12
文章: 310
精華: 0
現金: 16128 金幣
資產: 21128 金幣
預設

哇~我要自製~謝謝分享~蠻詳細的說明 範例~很棒ㄛ~thanks~
kay 目前離線  
送花文章: 186, 收花文章: 10 篇, 收花: 13 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 12:27 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1