[PATCH 2/2] Update templates to use installimg for product and updates
Brian C. Lane
bcl at redhat.com
Wed Nov 5 03:23:32 UTC 2014
With these templates if a package has installed files in
/usr/share/lorax/product or /usr/share/lorax/updates/ they will be used
to create product.img and/or updates.img which will be included in the
images/ directory of the iso and of the final output tree.
These can be used to customize the installation environment or provide
updates. See README.product for current documentation.
---
README.product | 17 +++++++++++++++++
lorax.spec | 2 +-
share/aarch64.tmpl | 10 ++++++++++
share/live/ppc.tmpl | 12 +++++++++++-
share/live/x86.tmpl | 12 +++++++++++-
share/ppc.tmpl | 13 ++++++++++++-
share/ppc64le.tmpl | 14 ++++++++++++--
share/x86.tmpl | 12 +++++++++++-
8 files changed, 85 insertions(+), 7 deletions(-)
create mode 100644 README.product
diff --git a/README.product b/README.product
new file mode 100644
index 0000000..fde376c
--- /dev/null
+++ b/README.product
@@ -0,0 +1,17 @@
+Lorax now supports creation of product.img and updates.img as part of the build
+process. This is implemented using the installimg command which will take the
+contents of a directory and create a compressed archive from it. The x86, ppc,
+ppc64le and aarch64 templates all look for /usr/share/lorax/product/ and
+/usr/share/lorax/updates/ directories while creating the final install tree. If
+there are files in those directories lorax will create images/product.img
+and/or images/updates.img
+
+These archives are just like an anaconda updates image -- they are copied over
+the top of the filesystem at boot time so that you can drop in files to add to
+or replace anything on the filesystem.
+
+For example, to add an installclass to Anaconda you would put a file in:
+
+/usr/lib64/python2.7/site-packages/pyanaconda/installclasses/custom.py
+
+
diff --git a/lorax.spec b/lorax.spec
index f0cc8f9..e291403 100644
--- a/lorax.spec
+++ b/lorax.spec
@@ -86,7 +86,7 @@ make DESTDIR=$RPM_BUILD_ROOT mandir=%{_mandir} install
%files
%defattr(-,root,root,-)
-%doc COPYING AUTHORS README.livemedia-creator
+%doc COPYING AUTHORS README.livemedia-creator README.product
%doc docs/*ks
%{python_sitelib}/pylorax
%{python_sitelib}/*.egg-info
diff --git a/share/aarch64.tmpl b/share/aarch64.tmpl
index 66af43f..c073b10 100644
--- a/share/aarch64.tmpl
+++ b/share/aarch64.tmpl
@@ -4,6 +4,7 @@ configdir="tmp/config_files/aarch64"
PXEBOOTDIR="images/pxeboot"
KERNELDIR=PXEBOOTDIR
LIVEDIR="LiveOS"
+LORAXDIR="usr/share/lorax/"
%>
mkdir ${LIVEDIR}
@@ -37,3 +38,12 @@ mkdir ${KERNELDIR}
<%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
%endif
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+ %if exists("%s/%s/" % (LORAXDIR, img)):
+ installimg ${LORAXDIR}/${img}/ images/${img}.img
+ <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+ %endif
+%endfor
+
diff --git a/share/live/ppc.tmpl b/share/live/ppc.tmpl
index 80c0383..af6373e 100644
--- a/share/live/ppc.tmpl
+++ b/share/live/ppc.tmpl
@@ -6,6 +6,7 @@ GRUBDIR="boot/grub"
LIVEDIR="LiveOS"
MACDIR=BOOTDIR+"/mac"
NETBOOTDIR="images/netboot"
+LORAXDIR="usr/share/lorax/"
WRAPPER="usr/sbin/wrapper"
WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
@@ -80,6 +81,15 @@ install ${configdir}/magic ${BOOTDIR}
%endif
%endfor
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+ %if exists("%s/%s/" % (LORAXDIR, img)):
+ installimg ${LORAXDIR}/${img}/ images/${img}.img
+ <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+ %endif
+%endfor
+
## make boot.iso
runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
${prepboot} -part -hfs -T -r -l -J \
@@ -91,7 +101,7 @@ runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
${BOOTDIR}=${outroot}/${BOOTDIR} \
${GRUBDIR}=${outroot}/${GRUBDIR} \
${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
- ${LIVEDIR}=${outroot}/${LIVEDIR}
+ ${LIVEDIR}=${outroot}/${LIVEDIR} ${imggraft}
%for kernel in kernels:
treeinfo images-${kernel.arch} boot.iso images/boot.iso
diff --git a/share/live/x86.tmpl b/share/live/x86.tmpl
index 3d5b2c5..f60b80d 100644
--- a/share/live/x86.tmpl
+++ b/share/live/x86.tmpl
@@ -6,6 +6,7 @@ PXEBOOTDIR="images/pxeboot"
BOOTDIR="isolinux"
KERNELDIR=PXEBOOTDIR
LIVEDIR="LiveOS"
+LORAXDIR="usr/share/lorax/"
## Don't allow spaces or escape characters in the iso label
def valid_label(ch):
@@ -73,6 +74,15 @@ hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
<%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
%endif
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+ %if exists("%s/%s/" % (LORAXDIR, img)):
+ installimg ${LORAXDIR}/${img}/ images/${img}.img
+ <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+ %endif
+%endfor
+
## make boot.iso
runcmd mkisofs -o ${outroot}/images/boot.iso \
-b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
@@ -81,6 +91,6 @@ runcmd mkisofs -o ${outroot}/images/boot.iso \
${BOOTDIR}=${outroot}/${BOOTDIR} \
${KERNELDIR}=${outroot}/${KERNELDIR} \
${LIVEDIR}=${outroot}/${LIVEDIR} \
- ${efigraft}
+ ${efigraft} ${imggraft}
runcmd isohybrid ${efihybrid} ${outroot}/images/boot.iso
treeinfo images-${basearch} boot.iso images/boot.iso
diff --git a/share/ppc.tmpl b/share/ppc.tmpl
index 6deb6e8..ddc368a 100644
--- a/share/ppc.tmpl
+++ b/share/ppc.tmpl
@@ -6,6 +6,7 @@ GRUBDIR="boot/grub"
LIVEDIR="LiveOS"
MACDIR=GRUBDIR+"/powerpc-ieee1275"
NETBOOTDIR="images/netboot"
+LORAXDIR="usr/share/lorax/"
WRAPPER="usr/sbin/wrapper"
WRAPPER_DATA="usr/"+libdir+"/kernel-wrapper"
@@ -88,6 +89,15 @@ install ${configdir}/magic ${BOOTDIR}
%endif
%endfor
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+ %if exists("%s/%s/" % (LORAXDIR, img)):
+ installimg ${LORAXDIR}/${img}/ images/${img}.img
+ <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+ %endif
+%endfor
+
## make boot.iso
runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
${prepboot} -part -hfs -T -r -l -J \
@@ -99,7 +109,8 @@ runcmd mkisofs -o ${outroot}/images/boot.iso -chrp-boot -U \
${BOOTDIR}=${outroot}/${BOOTDIR} \
${GRUBDIR}=${outroot}/${GRUBDIR} \
${NETBOOTDIR}=${outroot}/${NETBOOTDIR} \
- ${LIVEDIR}=${outroot}/${LIVEDIR}
+ ${LIVEDIR}=${outroot}/${LIVEDIR} ${imggraft}
+
%for kernel in kernels:
treeinfo images-${kernel.arch} boot.iso images/boot.iso
diff --git a/share/ppc64le.tmpl b/share/ppc64le.tmpl
index 8fa15b0..c161889 100644
--- a/share/ppc64le.tmpl
+++ b/share/ppc64le.tmpl
@@ -4,6 +4,7 @@ configdir="tmp/config_files/ppc"
BOOTDIR="ppc"
GRUBDIR="boot/grub"
LIVEDIR="LiveOS"
+LORAXDIR="usr/share/lorax/"
## NOTE: yaboot freaks out and stops parsing its config if it sees a '\',
## so we can't use the udev escape sequences in the root arg.
@@ -63,8 +64,17 @@ install ${configdir}/magic ${BOOTDIR}
treeinfo images-${kernel.arch} zimage
%endfor
-## make boot.iso
mkdir images/
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+ %if exists("%s/%s/" % (LORAXDIR, img)):
+ installimg ${LORAXDIR}/${img}/ images/${img}.img
+ <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+ %endif
+%endfor
+
+## make boot.iso
runcmd mkisofs -v -U -J -R -T \
-o ${outroot}/images/boot.iso \
-part -hfs -r -l -sysid PPC \
@@ -75,7 +85,7 @@ runcmd mkisofs -v -U -J -R -T \
-no-desktop -allow-multidot -graft-points \
${BOOTDIR}=${outroot}/${BOOTDIR} \
${GRUBDIR}=${outroot}/${GRUBDIR} \
- ${LIVEDIR}=${outroot}/${LIVEDIR}
+ ${LIVEDIR}=${outroot}/${LIVEDIR} ${imggraft}
%for kernel in kernels:
treeinfo images-${kernel.arch} boot.iso images/boot.iso
diff --git a/share/x86.tmpl b/share/x86.tmpl
index 02117cd..145e209 100644
--- a/share/x86.tmpl
+++ b/share/x86.tmpl
@@ -6,6 +6,7 @@ PXEBOOTDIR="images/pxeboot"
BOOTDIR="isolinux"
KERNELDIR=PXEBOOTDIR
LIVEDIR="LiveOS"
+LORAXDIR="usr/share/lorax/"
## Don't allow spaces or escape characters in the iso label
def valid_label(ch):
@@ -87,6 +88,15 @@ hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
<%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch=efiarch, isolabel=isolabel"/>
%endif
+# Create optional product.img and updates.img
+<% imggraft=""; images=["product", "updates"] %>
+%for img in images:
+ %if exists("%s/%s/" % (LORAXDIR, img)):
+ installimg ${LORAXDIR}/${img}/ images/${img}.img
+ <% imggraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+ %endif
+%endfor
+
## make boot.iso
runcmd mkisofs -o ${outroot}/images/boot.iso \
-b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
@@ -95,6 +105,6 @@ runcmd mkisofs -o ${outroot}/images/boot.iso \
${BOOTDIR}=${outroot}/${BOOTDIR} \
${KERNELDIR}=${outroot}/${KERNELDIR} \
${LIVEDIR}=${outroot}/${LIVEDIR} \
- ${efigraft}
+ ${efigraft} ${imggraft}
runcmd isohybrid ${efihybrid} ${outroot}/images/boot.iso
treeinfo images-${basearch} boot.iso images/boot.iso
--
1.9.3
More information about the anaconda-patches
mailing list