6

我正在尝试添加一个开关以将 linux 内核日志发送到 XenServer6 上的串行控制台。

可以在 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 crashkernel=64M@32M 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 crashkernel=64M@32M --- /boot/vmlinuz-2.6-xen root=LABEL=root-tfnnfzfp ro console=tty0 xencons=hvc console=hvc0 --- /boot/initrd-2.6-xen.img

---命令行中的三个破折号 ( ) 是什么意思?

是加载 3 个引导文件吗?

4

1 回答 1

7

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>

或者在 Grub 中:

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>

或者在 Grub 中:

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”模块,可以插入任何引导加载程序。例如:

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

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

于 2012-08-13T22:34:24.913 回答