adnan@sgtech.uucp (Adnan Yaqub) (04/04/91)
I need some information on how SCO Xenix's bootstrap program (boot) works. Specifically, what are the size restrictions on the kernels it can boot. Here is the problem. Someone I am trying to help has two kernels, one of which will boot, and the other which won't. He says that when he tries to boot the one that fails, the bootstrap program seems to start loading the kernel in, and then returns to the boot: prompt. The size of the kernel which does boot is: 288588 + 79648 + 207960 = 576196 = 0x8cac4 while the unbootable one is: 288588 + 79648 + 208680 = 576916 = 0x8cd94 I tried to duplicate the problem buy linking into a vanilla kernel an object file which defines some large arrays. I found that I could boot a kernel with the following size: 242192 + 39536 + 543732 = 825460 = 0xc9874 while when I tried to boot a kernel with this size: 242192 + 39536 + 547828 = 829556 = 0xca874 I got the error message: invalid xs_rbase! and the bootstrap returned to the boot: prompt. Can someone please tell me what is going on? What can boot boot? Thanks. -- Adnan Yaqub (adnan@sgtech.uucp) Star Gate Technologies 29300 Aurora Rd, Solon, OH, 44139, USA, +1 216 349 1860
paulz@sco.COM (W. Paul Zola) (04/12/91)
In article <73@sgtech.UUCP> adnan@sgtech.uucp (Adnan Yaqub) writes: }I need some information on how SCO Xenix's bootstrap program (boot) }works. Specifically, what are the size restrictions on the kernels it }can boot. Here is the problem. } [details of error messages, including "invalid xs_rbase!" deleted] The following articles from the SCO Information Tools database should help with your problem. I'm posting because I think this may be of general interest. ################## cut here ################ cut here ################## After installing a new kernel I get a boot prompt that loops. KEYWORDS: reboot cycle kernel 640K device driver custom link_xenix big large nfiles xnx155 xnx126 RELEASE: SCO XENIX 386 Operating System Release 2.3 Generic PROBLEM: You have linked a new driver or product into the kernel using the "custom" or "/etc/install" utility, or have adjusted the tunable kernel parameters using "configure". After installing the new kernel as /xenix when you try and reboot, you will see the prompt: Boot : After hitting return the machine will hesitate and then return Boot : This cycle will loop indefinitely until you type: Boot : xenix.old This will boot your old /xenix, which is not larger than 640K. CAUSE: The kernel has grown larger than 640K and /boot is trying to load the kernel into extended memory. Due to a timing problem on certain machines, pin A20 on the cpu is being dragged low, and the address the /boot program is passing to the cpu is incorrect. SOLUTION: By adding additional delays into the /boot binary, pin A20 goes high, and the correct address is passed to the cpu. The new /boot binary is available as a Support Level Supplement (SLS) called xnx126. This SLS is available from the Customer Services Department of The Santa Cruz Operation, Inc. This binary is also available as part of SLS xnx155. *****NOTE: This problem was resolved in SCO XENIX 2.3.2. However, it is possible for a system to have been upgraded to XENIX 2.3.2 and not contain the revised /boot binary. Therefore, if this problem occurs in SCO Xenix 2.3.2, we suggest you install xnx155. ################## cut here ################ cut here ################## Note that the kernel must reside within the first 1024 cylinders of the hard disk in order for it to boot properly. As a practical matter, this means that the root filesystem must lie within the 1024 cylinder limit. "invalid xs_rbase!" is one of the messages that can be generated when the kernel lies beyond the 1024 cylinder limit. Below is an item from the IT database on how to determine whether the root fileystem lies within this limit. ################## cut here ################ cut here ################## How to calculate hard drive size in megabytes and number of sectors. KEYWORDS: hd hard drive mb megabytes sectors 1024 size RELEASE: SCO XENIX System V Operating System Generic SCO UNIX System V/386 Operating System Generic PROBLEM: How do I calculate the size of a hard drive in megabytes if given the number of cylinders and heads and sectors per track? How do I calculate the total number of sectors available and the maximum number of sectors allowable in the root filesystem? SOLUTION: In order to answer these questions you will need to know the following information about your hard drive: a. The number of cylinders. b. The number of heads. c. The number of sectors per track. If you do not know this information, check the documentation that came with the hard drive, consult the vendor who sold you the hard drive, or consult the hard drive manufacturer. 1. The total megabyte capacity of the hard drive is calculated as follows: Megabytes = (cylinders * heads * sectors-per-track) / 2000 Note: 15% to 20% of the total capacity of the drive will be used by low-level formatting and will not be available for storage. 2. The number of sectors on a hard disk is calculated as follows: sectors = cylinders * heads 3. The entire root filesystem must reside within the first 1024 cylinders of the hard drive. This 1024 cylinder limit includes any other filesystems you might have, including DOS. If the number of cylinders on your hard drive is less than 1024, or if the hard disk controller will translate the number of cylinders to less than 1024, then there is no restriction to the size of the root filesystem. The maximum size available for the root filesystem is calculated by determining how many sectors must be outside the root filesystem and then subtracting that value from the total number of sectors reported available in the SCO UNIX System V/386 or XENIX partition. 1. Calculate the total sectors available on the hard disk as follows: sectors = cylinders * heads 2. Calculate the number of sectors in the first 1024 cylinders as follows: base-sectors = 1024 * heads 3. Calculate the number of sectors over the 1024 cylinder boundary as follows: over-sectors = sectors - base-sectors 4. In order to insure that the root filesystem is within the 1024 cylinder boundary, you must assign at least the number of sectors equal to the value you calculated as 'over-sectors' to divisions outside of root. The divisions outside of root may include swap space, as well as other filesystems. ################## cut here ################ cut here ################## I hope this helps you with your problem. - Paul Zola Software Support Engineer paulz@sco.COM Gotta tend the earth if you want a rose. - Emily Saliers DISCLAIMER: I speak for myself, and not for SCO.