Less Known Solaris features: Jumpstart Enterprise Toolkit - Part 9: Basic installation of a new system

At first we will do a really basic install. No tricks, just the pure operating system. Nevertheless this part will be a little bit longer as i will do a technical deep-dive into the process of installation in this example to show you the inner workings of JET with this installation as an example.

The template for the first installation

At first we have to create a template for the system. This is really easy:

# make_template togusa<br />
Adding product configuration information for<br />
        + base_config<br />
        + custom<br />
        + sds<br />
        + vts<br />
        + explo<br />
        + flash<br />
        + san<br />
        + jass<br />
        + zones<br />
        + sbd<br />
Updating base_config template specifics<br />
Client template created in /opt/SUNWjet/Templates

Okay, this is too much … at start we don´t want all this modules right now. We can add them later, without loosing the configuration. Let´s just use the module for the basic configuration:

<br />
# make_template -f togusa base_config<br />
Adding product configuration information for<br />
        + base_config<br />
Updating base_config template specifics<br />
Client template created in /opt/SUNWjet/Templates<br />

Even the basic template is quite long. I´ve reduced it for this tutorial by deleting all comments, all empy lines and all variables without a value.

<br />
base_config_ClientArch=i86pc<br />
base_config_ClientEther=08:00:27:97:29:1E<br />
base_config_ClientOS=nv87<br />
base_config_client_allocation="grub"<br />
base_config_sysidcfg_nameservice=NONE<br />
base_config_sysidcfg_network_interface=PRIMARY<br />
base_config_sysidcfg_ip_address=<br />
base_config_sysidcfg_netmask=<br />
base_config_sysidcfg_root_password="boajrOmU7GFmY"<br />
base_config_sysidcfg_system_locale="C"<br />
base_config_sysidcfg_timeserver=localhost<br />
base_config_sysidcfg_timezone="Europe/Berlin"<br />
base_config_sysidcfg_terminal=vt100<br />
base_config_sysidcfg_security_policy=NONE<br />
base_config_sysidcfg_protocol_ipv6=no<br />
base_config_sysidcfg_default_route=<br />
base_config_x86_nowin="yes"<br />
base_config_label_disks="all"<br />
base_config_profile_cluster=SUNWCuser<br />
base_config_profile_usedisk=rootdisk.<br />
base_config_profile_root=free<br />
base_config_profile_swap=256<br />
base_config_ufs_logging_filesys="all"<br />
base_config_profile_del_clusters="SUNWCpm SUNWCpmx SUNWCdial SUNWCdialx"<br />
base_config_dns_disableforbuild="yes"<br />
base_config_update_terminal="yes"<br />
base_config_enable_savecore="yes"<br />
base_config_dumpadm_minfree="20000k"<br />
base_config_noautoshutdown="pm_disabled"<br />

Let´s dissect this template:

Okay after this step, we have to generate the configuration for the Jumpstart mechanism. This is really easy:

# make_client -f togusa<br />
Gathering network information..<br />
        Client: (<br />
        Server: (, SunOS)<br />
Solaris: client_prevalidate<br />
Solaris: client_build<br />
Creating sysidcfg<br />
Creating profile<br />
Adding base_config specifics to client configuration<br />
Solaris: Configuring JumpStart boot for togusa<br />
         Starting SMF services for JumpStart<br />
Solaris: Configure PXE/grub build<br />
         Adding install client<br />
        Doing a TEXT based install<br />
         Leaving the graphical device as the primary console<br />
         Configuring togusa macro<br />
         Using local dhcp server<br />
         PXE/grub configuration complete<br />
Running '/opt/SUNWjet/bin/check_client  togusa'<br />
        Client: (<br />
        Server: (, SunOS)<br />
Checking product base_config/solaris<br />
--------------------------------------------------------------<br />
Check of client togusa<br />
-> Passed....

The nice thing about the make_clientcommand: It doesn´t just generate the Jumpstart configuration. It checks for the most dumb errors like forgetting to share the directory of your Solaris media with NFS. So you can detect many problems at an early stage. You don´t have to wait until the jumpstart client comes up just to detect that there is no NFS or no DHCP config.

The generated Jumpstart configuration files

Okay, let´s look into the \verb=/tftpboot= directory at first. As the system uses pxegrub we need a menu.lst

-bash-3.2$ cat /tftpboot/menu.lst.0108002797291E<br />
default=0<br />
timeout=2<br />
title Solaris_11 Jumpstart<br />
        kernel /I86PC.Solaris_11-1/platform/i86pc/kernel/unix  - install nowin -B install_config=,sysid_config=,install_media=,install_boot=<br />
        module /I86PC.Solaris_11-1/x86.miniroot<br />

In the GRUB configuration we not only load the Kernel, we additionally name the location of the Jumpstartserver, the exact location and name of the sysidconfig file, the position of our installation media and at last the location of the miniroot. In our example all locations are NFS locations. Okay, the install_config directory is the first important location. We find the rules.ok file there.

-bash-3.2$ cat /opt/SUNWjet/rules.ok<br />
any any                 Utils/begin     =       Utils/finish<br />
# version=2 checksum=3114

Okay, now let´s have a look in the specified profile file:

<br />
-bash-3.2$ cat /opt/SUNWjet/Clients/togusa/profile<br />
#<br />
# This is an automatically generated profile. Please modify the template.<br />
#<br />
# Created:      Mon May 19 21:47:50 CEST 2008<br />
#<br />
install_type    initial_install<br />
system_type     server<br />
cluster         SUNWCuser<br />
partitioning    explicit<br />
#<br />
# Disk layouts<br />
#<br />
filesys         rootdisk.s0     free    /<br />
filesys         rootdisk.s1     256     swap<br />
cluster SUNWCpm delete<br />
cluster SUNWCpmx delete<br />
cluster SUNWCdial delete<br />
cluster SUNWCdialx delete

As i wrote before, we have to give the system an identity. The \verb=sysidcfg= is responsible for this task, thus we find such a file in our directory. Our new system will use it when the installation has completed.

<br />
-bash-3.2$ cat /opt/SUNWjet/Clients/togusa/sysidcfg<br />
name_service=NONE<br />
root_password=boajrOmU7GFmY<br />
system_locale=C<br />
timeserver=localhost<br />
timezone=Europe/Berlin<br />
terminal=vt100<br />
security_policy=NONE<br />
nfs4_domain=dynamic<br />
network_interface=PRIMARY {hostname=togusa ip_address= netmask= protocol_ipv6=no default_route=}

The installation boot

This leaves you to do one thing. Configure the system to start with PXE in the BIOS of your system. And the system will boot via network and starts to install a system. After a while the installation will be complete. The system will boot up. One tip when you use Virtualbox for the installation. When the system tries to reboot the first time halt the system and switch off the network boot again. Otherwise the system will install again and again. BTW: The default rootpassword is newroot. You can look for the logfile of the installation at \verb=/var/sadm/system/logs=:

Configuring disk (c0d0)
- Creating Fdisk partition table Fdisk partition table for disk c0d0 (input file for fdisk(1M))
type: 130 active: 128 offset: 16065 size: 33527655 type: 100 active: 0 offset: 0 size: 0
type: 100 active: 0 offset: 0 size: 0
type: 100 active: 0 offset: 0 size: 0
- Creating Solaris disk label (VTOC)
- Processing the alternate sector slice Creating and checking UFS file systems
- Creating / (c0d0s0)
Warning: 1608 sector(s) in last cylinder unallocated
/dev/rdsk/c0d0s0: 31744440 sectors in 5167 cylinders of 48 tracks, 128 sectors
15500.2MB in 323 cyl groups (16 c/g, 48.00MB/g, 5824 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 98464, 196896, 295328, 393760, 492192, 590624, 689056, 787488, 885920,
Initializing cylinder groups:
super-block backups for last 10 cylinder groups at:
30776480, 30874912, 30973344, 31071776, 31170208, 31268640, 31367072,
31457312, 31555744, 31654176 Beginning Solaris software installation Installation of was successful.
Installation of was successful. Solaris 11 software installation succeeded Solaris 11 packages fully installed
SUNWsolnm Customizing system files
- Mount points table (/etc/vfstab)
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c0d0s1 - - swap - no -
/dev/dsk/c0d0s0 /dev/rdsk/c0d0s0 / ufs 1 no -
/devices - /devices devfs - no -
sharefs - /etc/dfs/sharetab sharefs - no -
ctfs - /system/contract ctfs - no -
objfs - /system/object objfs - no -
swap - /tmp tmpfs - yes -
- Network host addresses (/etc/hosts)
- Environment variables (/etc/default/init) Cleaning devices Customizing system devices
- Physical devices (/devices)
- Logical devices (/dev) Installing boot information
- Updating boot environment configuration file
- Installing boot blocks (c0d0)
- Installing boot blocks (/dev/rdsk/c0d0s0)
Creating boot_archive for /a
updating /a/platform/i86pc/boot_archive
updating /a/platform/i86pc/amd64/boot_archive</blockquote> </code>You see that the system has gone through a perfect automated installation.