如何製作一個通用的多系統安裝U盤五(製作主配置文件)

準備U盤

    因爲要放置的系統比較多,我自己的U盤是128G的,最好是64G容量以上的U盤。爲了保證兼容性,我一般是用FAT32來格式化。FAT32理論最大卷大小爲2TB,單個文件最大大小爲4GB。這是它的一個最大缺陷。另外,因爲FAT32文件分配採用單鏈表結構,一個文件由一個一個鏈接的簇組成,而這些簇鏈不一定是連續的,所以經常產生碎片問題。

    雖然我已經用GRUB4DOS 的映射虛擬磁盤和映射虛擬內存盤方式對系統ISO進行了映射,但是考慮到ISO的尺寸比較大,如果內存不足的話會影響系統的安裝,所以我們需要連續的存放文件。因爲我只是在Windows安裝的時候用到GRUB4DOS,所以我們只要製作的時候一次性的把Windows 相關ISO拷貝進U盤中就行了。如果使用了一段時間,並且增刪了很多文件後,就有可能出現文件碎片,表現在U盤安裝過程中就會出現加載ISO到內存的情況。這時候我們就要格式化一下U盤或者是用碎片整理軟件整理一下了。


格式化

    在Linux下我們可以用fdisk命令或者是parted來給U盤分區並標記爲fat32格式,然後通過mkfs.vfat格式化。而在windows下,因爲微軟的限制我們無法格式化大於32G的U盤爲fat32格式,windows下格式化超過32G的U盤都會默認到exFAT的文件系統格式。所以我們在windows下格式化大容量U盤的時候一定要用第三方的分區格式化軟件,比如DiskGenius。千萬要注意啊,exFAT是無法兼容於Syslinux的!


Windows 格式化超過32GU盤時的提示:

wKiom1Rqsr-BCyG1AADhPae85GA195.jpg

在Windows下用DISKGenius 製作分區並格式化:

wKioL1RqtCGTX1pHAAGKJrhAp9Y103.jpg

wKiom1Rqs6yhRV32AAE1IYHWWTc943.jpg

LINUX下的分區和格式化(也可以用parted來分區)

fdisk -l       #查看U盤是哪個設備名
fdisk /dev/sdd #給U盤分區
n              #新建分區
p              #主分區
enter          #默認分區號爲1               
enter          #默認起始扇區
enter          #默認結束扇區
t              #修改分區類型
c              #0c爲LBA FAT32
a              #活動分區
w              #保存修改

#格式化
mkfs.vfat /dev/sdd1

拷貝相關軟件並建立相關目錄

根據定義的目錄結構把syslinux,grub4dos等內容拷貝進U盤,並建立config目錄。現在的結構如下:


F: U盤根目錄
+---boot 啓動相關項目
|   +---config 啓動配置文件目錄
|   +---grub GRUB4DOS程序和配置目錄
|   |   |   bootlace.com
|   |   |   bootlace64.com
|   |   |   grldr
|   |   |   grub.exe GRUB4DOS主程序
|   |   |   grubinst.exe
|   |   |   Menu.lst
|   |   |   message
|   |   |   version.txt
|   +---syslinux Syslinux主程序目錄
|   |   |   menu.c32 文本菜單程序
|   |   |   syslinux.exe Syslinux Windows安裝程序,32位
|   |   |   syslinux64.exe Syslinux Windows安裝程序,64位
|   |   |   vesamenu.c32 圖形菜單程序
|   |   |   ldlinux.sys Syslinux 第二階段引導程序
|   |   |   ..............



建立syslinux.cfg配置文件

在建立主配置文件之前,考慮到複用。我們把syslinux的配置分爲三個部分:

    1.common.cfg 共用的配置和參數,包括整體標題,菜單的大小,背景顏色等等

    2.syslinux.cfg 主菜單,包括各大類(windows,linux)的菜單指向等

    3.mainmenu.cfg 返回主菜單菜單項,抽取出來爲各大類返回主菜單用


common.cfg

prompt 1 #總是顯示boot:提示。
menu title System Install UFD 0.91(Test) By steven xie #主菜單的名稱
#font /boot/syslinux/xiezhile.psf #菜單字體
#timeout 100 #表示要等待多長時間自動進入默認的啓動項,單位爲1/10秒。0爲禁用超時,沒有此項默認也爲禁用超時。
menu autoboot Automatic boot in # second(,s)... #可自定義提示信息替換自動啓動的提示
menu tabmsg Press [Tab] to edit options #替換按tab鍵編輯的提示
menu notabmsg Mailto:[email protected] #如果tab鍵禁用,顯示在tabmsg的位置
#menu indent 10 #只能在LABEL標籤之後,對前一項菜單縮進多少個空格
#menu disable   #只能在LABEL標籤之後,禁用這個菜單項,使其無法選中
#menu hidden    #只能在LABEL標籤之後,隱藏這個菜單項,使其不顯示
#menu separator #在菜單上插入一個空行
#menu default   #只能在LABEL標籤之後,表示爲默認的菜單項
#menu begin tagname 
#menu end
#開始,結束一個子菜單。右邊顯示>標記,子菜單可以繼承主菜單的屬性,也可以覆蓋主菜單的屬性,有自己的背景,超時等設置。
#menu goto tagname    #只能在LABEL標籤之後,轉移到指定的菜單項。比如menu goto .top。
#menu exit [tagname]  #只能在LABEL標籤之後,退出到上一級菜單或到tagname的菜單
#menu quit            #只能在LABEL標籤之後,退出菜單系統
#menu start           #只能在menu begin ... menu end之間,定義默認選項
#menu save 
#menu nosave
#是否記錄菜單最後選擇的項目
menu background /boot/syslinux/back800.jpg #在使用vesamenu.c32圖形菜單的時候,設置背景圖片或顏色。支持的圖片格式有PNG,JPEG或LSS16格式
menu resolution 800 600 #定義屏幕的分辨率,如果分辨率不可用,將顯示文本菜單
#控制屏幕上菜單佈局的選項
menu width 80 
menu margin 10
menu passwordmargin 3
menu rows 24
menu tabmsgrow 29
menu cmdlinerow 29
menu endrow -1
menu passwordrow 30
menu timeoutrow 32
menu helpmsgrow 34
menu helpmsgendrow -1
menu hiddenrow -2
menu hshift 8
menu vshift 0
#菜單的相關顏色定義
menu color screen37;44      #ff00ff00 #0000ff00 none
menu color border30;44      #00000000 #00000000 none
menu color title1;36;44    #ffff0000 #1000ff00 std
menu color unsel37;44      #ffffffff #0000ff00 std
menu color hotkey1;37;44    #ffff0000 #00000000 std
menu color sel7;37;40    #ffffffff #20ff8000 std
menu color hotsel1;7;37;40  #ff400000 #20ff8000 std
menu color disabled1;30;44    #ffcccccc #00000000 none
menu color scrollbar30;44      #00000000 #00000000 none
menu color tabmsg31;40      #90ffff00 #00000000 none
menu color cmdmark1;36;40    #c000ffff #00000000 none
menu color cmdline37;40      #c0ffffff #00000000 none
menu color pwdborder30;47      #80ffffff #20ffffff none
menu color pwdheader31;47      #80ff8080 #20ffffff none
menu color pwdentry30;47      #80ffffff #20ffffff none
menu color timeout_msg37;40      #80ffffff #00000000 none
menu color timeout1;37;40    #c0ffffff #00000000 none
menu color help37;40      #ff000000 #00000000 none
menu color msg0737;40      #ffffffff #ff000000 none



mainmenu.cfg #內容只有一項,就是返回主菜單

menu separator  #插入空行
label mainmenu  #syslinux菜單內部名稱,必須爲唯一的
        menu label Return To Main Menu   #只能在LABEL標籤下,顯示在屏幕上的菜單名稱
        kernel /boot/syslinux/vesamenu.c32 #加載的核心。可以是
                LINUX image- Linux kernel image (default)
                BOOT image- Bootstrap program (.bs, .bin)
                BSS image- BSS image (.bss)
                PXE image- PXE Network Bootstrap Program (.0)
                FDIMAGE image        - Floppy disk image (.img)
                COM32 image- COM32 program (.c32)
                CONFIG image        - New configuration file
        append ~  #添加一個或多個核心命令行選項,此處~是指主配置文件



syslinux.cfg #主配置文件

ui /boot/syslinux/vesamenu.c32 #選擇UI模塊是用圖形菜單(vesamenu.c32)還是文本菜單(menu.c32)
default windowsinstall         #定義默認菜單項
onerror /boot/syslinux/menu.c32 /boot/syslinux/syslinux.cfg #當發生錯誤(比如未找到內核鏡像文件)時運行定義的命令
include /boot/config/common.cfg #插入公用配置文件
menu master passwd xiele #定義一個主密碼,在用戶進入命令行編輯時必須輸入(按下[Tab]或[Esc])
menu passprompt Please Input Password #定義密碼提示信息
#F1 /boot.msg
#F2 /syslinux.cfg
#F3 /linux/linux.cfg
F4 /help/xperror.txt 
F5 /help/pciid.txt
按下相應快捷鍵提供一個全屏的幫助信息,可添加自定義背景(F1-F12 textfile [background])
下面統一爲定義菜單項和附加相應的配置文件
#-------------------------------hp--------------------------------------------
LABEL hpinstall
MENU LABEL ^HP SmartStart CDROM
KERNEL /boot/syslinux/vesamenu.c32
APPEND /boot/config/hp.cfg /boot/config/mainmenu.cfg #附加hp.cfg 和 mainmenu.cfg
menu separator
#-------------------------------linux-----------------------------------------
LABEL linuxinstall
MENU LABEL ^Linux System Install
KERNEL /boot/syslinux/vesamenu.c32
APPEND /boot/config/linux.cfg /boot/config/mainmenu.cfg #附加linux.cfg 和 mainmenu.cfg 
menu separator
#-------------------------------windows----------------------------------------
LABEL windowsinstall
MENU LABEL ^Windows System Install
KERNEL /boot/syslinux/vesamenu.c32
APPEND /boot/config/windows.cfg /boot/config/mainmenu.cfg #附加windows.cfg 和 mainmenu.cfg
menu separator
#-------------------------------vmware esx--------------------------------------
LABEL vmwareinstall
MENU LABEL ^VMware ESX And ESXi Install
KERNEL /boot/syslinux/vesamenu.c32
APPEND /boot/config/vmware.cfg /boot/config/mainmenu.cfg #附加vmware.cfg 和 mainmenu.cfg
menu separator
#-------------------------------tools-----------------------------------------
label tools
menu label ^Tools
kernel /boot/syslinux/vesamenu.c32
append /boot/config/tools.cfg /boot/config/mainmenu.cfg #附加tools.cfg 和 mainmenu.cfg
menu separator
#-------------------------------my small system--------------------------------
label mytools
menu label ^Small Live System
kernel /boot/syslinux/vesamenu.c32
append /boot/config/livelinux.cfg /boot/config/mainmenu.cfg #附加livelinux.cfg 和 mainmenu.cfg
menu separator
#-------------------------------common--------------------------------------------
#隱藏的grub4dos進入項,測試用
label grub4dos
menu label grub4dos
menu hide 
boot /boot/grub/grldr
#自定義一個分隔條,主要是爲了好看
label separator
menu label ----------------------------------------
menu disable
#調用syslinux的內存測試模塊
label memtest86
menu label ^MemTest 86+ 4.2
linux /boot/syslinux/memtest.bin
#調用syslinux的硬件檢測模塊
label hdt
menu label ^Infomation Of HardWare 
com32 /boot/syslinux/hdt.c32
#調用syslinux的重啓模塊
label reboot
menu label ^Reboot
com32 /boot/syslinux/reboot.c32
#調用syslinux的關機模塊
label poweroff
menu label ^Power Off
com32 /boot/syslinux/poweroff.c32
#從本地硬盤啓動,不一定百分百成功。有可能還是從U盤啓動。
LABEL hddboot
menu label ^Boot From 1st Hard Disk
kernel /boot/grub/grub.exe
append --config-file="checkrange 0x80 read 0x8280 && map (hd1) (hd0);checkrange 0x80 read 0x8280 && map --hook;chainloader (hd0)+1"


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章