Subject: newfs problems w/sysinst (2.1 release) on Sun SS20
To: None <port-sparc@NetBSD.org, tech-install@NetBSD.org>
From: Volker A. Brandt <vab@bb-c.de>
List: tech-install
Date: 11/28/2005 21:16:14
[No, you're not seeing double.  Sorry for re-sending this but I got
 immediately pounced on by people with astute detection capabilities 
 who pointed out that I had stupidly forgotten to add a Subject line...]


Hello all!


I don't know if it is just me, if it is sparc-related or a generic
sysinst problem.

Anyway, here goes:  I wanted to do a complete installation of NetBSD 2.1
(off of a release CD image).  Target is an SS20 with two identical 9 GB
disks like so:

sd0 at scsibus0 target 1 lun 0: <FUJITSU, MAB3091S SUN9.0G, 1705> disk fixed
sd0: 8637 MB, 4926 cyl, 27 head, 133 sec, 512 bytes/sect x 17689267 sectors
sd0: sync (100.00ns offset 15), 8-bit (10.000MB/s) transfers, tagged queueing
sd1 at scsibus0 target 3 lun 0: <FUJITSU, MAB3091S SUN9.0G, 1705> disk fixed
sd1: 8637 MB, 4926 cyl, 27 head, 133 sec, 512 bytes/sect x 17689267 sectors
sd1: sync (100.00ns offset 15), 8-bit (10.000MB/s) transfers, tagged queueing

Boot is via network from an Ultra5 running Solaris.  The SS20 boots fine
as usual; after all it's called *Net*BSD :-)


So sysinst does it's thing:

 NetBSD uses a BSD disklabel to carve up the NetBSD portion of the disk into
 multiple BSD partitions.  You must now set up your BSD disklabel.

 You can use a simple editor to set the sizes of the NetBSD partitions, or
 keep the existing partition sizes and contents.

 You will then be given the opportunity to change any of the disklabel fields.

 The NetBSD part of your disk is 8633 Megabytes.  A full installation requires
 at least 260 Megabytes without X and at least 295 Megabytes if the X sets are
 included.
                     lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
                     x Choose your installation          x
                     x                                   x
                     x>a: Set sizes of NetBSD partitions x
                     x b: Use existing partition sizes   x

...etc etc...

Then we come to the disk slice layout:


 You can now change the sizes for the system partitions.  The default is to
 allocate all the space to the root file system, however you may wish to have
 separate /usr (additional system files), /var (log files etc) or /home
 (users' home directories).

 Free space will be added to the partition marked with a '+'.

        MB         Cylinders   Sectors   Filesystem
   >  1195  (8504)       682   2449062 + /
       129                74    265734   swap
         0                 0         0   tmp (mfs)
         0                 0         0   /usr
         0                 0         0   /var
         0                 0         0   /home
    Add a user defined partition
    Change input units (sectors/cylinders/MB)
    Accept partition sizes.  Free space 7308 MB, 5 free partitions.


Of course I don't like that.  :-)  So I make some changes, ending
up with the following layout:


 You can now change the sizes for the system partitions.  The default is to
 allocate all the space to the root file system, however you may wish to have
 separate /usr (additional system files), /var (log files etc) or /home
 (users' home directories).

 Free space will be added to the partition marked with a '+'.

        MB         Cylinders   Sectors   Filesystem
       129                74    265734   /
       513               293   1052163   swap
       129                74    265734   tmp (mfs)
       513               293   1052163   /usr
       513               293   1052163   /var
   >  6962              3971  14259861   /opt
    Add a user defined partition
    Change input units (sectors/cylinders/MB)
    Accept partition sizes.  Free space 0 MB, 2 free partitions.


So far, so good.  I accept the partition sizes.
Then I get this:

 We now have your BSD-disklabel partitions as:
 This is your last chance to change them.

    Start  MB   End  MB  Size  MB FS type    Newfs Mount Mount point
    --------- --------- --------- ---------- ----- ----- -----------
 a:         0       128       129 FFSv1      Yes   Yes   /
 b:       129       642       513 swap
 c:         0      8632      8633 Whole disk
>d:      1157      1670       513 FFSv1      Yes   Yes   /var
 e:      1671      8632      6962 FFSv1      Yes   Yes   /opt
 f:         0         0         0 unused
 g:       643      1156       513 FFSv1      Yes   Yes   /usr
 h:         0         0         0 unused
 i: Change input units (sectors/cylinders/MB)
 x: Partition sizes ok


Hmmm... it has swapped around the sequence a bit.  But I am very
pedantic and want it, well, the way *I* want it.  So I edit and edit
and edit... you get the idea.

So, after what seems like half an hour through a tip connection to
the console at 9600 bps, I have something I like:


 We now have your BSD-disklabel partitions as:
 This is your last chance to change them.

    Start  MB   End  MB  Size  MB FS type    Newfs Mount Mount point
    --------- --------- --------- ---------- ----- ----- -----------
 a:         0       128       129 FFSv1      Yes   Yes   /
 b:       129       642       513 swap
 c:         0      8632      8633 Whole disk
 d:         0         0         0 unused
 e:       643      1154       511 FFSv2      Yes   Yes   /usr
 f:      1155      1666       511 FFSv2      Yes   Yes   /var
>g:      1667      8632      6966 FFSv2      Yes   Yes   /opt
 h:         0         0         0 unused
 i: Change input units (sectors/cylinders/MB)
 x: Partition sizes ok


Then it gets down to business and creates the file systems.
BUT:


      Status: Command failed
    Command: /sbin/newfs -O 2 -b 16384 -f 2048  /dev/rsd0e
     Hit enter to continue
--------------------------------------------------------------------------------
newfs: maximum file system size on `/dev/rsd0e' is 1048572 sectors


And then I get dumped back into the main sysinst menu.  WTF?


Time for some investigation.  Drop into a shell and:

# disklabel -r sd0
# /dev/rsd0c:
type: unknown
disk: mojave_sd0
label:
flags:
bytes/sector: 512
sectors/track: 133
tracks/cylinder: 27
sectors/cylinder: 3591
cylinders: 4924
total sectors: 17682084
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # microseconds
track-to-track seek: 0  # microseconds
drivedata: 0

8 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:    265734         0     4.2BSD   1024  8192 33224  # (Cyl.      0 -     73)
 b:   1052163    265734       swap                     # (Cyl.     74 -    366)
 c:  17682084         0     unused      0     0        # (Cyl.      0 -   4923)
 e:   1048572   1317897     4.2BSD   2048 16384     0  # (Cyl.    367 -    658)
 f:   1048572   2366469     4.2BSD   1024  8192     0  # (Cyl.    659 -    950)
 g:  14267043   3415041     4.2BSD   1024  8192 46608  # (Cyl.    951 -   4923)

Looking good, try it manually:

# newfs -O 2 -b 16384 -f 2048  /dev/rsd0e
/dev/rsd0e: 512.0MB (1048572 sectors) block size 16384, fragment size 2048
        using 4 cylinder groups of 128.00MB, 8192 blks, 15872 inodes.
super-block backups (for fsck -b #) at:
    160, 262304, 524448, 786592,

Surprise, it works!  But the next one doesn't:

# newfs -O 2 -b  8192 -f 1024 /dev/rsd0f
newfs: maximum file system size on `/dev/rsd0f' is 1048572 sectors

Leave out the block and fragment sizes, then it does work:

# newfs -O 2 /dev/rsd0f
/dev/rsd0f: 512.0MB (1048572 sectors) block size 8192, fragment size 1024
        using 12 cylinder groups of 42.67MB, 5462 blks, 10272 inodes.
super-block backups (for fsck -b #) at:
    144,  87536, 174928, 262320, 349712, 437104, 524496, 611888, 699280, 786672,
 874064, 961456,

For completeness, check rsd0g:

# newfs -O 2 -b 8192 -f 1024 -c 46608 /dev/rsd0g
/dev/rsd0g: 6966.3MB (14267042 sectors) block size 8192, fragment size 1024
        using 153 cylinder groups of 45.54MB, 5829 blks, 10944 inodes.
super-block backups (for fsck -b #) at:
      144,    93408,   186672,   279936,   373200,   466464,   559728,   652992,
   746256,   839520,   932784,  1026048,  1119312,  1212576,  1305840,  1399104,
  1492368,  1585632,  1678896,  1772160,  1865424,  1958688,  2051952,  2145216,
... etc etc...

So that does work as well.

The end of the story is that I had to newfs the file systems manually
and skip the newfs in sysinst.

What's going on?  Am I too stupid?  Should I file a PR?


Thanks -- Volker


PS: Please CC as I cannot read the list during the week.
-- 
------------------------------------------------------------------------
Volker A. Brandt                  Consulting and Support for Sun Solaris
Brandt & Brandt Computer GmbH              WWW: http://www.bb-c.de/~vab/
Meckenheim, Germany                                   Email: vab@bb-c.de