為Linux用ISO制作U盤啟動及基本原理


制作成功后的基本最簡文件夾文件圖


一、系統的基本引導流程:

首先系統要引導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 quiet
label是標簽。類似於grub的title 。

kernel項代表要載入的內核。append是后綴參數,相當於為了好看換行的作用。initrd=initrd.img是定義內核的掛在器是initrd.img,后面參數inst.stage2=hd:LABEL=CENTOS quiet 就是載入的root路徑。inst.stage2是指載入安裝程序文件的路徑。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的檢測工具。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM