升级内核报错。
各位大牛你们好
使用的是centos 6.7 内核版本为:Linux Nginx-A 2.6.32-573.7.1.el6.x86_64
为了学习IPtables,与7层协议,需要做的内核支持。
需给内核打补丁支持7层协议,netfilter-layer7-v2.22后期没有人开始与维护。现在只能支持到 2.6.28的版本。
然后准备升级内核(应该说是降低内核版本),
使用make meunconfig 只能选择7层协议的支持。
进行MAKE时,出现如下报错。
# make
CHK include/linux/version.h
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-x86
CALL scripts/checksyscalls.sh
CHK include/linux/compile.h
dnsdomainname: Unknown host
AS arch/x86/xen/xen-asm_64.o
arch/x86/xen/xen-asm_64.S: Assembler messages:
arch/x86/xen/xen-asm_64.S:48: Error: suffix or operands invalid for `mov'
arch/x86/xen/xen-asm_64.S:55: Error: suffix or operands invalid for `test'
arch/x86/xen/xen-asm_64.S:72: Error: suffix or operands invalid for `mov'
arch/x86/xen/xen-asm_64.S:90: Error: suffix or operands invalid for `test'
arch/x86/xen/xen-asm_64.S:110: Error: suffix or operands invalid for `setz'
arch/x86/xen/xen-asm_64.S:116: Error: suffix or operands invalid for `cmp'
make: *** Error 1
make: *** Error 2
到网上搜索了好久,给的解决方法都测试了。这个错误还是存在
方法1.修改vi /usr/src/linux-2.6.28.10/arch/x86/kernel/entry_64.S
ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs)
CFI_STARTPROC
/* Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will
see the correct pointer to the pt_regs */
movq %rdi, %rsp # we don't return, adjust the stack frame
CFI_ENDPROC
CFI_DEFAULT_STACK
11: incl %gs:pda_irqcount
movq %rsp,%rbp
CFI_DEF_CFA_REGISTER rbp
cmovzq %gs:pda_irqstackptr,%rsp
pushq %rbp # backlink for old unwinder
call xen_evtchn_do_upcall
popq %rsp
CFI_DEF_CFA_REGISTER rsp
decl %gs:pda_irqcount
jmperror_exit
CFI_ENDPROC
END(do_hypervisor_callback) >>修改为:END(xen_do_hypervisor_callback)
错误依旧存在。。
在线等待解决方法,多谢各位大牛帮助。。。 回复 1# xjlsky
真没有人知道吗?
自己顶起来了!!!
内核太老了。如果不需要xen, 就把它给关了吧。
看了一下,他们最新版本可以在2.6.35上运行。
v2.23 - Updated for Linux 2.6.35 and up.New API changes were
introduced in the Kernel release 2.6.35 and some (specifically
to xt_match struct found in linux/netfilter/x_tables.h), affected
l7-filter.Patch by Huascar Tejeda.
见:https://github.com/l7-filter/netfilter-layer7 不打layer7的补丁能直接编译2.6.28的内核么?
去修改entry.S有点奇怪,会不会是gcc的版本变化导致的(例如高版本对某些语法要求的更严格了,虽然可能性不大)?
报错的那几句汇编是什么样子?
不过最直接的方法,还是如版主建议的,去掉xen。
页:
[1]