Solved

Can't find boot program

Posted on 2004-04-08
7
558 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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
zendoptimizer install ./dialog does not exist! 5 69
How to Change Interface on Cisco IOU 11 83
Convert OverPunch 25 62
unix in java example 9 53
Using libpcap/Jpcap to capture and send packets on Solaris version (10/11) Library used: 1.      Libpcap (http://www.tcpdump.org) Version 1.2 2.      Jpcap(http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/index.html) Version 0.6 Prerequisite: 1.      GCC …
Why Shell Scripting? Shell scripting is a powerful method of accessing UNIX systems and it is very flexible. Shell scripts are required when we want to execute a sequence of commands in Unix flavored operating systems. “Shell” is the command line i…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.

910 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

23 Experts available now in Live!

Get 1:1 Help Now