--- a/kernel/Makefile.in
+++ b/kernel/Makefile.in
@@ -54,23 +54,8 @@ distdir: $(DISTFILES) $(COMPATDISTFILES)
 
 ifeq ($(majver), 2.4)
 
-CC = gcc
-LD = ld
-CFLAGS = -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -pipe @KERNELCFLAGS@
-CPPFLAGS = -I@kernelsrc@/include -I. -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DFUSE_VERSION=\"$(VERSION)\" @KERNELCPPFLAGS@
-
 fuse_objs = dev.o dir.o file.o inode.o compat/parser.o
 
-SUFFIXES = .c .o .s
-
-all-spec: fuse.o
-
-.c.o:
-	$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
-
-fuse.o: $(fuse_objs)
-	$(LD) -r -o fuse.o $(fuse_objs)
-
 fuse_headers = fuse_i.h fuse_kernel.h
 
 dev.o: $(fuse_headers)
@@ -78,6 +63,18 @@ dir.o: $(fuse_headers)
 file.o: $(fuse_headers)
 inode.o: $(fuse_headers)
 
+EXTRA_CFLAGS += -DFUSE_VERSION=\"$(VERSION)\"
+
+O_TARGET := fuse.o
+
+obj-y := $(fuse_objs) 
+obj-m := $(O_TARGET)
+
+-include $(TOPDIR)/Rules.make
+
+all-spec:
+	$(MAKE) -C @kernelsrc@ TOPDIR=@kernelsrc@ SUBDIRS=$(PWD) modules
+
 else
 
 EXTRA_CFLAGS += -DFUSE_VERSION=\"$(VERSION)\"
