[comp.sys.sgi] Swap Partitions

aspgasd@cid.aes.doe.ca (Alain St-Denis) (09/21/90)

Ok. Here's the scenario:

I want to have one swap partition on a different drive than my drive 0.  So
I change SWAPDEV in /usr/sysgen/system, I adjust /dev/swap AND /dev/rswap
accordingly and I rebuild the kernel.  Then I reboot my machine and the
swap is still on xyl0d0s1.  I want it on xyl0d1d1.  What am I doing wrong?
We're running a few 4D/240S.  By the way, just for the hell of it, I tried
the same procedure on a 4D/20 and it worked (for a different partition on
the same disk).

Also, I thought that it would have been nice to have a miniroot that would
start from a partition of our choice. So I poked around in /usr/sysgen and
found these lines in the kernel config file:

/* Setup the miniroot variable for kernel miniroot configuration */
#ifdef MINIROOT
u_char miniroot = 1;
#else
u_char miniroot = 0;
#endif

So I naively defined MINIROOT (in CCOPTS) in the system config file and
tried the kernel I built from it (with ROOTDEV & all changed).  But, guess
what, it didn't work.  The thing starts but complains about not finding
devnm (yes, I know what devnm does) or something.  I even poked the
unix.IP6 file in mr to replace rootdev & all with the values I wanted and I
got the same complaints.  So, obviously, there's more to it that just
changing the major/minor device numbers and rebuilding the kernel.

Could someone explain to me what I'm missing here?  It would be very much
appreciated.  I may be stubborn and childish about the whole thing but I
REALLY want the swap where I want it!  :-) 

-- 
Alain St-Denis 
Centre informatique de Dorval
Environnement Canada 
astdenis@cid.aes.doe.CA 
(514) 421-4697

aspgasd@cid.aes.doe.CA (Alain St-Denis) (09/25/90)

Ok, here's the scenario:

I want to have my default swap partition on another drive than the one
occupied by root. So, I change SWAPDEV in /usr/sysgen/system
accordingly and I remake /dev/swap and /dev/rswap. I then rebuild the
kernel. Everything seems fine, the values have been changed in the
kernel. So I reboot and guess what, it still uses the old default swap
partition (I want xyl0d1s1 and get xyl0d0s1). Anybody have an idea
what is wrong here? By the way, this was done on a 4D/240S. I tested
the same procedure with a 4D/20 (a different partition on the same
disk) and it worked...

Also, since we want to move our swap space and use the whole disk, we
figured that it would be a good idea to have a miniroot that starts
from a partition of our choice. So I naively defined the constant
MINIROOT in /usr/sysgen/system (CCOPTS). Obviously, that's not all
there is to it because when I tried this kernel, the machine
complained about not finding devnm (yes, I know what devnm is). I even
tried to poke the values I wanted in the miniroot unix.IP6 file and
got the same error.

I'm aware of the fact that we can add swap space. But that's not what
we want. We want to move it.

Any idea, anyone (SGI maybe)?


(Note: I mailed something about this directly to info-iris but for
some reason it was not re-submitted to usenet. So here it is.)


-- 
Alain St-Denis
Centre informatique de Dorval
Environnement Canada
astdenis@cid.aes.doe.CA

wiltse@sgi.com (Wiltse Carpenter) (09/26/90)

In article <1990Sep25.132534.16796@cid.aes.doe.CA> aspgasd@cid.aes.doe.CA (Alain St-Denis) writes:
>Ok, here's the scenario:
>
>I want to have my default swap partition on another drive than the one
>occupied by root. So, I change SWAPDEV in /usr/sysgen/system
>accordingly and I remake /dev/swap and /dev/rswap. I then rebuild the
>kernel. Everything seems fine, the values have been changed in the
>kernel. So I reboot and guess what, it still uses the old default swap
>partition (I want xyl0d1s1 and get xyl0d0s1). Anybody have an idea
>what is wrong here? By the way, this was done on a 4D/240S. I tested
>the same procedure with a 4D/20 (a different partition on the same
>disk) and it worked...

You need to unset the non-volatile ram variable "root" in the prom.  You
can do this by getting into prom manual mode and typing:

	unsetenv root

If root is set, swap automatically gets placed at partition root+1.  On
the 4D/20 and 4D/25, root is not saved in the n.v. ram.  It still works
if you set before you boot though.

>
>Also, since we want to move our swap space and use the whole disk, we
>figured that it would be a good idea to have a miniroot that starts
>from a partition of our choice. So I naively defined the constant
>MINIROOT in /usr/sysgen/system (CCOPTS).

You probably don't want to build a mini-root kernel at all.  In fact,
I'm sure you don't.

The mini-root is used for system software installation and crash recovery.
In both of these cases a complete filesystem is copied from a tape or
remote machine onto the swap partition and booted.  To boot the mini-root
on an alternate disk you would have to manually copy it there and
specify an alternate root on the boot command like this:

	sash>> boot -f dksc(0,5,0)unix.IP6 root=dks0d5s0

>Any idea, anyone (SGI maybe)?

You are treading on what might best be termed ``Advanced Configurations''
here.  Good luck.

	-Wiltse

mitch@sgi.com (Thomas Mitchell) (10/23/90)

In article <1990Sep25.234622.21252@odin.corp.sgi.com> wiltse@sgi.com (Wiltse Carpenter) writes:
* In article <1990Sep25.132534.16796@cid.aes.doe.CA> aspgasd@cid.aes.doe.CA (Alain St-Denis) writes:
* >
* >I want to .... swap partition ....


* You need to unset the non-volatile ram variable "root" in the prom.  You
* can do this by getting into prom manual mode and typing:
* 
* 	unsetenv root

Hmmmmmmm......

Re: Advanced Configurations

Please.

1) keep a notebook.  Log all changes.  Use a was/is/why triplet
 to ensure the ability to return to a sane set of values.
 Review and summarize the notes often.

2) save factory values in the notebook prior to
 changing anything.  If the files are on line print them to
 paper.  Remember, if you have a problem you will not be able 
 to read them  :-)

3) Back up and verify your backups prior to any upgrade.  There is
 always a chance that some general clean up by SGI,  may step on your 
 local changes.  Back up in ways you understand and can verify.  
 Always back up your own work.

4) Have a back up system administrator.  Work with this person
 at all times.  Share information and discuss changes prior 
 to doing.  

5) Plan to have extra time when installing any option or upgrade.
 Verify devices and mounts prior to installing software.
 
6) Avoid going up the down stair case.  The more users and more
 critical the machine the more important it is to avoid special
 case handling.  Do read the book (Up the Down Staircase) it 
 is funny and has nothing to do with computers.

7) Go for it.

--
--
  Thomas P. Mitchell   --  mitch@sgi.com  or mitch%relay.csd@sgi.com
	"All things in moderation; including moderation."

sabbagh@acf5.NYU.EDU (sabbagh) (10/23/90)

In article <9010201727.AA15683@UZI.MIT.EDU>:
>I'm trying to build GNU EMACS on a PI.  I have successfully built it before
>on a 4D80, but here I've not been able to successfully do the final temacs
>statement -- which the PROBLEMS file tells me is because I have insufficient
>swap space.  This seems very possible to me, but I don't know how to increase
>the amount of swap space I have to complete the compilation.
>Any descriptions of how swap space works would be appreciated.
>Thanks,
>Eugene Gholz
>(eugholz@athena.mit.edu)

I had this very problem this morning!  I have concluded that it is yet
another "feature" of IRIX 3.3.1.  In the past, I was able to build
emacs 18.52 on a Personal Iris under 3.2.  Unfortunately, due to an 
extremely bad installation procedure (another story) and minimal back up
(my fault) I had to rebuild emacs under 3.3.1; there was not enough 
swap space.

The most reasonable explanation for this is that 3.3.1 takes up more 
memory that 3.2, hence you run out of swap space.  Keep in mind that
the Iris gives any process as much memory as it needs; there are no limits
placed on processes.  

Unfortunately, I have no idea of how to fix this problem, short of
buying another disk and assigning more swap space on it.  I doubt that
you can nfs-mount a swap partition.

Any ideas, guys?

Hadil G. Sabbagh
E-mail:		sabbagh@cs.nyu.edu
Voice:		(212) 998-3125
Snail:		Courant Institute of Math. Sci.
		251 Mercer St.
		New York,NY 10012

"No talking to invisible people."
				- Sign in Top Dog, Durant Ave., Berkeley
Disclaimer: This is not a disclaimer.

scotth@harlie.corp.sgi.com (Scott Henry) (10/24/90)

In article <1308@acf5.NYU.EDU>, sabbagh@acf5.NYU.EDU (sabbagh) writes:
|> 
|> In article <9010201727.AA15683@UZI.MIT.EDU>:
|> >I'm trying to build GNU EMACS on a PI.  I have successfully built it before
|> >on a 4D80, but here I've not been able to successfully do the final temacs
|> >statement -- which the PROBLEMS file tells me is because I have insufficient
|> >swap space.  This seems very possible to me, but I don't know how to increase
|> >the amount of swap space I have to complete the compilation.
|> >Any descriptions of how swap space works would be appreciated.
|> >Thanks,
|> >Eugene Gholz
|> >(eugholz@athena.mit.edu)
|> 
|> I had this very problem this morning!  I have concluded that it is yet
|> another "feature" of IRIX 3.3.1.  In the past, I was able to build
|> emacs 18.52 on a Personal Iris under 3.2.  Unfortunately, due to an 
|> extremely bad installation procedure (another story) and minimal back up
|> (my fault) I had to rebuild emacs under 3.3.1; there was not enough 
|> swap space.

I think that I should have posted, instead of just e-mailing so as to stop the propogation of rumours. Here's the scoop on GNU Emacs and Irix 3.3+ (a subset of something I posted a month or so ago):


Between 3.2.* and 3.3, the loader no longer ignored errors in the a.out
header that GNU Emacs took advantage of. I am told that that was
un-done in 3.3.1. It mostly meant that a _stripped_ 3.2 binary would
fail to load under 3.3, an unstripped one would appear to work fine. In
addition, a change was made in libc.a for POSIX compliance: getwd() was
defined, but in terms of getcwd() (or something like that). Emacs
assumes by default that a system doesn't have getcwd(), and defines one
interms of getwd(). Hence, an inifinite recursion loop is generated,
and Emacs (temacs) core-dumps when it hits process limits while building
the final executable (xemacs & emacs-18.55.??).

2 solutions:

1) Get 18.56 (should be available any day now, I understand) -- I tested
   it to ensure that it compiles out-of-the-box under 3.3.1.

2) Add the following lines to either .../src/config.h or .../src/m-iris-4d.h:

/*
 * Irix 3.3 defines this, and causes an infinite loop when trying to dump.
 */
#define HAVE_GETWD

and (if you are running 3.3 instead of 3.3.1), apply the following
patch to .../src/unexmips.c (a 1-line change):

*** unexmips.c.orig	Thu Jan 12 16:14:05 1989
--- unexmips.c	Mon Jul 30 22:10:10 1990
***************
*** 255,261 ****
    rdata_section->s_size = data_start - DATA_START;
    data_section->s_vaddr = data_start;
    data_section->s_paddr = data_start;
!   data_section->s_size = brk - DATA_START;
    data_section->s_scnptr = rdata_section->s_scnptr + rdata_section->s_size;
    vaddr = data_section->s_vaddr + data_section->s_size;
    scnptr = data_section->s_scnptr + data_section->s_size;
--- 255,261 ----
    rdata_section->s_size = data_start - DATA_START;
    data_section->s_vaddr = data_start;
    data_section->s_paddr = data_start;
!   data_section->s_size = brk - data_start;
    data_section->s_scnptr = rdata_section->s_scnptr + rdata_section->s_size;
    vaddr = data_section->s_vaddr + data_section->s_size;
    scnptr = data_section->s_scnptr + data_section->s_size;
*** s-irix3_3.h.orig	Mon Jul 30 22:10:10 1990
--- s-irix3_3.h	Mon Jul 30 23:04:30 1990
***************

-- 
 Scott Henry <scotth@sgi.com> / Traveller on Dragon Wings
 Information Services,       / Help! My disclaimer is missing!
 Silicon Graphics, Inc      / 'Under-achiever and proud of it!' -- Bart Simpson