2.4 kernel parameters of a N2200

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello List,

i'm writing to you concerning 2.4 kernel boot parameters which are used by an 
IBM NetVista Thin Client 2200 (alias NetStation 8363-EXX, alias N2200) on 
startup.

By now i boot the N2200 with a patched 2.4.27 Kernel compiled with gcc-3.3.5 
(based on a Debian-System). The Patch was delivered by the IBM toolkit 
package NetVistaLTC.tar.gz and is attached to this message.

N2200 passes different Parameters to the Kernel, which i had partly identified 
with the 2.4 Kernel Documentation (Documentation\kernel-parameters.txt). 
Below is a list of all passed Parameters:

root=/dev/hda1 - Root Filesystem
V=1024x768 - (?Resolution?)
D=16 - ????
ip=192.168.0.200:0.0.0.0:192.168.0.1:255.255.255.0:localhost:eth0 
      - IP-Address specified in nfsroot.txt
load_ramdisk=1 - Ramdisk Support is enabled.
n1=1.2.3.4 - DNS entry
n2=0.0.0.0 - yet another DNS entry
pf=2 - The ParIDE subsystem is enabled.
vga=4 - Boot Loader Parameter (Display-Setting)

There are some Parameters in the list which i could not identify. Among these 
is the Parameter D=16. 

Does anyone know what kind of parameter this is, or where i do find 
documentation about it?

Another one is that V=1024x768 Parameter. As of the nature of the passed value 
to V, i thought of some kind of resoultion settings. But i did not found 
anything to read about it. Can anyone give me a hint on this?



Thanks in advance.
Christian Schäfer
--- linux/init/main.c.orig	Wed Jul 11 09:40:41 2001
+++ linux/init/main.c	Wed Jul 11 09:41:09 2001
@@ -518,6 +518,18 @@
 	printk(linux_banner);
 	setup_arch(&command_line);
 	printk("Kernel command line: %s\n", saved_command_line);
+
+	if (strstr(command_line, "hda1")) 
+		command_line = strstr(command_line, "root");
+
+	if ( strstr(command_line, "hda1") && strstr(command_line, "tty2") ) {
+		parse_options(strcat(" console=/dev/ttyS3,9600 ", command_line))
+;
+	} else {
+		parse_options(command_line);
+        }
+
+
 	parse_options(command_line);
 	trap_init();
 	init_IRQ();
@@ -750,9 +762,9 @@
 			while (pid != wait(&i));
 		if (MAJOR(real_root_dev) != RAMDISK_MAJOR
 		     || MINOR(real_root_dev) != 0) {
-			error = change_root(real_root_dev,"/initrd");
+			error = change_root(real_root_dev,"/dev");
 			if (error)
-				printk(KERN_ERR "Change root to /initrd: "
+				printk(KERN_ERR "Change root to /dev: "
 				    "error %d\n",error);
 		}
 	}

--- linux/drivers/char/pc_keyb.c.orig	Mon Jul 16 16:09:55 2001
+++ linux/drivers/char/pc_keyb.c	Thu Jul 12 14:28:32 2001
@@ -448,6 +448,11 @@
 	unsigned char status = kbd_read_status();
 	unsigned int work = 10000;
 
+
+       if (status == 0xff)
+               return 0;
+
+
 	while ((--work > 0) && (status & KBD_STAT_OBF)) {
 		unsigned char scancode;
 
--- linux/arch/i386/kernel/head.S.orig	Mon Jul 16 16:13:11 2001
+++ linux/arch/i386/kernel/head.S	Mon Jul 16 16:14:26 2001
@@ -158,7 +158,10 @@
 	movl $512,%ecx
 	rep
 	stosl
-	movl SYMBOL_NAME(empty_zero_page)+NEW_CL_POINTER,%esi
+/* NetVista */
+/*	movl SYMBOL_NAME(empty_zero_page)+NEW_CL_POINTER,%esi */
+	movl $0x98000, %esi 
+
 	andl %esi,%esi
 	jnz 2f			# New command line protocol
 	cmpw $(OLD_CL_MAGIC),OLD_CL_MAGIC_ADDR

--- linux/Makefile.orig	Wed Aug 15 12:37:45 2001
+++ linux/Makefile	Wed Aug 15 12:37:50 2001
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 5
-EXTRAVERSION =
+EXTRAVERSION = -IBM
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

--- linux/fs/nfs/file.c.orig	Tue May 22 11:26:06 2001
+++ linux/fs/nfs/file.c	Sun Sep 23 22:14:56 2001
@@ -41,6 +41,10 @@
 static int  nfs_fsync(struct file *, struct dentry *dentry, int datasync);
 static int  nfs_file_release(struct inode *, struct file *);
 
+/* 2200's do not have RTC's so we will set the initial xid from the inode
+   of the first file we read from the nfs server */
+u32 xid_init = 0;
+
 struct file_operations nfs_file_operations = {
 	read:		nfs_file_read,
 	write:		nfs_file_write,
@@ -101,6 +105,10 @@
 	struct dentry * dentry = file->f_dentry;
 	struct inode * inode = dentry->d_inode;
 	ssize_t result;
+
+	/* since 2200 doesn't have RTC, lets pull time from inode on nfs server */
+	if (xid_init == 0) 
+		xid_init = ( ( inode->i_atime << 16 ) + (inode->i_atime & 0x0000ffff) );

 
 	dfprintk(VFS, "nfs: read(%s/%s, %lu@%lu)\n",
 		dentry->d_parent->d_name.name, dentry->d_name.name,
--- linux/net/sunrpc/xprt.c.orig	Thu Apr 12 14:11:39 2001
+++ linux/net/sunrpc/xprt.c	Sun Sep 23 22:28:17 2001
@@ -71,6 +71,9 @@
 
 extern spinlock_t rpc_queue_lock;
 
+extern u32 xid_init;
+u32 xid_set = 0;
+
 /*
  * Local variables
  */
@@ -1383,6 +1386,13 @@
 	if (!xid)
 		xid = CURRENT_TIME << 12;
 
+	/* we reset the xid based on the time of the first file we read from
+		the nfs server since 2200's do not have a RTC. */
+	if (!xid_set && xid_init != 0) {
+		xid = xid_init;
+		xid_set = 1;
+	}
+
 	dprintk("RPC: %4d reserved req %p xid %08x\n", task->tk_pid, req, xid);
 	task->tk_status = 0;
 	req->rq_timeout = xprt->timeout;
@@ -1391,6 +1401,7 @@
 	req->rq_xid     = xid++;
 	if (!xid)
 		xid++;
+
 }
 
 /*
--- linux/drivers/block/loop.c.orig     Sat Oct 27 12:34:26 2001
+++ linux/drivers/block/loop.c  Sat Oct 27 12:34:48 2001
@@ -74,7 +74,7 @@
 
 #define MAJOR_NR LOOP_MAJOR
 
-static int max_loop = 8;
+static int max_loop = 32;
 static struct loop_device *loop_dev;
 static int *loop_sizes;
 static int *loop_blksizes;

--- linux/arch/i386/kernel/setup.c.orig	Sat Oct 27 12:37:28 2001
+++ linux/arch/i386/kernel/setup.c	Sat Oct 27 12:37:36 2001
@@ -173,7 +173,7 @@
 #define INITRD_START (*(unsigned long *) (PARAM+0x218))
 #define INITRD_SIZE (*(unsigned long *) (PARAM+0x21c))
 #define COMMAND_LINE ((char *) (PARAM+2048))
-#define COMMAND_LINE_SIZE 256
+#define COMMAND_LINE_SIZE 512
 
 #define RAMDISK_IMAGE_START_MASK  	0x07FF
 #define RAMDISK_PROMPT_FLAG		0x8000

--- linux/drivers/block/ll_rw_blk.c.orig	Fri Nov 30 11:25:41 2001
+++ linux/drivers/block/ll_rw_blk.c	Fri Nov 30 11:24:00 2001
@@ -876,9 +876,9 @@
 				/* This may well happen - the kernel calls bread()
 				   without checking the size of the device, e.g.,
 				   when mounting a device. */
-				printk(KERN_INFO
+				printk(KERN_DEBUG
 				       "attempt to access beyond end of device\n");
-				printk(KERN_INFO "%s: rw=%d, want=%ld, limit=%d\n",
+				printk(KERN_DEBUG "%s: rw=%d, want=%ld, limit=%d\n",
 				       kdevname(bh->b_rdev), rw,
 				       (sector + count)>>1,
 				       blk_size[major][MINOR(bh->b_rdev)]);

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux