Update list of changes required for LTS vs. Stable vs. Bloody. This will collapse to two sets once LTS moves to a per-release repo style.

2 years ago by esproul
Page History
  1. Preparing Release Media 
  2. Text Installer 
  3. General Instructions 
  4. Stable Release 
  5. LTS Release 
  6. Bloody Release 
  7. Media Images 
  8. Kayak 
  9. Publishing Media Files 

Preparing Release Media #

How to make the release images. If any of these are created, all should be created so that we remain consistent.

Text Installer #

This is the ISO/USB installer.

These commands must be run in the global zone. Best not to have any non-global zones, or their console device entries will get swept up into the new image, creating noise during the install about missing devices.

Since we build for multiple release trains in parallel (LTS, Stable, Bloody), the default config file must be modified in certain (different) ways for each. Best practice is to make your own copy of /usr/share/distro_const/dc_text_x86.xml, modify it to suit the release you're building for, and just use that each time you need to re-roll for that release.

General Instructions #

See below for release-specific changes you need to make.

Start by installing the tools:

sudo pkg install distribution-constructor

Then run distro_const with your modified config:

sudo /usr/bin/distro_const build /path/to/customized_config.xml

Stable Release #

Changes:

  • distro name (match the letter to the weekly release you're rolling)
  • omnios publisher origin URL
  • software_data install set
  • default hostname

Typical diff (yours will be different):

--- /usr/share/distro_const/dc_text_x86.xml     2014-04-28 21:00:52.268211540 +0000
+++ dc-release-151010.xml  2014-08-12 14:52:41.898253455 +0000
@@ -32,7 +32,7 @@
     is to do serial builds and to keep all the incremental
     images around
   -->
-  <distro name="OmniOS_Text_X86" add_timestamp="false">
+  <distro name="OmniOS_Text_r151010s" add_timestamp="false">
   <!-- Uncomment if http_proxy needs to be set
   <distro name="OmniOS_Text_X86" add_timestamp="false"
       http_proxy="http://example.com">
@@ -125,7 +125,8 @@
       </destination>
       <source>
         <publisher name="omnios">
-          <origin name="http://pkg.omniti.com/omnios/release"/>
+          <!-- <origin name="file:///repos/151010-b1"/> -->
+          <origin name="http://pkg.omniti.com/omnios/r151010/"/>
           <!--
             If mirrors for this publisher need to be set, specify them here.
           -->
@@ -155,9 +156,10 @@
         <name>pkg:/entire@0.5.11-0.build#</name>
       -->
       <software_data action="install">
-        <name>pkg:/entire@latest</name>
-        <name>pkg:/system/install/text-install</name>
-        <name>pkg:/system/install/media/internal</name>
+        <name>pkg:/entire@11,5.11-0.151010</name>
+        <name>pkg:/incorporation/jeos/omnios-userland@11,5.11-0.151010</name>
+        <name>pkg:/system/install/text-install@0.5.11,5.11-0.151010</name>
+        <name>pkg:/system/install/media/internal@0.5.11,5.11-0.151010</name>
       </software_data>
     </software>
     <!--
@@ -169,7 +171,7 @@
       </destination>
       <source>
         <publisher name="omnios">
-          <origin name="http://pkg.omniti.com/omnios/release/"/>
+          <origin name="http://pkg.omniti.com/omnios/r151010/"/>
           <!-- 
             If mirrors for this publisher are desired, they can be set here
           -->
@@ -251,9 +253,7 @@
           <kwargs>
             <arg name="root_password"></arg>
             <arg name="is_plaintext">true</arg>
-            <!-- uncomment before using
-            <arg name="hostname">hostname</arg>
-            -->
+            <arg name="hostname">omnios</arg>
           </kwargs>
       </checkpoint>
       <checkpoint name="ba-init"

LTS Release #

Changes:

  • distro name (match the letter/number to the weekly release you're rolling)
  • software_data install set
  • default hostname
Note: once LTS moves to r151014, it will be using per-release repos like Stable currently does. At that point, this section may be merged with Stable.

Typical diff (yours will be different):

--- /usr/share/distro_const/dc_text_x86.xml	2013-04-17 20:42:20.136630954 +0000
+++ dc-release-r151006.xml	2014-08-12 15:44:27.591250426 +0000
@@ -32,7 +32,7 @@
     is to do serial builds and to keep all the incremental
     images around
   -->
-  <distro name="OmniOS_Text_X86" add_timestamp="false">
+  <distro name="OmniOS_Text_r151006_066" add_timestamp="false">
   <!-- Uncomment if http_proxy needs to be set
   <distro name="OmniOS_Text_X86" add_timestamp="false"
       http_proxy="http://example.com">
@@ -155,9 +155,11 @@
         <name>pkg:/entire@0.5.11-0.build#</name>
       -->
       <software_data action="install">
-        <name>pkg:/entire@latest</name>
-        <name>pkg:/system/install/text-install</name>
-        <name>pkg:/system/install/media/internal</name>
+        <name>pkg:/entire@11,5.11-0.151006</name>
+        <name>pkg:/incorporation/jeos/illumos-gate@11,5.11-0.151006</name>
+        <name>pkg:/incorporation/jeos/omnios-userland@11,5.11-0.151006</name>
+        <name>pkg:/system/install/text-install@0.5.11,5.11-0.151006</name>
+        <name>pkg:/system/install/media/internal@0.5.11,5.11-0.151006</name>
       </software_data>
     </software>
     <!--
@@ -251,9 +253,7 @@
           <kwargs>
             <arg name="root_password"></arg>
             <arg name="is_plaintext">true</arg>
-            <!-- uncomment before using
-            <arg name="hostname">hostname</arg>
-            -->
+            <arg name="hostname">omnios</arg>
           </kwargs>
       </checkpoint>
       <checkpoint name="ba-init"

Bloody Release #

Changes:

  • publisher origin URL
--- dc_text_x86.xml.orig	2012-05-31 13:58:21.485160686 +0000
+++ dc_text_x86.xml	2012-05-31 13:58:58.216565151 +0000
@@ -125,7 +125,7 @@
       </destination>
       <source>
         <publisher name="omnios">
-          <origin name="http://pkg.omniti.com/omnios/release"/>
+          <origin name="http://pkg.omniti.com/omnios/bloody"/>
           <!--
             If mirrors for this publisher need to be set, specify them here.
           -->
@@ -169,7 +169,7 @@
       </destination>
       <source>
         <publisher name="omnios">
-          <origin name="http://pkg.omniti.com/omnios/release/"/>
+          <origin name="http://pkg.omniti.com/omnios/bloody/"/>
           <!-- 
             If mirrors for this publisher are desired, they can be set here
           -->

Media Images #

distro_const produces both ISO and USB images. The ISO image may be used directly but the USB image needs additional bits to make it usable. It is just the root image, with no partition information or boot loader.

In order to make a bootable USB image, it must be combined with these pieces, which is simple. Fetch the 1G.header file and cat them together:

$ cat 1G.header OmniOS_Text_X86.usb > OmniOS_Text_X86.usb-dd

Then you can dd that image to any USB drive that is at least 1GB in size.

Kayak #

Kayak builds require a global zone with no non-global zones configured.

Check out the source, ensuring that it is the branch matching the release you're building for, install gnu-make, and if this isn't the first time you've make Kayak media on this host:

zfs destroy rpool/kayak_image/<release>
where <release> is, e.g., "r151010"

Then:

gmake install-web

By default the build will make a ZFS filesystem at rpool/kayak_image, which you can influence with the BUILDSEND variable:

gmake BUILDSEND=data/my_kayak_image install-web

The zfs.bz2 file will end up in $(DESTDIR)/var/kayak/kayak/$(VERSION).zfs.bz2 where DESTDIR may be set in the same way as BUILDSEND above, and VERSION is taken from /etc/release on the build system.

Publishing Media Files #

Copy the media files to the omnios.omniti.com webserver, placing them in the media directory. Don't forget to update symlinks.