August 6, 2016
Compiling i686 kernel v2.6.34.1 on x86_64 centos v3.10.0
Want to compile small kernel.
As a first step, as I cannot yet compose the working initrd, I will use the existing pmagic iso which is 2.6.34 for i686 and replace kernel image.
As for package dependencies/toolchain - too many, search for error or ask me in comments.
$ git clone -v git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git $ git branch v2.6.34.1 Then patch something: $ cd linux-stable ; patch -p0 < patch.diff
Patch is below:
diff --git arch/x86/include/asm/ptrace.h arch/x86/include/asm/ptrace.h
index 69a686a..2041a43 100644
--- arch/x86/include/asm/ptrace.h
+++ arch/x86/include/asm/ptrace.h
@@ -131,6 +131,7 @@ struct pt_regs {
#ifdef __KERNEL__
#include
+#include
struct cpuinfo_x86;
struct task_struct;
@@ -143,8 +144,8 @@ extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs,
int error_code, int si_code);
void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
-extern long syscall_trace_enter(struct pt_regs *);
-extern void syscall_trace_leave(struct pt_regs *);
+extern asmregparm long syscall_trace_enter(struct pt_regs *);
+extern asmregparm void syscall_trace_leave(struct pt_regs *);
static inline unsigned long regs_return_value(struct pt_regs *regs)
{
diff --git arch/x86/vdso/Makefile arch/x86/vdso/Makefile
index 6b4ffed..f576f51 100644
--- arch/x86/vdso/Makefile
+++ arch/x86/vdso/Makefile
@@ -2,7 +2,7 @@
# Building vDSO images for x86.
#
-VDSO64-$(CONFIG_X86_64) := y
+VDSO64-$(CONFIG_X86_64) := n
VDSO32-$(CONFIG_X86_32) := y
VDSO32-$(CONFIG_COMPAT) := y
@@ -25,7 +25,8 @@ targets += vdso.so vdso.so.dbg vdso.lds $(vobjs-y)
export CPPFLAGS_vdso.lds += -P -C
-VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 -Wl,-soname=linux-vdso.so.1 \
+#VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 -Wl,-soname=linux-vdso.so.1 \
+VDSO_LDFLAGS_vdso.lds = -m64 -Wl,-soname=linux-vdso.so.1 \
-Wl,-z,max-page-size=4096 -Wl,-z,common-page-size=4096
$(obj)/vdso.o: $(src)/vdso.S $(obj)/vdso.so
@@ -69,7 +70,7 @@ vdso32.so-$(VDSO32-y) += sysenter
vdso32-images = $(vdso32.so-y:%=vdso32-%.so)
CPPFLAGS_vdso32.lds = $(CPPFLAGS_vdso.lds)
-VDSO_LDFLAGS_vdso32.lds = -m elf_i386 -Wl,-soname=linux-gate.so.1
+VDSO_LDFLAGS_vdso32.lds = -m32 -Wl,-soname=linux-gate.so.1
# This makes sure the $(obj) subdirectory exists even though vdso32/
# is not a kbuild sub-make subdirectory.