syslinux

syslinux是一個功能強大的引導載入程式,而且兼容各種介質。它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。它的安裝很簡單,一旦安裝syslinux好之後,sysLinux啟動盤就可以引導各種基於DOS的工具,以及MS-DOS/Windows或者任何其它作業系統。不僅支持採用BIOS結構的主機板,而且從6.0版也開始支持採用EFI結構的新型主機板。

基本介紹

  • 中文名:syslinux
  • 兼容性:強
  • 功能:強大
  • 例如:Floppy:(a:為軟碟機)
建啟動盤,NT/2K/XP,DOS,Linux,相關選項,適用所有,Windows,Linux,配置設定,參數命令,虛擬磁碟,

建啟動盤

安裝syslinux的磁碟將改變磁碟上的引導扇區,並複製ldlinux.sys檔案到其根目錄(或者複製到指定的目錄)下。

NT/2K/XP

語法:
syslinux.exe [-sfmar][-d directory] <drive>: [bootsecfile]
例如:
Floppy:(a:為軟碟機)
syslinux.exe a:
硬碟/可移動磁碟等:(z:為盤符)
syslinux.exe -m -a -d /boot/syslinux z:
【將引導檔案複製到其分區的/boot/syslinux目錄下,注意:/boot/syslinux目錄必須事先建好。】
*上例中的啟動選單配置檔案(syslinux.cfg)要在/boot/syslinux目錄下。*注意:在NT/2K中你可能會收到錯誤的信息,你只要選擇"Ignore"(忽略)就可以正確完成命令了。

DOS

語法:
syslinux.exe [-sfmar][-d directory] <drive>: [bootsecfile]

Linux

語法:
syslinux [-sfr][-d directory][-o offset] <DeviceOrImage>
例如:
syslinux /dev/fd0
syslinux /設備/第一個軟碟機
【將syslinux的引導代碼寫入第一個軟碟機】

相關選項

適用所有

-s
Safe, slow, stupid:這個參數可以提高syslinux的引導兼容性。此參數可以讓syslinux工作在一些非常規的BIOS上,有些機器上-s的選項(參數)是必需的,也就是說這是一個安全的選項(參數),建議一般要用上這個選項(參數)。
-f
Force installing:強制寫入syslinux的引導代碼,這是一個可選的選項(參數),如果你發現不能寫入syslinux時,就可以使用這個選項(參數),但一般建議:寫入本地磁碟時加上這個選項(參數)。
-r
Raid mode:RAID 模式。這是一個可選的選項(參數),如果啟動失敗,告訴BIOS啟動順序(通常是下一個硬碟),而不是給出錯誤信息後停止,這個一個RAID模式的選項(參數),一般來說可以不使用。

Windows

-m
MBR:將syslinux引導代碼寫入到驅動器的MBR啟動扇區。這是一個可選的選項(參數),建議使用此選項(參數),如果之前有將GURB4DOS寫入磁碟的MBR中,那么你必須使用-m選項(參數),否則將寫入失敗。
之前有將“grub for dos”寫入過MBR,而之後將syslinux引導代碼寫入MBR時,又沒有使用-m選項(參數),則不能將syslinux引導代碼寫入MBR。
示例:syslinux.exe -s -f -m -a -d /boot/syslinux x:(x: 為盤符)
-a
Active:激活指定分區為活動分區,這是一個可選的選項(參數),當你不確定你所指定的分區是否是活動分區時可以加上這個選項(參數),實際上,就算你所指定的分區已經是活動的主分區了,也可以加上這個選項(參數)。(=bootable)

Linux

-o
指定檔案系統映像檔案中的位元組偏移量,它必須是一個可使用的磁碟映像檔案。

配置設定

所有的syslinux默認配置都可以在一個名為syslinux.cfg的檔案裡面更改。
syslinux會在下列位置搜尋syslinux.cfg配置檔案:
/boot/syslinux/syslinux.cfg
/syslinux/syslinux.cfg
/syslinux.cfg
(以上為執行的優先順序)
syslinux.cfg檔案必須是UNIX或DOS格式的文本檔案。
下面是一個簡單的例子,我們來看一下syslinux.cfg檔案怎樣引導一個linux核心
DEFAULT linux
LABEL linux
SAY Now booting the kernel from SYSLINUX...
KERNEL vmlinuz.img
APPEND ro root=/dev/sda1 initrd=initrd.img
SYSLINUX與LILO是不同的,下面是一個LILO的例子:
image = mykernel
label = mylabel
append = "myoptions"
而SYSLINUX是這樣寫的:
label mylabel
kernel mykernel
append myoptions
下面我們一起看一下SYSLINUX中的選項:
註:以下所有選項適用於PXELINUX,ISOLINUX和EXTLINUX以及SYSLINUX,除非另有說明。
# comment注釋行
INCLUDE filename在此處插入其他檔案的內容。
LABEL command【標籤命令】標籤命令,主要是用於描述syslinu.cfg檔案中的命令的,自己看得懂就可以了,因為這個標籤是不會在啟動選單中看到的。
MENU LABEL【選單標籤】這個是在啟動選單中看到的標題項,所以這個一定要寫個有意義的描述
例如:LABEL maxdos
MENU LABEL [01] -- Run MaxDos
kernel /boot/syslinux/memdisk
append initrd=/boot/imgs/maxdos.img
KERNEL file【核心檔案】這個就是SYSLINUX指向的啟動檔案,這個“kernel”不一定是Linux kernel【Linux核心】,它可以是啟動扇區,或者COMBOOT檔案。
公認的檔案擴展名(不區分大小寫)
擴展名英文說明中文說明
none or other
Linux kernel image
Linux核心映像
.0
PXE bootstrap program (NBP) [PXELINUX only]
PXE 啟動引導程式(NBP)
.bin
"CD boot sector" [ISOLINUX only]
“光碟引導扇區”
.bs
Boot sector [SYSLINUX only]
“磁碟引導扇區”
.bss
Boot sector, DOS superblock will be patched in [SYSLINUX only]
“磁碟引導扇區”,
.c32
COM32 image (32-bit COMBOOT)
COM32映像檔案
.cbt
COMBOOT image (not runnable from DOS)
COMBOOT映像檔案
.com
COMBOOT image (runnable from DOS)
COMBOOT映像檔案
.img
Disk image [ISOLINUX only]
磁碟映像檔案
.ima
Floppy image [ISOLINUX only]
軟碟映像檔案
使用這些關鍵字之一而不KERNEL強制檔案類型,與檔案名稱無關。
LINUX image
你可以直接使用這個,而不是使用KERNEL file來啟動一個Linux kernel image【Linux核心映像】。
BOOT image
啟動引導程式(.bs,.bsf,.bin)
BSS image
BSS映像啟動引導程式(.bss)
PXE image
PXE網路啟動引導程式(.0)
FDIMAGE image
軟碟映像(.img,.ima)
COMBOOT image
COMBOOT程式(.com,.cbt)
COM32 image
COM32程式(.c32)
CONFIG image
CONFIG將重新啟動引導程式而使用不同的配置檔案

參數命令

APPEND options
添加一個或多個選項(參數)到 kernel 命令行中,這些選項(參數)可以是手動或者是自動的。該選項(參數)是添加在 kernel 命令行的開始處,通常允許輸入的選項覆蓋。這點與LILO的“append”選項(參數)是相同的。
APPEND-
簡單點說,不附加任何命令,可用於覆蓋全局的APPEND。
IPAPPEND flag_val 【只適用於PXELINUX】
這個IPAPPEND選項(參數)只適用於PXELINUX,這個“flag_val”為下列選項(參數):
1、下列的選項(參數)將以如下格式添加到核心命令行:
ip=<client-ip>:<boot-server-ip>:<gw-ip>:<netmask>
……以上基於DHCP/BOOTP或者PXE的啟動伺服器。
但不推薦使用此選項(參數),使用IP=DHCP的核心命令行更為合適。
2、下列的選項(參數)將以如下格式添加到核心命令行:
BOOTIF=<hardware-address-of-boot-interface>
這在PXELINUX的文檔中有相關的介紹,這將決定臨時檔案系統程式將從哪一個Interface【連線埠】啟動系統。
LABEL label KERNEL image APPEND options... IPAPPEND flag_val【只適用於PXELINUX】
……以上表明,如果“LABEL”作為核心啟動,其引導的“image”和指定的 APPEND 和 IPAPPEND 選項將取代配置檔案中的全局(在第一個LABEL命令之前)命令。“image”默認值與“label”相同,而且如果沒有定義 APPEND,則使用全局命令(如果存在)。
LOCALBOOT type【ISOLINUX,PXELINUX】
在PXELINUX,指定“LOCALBOOT 0”代替一個“KERNEL”選項(參數),這個意味著調用此特定LABEL將會引導本地磁碟,而不是一個“KERNEL”。
參數0表示執行正常啟動,參數4將執行一個本地啟動和通用網路驅動器接口(UNDI)——常駐記憶體。
最後,參數5將執行一個本地啟動與整個PXE的堆疊,包括UNDI驅動器,也是常駐記憶體
所有其它的值都是未定義的。
如果你不知道什麼是UNDI和PXE堆疊,不要緊——你只要指定參數0就可以了。
INITRD initrd_file
從3.71版本開始,一個initrd可以指定一個單獨的語句,(INITRD)而不是作為APPEND語句的一部分;這個功能添加“initrd=initrd_file”到核心命令行中。
它支持以逗號分隔的多個檔案名稱,這主要是有益於initramfs【一個新的initial RAM disks模型】,它可以支持多個單獨的cpio或cpio.gz壓縮檔案

虛擬磁碟

CPIO是Linux下的一種新的核心啟動鏡像所附帶的虛擬磁碟格式。他與傳統的Image格式比較而言有一些改進,主要體現在打包速度和啟動引導方式上。
cpio 可以從 cpio 或 tar 格式的歸檔包中存入和讀取檔案, 歸檔包是一種包含其他檔案和有關信息的檔案。有關信息包括:檔案名稱, 屬主, 時標(timestamp), 和訪問許可權。歸檔包可以是磁碟上的 其他檔案, 也可以是磁帶或管道。
Note: all files except the last one are zero-padded to a 4K page boundary. This should not affect initramfs.
DEFAULT command【默認命令】
SYSLINUX啟動時默認執行的命令項——當用戶沒有進行選擇時。
如果沒有配置檔案存在,或在配置檔案沒有設定默認項時,默認是啟動名為“linux”的核心,不會添加其它的選項(參數)。
例如:可以用於設定所要載入的選單模組default vesamenu.c32
UI module options【用戶界面模組選項(參數)】
用於設定選單模組(通常是“menu.c32”或“vesamenu.c32”),也就是說這是一個命令行界面(選單指令),它可以覆蓋DEFAULT和PROMPT指令。
PROMPT flag_val
如果flag_val為0,啟動將顯示:“提示符”只有在Shift或Alt鍵被按下,或Caps Lock鍵或Scroll lock鍵設定(這是默認值)。如果flag_val是1,啟動時將始終:“提示符”。
NOESCAPE flag_val
如果flag_val設定為1,那么將忽略Shift/Alt/Caps Lock/Scroll Lock退出,將強制使用此默認選擇項目啟動(也同時忽略PROMPT 0)。
NOCOMPLETE flag_val
如果flag_val設定為1,那么啟動時將不會在顯示標籤中提示Tab鍵。
IMPLICIT flag_val
如果flag_val為設定為0,將不會載入的kernel image【核心映像】,除非它已在LABEL聲明中明確指定。The default is 1【默認值為1】。
ALLOWOPTIONS flag_val
如果flag_val為0,用戶將不能指定核心命令行的任何選項(參數)。唯一可用是在APPEND聲明中所指定的選項。The default is 1。
TIMEOUT timeout【逾時】
在執行默認啟動選單項前的等待時間。
如果設定為0,那么將將完全禁用timeout(始終等待用戶選擇),這也是默認的設定。
其單位為:1/10秒。
以下timeout為30秒:
timeout 300
註:最大的值為35996,建議設定為小於一小時。
TOTALTIMEOUT timeout
不會被用戶的輸入取消,用於處理串口故障或類似 "用戶離開" 的狀況。
默認值是 0。
# 等待5s除非用戶輸入,但15m後一定啟動
TIMEOUT 50TOTALTIMEOUT 9000
ONTIMEOUT kernel options...
timeout 後調用的命令。一般與 DEFAULT 調用相同。如果指定,DEFAULT只適用於用戶按<Enter>啟動時。
ONERROR kernel options...
如果一個核心映像沒有找到(不存在或設定了IMPLICIT),運行指定的命令。
如果ONERROR指令為:
ONERROR xyzzy plugh
並且用戶輸入的命令行是:
foo bar baz
那么SYSLINUX將執行:
xyzzy plugh foo bar baz
SERIAL port 【[baudrate] flowcontrol】
開啟一個串口作為控制台,“port【連線埠】”是一個數字(0 = /dev/ttyS0 = COM1,etc。)或者I/O連線埠地址(例如:0x3F8);如果省略“baudrate【波特率】”,波特率默認為9600 bps。串列的硬編碼是 8 bits,無奇偶校驗,1個停止位。
下列為“flowcontrol【流控制】”的 bits 組合:
0x001 - Assert DTR
0x002 - Assert RTS
0x010 - Wait for CTS assertion
0x020 - Wait for DSR assertion
0x040 - Wait for RI assertion
0x080 - Wait for DCD assertion
0x100 - Ignore input unless CTS asserted
0x200 - Ignore input unless DSR asserted
0x400 - Ignore input unless RI asserted
0x800 - Ignore input unless DCD asserted
所有其它的 bits 給予保留。
典型值為:
0 - No flow control (default)
0x303 - Null modem cable detect
0x013 - RTS/CTS flow control
0x813 - RTS/CTS flow control,modem input
0x023 - DTR/DSR flow control
0x083 - DTR/DCD flow control
作為SERIA【串口】指令,它必須保證工作正常,它在配置檔案中應該是“First”指令。
CONSOLE flag_val
如果flag_val為0,禁止輸出到普通視頻終端。
如果flag_val為1,允許輸出到視頻終端(默認值)。
有些BIOS因為這個選項(參數)會令視頻終端出現異常。
所以該選項(參數)允許你在這些系統上禁用視頻控制台。
FONT filename
在顯示任何輸出之前,裝載.psf格式的字型(除了著作權行,ldlinux.sys本身被載入里就輸出這些)。SYSLINUX只裝載字型到顯示卡。忽略.psf檔案包含的Unicode表。並且只工作於EGA和VGA顯示卡。
註:.psf格式的字型不支持中文。
KBDMAP keymap
裝載一個簡單的鍵盤映射。該重映射使用很簡單(由於這個重映射是基於BIOS的,所以只有標準的美式鍵盤布局才能被映射),不過這至少可以幫助使用QWERTZ和AZERTY鍵盤布局的人(這兩個特殊字元大量用於Linux核心命令行)。
syslinux的還附帶一個名為“kbdmap.c32”的comboot模組檔案,它允許動態地改變鍵盤映射,這樣就可以在syslinux的配置檔案中增加一個鍵盤選擇選單或鍵盤選擇標籤【keyboard-selection menu and/or keyboard-selection labels】。
SAY message
在螢幕上列印Message【信息】。
DISPLAY filename
啟動時在螢幕上顯示指定檔案(如果顯示:則在啟動前:“提示符”顯示內容)。
請參閱下面一節的“DISPLAY file”。
註:如果指定的檔案未找到,那么此選項(參數)將被完全忽略。

相關詞條

熱門詞條

聯絡我們