关于linux内核命令行开关的三重破折号

问题描述:

我正在尝试添加一个开关,以将Linux内核日志发送到XenServer6上的串行控制台。关于linux内核命令行开关的三重破折号

内核命令选项可以在EXTLinux配置文件(/boot/extlinux.conf)上编辑。

下面是摘录:

serial 1 115200 
default xe 
prompt 1 
timeout 50 

label xe 
    # XenServer 
    kernel mboot.c32 
    append /boot/xen.gz mem=1024G dom0_max_vcpus=4 dom0_mem=752M lowmem_emergency_pool=1M [email protected] console= vga=mode-0x0311 --- /boot/vmlinuz-2.6-xen root=LABEL=root-tfnnfzfp ro xencons=hvc com2=115200,8n1 console=com2 console=hvc0 console=tty0 quiet vga=785 splash --- /boot/initrd-2.6-xen.img 

label xe-serial 
    # XenServer (Serial) 
    kernel mboot.c32 
    append /boot/xen.gz com1=115200,8n1 console=com1,vga mem=1024G dom0_max_vcpus=4 dom0_mem=752M lowmem_emergency_pool=1M [email protected] --- /boot/vmlinuz-2.6-xen root=LABEL=root-tfnnfzfp ro console=tty0 xencons=hvc console=hvc0 --- /boot/initrd-2.6-xen.img 

什么是命令行上翻三番破折号(---)的含义是什么?

它加载3个启动文件吗?

TL; DR是的。 ExtLinux必须加载Xen和Linux内核。它使用mboot.c32来做到这一点。 ---将Xen映像路径及其命令行与Linux映像路径及其命令行分开。

这只是ExtLinux(实际上,SysLinux系列中的所有引导加载程序)实现多引导的方式,这是加载Xen所必需的。

大多数简单的引导配置只会加载一个内核。有一种方式是引导加载程序将命令行写入您期望的地方。在SYSLINUX风格:

label Simple 
    kernel linux.c32 
    append <linux kernel filename> <linux command line> 

或者在蛴螬:

title Simple Boot 
    root (hd0,0) 
    kernel <linux kernel filename> <linux command line> 

更复杂的启动配置可能加载启动Xen和内核。这些系统使用一个名为“multiboot”的系统,该系统加载这两个系统并为它们分配自己的命令行。这可以让你通过Xen命令和Linux命令。你甚至可以通过另一个阶段加载其他的东西,比如初始的ramdisk。在风格的SysLinux:

label Complex 
    kernel mboot.32 
    append <xen kernel filename> <xen command line> --- <linux kernel filename> <kernel command line> --- <initrd filename> 

或者在蛴螬:

label Complex Boot 
kernel <xen kernel filename> <xen command line> 
module <linux kernel filename> <linux command line> 
module <initrd filename> 

如果你使用GRUB,它实际上在自己的节指定了这些。 Grub可以作为一种超级引导加载程序,因为它可以加载大量小模块以实现诸如多引导(或不同文件系统等)的功能。在那种情况下,Grub在你不知道的情况下会大部分都会神奇的。

Syslinux和家庭分工不同。它不是有一个必须处理所有情况的巨型引导装载程序,而是有两个层,它们有许多不同的部分。在最上面,他们有知道系统引导的核心引导加载程序(即syslinux知道用FAT文件系统上的文件启动BIOS,pxelinux知道通过网络加载东西,isolinux知道从CD-ROM等加载文件)。 Extlinux就是知道如何从Ext2,Ext3,Ext4或BTRFS文件系统启动的人。

其他常用功能是作为“comboot”模块实现的,它可以插入任何引导加载程序。例如:

在multiboot的情况下,它们加载mboot.c32模块,该模块实现多引导。与Grub和家族(了解多个命令行)不同,syslinux必须在单个命令行中包含所有模块及其命令行。由于 - 经常用作其他程序中的参数分隔符,因此他们选择使用---来分隔模块。

在这种情况下,Xen需要多引导,这需要使用语法来分隔Xen虚拟机管理程序内核和作为其初始特权guest虚拟机运行的Linux内核的命令行。