Hey Everybody,

I finally figured out how to pxe an install of a Dell 2950 with a Linux server. 
 It seems like many folks have been having a problem with this.  So I figure I 
post the comprehensive steps involved with this.  Here it is:


A lot of environments do not have existing x86 environment.  This short install 
guide will help you set up a PXE jumpstart server with your existing 
"kickstart" server in a Linux environment.

More importantly, this guide will help you install Solaris 10 on Dell Power 
Edge 2950s with the PERC raid controller. This a install through NFS, not a 
modified DVD isos or anything.  It's a lot more portable than modifying an ISO 
and installing by manually through DVDs, or swapping them out during the middle 
for a driver disk.

Notables And Assumptions:

This short guide assumes a Centos 5 kickstart Linux environment - one server.  
(I'm sure it can be easily ported over to other Linux distros.)  This way, we 
don't have to build a separate build server for Solaris.

-----------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------

1)  DO NOT USE atftp server as suggested in other guides.  Use the native tftp 
server with Centos 5.

Install dhcpd and tftp-server.

2) Modify /etc/dhcpd.conf  Create an entry for the server you want to build 
with the correct MAC address.

NOTE: I used the directory /boot/grub that is relative to /tftpboot.  e.g. For 
some reason, when I specify "option grubmenu" to some other location outside of 
/tftpboot/boot/grub directory, it doesn't pick menu.lst up.  /Var/log/message 
shows it continues to attempt to grab menu.lst from /boot/grub. So I gave in 
and made /tftboot/boot/grub and put my menu.lst and pxegrub files there. 
However, I put my solaris kernel and miniroot in /solaris relative to /tftpboot 
directory.
 

option grubmenu code 150 = text;

subnet 172.22.41.0 netmask 255.255.255.0 {
        range 172.22.41.100 172.22.41.200;
        default-lease-time 3600;
        max-lease-time 4800;
        option routers 172.22.41.1;
        option subnet-mask 255.255.255.0;
        next-server 172.22.41.1;
}

 host ash2950spare01 {
    hardware ethernet 00:19:b9:ca:3f:d6;
    option grubmenu "/boot/grub/menu.lst";
    fixed-address 172.22.41.71;
    option subnet-mask 255.255.255.0;
    option routers 172.22.41.1;
    next-server 172.22.41.199;
    filename "/boot/grub/pxegrub";
}

3) Enable tftp-server in /etc/xinetd.d/tftp

4) Create NFS share

VERY IMPORTANT - DO NOT user "root_squash".  I made this mistake and couldn't 
mount the NFS share after the miniroot is extrapolated and booted.

mkdir -p /export/install/opensolaris/jumpstart

/export/install/opensolaris/jumpstart    172.22.41.0/24(ro)

4b) Disable nfs 4 on linux server

There is some kind of incompatibility between Linux 2.6 NFSv4 server and 
Solaris 10 (U3) NFSv4 client. We will disable NFS v4 on the Linux server.  

vim /etc/sysconfig/nfs

RPCMOUNTDOPTS="--no-tcp --no-nfs-version 4 "
RPCNFSDARGS="--no-tcp --no-nfs-version 4"

5)  Download the DVD for Solaris Community Express and copy the files. Make 
note not to change the location of menu.lst

mkdir -p  /tftpboot/solaris
mkdir -p  /tftpboot/boot/grub

mount /root/download/opensolaris/sol-nv-b18-x86-v1.iso /mnt/solaris -o loop cd 
/mnt/solaris/boot cp multiboot /tftpboot/solaris cp x86.miniroot 
/tftpboot/solaris/x86.miniroot cp grub/pxegrub /tftpboot/boot/grub

**For NFS
cd /mnt/solaris; tar cf - . | tar xpf - -C /export/install/opensolaris/jumpstart

5) Create /tftpboot/boot/grub/menu.lst that contains grub options. (DO NOT 
change the location of menu.lst) Content of this file should look like this:

vim /tftpboot/boot/grub/menu.lst

default=0
timeout=60
timeout=15

title Solaris PXE Install
  kernel /solaris/platform/i86pc/kernel/unix -B  
install_media=172.22.41.199:/export/install/opensolaris/jumpstart
  module /solaris/x86.miniroot

6) At this point, you're all set to jumpstart. Restart service after the 
changes made above.

/etc/init.d/portmap restart
/etc/init.d/nfs restart
/etc/init.d/dhcpd restart
/etc/init.d/xinetd.d restart


------For Dell Poweredge 2950s------(Modify the miniroot.)

As of 9/29/08, one needs to modify the miniroot in Solaris 10 to get the PERC 5 
drivers to function

NOTES: 

i) Alright, there is slight problem with modifying the miniroot.  You need an 
existing Solaris 10 x86 box.  I had to do a basic Solaris x86 build on a 
desktop.  However, you may be able to create on in Xen,Vmware, or use a live 
Solaris x86 install.  

ii) This will require two boots by Jumpstart.  One time to install the OS.  
Another time to install the mfi drivers in single user mode, and update grub.

1) On the Linux jumpstart server.

mkdir /export/install/opensolaris/jumpstart/3rd_party
mv /export/install/opensolaris/jumpstart/ITIGmfi.tar.gz 
/export/install/opensolaris/jumpstart/3rd_party
cd /export/install/opensolaris/jumpstart/3rd_party
tar xvfz ITIGmfi.tar.gz


- We will copy over the new miniroot after we modify it.  Let's rename the 
existing miniroot.

cd /tftpboot/solaris/
mv x86.miniroot x86.miniroot.orig

****The instructions here are on an existing Solaris 10 x86 machine.

2) Copy the Solaris 10 DVD iso to the existing Solaris x86 machine, and copy 
miniroot from the iso. We will need to modify the miniroot.

lofiadm -a ~/sol-nv-b18-x86-v1.iso /dev/lofi/1 mount -F hsfs -o ro /dev/lofi/1 
/mnt/solaris cd /mnt/solaris/boot/ cp x86.miniroot ~/

3) Downnload the "compiled" 32 and 64 bit drivers for the PERC 5 for Solaris 
10.  (You can download the source directly, but you need to have gcc and make 
tools install in the existing Solaris x86 machine.  I didn't have those 
packages)

You can get the compiled drivers from here:

http://www.itee.uq.edu.au/~dlg/mfi/ITIGmfi.tar.gz

4) Modify the miniroot. (This will only install the 32 driver into the miniroot 
- miniroot is 32 bit only.)

/boot/solaris/bin/root_archive unpack x86.miniroot ./unpacked gunzip 
ITIGmfi.tar.gz tar -xvf ITIGmfi.tar cp ITIGmfi/reloc/\$KERNDIR/mfi 
unpacked/kernel/drv/ add_drv -b unpacked/ -n -v -m '* 600 root sys' -i 
'"pci1028,1f03"' -c scsi mfi mv x86.miniroot x86.miniroot.orig 
/boot/solaris/bin/root_archive pack x86.miniroot ./unpacked

5) Copy ITIGmfi.tar.gz and "modified" miniroot to the Linux Jumpstart server.

scp x86.miniroot root at 172.22.41.199:/tftpboot/solaris/
scp ITIGmfi.tar.gz root at 172.22.41.199:/export/install/opensolaris/jumpstart/

****End of usage of existing Solaris x86 machine.

6) You should not be able to boot the PE 2950 with the new modified miniroot.  
It should recognize the PERC 5 controller and hard drives.

NOTE: When you do the build, but make sure to do a "manual" eject for the cdrom 
(Even though you are using NFS, Jumpstart mounts the nfs source on /cdrom) and 
"manual" reboot.

****The instructions here are on the PE 2950 that is booted into the Jumpstart 
install. 

8) After the install, do not reboot because we need to copy the 3rd party mfi 
drivers.

NOTE: I tried to "install" the mfi drivers, but it did not work -  Grub is not 
installed correctly.
So I had to just copy the drivers into freshly install OS and reboot a second 
time with Jumpstart.  But instead of doing install, I chose to single user mode 
option.  It will detect the existing Solaris install, and mount "/" as /a. 

Before rebooting into Jumpstart a second time:

cp -rp /cdrom/3rd_party /a
reboot

8b) After jumpstart again, choose single user mode. It should find your 
existing Solaris installs - it will be mounted at /a. 

cd /a/3rd_party
cp ITIGmfi/reloc/\$KERNDIR/mfi /a/kernel/drv/ cp 
ITIGmfi/reloc/\$KERNDIR/amd64/mfi /a/kernel/drv/amd64/ touch 
/a/kernel/drv/mfi.conf touch /a/kernel/drv/amd64/mfi.conf add_drv -b /a -n -v 
-i '"pci1028,1f03"' -c scsi mfi reboot

8c) Update boot_archive and reinstall grub just to make sure.

Assuming the raw root device is /dev/rdsk/c0t0d0s0.  (Replace accordingly with 
your root raw device for installgrub.)

/a/sbin/bootadm update-archive -R /a
cd /a/boot
/a/sbin/installgrub -m stage1 stage2 /dev/rdsk/c0t0d0s0 reboot

9) The machine will boot in 32 bit by default. 

If you want to boot into 64 bit, you have to modify /boot/grub/menu.lst.  I 
haven't tried it yet. According to Sun instructions:

Modify kernel line in menu.lst.  But I'm not sure multiboot is still supported.

kernel /platform/i86pc/multiboot kernel/amd64/unix
 
 
This message posted from opensolaris.org

Reply via email to