《KVM实战:原理、进阶与性能调优》 —3.3.3 编译KVM

举报
华章计算机 发表于 2019/11/24 21:12:47 2019/11/24
【摘要】 本节书摘来自华章计算机《KVM实战:原理、进阶与性能调优》一书中第3章,第3.3.3节,作者是任永杰 程舟。

3.3.3 编译KVM

在对KVM源代码进行了配置之后,编译KVM就是一件比较容易的事情了。它的编译过程完全是一个普通Linux内核编译的过程,需要经过编译kernel、编译bzImage和编译module等3个步骤。编译bzImage这一步不是必需的,在本章示例中,config中使用了initramfs,所以这里需要这个bzImage,用于生成initramfs image。另外,在最新的Linux kernel代码中,根据makefile中的定义可以看出,直接执行“make”或“make all”命令就可以将这里提及的3个步骤全部包括在内。本节是为了更好地展示编译的过程,才将编译的步骤分为这3步来解释。

1)编译kernel的命令为“make vmlinux”,其编译命令和输出如下:

[root@kvm-host kvm]# make vmlinux -j 20

<!- 此处省略数千行编译时的输出信息 ->

    LINK    vmlinux

    LD      vmlinux.o

    MODPOST vmlinux.o

    GEN     .version

    CHK     include/generated/compile.h

    UPD     include/generated/compile.h

    CC      init/version.o

    LD      init/built-in.o

    KSYM    .tmp_kallsyms1.o

    KSYM    .tmp_kallsyms2.o

    LD      vmlinux #这里就是编译、链接后生成了启动所需的Linux kernel文件

    SORTEX  vmlinux

    SYSMAP  System.map

其中,编译命令中的“-j”参数并非必需的,它是让make工具用多任务(job)来编译。比如,上面命令中提到的“-j 20”,会让make工具最多创建20个GCC进程,同时来执行编译任务。在一个比较空闲的系统上,有一个推荐值作为-j参数的值,即大约为2倍于系统上的CPU的core的数量(CPU超线程也算core)。如果-j后面不跟数字,则make会根据现在系统中的CPU core的数量自动安排任务数(通常比core的数量略多一点)。

2)执行编译bzImage的命令“make bzImage”,其输出如下:

[root@kvm-host kvm]# make bzImage

    CHK     include/config/kernel.release

    CHK     include/generated/uapi/linux/version.h

    CHK     include/generated/utsrelease.h

<!- 此处省略数十行编译时的输出信息 ->

    LD      arch/x86/boot/setup.elf

    OBJCOPY arch/x86/boot/setup.bin

    OBJCOPY arch/x86/boot/vmlinux.bin

    HOSTCC  arch/x86/boot/tools/build

    BUILD   arch/x86/boot/bzImage #这里生成了我们需要的bzImage文件

Setup is 17276 bytes (padded to 17408 bytes).

System is 5662 kB

CRC 3efff614

Kernel: arch/x86/boot/bzImage is ready  (#2)

3)编译kernel和bzImage之后编译内核的模块,命令为“make modules”,其命令行输出如下:

[root@kvm-host kvm]# make modules -j 20

<!- 此处省略数千行编译时的输出信息 ->

    IHEX2FW firmware/emi26/loader.fw

    IHEX2FW firmware/emi26/firmware.fw

    IHEX2FW firmware/emi26/bitstream.fw

    IHEX2FW firmware/emi62/loader.fw

    IHEX2FW firmware/emi62/bitstream.fw

    IHEX2FW firmware/emi62/spdif.fw

    IHEX2FW firmware/emi62/midi.fw

    H16TOFW firmware/edgeport/boot2.fw

    H16TOFW firmware/edgeport/boot.fw

    H16TOFW firmware/edgeport/down.fw

    H16TOFW firmware/edgeport/down2.fw

    IHEX2FW firmware/whiteheat_loader.fw

    IHEX2FW firmware/whiteheat.fw

    IHEX2FW firmware/keyspan_pda/keyspan_pda.fw

    IHEX2FW firmware/keyspan_pda/xircom_pgs.fw


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。