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