diff -ur linux-2.6.14/Makefile linux-2.6.14-arcanix/Makefile
--- linux-2.6.14/Makefile	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/Makefile	Sun Oct 30 20:36:19 2005
@@ -577,7 +577,8 @@
 # makefile but the arguement can be passed to make if needed.
 #
 
-MODLIB	:= $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
+#MODLIB	:= $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
+MODLIB	:= /home/users/gophi/arcanix/lib/modules/$(KERNELRELEASE)
 export MODLIB
 
 
diff -ur linux-2.6.14/drivers/block/genhd.c linux-2.6.14-arcanix/drivers/block/genhd.c
--- linux-2.6.14/drivers/block/genhd.c	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/drivers/block/genhd.c	Sun Oct 30 20:36:19 2005
@@ -16,6 +16,10 @@
 #include <linux/kobj_map.h>
 #include <linux/buffer_head.h>
 
+#ifdef CONFIG_SYSCTL
+#include <linux/sysctl.h>
+#endif
+
 #define MAX_PROBE_HASH 255	/* random */
 
 static struct subsystem block_subsys;
@@ -229,6 +233,60 @@
 }
 
 #ifdef CONFIG_PROC_FS
+#ifdef CONFIG_SYSCTL
+int sysctl_genhd_show_sys_ind = 0;
+
+static ctl_table genhd_table[] = {
+	{
+		.ctl_name	= GENHD_SHOW_SYS_IND,
+		.procname	= "genhd_show_sys_ind",
+		.data		= &sysctl_genhd_show_sys_ind,
+		.maxlen		= sizeof(int),
+		.mode		= 0644,
+		.proc_handler	= &proc_dointvec
+	},
+	{ }
+};
+
+static ctl_table genhd_dir_table[] = {
+	{
+		.ctl_name	= DEV_GENHD,
+		.procname	= "genhd",
+		.mode		= 0555,
+		.child		= genhd_table
+	},
+	{ }
+};
+
+static ctl_table genhd_root_table[] = {
+	{
+		.ctl_name	= CTL_DEV,
+		.procname	= "dev",
+		.mode		= 0555,
+		.child		= genhd_dir_table
+	},
+	{ }
+};
+
+static struct ctl_table_header *genhd_table_header;
+
+int __init genhd_init_sysctl (void)
+{
+	genhd_table_header = register_sysctl_table(genhd_root_table, 1);
+	return genhd_table_header ? 0 : -ENOMEM;
+}
+
+/*
+ * Na wszelki wypadek, gdyby ktos chcial uzyc mojego kodu w module. 
+ * --gophi
+
+void genhd_exit_sysctl (void)
+{
+	unregister_sysctl_table (genhd_table_header);
+}
+*/
+#endif
+
 /* iterator */
 static void *part_start(struct seq_file *part, loff_t *pos)
 {
@@ -260,9 +318,15 @@
 	struct gendisk *sgp = v;
 	int n;
 	char buf[BDEVNAME_SIZE];
+	char show_sys_ind = 0;
+
+#ifdef CONFIG_SYSCTL
+	show_sys_ind = sysctl_genhd_show_sys_ind;
+#endif
 
 	if (&sgp->kobj.entry == block_subsys.kset.list.next)
-		seq_puts(part, "major minor  #blocks  name\n\n");
+		seq_printf (part, "major minor  #blocks  name%s\n\n", show_sys_ind ? 
+			"    sys_ind" : "");
 
 	/* Don't show non-partitionable removeable devices or empty devices */
 	if (!get_capacity(sgp) ||
@@ -272,19 +336,25 @@
 		return 0;
 
 	/* show the full disk and all non-0 size partitions of it */
-	seq_printf(part, "%4d  %4d %10llu %s\n",
+	seq_printf(part, "%4d  %4d %10llu %-7s%s\n",
 		sgp->major, sgp->first_minor,
 		(unsigned long long)get_capacity(sgp) >> 1,
-		disk_name(sgp, 0, buf));
+		disk_name(sgp, 0, buf), show_sys_ind ? " 00" : "");
 	for (n = 0; n < sgp->minors - 1; n++) {
 		if (!sgp->part[n])
 			continue;
 		if (sgp->part[n]->nr_sects == 0)
 			continue;
-		seq_printf(part, "%4d  %4d %10llu %s\n",
-			sgp->major, n + 1 + sgp->first_minor,
-			(unsigned long long)sgp->part[n]->nr_sects >> 1 ,
-			disk_name(sgp, n + 1, buf));
+		if (show_sys_ind)
+			seq_printf(part, "%4d  %4d %10llu %-7s %02X\n",
+				sgp->major, n + 1 + sgp->first_minor,
+				(unsigned long long)sgp->part[n]->nr_sects >> 1 ,
+				disk_name(sgp, n + 1, buf), sgp->part[n]->sys_ind);
+		else
+			seq_printf(part, "%4d  %4d %10llu %s\n",
+				sgp->major, n + 1 + sgp->first_minor,
+				(unsigned long long)sgp->part[n]->nr_sects >> 1 ,
+				disk_name(sgp, n + 1, buf));
 	}
 
 	return 0;
@@ -314,7 +384,11 @@
 	bdev_map = kobj_map_init(base_probe, &block_subsys_sem);
 	blk_dev_init();
 	subsystem_register(&block_subsys);
+#ifdef CONFIG_SYSCTL
+	return genhd_init_sysctl();
+#else
 	return 0;
+#endif
 }
 
 subsys_initcall(genhd_device_init);
diff -ur linux-2.6.14/drivers/block/ioctl.c linux-2.6.14-arcanix/drivers/block/ioctl.c
--- linux-2.6.14/drivers/block/ioctl.c	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/drivers/block/ioctl.c	Sun Oct 30 20:36:19 2005
@@ -13,6 +13,7 @@
 	struct blkpg_ioctl_arg a;
 	struct blkpg_partition p;
 	long long start, length;
+	int sys_ind;
 	int part;
 	int i;
 
@@ -32,6 +33,7 @@
 		case BLKPG_ADD_PARTITION:
 			start = p.start >> 9;
 			length = p.length >> 9;
+			sys_ind = p.sys_ind;
 			/* check for fit in a hd_struct */ 
 			if (sizeof(sector_t) == sizeof(long) && 
 			    sizeof(long long) > sizeof(long)) {
@@ -59,7 +61,7 @@
 				}
 			}
 			/* all seems OK */
-			add_partition(disk, part, start, length);
+			add_partition(disk, part, start, length, sys_ind);
 			up(&bdev->bd_sem);
 			return 0;
 		case BLKPG_DEL_PARTITION:
diff -ur linux-2.6.14/fs/partitions/check.c linux-2.6.14-arcanix/fs/partitions/check.c
--- linux-2.6.14/fs/partitions/check.c	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/fs/partitions/check.c	Sun Oct 30 20:36:19 2005
@@ -283,7 +283,7 @@
 	kobject_unregister(&p->kobj);
 }
 
-void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len)
+void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, int sys_ind)
 {
 	struct hd_struct *p;
 
@@ -295,6 +295,7 @@
 	p->start_sect = start;
 	p->nr_sects = len;
 	p->partno = part;
+	p->sys_ind = sys_ind;
 
 	devfs_mk_bdev(MKDEV(disk->major, disk->first_minor + part),
 			S_IFBLK|S_IRUSR|S_IWUSR,
@@ -382,7 +383,7 @@
 		sector_t from = state->parts[p].from;
 		if (!size)
 			continue;
-		add_partition(disk, p, from, size);
+		add_partition(disk, p, from, size, state->parts[p].sys_ind);
 #ifdef CONFIG_BLK_DEV_MD
 		if (state->parts[p].flags)
 			md_autodetect_dev(bdev->bd_dev+p);
diff -ur linux-2.6.14/fs/partitions/check.h linux-2.6.14-arcanix/fs/partitions/check.h
--- linux-2.6.14/fs/partitions/check.h	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/fs/partitions/check.h	Sun Oct 30 20:36:19 2005
@@ -12,6 +12,7 @@
 	struct {
 		sector_t from;
 		sector_t size;
+		int sys_ind;
 		int flags;
 	} parts[MAX_PART];
 	int next;
@@ -24,6 +25,7 @@
 	if (n < p->limit) {
 		p->parts[n].from = from;
 		p->parts[n].size = size;
+		p->parts[n].sys_ind = 0;
 		printk(" %s%d", p->name, n);
 	}
 }
diff -ur linux-2.6.14/fs/partitions/msdos.c linux-2.6.14-arcanix/fs/partitions/msdos.c
--- linux-2.6.14/fs/partitions/msdos.c	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/fs/partitions/msdos.c	Sun Oct 30 20:36:19 2005
@@ -132,6 +132,7 @@
 			}
 
 			put_partition(state, state->next, next, size);
+			state->parts[state->next].sys_ind = SYS_IND(p);
 			if (SYS_IND(p) == LINUX_RAID_PARTITION)
 				state->parts[state->next].flags = 1;
 			loopct = 0;
@@ -436,6 +437,7 @@
 			/* prevent someone doing mkfs or mkswap on an
 			   extended partition, but leave room for LILO */
 			put_partition(state, slot, start, size == 1 ? 1 : 2);
+			state->parts[slot].sys_ind = SYS_IND(p);
 			printk(" <");
 			parse_extended(state, bdev, start, size);
 			printk(" >");
@@ -448,6 +450,7 @@
 			printk("[DM]");
 		if (SYS_IND(p) == EZD_PARTITION)
 			printk("[EZD]");
+		state->parts[slot].sys_ind = SYS_IND(p);
 	}
 
 	printk("\n");
diff -ur linux-2.6.14/include/linux/blkpg.h linux-2.6.14-arcanix/include/linux/blkpg.h
--- linux-2.6.14/include/linux/blkpg.h	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/include/linux/blkpg.h	Sun Oct 30 20:36:19 2005
@@ -48,6 +48,7 @@
 struct blkpg_partition {
 	long long start;		/* starting offset in bytes */
 	long long length;		/* length in bytes */
+	int sys_ind;
 	int pno;			/* partition number */
 	char devname[BLKPG_DEVNAMELTH];	/* partition name, like sda5 or c0d1p2,
 					   to be used in kernel messages */
diff -ur linux-2.6.14/include/linux/genhd.h linux-2.6.14-arcanix/include/linux/genhd.h
--- linux-2.6.14/include/linux/genhd.h	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/include/linux/genhd.h	Sun Oct 30 20:36:19 2005
@@ -77,6 +77,7 @@
 struct hd_struct {
 	sector_t start_sect;
 	sector_t nr_sects;
+	int sys_ind;
 	struct kobject kobj;
 	unsigned reads, read_sectors, writes, write_sectors;
 	int policy, partno;
@@ -400,7 +401,7 @@
 char *disk_name (struct gendisk *hd, int part, char *buf);
 
 extern int rescan_partitions(struct gendisk *disk, struct block_device *bdev);
-extern void add_partition(struct gendisk *, int, sector_t, sector_t);
+extern void add_partition(struct gendisk *, int, sector_t, sector_t, int);
 extern void delete_partition(struct gendisk *, int);
 
 extern struct gendisk *alloc_disk_node(int minors, int node_id);
diff -ur linux-2.6.14/include/linux/sysctl.h linux-2.6.14-arcanix/include/linux/sysctl.h
--- linux-2.6.14/include/linux/sysctl.h	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/include/linux/sysctl.h	Sun Oct 30 20:37:03 2005
@@ -737,6 +737,7 @@
 	DEV_MAC_HID=5,
 	DEV_SCSI=6,
 	DEV_IPMI=7,
+	DEV_GENHD=8
 };
 
 /* /proc/sys/dev/cdrom */
@@ -807,6 +808,11 @@
 	DEV_IPMI_POWEROFF_POWERCYCLE=1,
 };
 
+/* /proc/sys/dev/genhd */
+enum {
+	GENHD_SHOW_SYS_IND=1,
+};
+
 /* /proc/sys/abi */
 enum
 {
diff -ur linux-2.6.14/kernel/signal.c linux-2.6.14-arcanix/kernel/signal.c
--- linux-2.6.14/kernel/signal.c	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/kernel/signal.c	Sun Oct 30 20:36:21 2005
@@ -2002,6 +2002,7 @@
 EXPORT_SYMBOL(sigprocmask);
 EXPORT_SYMBOL(block_all_signals);
 EXPORT_SYMBOL(unblock_all_signals);
+EXPORT_SYMBOL(kill_proc_info);
 
 
 /*
diff -ur linux-2.6.14/kernel/sys.c linux-2.6.14-arcanix/kernel/sys.c
--- linux-2.6.14/kernel/sys.c	Fri Oct 28 02:02:08 2005
+++ linux-2.6.14-arcanix/kernel/sys.c	Mon Nov 21 10:07:56 2005
@@ -436,7 +436,7 @@
 void kernel_halt(void)
 {
 	kernel_halt_prepare();
-	printk(KERN_EMERG "System halted.\n");
+	/* printk(KERN_EMERG "System halted.\n"); */
 	machine_halt();
 }
 EXPORT_SYMBOL_GPL(kernel_halt);
@@ -455,7 +455,7 @@
 void kernel_power_off(void)
 {
 	kernel_power_off_prepare();
-	printk(KERN_EMERG "Power down.\n");
+	/* printk(KERN_EMERG "Power down.\n"); */
 	machine_power_off();
 }
 EXPORT_SYMBOL_GPL(kernel_power_off);
