|
論壇說明 | 標記討論區已讀 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-05-17, 02:05 PM | #1 |
榮譽會員
|
(引導)啟動光碟的製作!
【原創】(多引導)啟動光碟的製作! 鳳凰啟動碟
今天看到很多人問關於啟動光碟製作的事情,所以,決定把前段時間貼在會員區的帖子再貼到這裡來,和大家一起共同研究! 使用isolinux/memdisk方式製作多引導啟動光碟! 現在網上流傳著很多的多引導光碟啟動碟,最著名的要算是鳳凰啟動碟了。這些啟動光碟大都是使用diskemu的技術來製作的,另外,還有一些是使用easyboot這個工具來製作的,其實,製作啟動光碟的方法還有很多,具體的可以參看nu2.nu網站,上面有很多這方面的資料。 這裡想和大家談的是一種isolinux/memdisk的方法,個人覺得這種方法比較簡單,易於實現,文件結構上也比較簡潔,使用diskemu技術製作的啟動碟,都會在根目錄產生一些和diskemu相關的附加文件,給人一種文件比較亂的印象,不過,使用這種方法製作的時候,那些附加的文件也是可以調整的,不過,本人能力有限,至今也不是太明白。所以,個人來說,比較喜歡用isolinux這種方法,這裡給大家做個簡單介紹,有興趣的朋友可以自己動手試試看。 我們需要的軟體有CDRPack,isoinux插件,ultraedit(或其他二進制編輯軟體),CDRPack和isoinux插件都可以在nu2.nu上下載得到,至於ultraedit這類二進制編輯軟體,我想大多數朋友,用的比我更熟練吧,呵呵! CDRPack目前的版本是1.3,解壓縮後目錄結構如下: CDRPack子目錄----bin子目錄 ----cdrpack.txt ----gnugpl.txt ----main.bat ----run.bat bin子目錄下就是我們要用的真正的製作cd鏡像的工具了! isoinux插件解壓縮後,整體是個cds子目錄,這個子目錄必須放在CDRPack子目錄裡,下面來看看,這裡面有什麼。 cds子目錄下,是multi_memdisk子目錄,裡面是disk1子目錄和build.mak文件,這個disk1子目錄,就相當於是光碟的根目錄了,而這個build.mak文件,實際上就是個文本,記錄的是製作者的一些信息,可以直接用ultraedit修改。disk1目錄下就是isolinux子目錄,這個isolinux終於露面了! isolinux目錄下有4個文件,bootmsg.txt、isolinux.bin、isolinux.cfg、memdisk。bootmsg.txt文件是文本文件,就是啟動光碟的啟動畫面,直接列出選項,預設的內容為: 1f諛哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪目07 1f?1e Bart's way to create bootable CD-Roms 1f?07 1f?1e http://www.nu2.nu/bootcd/ 1f?07 1f濫哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪餒07 0) Boot from first harddisk (0x80) 1) Boot Dos with CD-Rom support 2) Boot Dos with Network support 3) Boot Linux (tomsrtbt) a) Boot from first floppy drive (0x00) q) Skip CD-Rom boot (try next boot device) When no key is pressed for 20 sec, or when you hit Enter "0" will be run... Type command at the prompt... 可根據自己的喜好和製作的光碟的內容自行修改(我個人比較喜歡這種簡單的選項界面,覺得比easyboot的那種功能表式的界面好)。 isolinux.bin文件就是我們真正要用到的光碟啟動檔案了,isolinux.cfg是配置文件,定義選項的內容和對應的啟動檔案,預設內容為: default 0 display bootmsg.txt prompt 1 label 0 localboot 0x80 label a localboot 0x00 label q localboot -1 label 1 kernel memdisk append initrd=cdrom.img label 2 kernel memdisk append initrd=msnet.img label 3 kernel memdisk append initrd=tomsrtbt.img timeout 200 memdisk文件也是一個啟動檔案,使用win98這一類的模擬啟動鏡像的。 下面以製作win98啟動碟和ERD Commander 2002的多啟動光碟為例,來說明isolinux的製作程序。 首先將產生的ERD Commander 2002的光碟鏡像提取出來,這個就不多說了,但是這裡要注意一點,就是一定要用joliet的格式來提取,而不能用iso9660的格式,不然是無法啟動的!使用winiso 5.3可以對提取的格式進行選項。 將解壓縮後的ERD Commander 2002的文件拷貝到disk1目錄下,原來ERD Commander 2002根目錄下的文件除了bootsect.bin和win51ip外,其他的都可以刪除,因為如winbom.ini等文件,都在i386目錄下存在了,根目錄下的就沒有什麼實際用途了。win51ip文件是windows系統的啟動標誌文件,沒有標誌文件windows系統就無法啟動了,這裡用的ERD Commander 2002是基於windows xp的,所以,對應的標誌文件為win51ip,原來還有一個win51文件,也是windows標誌文件,不過是其他的windows xp系統的,好像是server用的吧,而在2000時代的標誌文件則是如CDROM_IS.5這樣的文件,我也記得不是很清楚,因為和本文的宗旨關聯不是很大,所以,就不詳細介紹了,有興趣的朋友可以搜尋相關的資料。再將windows98的img文件拷貝到isolinux目錄下,這樣,光碟的基本文件結構就形成了。 下面就是最重要的部分了,形成光碟啟動信息。主要是修改bootmsg.txt、isolinux.bin、isolinux.cfg這三個文件。 bootmsg.txt的修改,這裡就不多說了,因為,這只是個界面,根據個人喜好來設置就行了,沒什麼可說的。首先是isolinux.cfg的修改,這是定義相對按鈕的文件,比如說定義「1」為windows 98啟動,「2」為ERD Commander 2002啟動,修改後的文件如下: default 0 display bootmsg.txt prompt 1 label 0 localboot 0x80 label a localboot 0x00 label q localboot -1 label 1 kernel memdisk append initrd=98se.img label 2 kernel erd.bin timeout 200 文件的開頭部分定義的「0」、「a」、「q」分別代表,從硬碟啟動、從軟驅啟動和退出,同樣可以根據個人的想法來修改或者刪除,timeout處設置的是功能表等待時間。如果你修改了bootmsg.txt的檔案名,那麼這裡也要作對應的修改。 至此,這個啟動碟的製作基本完成了,返回到CDRPack目錄下,執行下面的run.bat,按照它的提示來燒錄光碟以及光碟鏡像文件。 一張簡單的多引導啟動光碟就這樣誕生了!再根據個人的具體需要,在disk1目錄下增加dos下的各種常用工具,這就是完全適合你的一張啟動光碟了。 下面還要說說,一些相關內容的修改。 對於自己動手作的東西,大家通常都希望可以加入自己的信息,專利喲!所以,對於這些朋友來說,光碟下的isolinux目錄就會給人一種異樣的感覺了,那麼,能不能把這個目錄改名呢?答案是肯定的,可以! 通過分析,我們知道,這張啟動光碟的核心啟動檔案就是isolinux.bin,所以,注意力當然要集中到這裡了。用ultraedit開啟isolinux.bin,搜尋isolinux,我們會找到很多相關的信息,當然,不是什麼都要改的,來找我們需要的就行了。我們可以找到這樣一段「default./isolinux.isolinux.cfg」,這就是關鍵所在了把isolinux修改成你自定義的名稱,為了保持文件的原字元不變,最好修改的名稱也是8位就好了,如果改變的原文件的字元長度,可能會導致無法啟動的。還有isolinux.cfg的檔案名可以同樣進行修改,當然也要在這裡作相應的修改了。另外,還有一個地方,就是「ISOLINUX 1.68 0x3c7f7718 Copyright (C) 1994-2001 H. Peter Anvinnn...isolinux:」這裡是啟動是顯示的isolinux的版權信息,這裡後面的「isolinux:」處也要修改成你自定義的名字,至於前面的版權信息,就看你自己的了。 有一點要說明的,就是這裡所作的修改一定要一致,就是isolinux.bin的主檔案名一定要和修改的目錄名一樣才行的! 至於build.mak的修改,就不說了,就是文本,開啟後大家自然試一目瞭然了。 好了,剩下的問題就留給大家去摸索吧,本文只是和大家探討一種方法和思路,僅供大家參考,本人不對此負任何法律責任! 還要告訴大家一個已知的bug,就是使用memdisk方式啟動win98的dos模式後,fdisk指令將不能使用,估計是memdisk啟動方式佔用的記憶體位址和fdisk的有衝突,未經驗證,也可能是和我的主機板的bios不太相容吧,也請大家試試看,不過,這不影響什麼,我們可以使用pq一類的其他工具嗎,呵呵! |
送花文章: 3,
|
2003-05-17, 02:07 PM | #2 (permalink) |
榮譽會員
|
使用Boot Scriptor製作多功能啟動光碟
上次和大家談了關於使用isolinux製作多功能啟動光碟的問題,今天來介紹一下另一種製作多功能啟動光碟的方法 - Boot Scriptor! Boot Scriptor採用一種類似指令碼的方法來實現啟動功能表的顯示和選項,很多功能實現起來都很方便,功能強大並且靈活,不愧是製作多引導光碟的好方法。Boot Scriptor的主頁是http://www.bootscriptor.org/上面有詳細的語言和指令的介紹,有興趣的朋友可以去看看,不過是英文的喔! 首先到它的主頁http://www.bootscriptor.org/下載Boot Scriptor的程序包,目前的版本事1.2.18。將壓縮包解開後可以看到裡面的文件結構大致如下: -- \bscript\ \licenses\ \tools\ \changes.txt \rpm.txt 我們要用到只有bscript目錄下的文件,其他的東西,我們都不需要,再來看看這個bscript目錄下的內容: bscript\modules\ (顧名思義,「模組」,這個目錄是bscript所使用的模組,支持的bscript的指令碼語言,不過,不是所有的模組我們都需要,根據使用的指令碼語言的不同,所需要的模組文件也是不同的,也包含了diskemu和isolinux的模組,具體的就不多說了,可以參照主頁上的說明來檢視哪些指令,屬於哪些模組) \bscript.bin (bscript的引導文件) \bscript.bmp (bscript支持啟動時顯示圖形,這個位圖就是啟動時顯示的圖像,可以不要) \bscript.bsi (同上,bscript自身特殊的圖像格式,可以不要) \bscriptw.com (相當於DOS下的DEBUG) \loader.bin (光碟引導文件,光碟啟動時,首先通過這個文件引導,然後再將引導任務交給bscript.bin 好了,知道了這些文件的作用,我們就可以開始製作多引導啟動光碟了,以製作windows98se,erd commander 2002和disk commander三項啟動為例來說明。 首先,還是準備這三個項目各自所需的文件,一些需要注意的事情,上次已經說過了,這裡就不重複了,不知道的朋友可以參照http://bbs.et8.net/bbs/showthread.ph...t=%D4%AD%B4%B4 建立一個目錄,作為光碟的根目錄,如「D:\ROOT」,將bscript整個目錄放在root目錄下,windows98se啟動碟的img文件和ERD、disk Commander的引導文件,可以根據自己的定義放在任意的目錄下,這裡放在root\boot\ (注意:由於ERD和disk Commander,都是採用windows 2/XP的方式來引導的,所以,引導文件,都是bootsect.bin,要將這兩個文件改名,這裡ERD的改為「ERDC.bin」,disk Commander的改為「DCDB.bin」。另外,由於這兩個軟體都是要使用「I386」目錄,而且一個是windows2000的,一個時windows xp的,不能共用,所以,也要改名,同上,分別改為ERDC和DCBC,目錄名更改後,要對引導文件ERDC.bin和DCDB.bin作相應的修改,這個將在下面詳細介紹) 目錄和文件結構設定好以後,就可以開始最重要的工作了,編寫bscript.ini文件了,也就是bscript的啟動指令碼,這個文件同樣要放在bscript目錄下,我自己寫的內容如下: clear setpos 1 2 print l "MultiFuctional Bootable Disc\n" setpos 20 7 print "[1] Windows 98 SE Boot with Tools Kit\n" setpos 20 8 print "[2] Winternals ERD Commander 2002\n" setpos 20 9 print "[3] Winternals Disk Commander\n" print "\n" print "\n" setpos 1 13 print "The system will boot with the 1st option automatically after 30 Seconds" getkey 30 goto item_1 ; onkey 1 goto item_1 onkey 2 goto item_2 onkey 3 goto item_3 ; item_1: cls Diskemu \Boot\98se.img ; item_2: cls chain \Boot\ERDC.bin ; item_3: cls chain \Boot\DCBC.bin ; EOF ; 簡單說明一下上面的指令碼(其實,和批次處理的語言差不多),這裡一共使用了9個指令碼指令:clear,setpos,print,getkey,onkey,goto,cls,diskemu,chain,這些指令使用的模組,請對照Boot Scriptor的說明我的文件。 這裡的clear和cls指令,實際上是一樣的,可有可無,都是簡單的清屏指令;setpos是定位指令,為了使啟動功能表看上去更整潔,所以,將它們定位是個很好的辦法;print指令就是輸出指令;getkey指令是等待輸入的指令,就是在啟動功能表顯示後,等待用戶的選項;onkey是定義輸入鍵的指令,從上面的指令碼中可以得到,1、2、3三個定義的鍵;goto指令就是跳轉指令,這個很好理解;diskemu和chain指令是載入啟動鏡像的指令,不同的是diskemu指令是載入如dos,windows98se等模擬式啟動的img鏡像的,而chain是載入非模擬式的,如windows2000,XP等。 現在,大家應該可以很好的理解上面的指令碼的含義了吧,這裡的啟動功能表,還是最原始的那種很簡單的方式,大家可以根據自己的喜好來自行修改,Boot Scriptor能夠作出很漂亮的啟動功能表的,有興趣的朋友自己好好研究一下吧,呵呵! 這裡要說明一點,一些習慣編程的朋友,可能會將啟動功能表,也做成如上面item_1、2、3那樣的一個「段」,來隨時使用(使用call指令),這樣當然是沒問題的,不過,如果這樣作,要注意一點,就是一定要在最後加上「return」指令,這樣才能保證功能表的顯示,否則,啟動後將直接進入Boot Scriptor的debug模式了! 好了,最主要的工作,我們已經完成了,下面該說說上面提到的bin文件的修改了,以ERDC.BIN為例。 其實很簡單,就是使用ultraedit這樣的二進制編輯器開啟文件,將裡面的「I386」字段改成ERDC(就是您自己修改後目錄名。由於涉及到引導的問題,所以,還是要使用4個字元的名稱,否則,會造成無法引導)就可以了。除了上面說的ERDC.BIN和DCBC.BIN兩個文件外,還有兩個文件需要修改,就是ERD和DISK Commander各自目錄下的setupldr.bin和txtsetup.sif,這兩個文件裡,也需要把「I386」字段作相應的修改,其中的txtsetup.sif文件,實際上是文本文件,開啟後找到如下內容: [SourceDisksNames.x86] 1 = %cdname%,%cdtagfilei%,,\i386 將這裡的「I386」修改後就可以了,下面還有一些「I386」的內容,是系統相關的,和我們使用ERD和DISK Commander沒什麼關係,所以,沒必要修改。 到了最後一步了,就是製作iso鏡像,這次使用的是CD Image軟體,這個軟體確實很好,特別是使用GUI後,十分方便,推薦大家使用。關於CD Image的使用,GUI的界面十分簡潔明瞭,設置起來一點麻煩都沒有,這裡就不多說了。 modules目錄下的模組文件,在編輯好bscript.ini文件後,整理所使用的指令,對照找出需要的模組文件,其餘的就可以刪除了。 最後說一下,就是在最後製作iso文件,選項引導文件時,由於loader.bin文件引導後也是將引導權交給bscript.bin文件,所以,直接選項bscript.bin作為引導文件就可以了,loader.bin嗎,沒用了,刪除吧,呵呵,我就是這樣作的,沒問題! 使用Boot Scriptor後,覺得比isolinux方式強大,靈活很多,所以,以後也都會使用這種方式了,呵呵!現在Boot Scriptor已經不再開發、更新了,作者將新版本更名為CD Shell,並且做了較大的改動,目前還沒有正式發佈,也沒有相關的我的文件,簡單的看了一下介紹,覺得語言更加像是在編程了,相信大家也會很有興趣的,等正式發佈後,我再和大家共同研究吧! |
送花文章: 3,
|