Create an IPS package that contains:
The service manifest file from Creating an SMF Manifest File.
The first-boot script from Creating a Script to Run at First Boot.
Any files needed by the script that cannot be provided from another location such as the AI server.
In this example, the service manifest is installed into /lib/svc/manifest/site, and the first-boot script is installed into /opt/site.
$ mkdir -p proto/lib/svc/manifest/site $ mkdir -p proto/opt/site $ cp first-boot-script-svc-manifest.xml proto/lib/svc/manifest/site $ cp first-boot-script.sh proto/opt/site
Create the following file named first-boot-script.p5m.
set name=pkg.fmri email@example.com,5.11-0 set name=pkg.summary value="AI first-boot script" set name=pkg.description value="Script that runs at first boot after AI installation" set name=info.classification value=\ "org.opensolaris.category.2008:System/Administration and Configuration" file lib/svc/manifest/site/first-boot-script-svc-manifest.xml \ path=lib/svc/manifest/site/first-boot-script-svc-manifest.xml owner=root \ group=sys mode=0444 dir path=opt/site owner=root group=sys mode=0755 file opt/site/first-boot-script.sh path=opt/site/first-boot-script.sh \ owner=root group=sys mode=0555
Depending on what your first-boot script does, you might need to specify dependencies. If you modify this manifest, verify the new manifest is correct. You can ignore warnings. See Chapter 2, Packaging Software With IPS in Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.3 for information about how to create a package, including information about the pkgdepend, pkgmogrify, and pkglint commands.
This example creates the repository in the local directory, with firstboot as the publisher.
$ pkgrepo create firstbootrepo $ pkgrepo -s firstbootrepo add-publisher firstboot
$ pkgsend publish -d ./proto -s ./firstbootrepo first-boot-script.p5m pkg://firstname.lastname@example.org,5.11-0:20140114T022508Z PUBLISHED
Clients can install the package from the firstbootrepo repository. The firstboot publisher with firstbootrepo origin is defined in the AI manifest as shown in the next section.
List the package to verify that the package is available.
$ pkg list -g ./firstbootrepo first-boot-script NAME (PUBLISHER) VERSION IFO first-boot-script (firstboot) 1.0-0 ---
The –n option indicates not to install the package.
# pkg set-publisher -g ./firstbootrepo firstboot # pkg publisher PUBLISHER TYPE STATUS P LOCATION solaris origin online F http://http://pkg.oracle.com/solaris/release/ firstboot origin online F file:///home/user1/firstboot/firstbootrepo/ # pkg list -af first-boot-script NAME (PUBLISHER) VERSION IFO first-boot-script (firstboot) 1.0-0 --- # pkg install -nv first-boot-script Packages to install: 1 Estimated space available: 50.68 GB Estimated space to be consumed: 64.66 MB Create boot environment: No Create backup boot environment: No Rebuild boot archive: No Changed packages: firstboot first-boot-script None -> 1.0,5.11-0:20140114T022508Z Planning linked: 0/2 done; 1 working: zone:z2 Linked image 'zone:z2' output: | Estimated space available: 50.68 GB | Estimated space to be consumed: 62.07 MB | Rebuild boot archive: No ` Planning linked: 1/2 done; 1 working: zone:z1 Linked image 'zone:z1' output: | Estimated space available: 50.67 GB | Estimated space to be consumed: 62.07 MB | Rebuild boot archive: No
See Copying and Creating Package Repositories in Oracle Solaris 11.3 for instructions to make the new repository accessible to client systems through either NFS sharing or HTTP.