Solved

Can't find boot program

Posted on 2004-04-08
7
563 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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
Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

 

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

Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

Question has a verified solution.

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

A metadevice consists of one or more devices (slices). It can be expanded by adding slices. Then, it can be grown to fill a larger space while the file system is in use. However, not all UNIX file systems (UFS) can be expanded this way. The conca…
This tech tip describes how to install the Solaris Operating System from a tape backup that was created using the Solaris flash archive utility. I have used this procedure on the Solaris 8 and 9 OS, and it shoudl also work well on the Solaris 10 rel…
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.
Suggested Courses

624 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