之前重新编译过内核版本,然后就照着之前的路子编译新的内核Linux kernel 4.0.5,在官网下载稳定的内核版本,同时解压在/usr/src/文件夹下面,然后配置.config文件,然后执行make 操作。
执行过程中出现如下错误:
arch/x86/kvm/mmu.c: In function ?.vm_mmu_pte_write?.
arch/x86/kvm/mmu.c:4219: error: unknown field ?.r0_wp?.specified in initializer
arch/x86/kvm/mmu.c:4220: error: unknown field ?.r4_pae?.specified in initializer
arch/x86/kvm/mmu.c:4220: warning: excess elements in union initializer
arch/x86/kvm/mmu.c:4220: warning: (near initialization for ?.anonymous)?.
arch/x86/kvm/mmu.c:4221: error: unknown field ?.xe?.specified in initializer
arch/x86/kvm/mmu.c:4221: warning: excess elements in union initializer
arch/x86/kvm/mmu.c:4221: warning: (near initialization for ?.anonymous)?.
arch/x86/kvm/mmu.c:4222: error: unknown field ?.mep_andnot_wp?.specified in initializer
arch/x86/kvm/mmu.c:4222: warning: excess elements in union initializer
arch/x86/kvm/mmu.c:4222: warning: (near initialization for ?.anonymous)?.
arch/x86/kvm/mmu.c:4223: error: unknown field ?.map_andnot_wp?.specified in initializer
arch/x86/kvm/mmu.c:4223: warning: excess elements in union initializer
arch/x86/kvm/mmu.c:4223: warning: (near initialization for ?.anonymous)?.
make[2]: *** [arch/x86/kvm/mmu.o] Error 1
make[2]: *** Waiting for unfinished jobs....
arch/x86/kvm/emulate.c: In function ?._do_insn_fetch_bytes?.
arch/x86/kvm/emulate.c:793: warning: ?.inear?.may be used uninitialized in this function
make[1]: *** [arch/x86/kvm] Error 2
make[1]: *** Waiting for unfinished jobs....
make: *** [arch/x86] Error 2
make: *** Waiting for unfinished jobs....
然后查找很多文档也没有找到相关信息。但是看到很多升级最新内核的操作系统版本都很高,于是想是否跟编译器有关系呢。于是升级了GCC的版本,再次编译内核。结果妥妥地,成功了。
记录一下学到的新编译方法:
make -j8 bzImage //编译内核启动镜像 -j是多个线程并行执行,8表示可支持的并行度为8
make -j8 modules //编译模块
make -j8 modules_install //安装模块
make install //安装内核
开了多线程编译确实快很多,要不还得等2个小时左右,这个很快就编译好了。安装完成后,查看grub.conf文件中是否多了新安装的版本。
将default设置为0,这样可以重启后将进入第一个内核系统,即4.0.5
重启进入系统查看内核版本信息:uname -r