diff -ur linux-109-oem/Makefile linux/Makefile
--- linux-109-oem/Makefile	Sat Jan 13 17:53:15 1996
+++ linux/Makefile	Sun Feb 11 19:46:01 1996
@@ -115,6 +115,11 @@
 Version: dummy
 	rm -f tools/version.h
 
+lilo: $(CONFIGURE) Image
+	if [ -f /vmlinux ]; then mv /vmlinux /vmlinux.old; fi
+	cat Image > /vmlinux
+	/etc/lilo/install
+
 config:
 	$(CONFIG_SHELL) Configure $(OPTS) < config.in
 	@if grep -s '^CONFIG_SOUND' .tmpconfig ; then \
@@ -136,6 +141,15 @@
 	@echo \#define LINUX_COMPILE_HOST \"`hostname`\" >> tools/version.h
 	@echo \#define LINUX_COMPILE_DOMAIN \"`domainname`\" >> tools/version.h
 
+Image: $(CONFIGURE) boot/bootsect boot/setup tools/system tools/build
+	nm tools/system | grep -v '\(compiled\)\|\(\.o$$\)\|\( a \)' | \
+		sort > System.map
+	tools/build boot/bootsect boot/setup tools/system $(ROOT_DEV) > Image
+	sync
+
+disk: Image
+	dd bs=8192 if=Image of=/dev/fd0
+
 tools/build: tools/build.c $(CONFIGURE)
 	$(HOSTCC) $(CFLAGS) -o $@ $<
 
@@ -156,8 +170,6 @@
 		$(DRIVERS) \
 		$(LIBS) \
 		-o tools/system
-	nm tools/zSystem | grep -v '\(compiled\)\|\(\.o$$\)\|\( a \)' | \
-		sort > System.map
 
 boot/setup: boot/setup.o
 	$(LD86) -s -o $@ $<
@@ -181,6 +193,8 @@
 	$(MAKE) -C zBoot
 
 zImage: $(CONFIGURE) boot/bootsect boot/setup zBoot/zSystem tools/build
+	nm tools/zSystem | grep -v '\(compiled\)\|\(\.o$$\)\|\( a \)' | \
+		sort > zSystem.map
 	tools/build boot/bootsect boot/setup zBoot/zSystem $(ROOT_DEV) > zImage
 	sync
 
@@ -273,27 +287,3 @@
 dummy:
 
 endif
-
-#
-# Leave these dummy entries for now to tell people that they are going away..
-#
-lilo:
-	@echo
-	@echo Uncompressed kernel images no longer supported. Use
-	@echo \"make zlilo\" instead.
-	@echo
-	@exit 1
-
-Image:
-	@echo
-	@echo Uncompressed kernel images no longer supported. Use
-	@echo \"make zImage\" instead.
-	@echo
-	@exit 1
-
-disk:
-	@echo
-	@echo Uncompressed kernel images no longer supported. Use
-	@echo \"make zdisk\" instead.
-	@echo
-	@exit 1
diff -ur linux-109-oem/boot/head.S linux/boot/head.S
--- linux-109-oem/boot/head.S	Thu Feb  3 21:37:44 1994
+++ linux/boot/head.S	Wed Feb  7 13:39:05 1996
@@ -8,16 +8,20 @@
  *  head.S contains the 32-bit startup code.
  */
 
+#include <linux/config.h>
+#include <linux/tasks.h>
+#include <linux/segment.h>
+
 .text
 .globl _idt,_gdt,
 .globl _swapper_pg_dir,_pg0
 .globl _empty_bad_page
 .globl _empty_bad_page_table
 .globl _empty_zero_page
-.globl _tmp_floppy_area,_floppy_track_buffer
 
-#include <linux/tasks.h>
-#include <linux/segment.h>
+#ifdef CONFIG_BLK_DEV_FD
+.globl _tmp_floppy_area,_floppy_track_buffer
+#endif
 
 #define CL_MAGIC_ADDR	0x90020
 #define CL_MAGIC	0xA33F
@@ -275,6 +279,7 @@
 _empty_zero_page:
 
 .org 0x6000
+#ifdef CONFIG_BLK_DEV_FD
 /*
  * tmp_floppy_area is used by the floppy-driver when DMA cannot
  * reach to a buffer-block. It needs to be aligned, so that it isn't
@@ -290,6 +295,7 @@
  */
 _floppy_track_buffer:
 	.fill 512*2*18,1,0
+#endif
 
 /* This is the default interrupt "handler" :-) */
 int_msg:
diff -ur linux-109-oem/config.in linux/config.in
--- linux-109-oem/config.in	Sat Jan 13 17:53:13 1996
+++ linux/config.in	Fri Jan 19 11:15:13 1996
@@ -7,11 +7,14 @@
 *
 bool 'Kernel math emulation' CONFIG_MATH_EMULATION y
 bool 'Normal harddisk support' CONFIG_BLK_DEV_HD y
+bool 'Floppy disk support' CONFIG_BLK_DEV_FD n
+bool 'RAM disk support' CONFIG_BLK_DEV_RAM n
 bool 'XT harddisk support' CONFIG_BLK_DEV_XD n
 bool 'TCP/IP networking' CONFIG_INET y
 bool 'Limit memory to low 16MB' CONFIG_MAX_16M n
 bool 'System V IPC' CONFIG_SYSVIPC y
 bool 'Use -m486 flag for 486-specific optimizations' CONFIG_M486 y
+bool 'Loadable Module support' CONFIG_MODULES n
 *
 * Program binary formats
 *
@@ -104,6 +107,7 @@
 *
 *  character devices
 *
+bool 'Serial device support' CONFIG_SERIAL n
 bool 'Parallel printer support' CONFIG_PRINTER n
 bool 'Logitech busmouse support' CONFIG_BUSMOUSE n
 bool 'PS/2 mouse (aka "auxiliary device") support' CONFIG_PSMOUSE y
diff -ur linux-109-oem/drivers/block/Makefile linux/drivers/block/Makefile
--- linux-109-oem/drivers/block/Makefile	Mon Mar  7 01:08:21 1994
+++ linux/drivers/block/Makefile	Sat Jan 13 17:58:05 1996
@@ -21,8 +21,8 @@
 # In the future, some of these should be built conditionally.
 #
 
-OBJS := ll_rw_blk.o floppy.o ramdisk.o genhd.o 
-SRCS := ll_rw_blk.c floppy.c ramdisk.c genhd.c 
+OBJS := ll_rw_blk.o genhd.o 
+SRCS := ll_rw_blk.c genhd.c 
 
 ifdef CONFIG_CDU31A
 OBJS := $(OBJS) cdu31a.o
@@ -42,6 +42,16 @@
 ifdef CONFIG_BLK_DEV_HD
 OBJS := $(OBJS) hd.o
 SRCS := $(SRCS) hd.c
+endif
+
+ifdef CONFIG_BLK_DEV_FD
+OBJS := $(OBJS) floppy.o
+SRCS := $(SRCS) floppy.c
+endif
+
+ifdef CONFIG_BLK_DEV_RAM
+OBJS := $(OBJS) ramdisk.o
+SRCS := $(SRCS) ramdisk.c
 endif
 
 ifdef CONFIG_BLK_DEV_XD
diff -ur linux-109-oem/drivers/block/genhd.c linux/drivers/block/genhd.c
--- linux-109-oem/drivers/block/genhd.c	Wed Dec  1 23:44:15 1993
+++ linux/drivers/block/genhd.c	Sat Jan 13 17:55:03 1996
@@ -19,8 +19,10 @@
 
 static int current_minor = 0;
 extern int *blk_size[];
+#ifdef CONFIG_BLK_DEV_RAM
 extern void rd_load(void);
 extern int ramdisk_size;
+#endif
 
 /*
  * Create devices for each logical partition in an extended partition.
@@ -209,8 +211,10 @@
 		nr += p->nr_real;
 	}
 		
+#ifdef CONFIG_BLK_DEV_RAM
 	if (ramdisk_size)
 		rd_load();
+#endif
 	mount_root();
 	return (0);
 }
diff -ur linux-109-oem/drivers/block/ll_rw_blk.c linux/drivers/block/ll_rw_blk.c
--- linux-109-oem/drivers/block/ll_rw_blk.c	Tue Feb  1 18:03:51 1994
+++ linux/drivers/block/ll_rw_blk.c	Sat Jan 13 17:55:03 1996
@@ -497,7 +497,9 @@
 #ifdef CONFIG_SBPCD
 	mem_start = sbpcd_init(mem_start, mem_end);
 #endif CONFIG_SBPCD
+#ifdef CONFIG_BLK_DEV_RAM
 	if (ramdisk_size)
 		mem_start += rd_init(mem_start, ramdisk_size*1024);
+#endif
 	return mem_start;
 }
diff -ur linux-109-oem/drivers/char/Makefile linux/drivers/char/Makefile
--- linux-109-oem/drivers/char/Makefile	Mon Jan 10 00:14:58 1994
+++ linux/drivers/char/Makefile	Thu Jan 18 19:43:25 1996
@@ -16,14 +16,19 @@
 .c.o:
 	$(CC) $(CFLAGS) -c $<
 
-OBJS  = tty_io.o console.o keyboard.o serial.o \
+OBJS  = tty_io.o console.o keyboard.o \
 	tty_ioctl.o pty.o vt.o mem.o \
 	defkeymap.o
 
-SRCS  = tty_io.c console.c keyboard.c serial.c \
+SRCS  = tty_io.c console.c keyboard.c \
 	tty_ioctl.c pty.c vt.c mem.c \
 	defkeymap.c
 
+
+ifdef CONFIG_SERIAL
+OBJS := $(OBJS) serial.o
+SRCS := $(SRCS) serial.c
+endif
 
 ifdef CONFIG_ATIXL_BUSMOUSE
 M = y
diff -ur linux-109-oem/drivers/char/serial.c linux/drivers/char/serial.c
--- linux-109-oem/drivers/char/serial.c	Mon Mar 14 07:20:21 1994
+++ linux/drivers/char/serial.c	Fri Jan 19 11:52:54 1996
@@ -147,54 +147,6 @@
 	{ BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS },		/* ttyS1 */
 	{ BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS },		/* ttyS2 */
 	{ BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS },	/* ttyS3 */
-
-	{ BASE_BAUD, 0x1A0, 9, FOURPORT_FLAGS }, 	/* ttyS4 */
-	{ BASE_BAUD, 0x1A8, 9, FOURPORT_FLAGS },	/* ttyS5 */
-	{ BASE_BAUD, 0x1B0, 9, FOURPORT_FLAGS },	/* ttyS6 */
-	{ BASE_BAUD, 0x1B8, 9, FOURPORT_FLAGS },	/* ttyS7 */
-
-	{ BASE_BAUD, 0x2A0, 5, FOURPORT_FLAGS },	/* ttyS8 */
-	{ BASE_BAUD, 0x2A8, 5, FOURPORT_FLAGS },	/* ttyS9 */
-	{ BASE_BAUD, 0x2B0, 5, FOURPORT_FLAGS },	/* ttyS10 */
-	{ BASE_BAUD, 0x2B8, 5, FOURPORT_FLAGS },	/* ttyS11 */
-	
-	{ BASE_BAUD, 0x330, 4, ACCENT_FLAGS },		/* ttyS12 */
-	{ BASE_BAUD, 0x338, 4, ACCENT_FLAGS },		/* ttyS13 */
-	{ BASE_BAUD, 0x000, 0, 0 },	/* ttyS14 (spare; user configurable) */
-	{ BASE_BAUD, 0x000, 0, 0 },	/* ttyS15 (spare; user configurable) */
-
-	{ BASE_BAUD, 0x100, 12, BOCA_FLAGS },	/* ttyS16 */
-	{ BASE_BAUD, 0x108, 12, BOCA_FLAGS },	/* ttyS17 */
-	{ BASE_BAUD, 0x110, 12, BOCA_FLAGS },	/* ttyS18 */
-	{ BASE_BAUD, 0x118, 12, BOCA_FLAGS },	/* ttyS19 */
-	{ BASE_BAUD, 0x120, 12, BOCA_FLAGS },	/* ttyS20 */
-	{ BASE_BAUD, 0x128, 12, BOCA_FLAGS },	/* ttyS21 */
-	{ BASE_BAUD, 0x130, 12, BOCA_FLAGS },	/* ttyS22 */
-	{ BASE_BAUD, 0x138, 12, BOCA_FLAGS },	/* ttyS23 */
-	{ BASE_BAUD, 0x140, 12, BOCA_FLAGS },	/* ttyS24 */
-	{ BASE_BAUD, 0x148, 12, BOCA_FLAGS },	/* ttyS25 */
-	{ BASE_BAUD, 0x150, 12, BOCA_FLAGS },	/* ttyS26 */
-	{ BASE_BAUD, 0x158, 12, BOCA_FLAGS },	/* ttyS27 */
-	{ BASE_BAUD, 0x160, 12, BOCA_FLAGS },	/* ttyS28 */
-	{ BASE_BAUD, 0x168, 12, BOCA_FLAGS },	/* ttyS29 */
-	{ BASE_BAUD, 0x170, 12, BOCA_FLAGS },	/* ttyS30 */
-	{ BASE_BAUD, 0x178, 12, BOCA_FLAGS },	/* ttyS31 */
-
-/* You can have up to four HUB6's in the system, but I've only
- * included two cards here for a total of twelve ports.
- */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,0) },	/* ttyS32 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,1) },	/* ttyS33 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,2) },	/* ttyS34 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,3) },	/* ttyS35 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,4) },	/* ttyS36 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,5) },	/* ttyS37 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,0) },	/* ttyS32 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,1) },	/* ttyS33 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,2) },	/* ttyS34 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,3) },	/* ttyS35 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,4) },	/* ttyS36 */
-	{ BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,5) },	/* ttyS37 */
 };
 
 #define NR_PORTS	(sizeof(rs_table)/sizeof(struct async_struct))
diff -ur linux-109-oem/drivers/char/tty_io.c linux/drivers/char/tty_io.c
--- linux-109-oem/drivers/char/tty_io.c	Wed Mar  2 04:00:15 1994
+++ linux/drivers/char/tty_io.c	Thu Jan 25 11:18:36 1996
@@ -37,6 +37,7 @@
  * 	-- julian@uhunix.uhcc.hawaii.edu (J. Cowley), 13Jan94
  */
 
+#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/major.h>
 #include <linux/errno.h>
@@ -1778,8 +1779,10 @@
 		tty->open = con_open;
 		tty->winsize.ws_row = video_num_lines;
 		tty->winsize.ws_col = video_num_columns;
+#ifdef CONFIG_SERIAL
 	} else if IS_A_SERIAL(line) {
 		tty->open = rs_open;
+#endif
 	} else if IS_A_PTY(line) {
 		tty->open = pty_open;
 	}
@@ -1840,6 +1843,8 @@
 
 	kmem_start = kbd_init(kmem_start);
 	kmem_start = con_init(kmem_start);
+#ifdef CONFIG_SERIAL
 	kmem_start = rs_init(kmem_start);
+#endif
 	return kmem_start;
 }
diff -ur linux-109-oem/drivers/net/ne.c linux/drivers/net/ne.c
--- linux-109-oem/drivers/net/ne.c	Mon Mar  7 01:12:04 1994
+++ linux/drivers/net/ne.c	Sat Jan 13 17:55:03 1996
@@ -175,29 +175,15 @@
     }
 #endif
 
-    neX000 = (SA_prom[14] == 0x57  &&  SA_prom[15] == 0x57);
-    ctron =  (SA_prom[0] == 0x00 && SA_prom[1] == 0x00 && SA_prom[2] == 0x1d);
-    dlink =  (SA_prom[0] == 0x00 && SA_prom[1] == 0xDE && SA_prom[2] == 0x01);
-    dfi   =  (SA_prom[0] == 'D' && SA_prom[1] == 'F' && SA_prom[2] == 'I');
-
     /* Set up the rest of the parameters. */
-    if (neX000 || dlink || dfi) {
-	if (wordlength == 2) {
-	    name = dlink ? "DE200" : "NE2000";
-	    start_page = NESM_START_PG;
-	    stop_page = NESM_STOP_PG;
-	} else {
-	    name = dlink ? "DE100" : "NE1000";
-	    start_page = NE1SM_START_PG;
-	    stop_page = NE1SM_STOP_PG;
-	}
-    } else if (ctron) {
-	name = "Cabletron";
-	start_page = 0x01;
-	stop_page = (wordlength == 2) ? 0x40 : 0x20;
+    if (wordlength == 2) {
+	name = "NE2000";
+	start_page = NESM_START_PG;
+	stop_page = NESM_STOP_PG;
     } else {
-	printk(" not found.\n");
-	return 0;
+	name = "NE1000";
+	start_page = NE1SM_START_PG;
+	stop_page = NE1SM_STOP_PG;
     }
 
     if (dev->irq < 2) {
diff -ur linux-109-oem/drivers/net/wd.c linux/drivers/net/wd.c
--- linux-109-oem/drivers/net/wd.c	Fri Dec 17 20:38:47 1993
+++ linux/drivers/net/wd.c	Sat Jan 13 17:55:12 1996
@@ -106,24 +106,7 @@
 	for (i = 0; i < 6; i++)
 		printk(" %2.2X", station_addr[i] = inb(ioaddr + 8 + i));
 	
-	/* The following PureData probe code was contributed by
-	   Mike Jagdis <jaggy@purplet.demon.co.uk>. Puredata does software
-	   configuration differently from others so we have to check for them.
-	   This detects an 8 bit, 16 bit or dumb (Toshiba, jumpered) card.
-	   */
-	if (inb(ioaddr+0) == 'P' && inb(ioaddr+1) == 'D') {
-		unsigned char reg5 = inb(ioaddr+5);
-		
-		switch (inb(ioaddr+2)) {
-		case 0x03: word16 = 0; model_name = "PDI8023-8";	break;
-		case 0x05: word16 = 0; model_name = "PDUC8023";	break;
-		case 0x0a: word16 = 1; model_name = "PDI8023-16"; break;
-			/* Either 0x01 (dumb) or they've released a new version. */
-		default:	 word16 = 0; model_name = "PDI8023";	break;
-		}
-		dev->mem_start = ((reg5 & 0x1c) + 0xc0) << 12;
-		dev->irq = (reg5 & 0xe0) == 0xe0 ? 10 : (reg5 >> 5) + 1;
-	} else {								/* End of PureData probe */
+	{
 		/* This method of checking for a 16-bit board is borrowed from the
 		   we.c driver.  A simpler method is just to look in ASIC reg. 0x03.
 		   I'm comparing the two method in alpha test to make certain they
@@ -229,13 +212,19 @@
 	ei_status.word16 = word16;
 	ei_status.tx_start_page = WD_START_PG;
 	ei_status.rx_start_page = WD_START_PG + TX_PAGES;
-	ei_status.stop_page = word16 ? WD13_STOP_PG : WD03_STOP_PG;
-	
-	/* Don't map in the shared memory until the board is actually opened. */
-	dev->rmem_start = dev->mem_start + TX_PAGES*256;
-	dev->mem_end = dev->rmem_end
-		= dev->mem_start + (ei_status.stop_page - WD_START_PG)*256;
 	
+ 	/* Don't map in the shared memory until the board is actually opened. */
+ 	dev->rmem_start = dev->mem_start + TX_PAGES*256;
+
+	/* Some cards (eg WD8003EBT) can be jumpered for more (32k!) memory. */
+	if (dev->mem_end != 0) {
+		ei_status.stop_page = (dev->mem_end - dev->mem_start)/256;
+	} else {
+		ei_status.stop_page = word16 ? WD13_STOP_PG : WD03_STOP_PG;
+		dev->mem_end = dev->mem_start + (ei_status.stop_page - WD_START_PG)*256;
+	}
+	dev->rmem_end = dev->mem_end;
+ 
 	printk(" %s, IRQ %d, shared memory at %#lx-%#lx.\n",
 		   model_name, dev->irq, dev->mem_start, dev->mem_end-1);
 	if (ei_debug > 0)
diff -ur linux-109-oem/fs/buffer.c linux/fs/buffer.c
--- linux-109-oem/fs/buffer.c	Thu Mar 10 23:20:55 1994
+++ linux/fs/buffer.c	Mon Jan 22 16:05:10 1996
@@ -220,15 +220,19 @@
 void check_disk_change(dev_t dev)
 {
 	int i;
-	struct buffer_head * bh;
 
 	switch(MAJOR(dev)){
+#ifdef CONFIG_BLK_DEV_FD
 	case FLOPPY_MAJOR:
+	   {
+		struct buffer_head * bh;
 		if (!(bh = getblk(dev,0,1024)))
 			return;
 		i = floppy_change(bh);
 		brelse(bh);
 		break;
+	   }
+#endif
 
 #if defined(CONFIG_BLK_DEV_SD) && defined(CONFIG_SCSI)
          case SCSI_DISK_MAJOR:
diff -ur linux-109-oem/fs/proc/array.c linux/fs/proc/array.c
--- linux-109-oem/fs/proc/array.c	Sat Jan 13 17:53:14 1996
+++ linux/fs/proc/array.c	Sat Jan 13 17:55:03 1996
@@ -464,7 +464,9 @@
 	return sz;
 }
 
+#ifdef CONFIG_MODULES
 extern int get_module_list(char *);
+#endif
 
 static int array_read(struct inode * inode, struct file * file,char * buf, int count)
 {
@@ -516,9 +518,11 @@
 		case 15:
 			length = get_maps(pid, page);
 			break;
+#ifdef CONFIG_MODULES
 		case 16:
 			length = get_module_list(page);
 			break;
+#endif
 		case 17:
 			length = get_kstat(page);
 			break;
diff -ur linux-109-oem/fs/proc/root.c linux/fs/proc/root.c
--- linux-109-oem/fs/proc/root.c	Tue Feb  1 18:03:51 1994
+++ linux/fs/proc/root.c	Sat Jan 13 17:55:03 1996
@@ -65,7 +65,9 @@
 	{13,6,"malloc" },
 #endif
 	{14,5,"kcore" },
+#ifdef CONFIG_MODULES
    	{16,7,"modules" },
+#endif
    	{17,4,"stat" },
 };
 
diff -ur linux-109-oem/include/linux/tty.h linux/include/linux/tty.h
--- linux-109-oem/include/linux/tty.h	Fri Feb 18 20:08:41 1994
+++ linux/include/linux/tty.h	Thu Jan 18 19:40:19 1996
@@ -9,7 +9,7 @@
 
 #include <asm/system.h>
 
-#define NR_CONSOLES	8
+#define NR_CONSOLES	4
 #define NR_LDISCS	16
 
 /*
diff -ur linux-109-oem/init/main.c linux/init/main.c
--- linux-109-oem/init/main.c	Sat Jan 13 17:53:14 1996
+++ linux/init/main.c	Wed Feb  7 13:35:05 1996
@@ -57,14 +57,13 @@
 static inline _syscall1(int,close,int,fd)
 static inline _syscall1(int,_exit,int,exitcode)
 static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
+static inline _syscall1(int,swapon,const char *,specialfile)
 
 static inline pid_t wait(int * wait_stat)
 {
 	return waitpid(-1,wait_stat,0);
 }
 
-static char printbuf[1024];
-
 extern int console_loglevel;
 
 extern char empty_zero_page[PAGE_SIZE];
@@ -135,23 +134,28 @@
 static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, };
 static char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", term, NULL, };
 
-static char * argv_rc[] = { "/bin/sh", NULL };
-static char * envp_rc[] = { "HOME=/", term, NULL };
-
-static char * argv[] = { "-/bin/sh",NULL };
-static char * envp[] = { "HOME=/usr/root", term, NULL };
-
 struct drive_info_struct { char dummy[32]; } drive_info;
 struct screen_info screen_info;
 
 unsigned char aux_device_present;
+
+#ifdef CONFIG_BLK_DEV_RAM
 int ramdisk_size;
+#endif
+
 int root_mountflags = 0;
 
 static char fpu_error = 0;
 
 static char command_line[COMMAND_LINE_SIZE] = { 0, };
 
+static char *swapdev;
+
+void swap_setup(char *str, int *ints)
+{
+	swapdev = str;
+}
+
 char *get_options(char *str, int *ints) 
 {
 	char *cur = str;
@@ -205,6 +209,7 @@
 #ifdef CONFIG_SBPCD
 	{ "sbpcd=", sbpcd_setup },
 #endif CONFIG_SBPCD
+	{ "swap=", swap_setup },
 	{ 0, 0 }
 };
 
@@ -369,7 +374,9 @@
 	aux_device_present = AUX_DEVICE_INFO;
 	memory_end = (1<<20) + (EXT_MEM_K<<10);
 	memory_end &= PAGE_MASK;
+#ifdef CONFIG_BLK_DEV_RAM
 	ramdisk_size = RAMDISK_SIZE;
+#endif
 	copy_options(command_line,COMMAND_LINE);
 #ifdef CONFIG_MAX_16M
 	if (memory_end > 16*1024*1024)
@@ -414,7 +421,9 @@
 	mem_init(low_memory_start,memory_start,memory_end);
 	buffer_init();
 	time_init();
+#ifdef CONFIG_BLK_DEV_FD
 	floppy_init();
+#endif
 	sock_init();
 #ifdef CONFIG_SYSVIPC
 	ipc_init();
@@ -474,22 +483,11 @@
 		idle();
 }
 
-static int printf(const char *fmt, ...)
-{
-	va_list args;
-	int i;
-
-	va_start(args, fmt);
-	write(1,printbuf,i=vsprintf(printbuf, fmt, args));
-	va_end(args);
-	return i;
-}
-
 void init(void)
 {
-	int pid,i;
 
 	setup((void *) &drive_info);
+	swapon(swapdev);
 	sprintf(term, "TERM=con%dx%d", ORIG_VIDEO_COLS, ORIG_VIDEO_LINES);
 	(void) open("/dev/tty1",O_RDWR,0);
 	(void) dup(0);
@@ -498,36 +496,4 @@
 	execve("/etc/init",argv_init,envp_init);
 	execve("/bin/init",argv_init,envp_init);
 	execve("/sbin/init",argv_init,envp_init);
-	/* if this fails, fall through to original stuff */
-
-	if (!(pid=fork())) {
-		close(0);
-		if (open("/etc/rc",O_RDONLY,0))
-			_exit(1);
-		execve("/bin/sh",argv_rc,envp_rc);
-		_exit(2);
-	}
-	if (pid>0)
-		while (pid != wait(&i))
-			/* nothing */;
-	while (1) {
-		if ((pid = fork()) < 0) {
-			printf("Fork failed in init\n\r");
-			continue;
-		}
-		if (!pid) {
-			close(0);close(1);close(2);
-			setsid();
-			(void) open("/dev/tty1",O_RDWR,0);
-			(void) dup(0);
-			(void) dup(0);
-			_exit(execve("/bin/sh",argv,envp));
-		}
-		while (1)
-			if (pid == wait(&i))
-				break;
-		printf("\n\rchild %d died with code %04x\n\r",pid,i);
-		sync();
-	}
-	_exit(0);
 }
diff -ur linux-109-oem/kernel/Makefile linux/kernel/Makefile
--- linux-109-oem/kernel/Makefile	Fri Dec 17 17:14:28 1993
+++ linux/kernel/Makefile	Sat Jan 13 17:55:03 1996
@@ -17,9 +17,13 @@
 	$(CC) $(CFLAGS) -c $<
 
 OBJS  = sched.o sys_call.o traps.o irq.o dma.o fork.o \
- 	panic.o printk.o vsprintf.o sys.o module.o ksyms.o exit.o \
+ 	panic.o printk.o vsprintf.o sys.o module.o exit.o \
 	signal.o mktime.o ptrace.o ioport.o itimer.o \
 	info.o ldt.o time.o
+
+ifdef CONFIG_MODULES
+OBJS := $(OBJS) ksyms.o
+endif
 
 all: kernel.o
 
diff -ur linux-109-oem/kernel/exit.c linux/kernel/exit.c
--- linux-109-oem/kernel/exit.c	Sat Jan 13 17:53:14 1996
+++ linux/kernel/exit.c	Thu Jan 18 09:52:06 1996
@@ -4,7 +4,7 @@
  *  Copyright (C) 1991, 1992  Linus Torvalds
  */
 
-#define DEBUG_PROC_TREE
+#undef DEBUG_PROC_TREE
 
 #include <linux/wait.h>
 #include <linux/errno.h>
diff -ur linux-109-oem/kernel/module.c linux/kernel/module.c
--- linux-109-oem/kernel/module.c	Fri Feb 11 17:55:26 1994
+++ linux/kernel/module.c	Sat Jan 13 17:55:03 1996
@@ -7,6 +7,13 @@
 #include <linux/sched.h>
 #include <linux/malloc.h>
 
+/*
+ *	Reduce kernel bloat. Use dummy syscall functions for users 
+ *	who disable all module support. Similar to kernel/sys.c
+ */
+
+#ifdef CONFIG_MODULES          /* a *big* #ifdef block... */
+
 struct module *module_list = NULL;
 int freeing_modules;		/* true if some modules are marked for deletion */
 
@@ -274,3 +281,30 @@
 	}
 	return p - buf;
 }
+
+#else		/* CONFIG_MODULES */
+
+/* Dummy syscalls for people who don't want modules */
+
+asmlinkage unsigned long sys_create_module(void)
+{
+	return -ENOSYS;
+}
+
+asmlinkage int sys_init_module(void)
+{
+	return -ENOSYS;
+}
+
+asmlinkage int sys_delete_module(void)
+{
+	return -ENOSYS;
+}
+
+asmlinkage int sys_get_kernel_syms(void)
+{
+	return -ENOSYS;
+}
+
+#endif	/* CONFIG_MODULES */
+
diff -ur linux-109-oem/kernel/printk.c linux/kernel/printk.c
--- linux-109-oem/kernel/printk.c	Tue Dec 28 22:22:42 1993
+++ linux/kernel/printk.c	Sat Jan 13 17:55:03 1996
@@ -20,9 +20,9 @@
 #include <linux/sched.h>
 #include <linux/kernel.h>
 
-#define LOG_BUF_LEN	4096
+#define LOG_BUF_LEN	1024
 
-static char buf[1024];
+static char buf[256];
 
 extern int vsprintf(char * buf, const char * fmt, va_list args);
 extern void console_print(const char *);
