Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux系統常見問題解答 >> 為Linux手動制作U盤啟動及基本原理

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

日期:2017/1/20 17:40:12      編輯:Linux系統常見問題解答

制作成功後的基本最簡目錄文件圖

\

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

首先系統要引導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是指加載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的檢測工具。

Copyright © Windows教程網 All Rights Reserved