How to create self-contained Solaris 10 x86 Jumpstart kit
Saturday, December 27th, 2008I was required to create a self-contained, single DVD to automate the installation of Solaris 10 on x86_64. I could not find any up-to-date straight forward guide which can explain how to do it, so I do it here. This is not an explanation for dummies, so you must know (to some degree, of course) what you’re doing.
I will describe the procedure in whole, and will explain in greater details below, if I see fit. A section which will be explained later will be marked with (*) at the end of the line.
- Install Solaris 10 x86 on a machine. Many actions will happen on this little server…
- Setup your Solaris installation according to your likings. Make sure you have your beloved users, your passwords, your configurations. Don’t mind much about networking configurations (IP, Netmask, etc) – as they will be unconfigured for the image.
- Create a Flash Image (flar) of the system (*)
- Copy the contents of the installation DVD to a directory inside your system. Let’s call it /tmp/dvd
- Remove /tmp/dvd/Solaris_10/Product directory. You will not need it.
- Extract the contents of /tmp/dvd/x86.miniroot to /tmp/miniroot (*)
- Perform several actions with the extracted miniroot (*)
- Re-archive the contents of the x86.miniroot and place them instead of /tmp/dvd/boot/x86.miniroot
- Place the flar file inside /tmp/dvd/flash
- Edit your jumpstart files inside /tmp/dvd/.install_config (*)
- Edit /tmp/dvd/boot/grub/menu.lst boot loader to add an entry for your installation (*)
- Create an ISO from the DVD directory (*)
- Burn the DVD and try to use it
And now for the drill-down
Creating a flash image
Use the command flarcreate to create your own flash image:
flarcreate -n sol10_automation -c -x /tmp /tmp/sol10_auto.flar
This should do the work. Remember – /tmp will not be persistent across reboots! Make sure your files are not there before you reboot the system!
Extracting/Archiving the x86.miniroot
To do so, you need to run the command /boot/solaris/bin/root_archive
Extracting the image can be done like this:
/boot/solaris/boot/root_archive unpack /tmp/dvd/boot/x86.miniroot /tmp/miniroot
Archiving the image can be done like this:
/boot/solaris/boot/root_archive pack /tmp/dvd/boot/x86.miniroot /tmp/miniroot
Actions to perform on the extracted miniroot
Three actions are to be performed on the extracted miniroot. In our example, it resides on /mnt/miniroot.
First, you need to remove the default sysidcfg (which is a symbolic link)
rm /mnt/miniroot/etc/sysidcfg
Now, you have to place your custom sysidcfg in there, instead.
This is an example of my own sysidcfg file:
name_service=NONE
network_interface=nge0 {primary hostname=sol10
ip_address=10.10.10.10
netmask=255.0.0.0
default_route=NONE
protocol_ipv6=no }
nfs4_domain=dynamic
service_profile=open
root_password=12wR2rF34t
security_policy=NONE
system_locale=en_US.UTF-8
timezone=GMT
timeserver=localhost
keyboard=US-English
terminal=xterm
The root password is encrypted. Take it from your own /etc/shadow file. For more information about sysidcfg file, check out Sun site.
Following that, you need to edit a specific file in the miniroot. Edit /tmp/miniroot/usr/sbin/install.d/profind and search for the cdrom() function. Search the line
if [ -f /tmp/.preinstall ]; then
and hash (remark) it. Don’t forget to remark the closing “fi” below.
Jumpstart contents
This has to be inside /tmp/dvd/.install_config . Edit the file /tmp/dvd/.install_config/rules and make sure it has only one line (in our example. If you know what you’re doing with Jumpstart, go ahead!)
any – x86-begin any_machine x86-end
This line will match any hardware, run x86-begin script (from that same directory) on it prior to running the installation itself, and run x86-end script on it after the installation phase. It allows up further customisation during installs (verify what type of RAID, check memory, whatever). The installation profile itself is the file any_machine.
You will need to run “check” on the file to build the rules.ok file
cd /tmp/dvd/.install_conf
/tmp/dvd/Solaris_10/Misc/jumpstart_sample/check
Lets look at my any_machine file:
install_type flash_install
archive_location local_file /cdrom/flash/sol10_auto.flar
partitioning explicit
filesys any 8196 swap
filesys any 10240 /
filesys any free /storage
Notice that the installation type is “flash_install” and that the location of the file is local, inside /cdrom (where the bootable dvd will be mounted) inside a directory called flash. Partitioning is defined here, explicitly.
For more information about Jumpstart, search in Sun site. They have plenty of information.
Edit Grub
Add the following entry to your /tmp/dvd/boot/grub/menu.lst file
title Solaris10 Jumpstart
kernel /boot/multiboot kernel/unix – install -B
install_media=cdrom
module /boot/x86.miniroot
Make sure it is the default option for grub.
Creating DVD ISO from the directory
We’re almost done. To create a DVD iso file from the directory, perform the following actions:
cd /tmp/dvd
mkisofs -b boot/grub/stage2_eltorito -c .catalog -no-emul-boot -boot-load-size 4 -boot-info-table -relaxed-filenames -l -ldots -r -N -d -D -V SOL_10_1008_X86 -o /tmp/sodvd.iso .
Don’t ignore the “.” at the end!
(This specific line was tested on Linux, but there is no reason for it not to work on any modern Solaris system)
Appendix
You would like to keep your /tmp/dvd directory somewhere else, or you will lose it on your next reboot.
This sums it up. Let me know if the procedure is broken somehow.