Solaris/Netinstall
Situation
We want to install Solaris 10 on a E250 and an U60. They both come with a CDROM drive, the E250 might even have a DVD drive, but there's nobody on-site to handle this scenario. And booting from optical media is so last century :) Also, we don't want to use Jumpstart, because:
- Another Solaris server might not be available
- It's basically just a combination of dhcp/nfs and I don't want Jumpstart or any other magic scripts messing with my setup
Netinstall
Our setup would be:
server: 192.168.0.1/24 (alice, Linux) client: 192.168.0.5/24 (bob, Solaris)
We'll set up RARPD, TFTP and Bootparamd to get the E250 (sun4u) started; NFS to share the installation media later on. The installation media is basically just the downloaded .ISO, loop-mounted somewhere on our Linux system:
mount -t iso9660 -o loop -o ro sol-10-u9-ga-sparc-dvd.iso /mnt/cdrom
rarpd
For rarpd to work, we add our client's MAC address to /etc/ethers:
# grep 192.168.0.5 /etc/hosts 192.168.0.5 bob # grep bob /etc/ethers 08:00:10:A1:B2:C3 bob
Note: the client's MAC address is shown upon booting and can also be queried via ".enet-addr" at the OpenBoot prompt.
tftpd
For tftp we need to create a bootfile for our install-client (192.168.0.5) to be found:
$ grep tftp /etc/inetd.conf tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /data/tftpboot $ cd /data/tftpboot $ printf %02x 192 168 0 5 | tr [:lower:] [:upper:] C0A80005 $ cp -p /mnt/cdrom/Solaris_10/Tools/Boot/platform/sun4u/inetboot . $ ln -s inetboot C0A80005.SUN4U $ ln -s inetboot C0A80005
Next we need either bootparamd or dhcpd.
bootparamd
bootparamd needs /etc/bootparams which should look something like this:
bob root=192.168.0.1:/mnt/cdrom/Solaris_10/Tools/Boot \ install=192.168.0.1:/mnt/cdrom/Solaris_10 \ rootopts=192.168.0.1:rsize=32768:nfsvers=2:vers=2
Somehow it's important that all these parameters are prefixed by the servername (192.168.0.1), otherwise the client may not find the requested files.
dhcpd
tbd...
nfsd
We still have to export the installation directory via NFS. As Solaris 10 still still has problems with a Linux NFS server, we're starting nfsd with:
$ grep RPCMOUNTDOPTS /etc/default/nfs-kernel-server RPCMOUNTDOPTS="--manage-gids --no-nfs-version 3 --no-nfs-version 4"
...and exporting our share now:
$ exportfs -v -i -o ro,no_root_squash 192.168.0.0/24:/mnt/cdrom exporting 192.168.0.0/24:/mnt/cdrom
Booting
{0} ok boot net -s -v - install ChassisSerialNumber 12341010 Initializing 1 megs of memory at addr 2feca000 Initializing 1 megs of memory at addr 2fe00000 Initializing 2 megs of memory at addr 2fc02000 Initializing 192 megs of memory at addr 23c02000 Initializing 572 megs of memory at addr 0 Rebooting with command: boot net - install Boot device: /pci@1f,4000/network@1,1 File and args: - install Using Onboard Transceiver - Link Up. 3a000 Server IP address: 192.168.0.1 Client IP address: 192.168.0.5 Using Onboard Transceiver - Link Up. ramdisk-root ufs-file-system
Depending on your interface speed, this will take a long time to complete. We can watch with tcpdump on our install server that it's still fetching stuff and we have to be very patient for this to complete. What we could try is to boot with different bootoptions:
{0} ok boot net:speed=100,duplex=full -s -v - install
After the ramdisk is loaded, booting continues:
Loading: /platform/SUNW,Ultra-250/kernel/sparcv9/unix Loading: /platform/sun4u/kernel/sparcv9/unix SunOS Release 5.10 Version Generic_142909-17 64-bit Copyright (c) 1983, 2010, Oracle and/or its affiliates. All rights reserved. os-io Configuring devices. Using RPC Bootparams for network configuration information. Attempting to configure interface hme0... Configured interface hme0 ERROR: bpgetfile unable to access network /sbin/install-discovery: information: not found
This might happen, because Solaris assumes a wrong netmask for our interface. We'll fix this with:
# pkill /sbin/dial # Kill the spinning cursor :) # ifconfig hme0 192.168.0.5 netmask 255.255.255.0 broadcast 192.168.0.255 # exit
The exit will actually exit back to the installation process, until:
System identification is completed. System identification complete. Starting Solaris installation program... Searching for JumpStart directory... not found Warning: Could not find matching rule in rules.ok Press the return key for an interactive Solaris install program... Executing JumpStart preinstall phase... 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.
So, pressing Enter seems to continue: the interactive installation-screen appears and we can click through a few screens, until the process is interrupted again:
There were problems loading the media from /cdrom. Solaris installation program exited. #
Wait, what? We're doing a network install, so why the hell does it look for installation files in /cdrom? Nevermind, we can do that too and start the install-process again:
# mount -F nfs -o ro 192.168.0.1:/mnt/cdrom /cdrom # /sbin/install-solaris
After a few screens we will be asked where our installation media resides:
192.168.0.1:/mnt/cdrom
At this point, the installation should finally continue, without further interruptions. Yeah, right :-)
Netinstall - with one CD
- Burn first Solaris install CD, boot with "boot cdrom"
- Setup the installserver as such:
$ mount -F hsfs -o ro `lofiadm -a sol-nv-b103-sparc-dvd.iso` /mnt/cdrom # Solaris $ mount -o loop,ro sol-nv-b103-sparc-dvd.iso /mnt/cdrom # Linux $ vnconfig vnd0 sol-nv-b103-sparc-dvd.iso && mount -t cd9660 /dev/vnd0a /mnt/cdrom # NetBSD $ cd /mnt/cdrom/Solaris_11/Tools $ ./setup_install_server /install/solaris/sparc
- To add the next images, use:
$ ./add_to_install_server /install/solaris/sparc
- Share /install/solaris/sparc via nfs, e.g.
$ share -F nfs -o ro,anon=0 -d "install server directory" /install/solaris/sparc # Solaris $ echo "/install/solaris/sparc *(ro)" >> /etc/exports && exportfs -r # Linux $ echo "/install/solaris/sparc *(ro)" >> /etc/exports && pkill -1 mountd # NetBSD
- at some point the installation will ask where to install from, choose "NFS". Then it'll ask for "Enter image location" or something. Enter
server:/install/solaris/sparc
...and the installation should continue.
Links
- Solaris Network Install from Linux
- Installing Solaris over the network
- Netboot Solaris from Linux
Netbooting Solaris 10 - why so painful?- Linux as a Solaris JumpStart Server
- Net install onto an Ultra 5 with a Linux DHCP server
- bootparamd: GETFILE failed for "sun" and file "root"
- SPARC: Working with the Openboot
- Creating an Install Server With SPARC or x86 CD Media
- Solaris netinstall with ISC dhcpd
- Some nasty NFSv3 interactions at mount time between Linux and OpenSolaris
- SOLARIS 10 x86 Jumpstart Server on GNU/Linux
- boot net -> 38e00 boot: lookup .../Solaris_10/Tools/Boot failed
- cannot open neither boot_archive nor miniroot jumpstart
- Setting up Sun's JET for dhcp boot and install
- Installing Solaris 10 booted from a Linux server
- Can't open boot_archive error message
- Error : "Can't open boot_archive"
- Creating a Solaris Jumpstart server on a USB bootable brive
- 4.3. Preparing Files for TFTP Net Booting
- Using netboot.me