SYSLINUX 中文簡介(怎樣使用)

SYSLINUX 中文簡介(怎樣使用) 1


什麼是syslinux?

本文來自於SYSLINUX Wiki

由於本人才疏學淺,其中難免錯誤,煩請各位多多指正。

歡迎轉載本文,但請註明出處。

簡單一點來說,是一個功能強大的引導加載程序,而且兼容各種介質。更加確切地說:SYSLINUX是一個小型的Linux操作系統,它的目的是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啓動盤。

它的安裝很簡單,一旦安裝syslinux好之後,sysLinux啓動盤就可以引導各種基於DOS的工具,以及MS-DOS/Windows或者任何其它操作系統。

 

syslinux的相關選項(Options)

以下常用的選項(參數),適用於syslinux的所有版本

  • -s

  • Safe, solw, stupid:這個參數可以提高syslinux的引導兼容性。此參數可以讓syslinux工作在一些非常規的BOIS上,有些機器上-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的磁盤將改變磁盤上的引導扇區,並複製ldlinux.sys文件到其根目錄(或者複製到指定的目錄)下。

注意:SYSLINUX不支持NTFS文件系統,所以磁盤必須是FAT(FAT16/FAT32)文件系統。


 

 

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的引導代碼寫入第一個軟驅】


 

怎麼配置我的syslinux?

所有的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文件。

 

以下所列出的爲公認的文件擴展名(不區分大小寫):

 

extensionsexplain
none or otherLinux kernel image
.0PXE bootstrap program (NBP) [PXELINUX only]
.bin"CD boot sector" [ISOLINUX only]
.bsBoot sector [SYSLINUX only]
.bssBoot sector, DOS superblock will be patched in [SYSLINUX only]
.c32COM32 image (32-bit COMBOOT)
.cbtCOMBOOT image (not runnable from DOS)
.comCOMBOOT image (runnable from DOS)
.imgDisk image [ISOLINUX only]
.imaFloppy image [ISOLINUX only]


 

擴展名說明
沒有或其它Linux內核映像
.0PXE 啓動引導程序(NBP)【只用於PXELINUX】
.bin“光盤引導扇區”【只用於ISOLINUX】
.bs“磁盤引導扇區”【只用於SYSLINUX】,例如:bsf,
.bss“磁盤引導扇區”, 用在DOS superblock上,【只用於SYSLINUX】
.c32COM32映像文件【32-bit COMBOOT】
.cbtCOMBOOT映像文件【不能運行於DOS】
.comCOMBOOT映像文件【可運行於DOS】
.img磁盤映像文件【實際上可用於ISOLINUX、SYSLINUX、PXELINUX】
.ima軟盤映像文件【實際上可用於ISOLINUX、SYSLINUX、PXELINUX】

使用這些關鍵字之一而不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簡介【摘自:維基百科】

  • 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 50
TOTALTIMEOUT 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”。

注:如果指定的文件未找到,那麼此選項(參數)將被完全忽略。


 

F[1-12] filename【F1功能鍵到F12功能鍵】

基本書寫格式:

F1 filename
F2 filename
...etc【等等】...
F9 filename
F10 filename
F11 filename
F12 filename
在啓動時按下相應的【F1-F12】功能鍵,將在屏幕上顯示指定的文件。這個可用於實現開機前在線幫助。

請參閱下面一節的“DISPLAY file”。

在使用serial console【串行控制檯】時,可以按<Ctrl+F1-F12>轉到幫助屏幕:

 


<Ctrl-F><1>to get the F1 screen【轉到“F1”屏幕/以下類似】
<Ctrl-F><2>to get the F2 screen
...etc【等等】...
<Ctrl-F><9>to get the F9 screen
<Ctrl-F><A>【or <Ctrl-F><0>】to get the F10 screen
<Ctrl-F><B>to get the F11 screen
<Ctrl-F><B>to get the F11 screen
<Ctrl-F><C>to get the F12 screen

在配置文件中空行和註釋行【#號空格後的內容】將被忽略。


 

Can SYSLINUX Handle Large Kernels?【SYSLINUX能處理大內核嗎?】

這個版本的SYSLINUX(syslinux 3.83)已經支持大內核了(bzimage 格式),取消了對bzimage格式內核的500K大小限制。能自動檢測和透明處理用戶的bzimage格式內核。

這個版本的SYSLINUX還支持啓動時加載RAMDISK(initrd),initrd是從DOS文件加載的,其選項(參數)這:“initrd=filename”(這裏的filename爲initrd的映像文件名,並且這個文件必須在啓動磁盤的根目錄下。)

例如(EXTLINUX):

append ro root=/dev/hda1 initrd=/boot/initrd.img

爲了兼容bzimage和最近的zimage內核,SYSLINUX 1.30和更高的的版本確定使用ID byte 0x31,PXELINUX識別使用ID byte 0x32,ISOLINUX using ID byte 0x33,and EXTLINUX using ID byte 0x34,ID byte 0x35-0x3f是預留給SYSLINUX之後版本的衍生工具使用。


 

What is the DISPLAY File Format?【什麼是DISPLAY文件格式?】

DISPLAY 和功能鍵幫助文件是DOS或者UNIX格式的文本文件。
此處,以下特殊代碼將會被解釋:


 

Clear the screen, home the cursor【清屏,重置光標】:

<FF>
<FF> = <Ctrl-L> = ASCII 12

注意:屏幕將被當前顯示色所填充。


 

Set the display colors to the specified background and foreground colors【設置顯示顏色爲指定的背景色和前景色】:

<SI><bg><fg>
<SI> = <Ctrl-0> = ASCII 15

這裏的<bg>和<fg>爲十六進制數,對於標準的PC顯示屬性爲:

 


0 = black【黑色】8 = dark grey【深灰色】
1 = dark blue【深藍色】9 = bright blue【亮藍色】
2 = dark green【深綠色】a = bright green【亮綠色】
3 = dark cyan【暗青色】b = bright cyan【亮青色】
4 = dark red【暗紅色】c = bright red【鮮紅色】
5 = dark purple【暗紫色】d = bright purple【亮紫色】
6 = brown【褐色】e = yellow【黃色】
7 = light grey【淺灰色】f = white【白色】

選擇亮色(8-f)爲背景色,將導致前景中相應的暗色(0-7)閃爍。

在串行控制檯中顏色不可見。

例如:color.txt 文件:

在藍色背景上閃爍黃色

^O9eBlinking Yellow on Blue Background

 


# xxd color.txt
0000000: 0f39 6542 6c69 6e6b 696e 6720 5965 6c6c.9eBlinking Yell
0000010: 6f77 206f 6e20 426c 7565 2042 6163 6b67ow on Blue Backg
0000020: 726f 756e 640around.


 

Display graphic form filename【顯示圖像文件名】:

<CAN>filename<newline>

<CAN> = <Ctrl-X> = ASCII 24

如果當前是VGA顯示,進入圖形模式並顯示指定的圖形文件。該文件格式爲ad hoc格式,稱爲LSS16;所包含的Perl程序“ppmtolss16”可用於生成這樣的圖片。

該圖像文件將被顯示爲640x480 16色模式,一旦進入圖形模式,顯示屬性(由<SI>代碼序列設置)稍有不同,背景色會被忽略,前景色是圖像文件中指定的16種顏色。因此,ppmtolss16允許你指定顏色索引。注意:顏色索引0和7應該注意選擇:0是背景色,7是SYSLINUX自身打印文字的顏色。


 

Return to text mode【返回到文本模式】:

<EM>

<EM> <Ctrl-Y> = ASCII 25

如果當前是圖形模式,則返回到文本模式。

選擇哪一種模式打印消息的一部分:

<DLE>..<ETB>

<Ctrl-P>..<Ctrl-W> = ASCII 16-23

這些代碼可用於選擇那種模式會打印到消息文件的某個部分。任一控制字符選擇特定的實際輸出模式 (文本屏幕、圖形屏幕、串口)。

 


Character【字符】Text【文本】Graph【圖像】Serial【串口】
---------------------------------------------------------------------------------------------------
<DLE> = <Ctrl-P> = ASCII 16NoNoNo
<DC1> = <Ctrl-Q> = ASCII 17YesNoNo
<DC2> = <Ctrl-R> = ASCII 18NoYesNo
<DC3> = <Ctrl-S> = ASCII 19YesYesNo
<DC4> = <Ctrl-T> = ASCII 20NoNoYes
<NAK> = <Ctrl-U> = ASCII 21YesNoYes
<SYN> = <Ctrl-V> = ASCII 22NoYesYes
<ETB> = <Ctrl-W> = ASCII 23YesYesYes

示例:

<DC1>Text mode<DC2>Graphics mode<DC4>Serial port<ETB>

將以控制檯輸入模式輸出。


 

End of file文件終止:

<SUB>

<SUB> = <Ctrl-Z> = ASCII 26

文件終止(DOS 慣例)


 

Beep提示音:

<BEL>

<BEL> = <Ctrl-G> = ASCII 7

揚聲器提示音。


 

引導文件(命令)解釋

以下爲SYSLINUX【ISOLINUX、PXELINUX、EXTLINUX也類似】主要文件的作用及說明:

 


待續……


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