Solved

Can't find boot program

Posted on 2004-04-08
7
557 Views
Last Modified: 2013-12-27
Hi
I have mirrored my system drive using a shell script which basically makes newfs on all partitions then uses ufsdump to copy the live drive to the mirror drive, after this is complete it uses installboot to install the boot block.
However when I try to boot off this new disk I get the following error

ok>boot
bootblk: can't find the boot program

When I look at the new disk I find the bootblk in /usr/platform/`uname -i`/lib/fs/ufs

Please let me know what I may be missing.

Thanks in advance.
Steve ...
0
Comment
Question by:sluch
7 Comments
 
LVL 40

Expert Comment

by:jlevie
ID: 10787008
Could we see the shell script you used? I'd guess that something is wrong with the installboot comand you used and we'd need to see what you did to be of help.
0
 

Author Comment

by:sluch
ID: 10787382
Here is the script we used.

#!/bin/sh                                                                                                                                                              
#                                                                                        
# The steps involved for each filesystem /, /usr, /var, /opt, /local are:                
# unmount mirrored copy of each filesystem and run newfs on it.                          
# Remount the newly created filesystem.                                                  
# Run ufsdump over the old filesystem piped into ufsrestore on the new filesystem.        
# If it is the root partition, edit the etc/vfstab file to reflect the new                
# disk device names for the filesystems and install a new boot block.                    
#                                                                                        
# This script relies on the mirrored partitions being mounted at                          
# ${MMPT} within the /etc/vfstab file                                                    
                                                                                         
trap "trap_exit" 0 1 2 3 15                                                              
                                                                                         
trap_exit() {                                                                            
  echo "$ME: Finished at `date`"                                                          
} # trap_exit                                                                            
                                                                                         
                                                                                         
#                                                                                        
# Initialise variables.  The controller and partitions are common for both                
# disks.                                                                                  
#                                                                                        
initialise()                                                                              
{                                                                                        
  ME=`basename $0`                                                                        
  LOGFILE=/var/adm/mirrorlog                                                              
                                                                                         
  LIVE=c0t3d0                                                                            
  MIRROR=c0t1d0                                                                          
  ROOTP=s0                                                                                
  VARP=s7                                                                                
  OPTP=s5                                                                                
                                                                                         
  MMPT=MIRROR_   # Mount point prefix for mirror filesystems                              
                                                                                         
} # initialise                                                                            
                                                                                         
                                                                                         
#                                                                                        
# This routine is the guts, it does the basic steps mentioned above.                      
# The parameter is the partition number variable definied in initialise.                  
#                                                                                        
backup_partition()                                                                        
{                                                                                        
  PART=$1                                                                                
  if [ -z "${PART}" ] ; then                                                              
    echo "$ME: Partition not specified!! Aborting.  Mirror not valid."                    
    exit 1                                                                                
  fi                                                                                      
                                                                                         
  #                                                                                      
  # Unmount the old mirror.  If error, abort.                                            
  #                                                                                      
  /etc/umount /dev/dsk/${MIRROR}${PART}                                                  
  if [ $? -ne 0 ] ; then                                                                  
    echo "$ME: Unable to unmount ${MIRROR}${PART}. Aborting. Mirror not valid."          
    exit 1                                                                                
  fi                                                                                      
                                                                                         
  #                                                                                      
  # Run newfs on the raw partition.                                                      
  #                                                                                      
  /usr/bin/echo "y" | /usr/sbin/newfs /dev/rdsk/${MIRROR}${PART}                          
  if [ $? -ne 0 ] ; then                                                                  
    echo "$ME: Unable to newfs ${MIRROR}${PART}. Aborting.  Mirror not valid."            
    exit 1                                                                                
  fi                                                                                      
                                                                                         
  #                                                                                      
  # Remount the squeaky clean filesystem.                                                
  #                                                                                      
  /etc/mount /dev/dsk/${MIRROR}${PART}                                                    
  if [ $? -ne 0 ] ; then                                                                  
    echo "$ME: Unable to remount /dev/dsk/${MIRROR}${PART}. Aborting. Mirror not valid."  
    exit 1                                                                                
  fi                                                                                      
                                                                                         
  #                                                                                      
  # Copy the old partition onto the mirror.  We need to be careful to get the            
  # mirror filesystem mount point name which is needed for restore.                      
  #                                                                                      
  FSNAME=`df /dev/dsk/${MIRROR}${PART} | cut -d' ' -f1`                                  
  if [ -z "${FSNAME}" ] ; then                                                            
    echo "$ME: unable to determine filesystem name of ${MIRROR}${PART}. Aborting.  Mirror
not valid."                                                                              
    exit 1                                                                                
  fi                                                                                      
                                                                                         
  #                                                                                      
  # What willl happen to the interactive prompts for setting mode of .?                  
  #                                                                                      
  /usr/sbin/ufsdump 0fu - /dev/rdsk/${LIVE}${PART} | (cd $FSNAME; /usr/sbin/ufsrestore rf
- )                                                                                      
                                                                                         
  if [ $? -ne 0 ] ; then                                                                  
    echo "$ME: dump or restore of ${FSNAME} failed. Aborting. Mirror not valid."          
    exit 1                                                                                
  fi                                                                                      
  echo "$FSNAME copied successfully.\n"                                                  
} # backup_partition                                                                      
                                                                                         
                                                                                         
#                                                                                        
# On the mirrored root disk vfstab we need to a) remove all references to the            
# backup partitions and b) change the operating system mount point partitions            
# to be the mirrored disks.                                                              
#                                                                                        
update_vfstab()                                                                          
{                                                                                        
  /usr/bin/mv /${MMPT}root/etc/vfstab /${MMPT}root/etc/vfstab.old                        
  if [ $? -ne 0 ] ; then                                                                  
    echo "$ME: Unable to mv /${MMPT}root/etc/vfstab.  Aborting.  Mirror not bootable."    
    exit 1                                                                                
  fi                                                                                      
                                                                                         
  #                                                                                      
  # Two seds.  The first removes backup entries, the second subs all root refs for the mir
ror partitions.                                                                          
  #                                                                                      
  /usr/bin/cat /${MMPT}root/etc/vfstab.old | /usr/bin/sed /${MMPT}/d | /usr/bin/sed s/${LIVE}/${MIRROR}/g > /${MMPT}root/etc/vfstab                                                
  if [ $? -ne 0 ] ; then                                                                  
    echo "$ME: Unable to update /${MMPT}root/etc/vfstab.  Aborting.  Mirror not bootable."
    exit 1                                                                                
  fi                                                                                      
} # update vfstab                                                                        
                                                                                         
                                                                                         
#                                                                                        
# On the mirrored root disk we need to install a ufs bootblock.                          
#                                                                                        
install_bootb()                                                                          
{                                                                                        
  /usr/sbin/installboot /usr/platform/`/usr/bin/uname -i`/lib/fs/ufs/bootblk /dev/rdsk/${MIRROR)${ROOTP}                                                                            
  if [ $? -ne 0 ] ; then                                                                  
    echo "$ME: Unable to install bootblock.  Aborting.  Mirror not bootable."            
    exit 1                                                                                
  fi                                                                                      
} # install_bootb                                                                        
                                                                                         
                                                                                         
                                                                                         
                                                                                         
                                                                                         
#################################################################                        
##                                                                                        
## M A I N                                                                                
##                                                                                        
#################################################################                        
                                                                                         
initialise                                                                                
                                                                                         
#                                                                                        
# Re-direct output to file, detach process from tty.                                      
#                                                                                        
exec 1>$LOGFILE 2>&1                                                                      
                                                                                         
echo "$ME: Started at `date`"                                                            
                                                                                         
#                                                                                        
# Sanity check.  If we are running off the mirrored disks then don't                      
# try the backup!!!                                                                      
#                                                                                        
df / | grep ${MIRROR}${ROOTP}                                                            
if [ $? -eq 0 ] ; then                                                                    
  echo "$ME: Running from mirrored disks, aborting backup"                                
  exit 1                                                                                  
fi                                                                                        
                                                                                         
backup_partition $ROOTP                                                                  
backup_partition $VARP                                                                    
backup_partition $OPTP                                                                    
                                                                                         
update_vfstab                                                                            
install_bootb                                                                            
                                                                                         
echo "${ME}: Successful completion!"

Thanks for your help.
Steve ...
0
 
LVL 4

Expert Comment

by:vvk
ID: 10787512
have you checked /platform/'uname -i'/ufsboot on mirrored drive?
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:sluch
ID: 10787586
Yes, the /platform/'uname -i'/ufsboot file does exist on the mirrored drive.
0
 

Author Comment

by:sluch
ID: 10807840
Found the answer.
With older system (Sparc20) that have old OpenBoot PROM's, in my case 2.25, the system will not boot if the root partition is greater then 2 GB's, mine was 5 GB's.
When I change it to 2 GB's for the root partition and remirrored the drive it booted up just fine.

If anyone know where to fined a newer version of OpenBoot for a Sparc20 please email me at sjvs@sbcglobal.net

Thanks for all the help
0
 
LVL 2

Accepted Solution

by:
Lunchy earned 0 total points
ID: 10846344
Closed, 125 points refunded.
Lunchy
Friendly Neighbourhood Community Support Admin
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Suggested Solutions

My previous tech tip, Installing the Solaris OS From the Flash Archive On a Tape (http://www.experts-exchange.com/articles/OS/Unix/Solaris/Installing-the-Solaris-OS-From-the-Flash-Archive-on-a-Tape.html), discussed installing the Solaris Operating S…
Installing FreeBSD… FreeBSD is a darling of an operating system. The stability and usability make it a clear choice for servers and desktops (for the cunning). Savvy?  The Ports collection makes available every popular FOSS application and packag…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now