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 つのダッシュ ( ) の意味は何ですか?

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 とカーネルがロードされる場合があります。これらは「マルチブート」と呼ばれるシステムを使用します。これは両方をロードし、それぞれに独自のコマンド ラインを提供します。これにより、Xen のコマンドと Linux のコマンドを渡すことができます。初期 RAM ディスクなど、別のものをロードするために別のステージを渡すこともできます。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 とファミリでは、作業の分担が異なります。すべての状況を処理しなければならない 1 つの巨大なブートローダーではなく、多くの異なる部分を持つ 2 つのレイヤーがあります。一番上には、システムの起動を認識するコア ブート ローダーがあります (つまり、 syslinuxは BIOS が FAT ファイルシステム上のファイルで起動することを認識し、pxelinuxはネットワーク経由で何かをロードすることを認識し、isolinuxは CD-ROM からファイルをロードすることを認識します、など)。 Extlinuxは、Ext2、Ext3、Ext4、または BTRFS ファイルシステムから起動する方法を知っているものです。

その他の一般的な機能は、「comboot」モジュールとして実装され、任意のブート ローダーにプラグインできます。例えば:

  • マルチブート ( mboot.c32 )
  • Linux カーネルを直接ロードする ( linux.c32 )
  • メニューのサポート ( menu.c32 )
  • Lua インタープリター ( l​​ua.c32 )
  • ハードウェア検出ツール ( hdt.c32 )
  • CPU フラグに基づく代替ブート ( ifcpu.c32 )

マルチブートの場合、マルチブートを実装する mboot.c32 モジュールをロードします。Grub やファミリ (複数のコマンド ラインを認識している) とは異なり、syslinux ではすべてのモジュールとそのコマンドラインを 1 つのコマンドラインに含める必要があります。-- は他のプログラムで引数区切りとしてよく使用されるため、 --- を使用してモジュールを区切ることにしました。

この場合、Xen にはマルチブートが必要です。これには、Xen ハイパーバイザー カーネルと、最初の特権ゲストとして実行される Linux カーネルのコマンド ラインを分離する構文が必要です。

于 2012-08-13T22:34:24.913 に答える