SUMMARY: pfinstall can't find media (jumpstart, setup_install_server)

From: Mike van der Velden (mvanderv@redback.com)
Date: Fri Mar 26 2004 - 18:37:23 EST


Well, looks like all my problems were with the setup_install_server
script. More specifically the cpio command that it uses to copy files
from the CD or DVD and onto the install server.

(if you don't want to read through all the background info, just skip to
the executive summary at the end)

Thank you to Darren Dunham for taking the time to respond. I do
appreciate your time. You were right in that it was a problem with
setup_install_server, but you didn't realize that I had in fact run it
from a sun system. Even though I try to include as much detail in the
email as possible, something always seems to be left out.

My original problem was how to get the data from the DVD onto the
server, given that the boot server is running NetBSD, but with no local
disk, and the install server is a Netapp. I found a Sun 420 with a
DVD drive (yes,I could have use CDs, but using one DVD seems much more
convenient). I ran setup_install_server on it, but of course the stock
script complains that the target filesystem is not local. This seems
like a silly restriction to me, as it presumes that your entire
infrastructure is Solaris (which seems like a very Micro$oft-esque thing
to do). Perhaps they just want to make sure the filesystem is properly
exported after the data has been copied. (I'd rather Sun just give us
admins some credit in knowing the right thing to do).

Anyway, I had long ago created a version of setup_install_server without
the local filesystem restriction (you just need to comment out or rip
out some code), and I have always used that in the past to copy the data
from the CD or DVD onto the NetApp fileserver. Naturally, as Sun
releases new versions of setup_install_server, I just re-apply my
'patch' of ripping out the unnecessary code.

So, I ran setup_install_server on my 420, copying the data to the NFS
mounted filesystem (note that I need to use the undocumented -p option)

# pwd
/cdrom/sol_9_sparc/s0/Solaris_9/Tools
# /home/mvanderv/bin/setup_install_server -p . /mnt/arch/sol9
Verifying target directory...
Calculating the required disk space for the Solaris_9 product
Calculating space required for the installation boot image
Copying the CD image to disk...
find: cannot open .: File table overflow
Copying Solaris_9 Tools hierarchy...
find: cannot open .: File table overflow

I was concerned about the File table overflows, but when I manually ran
the cpio command that setup_install_server uses, I saw numerous errors
about too many levels of symlinks. For example: in
/cdrom/cdrom0/s0/Solaris_9/Tools/Boot/lib/, 32 is a link to the current
directory. So, I ignored the File table overflow errors, as the
symlink problem can be ignored.

Looking at docs.sun.com, it tells me that the solution to File table
overflow is to increase maxusers in the kernel. Our 420 has a value of
1988 for maxusers, which seems to me to be sufficiently high. What
would you recommend?

So, data copied to the file server, filesystem suitably exported, dhcp
server suitably configured, proper boot image in place in /tftpboot, and
away we go... until I ran into the pfinstall snag which had me stumped
for a couple of days and caused me to send my original email to
sunmanagers.

Because pfinstall was a binary, and not a script like everything else
associated with booting and jumpstart, I could not see what exactly the
problem was. Finally I realised I should truss pfinstall (duh!), and
that gave me everything I needed to know. The error message that
pfinstall reported was very misleading, and contributed to my wasting
time looking in the wrong direction. truss revealed that pfinstall was
able to look in /cdrom just fine. The problem was that pfinstall was
reporting a lot of missing files in the install dir.

access("/cdrom/Solaris_9/Product/locale/C/.clustertoc", 4) Err#2 ENOENT
access("/cdrom/Solaris_9/Product/locale/C/.clustertoc", 4) Err#2 ENOENT
open("/cdrom/Solaris_9/Product/.clustertoc", O_RDONLY) Err#2 ENOENT
access("/cdrom/Solaris_9/Product/FJSVcpc", 4) = 0
access("/cdrom/Solaris_9/Product/FJSVcpcx", 4) = 0

Odd. I went back to the original DVD and compared Solaris_9/Product to
the one on the fileserver, and about 2/3 of the packages were missing!

So, something went wrong with the original copy. Since
setup_install_server does nothing more than just a big copy of the DVD
onto the filesystem using cpio, I knew I could just do this manually.

Replacing cpio with gnu tar did the trick. No more "File table
overflow" errors. And the copy works fine, save for some permission
denied errors in the Tools/Boot directory which I have to clean up manually.

Executive Summary
==============

The problem was not all the files were properly copied off the Solaris 9
DVD.

My recommendations to Sun are:
   - setup_install_server using cpio needs to be updated to use
     a better copy tool, such as gtar, instead of cpio.
   - setup_install_server should allow copying to non-local
     filesystems
   - pfinstall needs better error messages when it can see the
     install filesystem but some files are missing.

Thanks for reading this far.
Have a good day!

--
Mike van der Velden, System Administrator,
Redback Networks Canada, Inc., 200 - 4190 Still Creek Drive, Burnaby, 
BC.  Canada
Mike van der Velden wrote:
> I am trying to jumpstart an Ultra 5 workstation with Solaris 9 in 
> order to test my Solaris 9 jumpstart, but the install keeps failing 
> with the error:
>
> ERROR: Could not load the media (/cdrom)
>
> Here's the setup:
>
> Client:  Ultra 5 workstation
> Bootserver:   NetBSD 1.5.3
> Install Server:  NetApp 840
>
>
> The system boots up just fine, and launches the Openwin GUI, and does 
> run the suninstall program.  The output I get is this:
>
> Starting Solaris installation program...
> Checking rules.ok file...
> Using begin script: scripts/BEFORE
> Using profile: profiles/ws
> Using finish script: scripts/FINISH
> Executing JumpStart preinstall phase...
> Executing begin script "scripts/BEFORE"...
> >>> BEFORE begins
> >>> BEFORE host: localhost class: profiles/ws
> >>> BEFORE ends
> Begin script scripts/BEFORE execution completed.
> Searching for SolStart directory...
> Checking rules.ok file...
> Using begin script: install_begin
> Using finish script: patch_finish
> Executing SolStart preinstall phase...
> Executing begin script "install_begin"...
> Begin script install_begin execution completed.
>
> ERROR: Could not load the media (/cdrom)
> #
>
>
> Adding a "set -x" to the suninstall script, gives me the following:
>
> + [ jumpstart = jumpstart ]
> + [ -n /tmp/install_config/profiles/ws -a 
> /tmp/install_config/profiles/ws != -- ]
> + [ ! -f /tmp/install_config/profiles/ws ]
> + pfinstall /tmp/install_config/profiles/ws
>
> ERROR: Could not load the media (/cdrom)
> ESTATUS=2
> + [ jumpstart = interactive ]
> + [ 2 -ne 0 -a 2 -ne 1 ]
> + become_shell
> + si_single_unlock
> + rm -f /tmp/.suninstall
> + exec /sbin/sh
>
>
>
> So, it's the pfinstall command that complains.  The profile 
> (/tmp/install_config/profiles/ws) was deemed ok but the solaris 9 
> "check" script:
>
> install_type    initial_install
> system_type     standalone
> partitioning    explicit
> cluster         SUNWCall
> package         RBAKssl         add
> package         RBAKssh         add
> package         RBAKlp          add
> package         RBAKdhcl        add
> package         RBAKsudo        add
> package         SUNWspci        add
> filesys         rootdisk.s1 1024 swap
> filesys         rootdisk.s0 free /
>
>
>
>
> And the /cdrom path is mounted correctly:
>
> Filesystem            kbytes    used   avail capacity  Mounted on
> dasboot:/service-install/solaris/install/root
>                     31457280 28465204 2992076    91%    /
> swap                  207840    1064  206776     1%    /tmp
> proc                       0       0       0     0%    /proc
> mnttab                     0       0       0     0%    /etc/mnttab
> /tmp/devices          207840    1064  206776     1%    /devices
> /tmp/dev              207840    1064  206776     1%    /dev
> dasboot:/service-install/solaris/install
>                     31457280 28465204 2992076    91%    /cdrom
> fd                         0       0       0     0%    /dev/fd
> dasboot:/service-install/solaris/config
>                     31457280 28465204 2992076    91%    
> /tmp/sysid_config.90
> dasboot:/service-install/solaris/config
>                     31457280 28465204 2992076    91%    
> /tmp/install_config
> /usr/sbin/install.d/install_config
>                     31457280 28465204 2992076    91%    
> /tmp/_install_config
>
>
>
> And /cdrom is just a copy of the Solaris 9 DVD, which I copied over 
> with setup_install_server.
>
> # ls /cdrom
> 1of2_Doc_CD  2of2_Doc_CD  Copyright    root         Solaris_9    
> SW_Supp_CD
> # ls /cdrom/Solaris_9
> Docs        ExtraValue  Misc        Patches     Product     Tools
>
>
>
> As far as I can tell, everything is in place, but I am stuck, as 
> pfinstall does the actual install.   I'm not sure what to tell 
> pfinstall to get it past this point.   I did try mounting the install 
> media in a different location, and passing that along to pfinstall:
>
> pfinstall -c /mnt /tmp/install_config/profiles/ws
>
>
> But I got a similar error:
>
> ERROR: Could not load the media (/mnt)
>
>
>
> What am I missing?  I can't jumpstart until this is working, and 
> people are anxious to get some new systems up and running.
>
> Thanks in advance.
>
> -- 
> Mike van der Velden, System Administrator                      Redback 
> Networks Canada, Inc.             200 - 4190 Still Creek 
> Drive             Burnaby, BC.  Canada
> _______________________________________________
> sunmanagers mailing list
> sunmanagers@sunmanagers.org
> http://www.sunmanagers.org/mailman/listinfo/sunmanagers
_______________________________________________
sunmanagers mailing list
sunmanagers@sunmanagers.org
http://www.sunmanagers.org/mailman/listinfo/sunmanagers


This archive was generated by hypermail 2.1.7 : Wed Apr 09 2008 - 23:28:22 EDT