一、系統的基本引導流程:
首先系統要引導isolinux.bin可執行程序,此程序是移動介質上引導用的,isolinux.bin運行成功後會加載其配置文件syslinux.cfg,該文件中定義了vmlinuz和initrd.img的調用方式。vmlinuz是vmlinux的壓縮版,二者都是linux內核。isolinux.bin根據其配置方式中定義的initrd.img的參數傳給vmlinuz即Linux內核並加載內核,然後Linux內核會根據獲得的initrd.img的調用參數調用initrd.img。initrd.img的基本功能就是root路徑掛載器,其存在的意義是省去了不同root路徑硬件下vmlinuz內核的重編譯工作。initrd.img根據調用參數去參數路徑中找系統啟動程序(這裡使用的就是iso的安裝鏡像),系統便啟動起來了。
二、引導盤的基本制作過程:
第一步:提取制作引導鏡像所需的文件,這些文件在Linux安裝盤的isolinux目錄中,這個目錄就是個微型Linux系統。
第二步:編輯isolinux.bin的執行配置文件syslinux.cfg的原文件isolinux.cfg。
default vesamenu.c32 timeout 600這裡定義的默認者是vesamenu.c32c,這個vesamenu.32c的作用就是啟動菜單外觀繪制拓展工具。下面定義的timeout是指用戶選擇時間上限。
label linux menu label ^Install CentOS 7 kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS quiet label check menu label Test this ^media & install CentOS 7 menu default kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS rd.live.check quiet menu separator # insert an empty line # utilities submenu menu begin ^Troubleshooting menu title Troubleshooting label vesa menu indent count 5 menu label Install CentOS 7 in ^basic graphics mode text help Try this option out if you're having trouble installing CentOS 7. endtext kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS xdriver=vesa nomodeset quiet label rescue menu indent count 5 menu label ^Rescue a CentOS system text help If the system will not boot, this lets you access files and edit config files to try to get it booting again. endtext kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS rescue quiet label memtest menu label Run a ^memory test text help If your system is having issues, a problem with your system's memory may be the cause. Use this utility to see if the memory is working correctly. endtext kernel memtest menu separator # insert an empty line label local menu label Boot from ^local drive localboot 0xffff menu separator # insert an empty line menu separator # insert an empty line label returntomain menu label Return to ^main menu menu exit menu end這些是每項菜單的具體定義,即定義了每個菜單對應的調用vmlinuz和initrd.img的方式。
label linux menu label ^Install CentOS 7 kernel vmlinuz append initrd=initrd.img inst.stage2=hd:LABEL=CENTOS quietlabel是標簽,類似於grub的title 。kernel項代表要加載的內核,append是後綴參數,相當於為了好看換行的作用。initrd=initrd.img是定義內核的掛在器是initrd.img,後面參數inst.stage2=hd:LABEL=CENTOS quiet 就是加載的root路徑,inst.stage2是指加載iso的文件,hd:LABEL=CENTOS是指root的路徑在卷標為CENTOS的儲存設備中,即U盤,所以該引導鏡像的名字和U盤卷標必須是CENTOS。
此處如果不想用菜單方式顯示,直接加載安裝文件,可以省去vesamenu.32c 把開頭的default vesamenu.32c改成default linux 即默認加載label linux的定義。
第三步:制作引導鏡像文件CENTOS.iso
修改鏡像文件名字與syslinux.cfg中的root路徑卷標一致。把isolinux.bin設置成引導文件,勾選生成啟動信息表,這個啟動信息表就是最後目錄中的ldlinux.sys啟動信息文件。
第四步:保存該鏡像並通過啟動-》寫入硬盤映像來寫到U盤中。這時候UItral So會自動的把syslinux.cfg文件盒ldlinux.sys文件生成在U盤上,而其他的文件也會復制到U盤上,這時候U盤裡的isolinux.cfg可以刪除掉,最後把安裝系統的鏡像拷到根目錄下。
注:U盤中沒介紹的文件都是一些背景或者其他安裝選項中調用的linux的檢測工具。