加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-kernel – linux内核命令行开关上的三重破解

发布时间:2020-12-14 00:52:20 所属栏目:Linux 来源:网络整理
导读:我正在尝试添加一个开关,将 Linux内核日志发送到XenServer6上的串行控制台. 可以在EXTLinux配置文件(/boot/extlinux.conf)上编辑内核命令选项. 这是一段摘录: serial 1 115200default xeprompt 1timeout 50label xe # XenServer kernel mboot.c32 append /b
我正在尝试添加一个开关,将 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个启动文件?

解决方法

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知道BIOS启动FAT文件系统上的文件,pxelinux知道通过网络加载东西,isolinux知道从CD-ROM加载文件等). Extlinux就是知道如何启动Ext2,Ext3,Ext4或BTRFS文件系统的人.

其他常见功能实现为“comboot”模块,可插入任何引导加载程序.例如:

> multiboot(mboot.c32)
>直接加载Linux内核(linux.c32)
>菜单支持(menu.c32)
> Lua口译员(lua.c32)
>硬件检测工具(hdt.c32)
>基于CPU标志的备用启动(ifcpu.c32)

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

在这种情况下,Xen需要多重引导,这需要使用语法来分离Xen Hypervisor内核和作为其初始特权来宾运行的Linux内核的命令行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读