Re: Flag day for bootloader + kernel?

Izumi Tsutsui <[email protected]>
Newsgroups gmane.os.netbsd.ports.sgimips
Message-ID <[email protected]>
[email protected] wrote:

> > Sounds good - but please also post a headsup and bootloader update
> > instructions (I always have to look up how sysinst does it in the  
> > code ;-})
> 
> man sgivol ;)

And FAQ page?
http://www.NetBSD.org/ports/sgimips/faq.html#sgivol

One problem is that sgivol(8) doesn't have a rename command
for files in sgivolhdr.

Anyway, typical procedure could be as the following:

1. update sources
 Not committed yet, but you'll have to update arch/sgimips/include/bootinfo.h
 and arch/sgimips/stand/boot/version.

2. build a new kernel and put it into your target sgimips
 New kernels will work with old bootloaders (without ksyms(4) support)

3. build a new bootloader binary (on your build host)

4. copy a new boot (ip2xboot or ip3xboot) binary into your target sgimips
 (/tmp/ip3xboot for IP32 is assumed here)

5. preserve an old boot binary
 (1) check old boot binary name
  Use sgivol(8) without any options:
---
# /usr/mdec/sgivol sd0
disklabel shows 4197405 sectors
checksum: 00000000
root part: 0
swap part: 1
bootfile: /netbsd

Volume header files:
boot     offset    2 blocks, length    59300 bytes (116 blocks)

SGI partitions:
 0:a blocks  3925980 first     8670 type  4 (BSD4.2)
 1:b blocks   262755 first  3934650 type  3 (Raw)
 3:d blocks     8670 first        0 type  4 (BSD4.2)
 8:i blocks     8686 first        0 type  0 (Volume Header)
10:k blocks  4197405 first        0 type  6 (Volume)
# 
---

  After the default installation, bootloader is stored as "boot",
  but "aoutboot" is also stored on IP20/IP22 machines.

 (2)read old boot binary from sgivolhdr to preserve it
  We can just use "sgivol -r" command:
---
# /usr/mdec/sgivol -r boot /tmp/boot.0 sd0
Reading file boot
# 
---

 (3)put the old (and renamed) boot binary into sgivolhdr
  By "sgivol -w" command:
---
# /usr/mdec/sgivol -w boot.0 /tmp/boot.0 sd0
Writing file /tmp/boot.0
File /tmp/boot.0 has 59300 bytes
disklabel shows 4197405 sectors
checksum: 00000000
root part: 0
swap part: 1
bootfile: /netbsd

Volume header files:
boot     offset    2 blocks, length    59300 bytes (116 blocks)
boot.0   offset  118 blocks, length    59300 bytes (116 blocks)

SGI partitions:
 0:a blocks  3925980 first     8670 type  4 (BSD4.2)
 1:b blocks   262755 first  3934650 type  3 (Raw)
 3:d blocks     8670 first        0 type  4 (BSD4.2)
 8:i blocks     8686 first        0 type  0 (Volume Header)
10:k blocks  4197405 first        0 type  6 (Volume)

Do you want to update volume (y/n)? y
# 
---

6. put a new bootloader binary
 By "sgivol -w" command again:
---
# /usr/mdec/sgivol -w boot /tmp/ip3xboot sd0
Writing file /tmp/ip3xboot
File /tmp/ip3xboot has 59272 bytes
File boot exists, removing old file
disklabel shows 4197405 sectors
checksum: 00000000
root part: 0
swap part: 1
bootfile: /netbsd

Volume header files:
boot     offset    2 blocks, length    59272 bytes (116 blocks)
boot.0   offset  118 blocks, length    59300 bytes (116 blocks)

SGI partitions:
 0:a blocks  3925980 first     8670 type  4 (BSD4.2)
 1:b blocks   262755 first  3934650 type  3 (Raw)
 3:d blocks     8670 first        0 type  4 (BSD4.2)
 8:i blocks     8686 first        0 type  0 (Volume Header)
10:k blocks  4197405 first        0 type  6 (Volume)

Do you want to update volume (y/n)? y
# 
---

7. reboot and see how it goes

8. how to recover on trouble
 (1) loading non-default kernels
  If you want to load an old kernel, use the following command (on IP32):

---
Command Monitor.  Type "exit" to return to the menu.
> boot netbsd.0
51152+2400 entry: 0x80002000

NetBSD/sgimips 4.99.71 Bootstrap, Revision 1.5
(tsutsui@mirage, Sun Aug  3 10:02:58 JST 2008)

devopen: pci(0)scsi(0)disk(1)rdisk(0)partition(0) type scsi file netbsd.0
5152448+334744 [270960+262228]=0x5be228
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008
    The NetBSD Foundation, Inc.  All rights reserved.
 :
---

 (2) use an old bootloader (which is preserved)
  If you want to use an old bootloader to load kernel,
  use the following command (on IP32):
---
Command Monitor.  Type "exit" to return to the menu.
> boot -f pci()scsi()disk(1)rdisk()partition(8)boot.0
50992+2400 entry: 0x80002000

NetBSD/sgimips 4.99.54 Bootstrap, Revision 1.2
([email protected], Wed Feb 20 18:50:08 UTC 2008)

devopen: pci(0)scsi(0)disk(1)rdisk(0)partition(0) type scsi file /netbsd
5242064+322016 [276176+263257]=0x5d26e8
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008
    The NetBSD Foundation, Inc.  All rights reserved.
 :
---

 (3) recovery from CD-ROM
  To boot the install kernel from CD-ROM see the following entry:
ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-4.0/sgimips/INSTALL.html#Install%20via%20a%20bootable%20CD-ROM
---
(for most Indigo2 (IP22) and Indy (IP24) machines)
>> boot -f scsi(0)cdrom(X)rdisk(0)partition(8)ip2xboot

(for Indigo (IP20) and Indigo2/Indy machines with old PROMs)
>> boot -f scsi(0)cdrom(X)rdisk(0)partition(8)aoutboot

(for O2 (IP32) machines)
>> boot -f pci(0)scsi(0)cdrom(X)rdisk(0)partition(8)ip3xboot
---

 (4) recovery by netboot
 See FAQ entry:
http://www.NetBSD.org/ports/sgimips/faq.html#bootstrapping

In short (after setup your server and setenv on your sgimips):
> boot -f bootp():/netbsd.IP32
---

Is this enough? ;-)
---
Izumi Tsutsui
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.