lorax/0001-sw64-modify.patch
2022-12-12 15:08:15 +08:00

805 lines
27 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 14fefba9691639c7909aa748b9d29f72b0b4cf83 Mon Sep 17 00:00:00 2001
From: isoft <wenjuan.qiu@i-soft.com.cn>
Date: Fri, 28 Oct 2022 02:43:32 +0000
Subject: [PATCH 1/2] sw64 modify
---
.../99-generic/config_files/sw64/boot.msg | 5 +
.../99-generic/config_files/sw64/grub.conf | 13 ++
.../config_files/sw64/grub2-efi.cfg | 40 ++++++
.../99-generic/config_files/sw64/isolinux.cfg | 120 ++++++++++++++++
.../live/config_files/sw64/boot.msg | 5 +
.../live/config_files/sw64/grub.conf | 13 ++
.../live/config_files/sw64/grub2-efi.cfg | 36 +++++
.../live/config_files/sw64/isolinux.cfg | 110 ++++++++++++++
share/templates.d/99-generic/live/sw64.tmpl | 126 ++++++++++++++++
share/templates.d/99-generic/sw64.tmpl | 135 ++++++++++++++++++
src/pylorax/__init__.py | 6 +-
src/pylorax/creator.py | 13 +-
src/pylorax/mount.py | 2 +-
src/pylorax/treebuilder.py | 1 +
14 files changed, 614 insertions(+), 11 deletions(-)
create mode 100644 share/templates.d/99-generic/config_files/sw64/boot.msg
create mode 100644 share/templates.d/99-generic/config_files/sw64/grub.conf
create mode 100644 share/templates.d/99-generic/config_files/sw64/grub2-efi.cfg
create mode 100644 share/templates.d/99-generic/config_files/sw64/isolinux.cfg
create mode 100644 share/templates.d/99-generic/live/config_files/sw64/boot.msg
create mode 100644 share/templates.d/99-generic/live/config_files/sw64/grub.conf
create mode 100644 share/templates.d/99-generic/live/config_files/sw64/grub2-efi.cfg
create mode 100644 share/templates.d/99-generic/live/config_files/sw64/isolinux.cfg
create mode 100644 share/templates.d/99-generic/live/sw64.tmpl
create mode 100644 share/templates.d/99-generic/sw64.tmpl
diff --git a/share/templates.d/99-generic/config_files/sw64/boot.msg b/share/templates.d/99-generic/config_files/sw64/boot.msg
new file mode 100644
index 0000000..ff54899
--- /dev/null
+++ b/share/templates.d/99-generic/config_files/sw64/boot.msg
@@ -0,0 +1,5 @@
+
+splash.lss
+
+ - Press the 01<ENTER>07 key to begin the installation process.
+
diff --git a/share/templates.d/99-generic/config_files/sw64/grub.conf b/share/templates.d/99-generic/config_files/sw64/grub.conf
new file mode 100644
index 0000000..4cf8ced
--- /dev/null
+++ b/share/templates.d/99-generic/config_files/sw64/grub.conf
@@ -0,0 +1,13 @@
+#debug --graphics
+default=1
+splashimage=@SPLASHPATH@
+timeout 60
+hiddenmenu
+title Install @PRODUCT@ @VERSION@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ quiet
+ initrd @INITRDPATH@
+title Test this media & install @PRODUCT@ @VERSION@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ rd.live.check quiet
+ initrd @INITRDPATH@
diff --git a/share/templates.d/99-generic/config_files/sw64/grub2-efi.cfg b/share/templates.d/99-generic/config_files/sw64/grub2-efi.cfg
new file mode 100644
index 0000000..951fb54
--- /dev/null
+++ b/share/templates.d/99-generic/config_files/sw64/grub2-efi.cfg
@@ -0,0 +1,40 @@
+set default="1"
+
+function load_video {
+ insmod efi_gop
+ insmod efi_uga
+ insmod video_bochs
+ insmod video_cirrus
+ insmod all_video
+}
+
+load_video
+set gfxpayload=keep
+insmod gzio
+insmod part_gpt
+insmod ext2
+
+set timeout=60
+### END /etc/grub.d/00_header ###
+
+search --no-floppy --set=root -l '@ISOLABEL@'
+
+### BEGIN /etc/grub.d/10_linux ###
+menuentry 'Install @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ quiet
+ initrdefi @INITRDPATH@
+}
+menuentry 'Test this media & install @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ rd.live.check quiet
+ initrdefi @INITRDPATH@
+}
+submenu 'Troubleshooting -->' {
+ menuentry 'Install @PRODUCT@ @VERSION@ in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ nomodeset quiet
+ initrdefi @INITRDPATH@
+ }
+ menuentry 'Rescue a @PRODUCT@ system' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ rescue quiet
+ initrdefi @INITRDPATH@
+ }
+}
diff --git a/share/templates.d/99-generic/config_files/sw64/isolinux.cfg b/share/templates.d/99-generic/config_files/sw64/isolinux.cfg
new file mode 100644
index 0000000..0471f42
--- /dev/null
+++ b/share/templates.d/99-generic/config_files/sw64/isolinux.cfg
@@ -0,0 +1,120 @@
+default vesamenu.c32
+timeout 600
+
+display boot.msg
+
+# Clear the screen when exiting the menu, instead of leaving the menu displayed.
+# For vesamenu, this means the graphical background is still displayed without
+# the menu itself for as long as the screen remains in graphics mode.
+menu clear
+menu background splash.png
+menu title @PRODUCT@ @VERSION@
+menu vshift 8
+menu rows 18
+menu margin 8
+#menu hidden
+menu helpmsgrow 15
+menu tabmsgrow 13
+
+# Border Area
+menu color border * #00000000 #00000000 none
+
+# Selected item
+menu color sel 0 #ffffffff #00000000 none
+
+# Title bar
+menu color title 0 #ff7ba3d0 #00000000 none
+
+# Press [Tab] message
+menu color tabmsg 0 #ff3a6496 #00000000 none
+
+# Unselected menu item
+menu color unsel 0 #84b8ffff #00000000 none
+
+# Selected hotkey
+menu color hotsel 0 #84b8ffff #00000000 none
+
+# Unselected hotkey
+menu color hotkey 0 #ffffffff #00000000 none
+
+# Help text
+menu color help 0 #ffffffff #00000000 none
+
+# A scrollbar of some type? Not sure.
+menu color scrollbar 0 #ffffffff #ff355594 none
+
+# Timeout msg
+menu color timeout 0 #ffffffff #00000000 none
+menu color timeout_msg 0 #ffffffff #00000000 none
+
+# Command prompt text
+menu color cmdmark 0 #84b8ffff #00000000 none
+menu color cmdline 0 #ffffffff #00000000 none
+
+# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.
+
+menu tabmsg Press Tab for full configuration options on menu items.
+
+menu separator # insert an empty line
+menu separator # insert an empty line
+
+label linux
+ menu label ^Install @PRODUCT@ @VERSION@
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ quiet
+
+label check
+ menu label Test this ^media & install @PRODUCT@ @VERSION@
+ menu default
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ rd.live.check quiet
+
+menu separator # insert an empty line
+
+# utilities submenu
+menu begin ^Troubleshooting
+ menu title Troubleshooting
+
+label vesa
+ menu indent count 5
+ menu label Install @PRODUCT@ @VERSION@ in ^basic graphics mode
+ text help
+ Try this option out if you're having trouble installing
+ @PRODUCT@ @VERSION@.
+ endtext
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ nomodeset quiet
+
+label rescue
+ menu indent count 5
+ menu label ^Rescue a @PRODUCT@ system
+ text help
+ If the system will not boot, this lets you access files
+ and edit config files to try to get it booting again.
+ endtext
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ rescue quiet
+
+label memtest
+ menu label Run a ^memory test
+ text help
+ If your system is having issues, a problem with your
+ system's memory may be the cause. Use this utility to
+ see if the memory is working correctly.
+ endtext
+ kernel memtest
+
+menu separator # insert an empty line
+
+label local
+ menu label Boot from ^local drive
+ localboot 0xffff
+
+menu separator # insert an empty line
+menu separator # insert an empty line
+
+label returntomain
+ menu label Return to ^main menu
+ menu exit
+
+menu end
diff --git a/share/templates.d/99-generic/live/config_files/sw64/boot.msg b/share/templates.d/99-generic/live/config_files/sw64/boot.msg
new file mode 100644
index 0000000..ff54899
--- /dev/null
+++ b/share/templates.d/99-generic/live/config_files/sw64/boot.msg
@@ -0,0 +1,5 @@
+
+splash.lss
+
+ - Press the 01<ENTER>07 key to begin the installation process.
+
diff --git a/share/templates.d/99-generic/live/config_files/sw64/grub.conf b/share/templates.d/99-generic/live/config_files/sw64/grub.conf
new file mode 100644
index 0000000..6c4a51f
--- /dev/null
+++ b/share/templates.d/99-generic/live/config_files/sw64/grub.conf
@@ -0,0 +1,13 @@
+#debug --graphics
+default=1
+splashimage=@SPLASHPATH@
+timeout 60
+hiddenmenu
+title Start @PRODUCT@ @VERSION@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image quiet
+ initrd @INITRDPATH@
+title Test this media & start @PRODUCT@ @VERSION@
+ findiso
+ kernel @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet
+ initrd @INITRDPATH@
diff --git a/share/templates.d/99-generic/live/config_files/sw64/grub2-efi.cfg b/share/templates.d/99-generic/live/config_files/sw64/grub2-efi.cfg
new file mode 100644
index 0000000..2e24b15
--- /dev/null
+++ b/share/templates.d/99-generic/live/config_files/sw64/grub2-efi.cfg
@@ -0,0 +1,36 @@
+set default="1"
+
+function load_video {
+ insmod efi_gop
+ insmod efi_uga
+ insmod video_bochs
+ insmod video_cirrus
+ insmod all_video
+}
+
+load_video
+set gfxpayload=keep
+insmod gzio
+insmod part_gpt
+insmod ext2
+
+set timeout=60
+### END /etc/grub.d/00_header ###
+
+search --no-floppy --set=root -l '@ISOLABEL@'
+
+### BEGIN /etc/grub.d/10_linux ###
+menuentry 'Start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image quiet
+ initrdefi @INITRDPATH@
+}
+menuentry 'Test this media & start @PRODUCT@ @VERSION@' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet
+ initrdefi @INITRDPATH@
+}
+submenu 'Troubleshooting -->' {
+ menuentry 'Start @PRODUCT@ @VERSION@ in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os {
+ linuxefi @KERNELPATH@ @ROOT@ @EXTRA@ rd.live.image nomodeset quiet
+ initrdefi @INITRDPATH@
+ }
+}
diff --git a/share/templates.d/99-generic/live/config_files/sw64/isolinux.cfg b/share/templates.d/99-generic/live/config_files/sw64/isolinux.cfg
new file mode 100644
index 0000000..bc36bb9
--- /dev/null
+++ b/share/templates.d/99-generic/live/config_files/sw64/isolinux.cfg
@@ -0,0 +1,110 @@
+default vesamenu.c32
+timeout 600
+
+display boot.msg
+
+# Clear the screen when exiting the menu, instead of leaving the menu displayed.
+# For vesamenu, this means the graphical background is still displayed without
+# the menu itself for as long as the screen remains in graphics mode.
+menu clear
+menu background splash.png
+menu title @PRODUCT@ @VERSION@
+menu vshift 8
+menu rows 18
+menu margin 8
+#menu hidden
+menu helpmsgrow 15
+menu tabmsgrow 13
+
+# Border Area
+menu color border * #00000000 #00000000 none
+
+# Selected item
+menu color sel 0 #ffffffff #00000000 none
+
+# Title bar
+menu color title 0 #ff7ba3d0 #00000000 none
+
+# Press [Tab] message
+menu color tabmsg 0 #ff3a6496 #00000000 none
+
+# Unselected menu item
+menu color unsel 0 #84b8ffff #00000000 none
+
+# Selected hotkey
+menu color hotsel 0 #84b8ffff #00000000 none
+
+# Unselected hotkey
+menu color hotkey 0 #ffffffff #00000000 none
+
+# Help text
+menu color help 0 #ffffffff #00000000 none
+
+# A scrollbar of some type? Not sure.
+menu color scrollbar 0 #ffffffff #ff355594 none
+
+# Timeout msg
+menu color timeout 0 #ffffffff #00000000 none
+menu color timeout_msg 0 #ffffffff #00000000 none
+
+# Command prompt text
+menu color cmdmark 0 #84b8ffff #00000000 none
+menu color cmdline 0 #ffffffff #00000000 none
+
+# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.
+
+menu tabmsg Press Tab for full configuration options on menu items.
+
+menu separator # insert an empty line
+menu separator # insert an empty line
+
+label linux
+ menu label ^Start @PRODUCT@ @VERSION@
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image quiet
+
+label check
+ menu label Test this ^media & start @PRODUCT@ @VERSION@
+ menu default
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image rd.live.check quiet
+
+menu separator # insert an empty line
+
+# utilities submenu
+menu begin ^Troubleshooting
+ menu title Troubleshooting
+
+label vesa
+ menu indent count 5
+ menu label Start @PRODUCT@ @VERSION@ in ^basic graphics mode
+ text help
+ Try this option out if you're having trouble starting
+ @PRODUCT@ @VERSION@.
+ endtext
+ kernel vmlinuz
+ append initrd=initrd.img @ROOT@ @EXTRA@ rd.live.image nomodeset quiet
+
+label memtest
+ menu label Run a ^memory test
+ text help
+ If your system is having issues, a problem with your
+ system's memory may be the cause. Use this utility to
+ see if the memory is working correctly.
+ endtext
+ kernel memtest
+
+menu separator # insert an empty line
+
+label local
+ menu label Boot from ^local drive
+ localboot 0xffff
+
+menu separator # insert an empty line
+menu separator # insert an empty line
+
+label returntomain
+ menu label Return to ^main menu
+ menu exit
+
+menu end
diff --git a/share/templates.d/99-generic/live/sw64.tmpl b/share/templates.d/99-generic/live/sw64.tmpl
new file mode 100644
index 0000000..4173c0c
--- /dev/null
+++ b/share/templates.d/99-generic/live/sw64.tmpl
@@ -0,0 +1,126 @@
+<%page args="kernels, runtime_img, basearch, inroot, outroot, product, isolabel, extra_boot_args"/>
+<%
+configdir="tmp/config_files/sw64"
+SYSLINUXDIR="usr/share/syslinux"
+PXEBOOTDIR="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):
+ return ch.isalnum() or ch == '_'
+
+isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel)
+
+import os
+from os.path import basename
+from pylorax.sysutils import joinpaths
+
+# Test the runtime_img, if it is > 4GiB we need to set -iso-level to 3
+if os.stat(joinpaths(inroot, runtime_img)).st_size >= 4*1024**3:
+ isoargs = "-iso-level 3"
+else:
+ isoargs = ""
+%>
+
+mkdir ${LIVEDIR}
+install ${runtime_img} ${LIVEDIR}/squashfs.img
+treeinfo stage2 mainimage ${LIVEDIR}/squashfs.img
+
+## install bootloader and config files
+mkdir ${BOOTDIR}
+install ${SYSLINUXDIR}/isolinux.bin ${BOOTDIR}
+install ${SYSLINUXDIR}/vesamenu.c32 ${BOOTDIR}
+install ${SYSLINUXDIR}/ldlinux.c32 ${BOOTDIR}
+install ${SYSLINUXDIR}/libcom32.c32 ${BOOTDIR}
+install ${SYSLINUXDIR}/libutil.c32 ${BOOTDIR}
+install ${configdir}/isolinux.cfg ${BOOTDIR}
+install ${configdir}/boot.msg ${BOOTDIR}
+install ${configdir}/grub.conf ${BOOTDIR}
+install usr/share/anaconda/boot/syslinux-splash.png ${BOOTDIR}/splash.png
+install boot/memtest* ${BOOTDIR}/memtest
+
+## configure bootloader
+replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
+replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
+replace @ROOT@ 'root=live:CDLABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg
+replace @EXTRA@ '${extra_boot_args}' ${BOOTDIR}/isolinux.cfg
+
+## install kernels
+mkdir ${KERNELDIR}
+%for kernel in kernels:
+ %if kernel.flavor:
+ installkernel images-xen ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor}
+ installinitrd images-xen ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img
+ %else:
+ installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+ %endif
+%endfor
+
+hardlink ${KERNELDIR}/vmlinuz ${BOOTDIR}
+hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
+%if basearch == 'x86_64':
+ treeinfo images-xen kernel ${KERNELDIR}/vmlinuz
+ treeinfo images-xen initrd ${KERNELDIR}/initrd.img
+%endif
+
+## WHeeeeeeee, EFI.
+<% efiargs=""; efigraft=""; efiarch32=None; efiarch64=None %>
+%if exists("boot/efi/EFI/*/gcdia32.efi"):
+ <% efiarch32 = 'IA32' %>
+%endif
+%if exists("boot/efi/EFI/*/gcdx64.efi"):
+ <% efiarch64 = 'X64' %>
+%endif
+%if (efiarch32 or efiarch64) and basearch != 'i386':
+ <%
+ efigraft="EFI/BOOT={0}/EFI/BOOT".format(outroot)
+ images = [("images/efiboot.img", "-isohybrid-gpt-basdat")]
+ if domacboot:
+ images.append(("images/macboot.img", "-isohybrid-gpt-hfsplus"))
+ %>
+ %for img, hybrid in images:
+ <%
+ efiargs += " -eltorito-alt-boot -e {0} -no-emul-boot {1}".format(img, hybrid)
+ efigraft += " {0}={1}/{0}".format(img,outroot)
+ %>
+ treeinfo images-${basearch} ${img|basename} ${img}
+ %endfor
+ <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch32=efiarch32, efiarch64=efiarch64, isolabel=isolabel, extra_boot_args=extra_boot_args"/>
+%endif
+
+# Create optional product.img and updates.img
+<% filegraft=""; images=["product", "updates"]; compressargs=""; %>
+%if basearch == 'i386':
+ # Limit the amount of memory xz uses on i386
+ <% compressargs="--xz -9 --memlimit-compress=3700MiB" %>
+%endif
+%for img in images:
+ %if exists("%s/%s/" % (LORAXDIR, img)):
+ installimg ${compressargs} ${LORAXDIR}/${img}/ images/${img}.img
+ treeinfo images-${basearch} ${img}.img images/${img}.img
+ <% filegraft += " images/{0}.img={1}/images/{0}.img".format(img, outroot) %>
+ %endif
+%endfor
+
+# Add the license files
+%for f in glob("/usr/share/licenses/*-release/*"):
+ install ${f} ${f|basename}
+ <% filegraft += " {0}={1}/{0}".format(basename(f), outroot) %>
+%endfor
+
+## make boot.iso
+runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
+ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \
+ -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
+ -boot-load-size 4 -boot-info-table -no-emul-boot \
+ ${efiargs} -R -J -V '${isolabel}' \
+ -graft-points \
+ ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${KERNELDIR}=${outroot}/${KERNELDIR} \
+ ${LIVEDIR}=${outroot}/${LIVEDIR} \
+ ${efigraft} ${filegraft}
+treeinfo images-${basearch} boot.iso images/boot.iso
diff --git a/share/templates.d/99-generic/sw64.tmpl b/share/templates.d/99-generic/sw64.tmpl
new file mode 100644
index 0000000..193286c
--- /dev/null
+++ b/share/templates.d/99-generic/sw64.tmpl
@@ -0,0 +1,135 @@
+<%page args="kernels, runtime_img, runtime_base, basearch, inroot, outroot, product, isolabel"/>
+<%
+configdir="tmp/config_files/sw64"
+SYSLINUXDIR="usr/share/syslinux"
+PXEBOOTDIR="pxeboot"
+STAGE2IMG="isoft/sw64/root-image.fs.sfs"
+BOOTDIR="isolinux"
+KERNELDIR=PXEBOOTDIR
+LORAXDIR="usr/share/lorax/"
+
+## Don't allow spaces or escape characters in the iso label
+def valid_label(ch):
+ return ch.isalnum() or ch == '_'
+
+isolabel = ''.join(ch if valid_label(ch) else '-' for ch in isolabel)
+
+import os
+from os.path import basename
+from pylorax.sysutils import joinpaths
+
+# Test the runtime_img, if it is > 4GiB we need to set -iso-level to 3
+if os.stat(joinpaths(inroot, runtime_img)).st_size >= 4*1024**3:
+ isoargs = "-iso-level 3"
+else:
+ isoargs = ""
+%>
+
+mkdir isoft/sw64
+install ${runtime_img} ${STAGE2IMG}
+treeinfo stage2 mainimage isoft/sw64/${runtime_base}
+
+## install bootloader and config files
+mkdir ${BOOTDIR}
+install ${SYSLINUXDIR}/isolinux.bin ${BOOTDIR}
+install ${SYSLINUXDIR}/vesamenu.c32 ${BOOTDIR}
+install ${SYSLINUXDIR}/ldlinux.c32 ${BOOTDIR}
+install ${SYSLINUXDIR}/libcom32.c32 ${BOOTDIR}
+install ${SYSLINUXDIR}/libutil.c32 ${BOOTDIR}
+install ${configdir}/isolinux.cfg ${BOOTDIR}
+install ${configdir}/boot.msg ${BOOTDIR}
+install ${configdir}/grub.conf ${BOOTDIR}
+install usr/share/anaconda/boot/syslinux-splash.png ${BOOTDIR}/splash.png
+install boot/memtest* ${BOOTDIR}/memtest
+
+## configure bootloader
+replace @VERSION@ ${product.version} ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
+replace @PRODUCT@ '${product.name}' ${BOOTDIR}/grub.conf ${BOOTDIR}/isolinux.cfg ${BOOTDIR}/*.msg
+replace @ROOT@ 'inst.stage2=hd:LABEL=${isolabel|udev}' ${BOOTDIR}/isolinux.cfg
+
+## install kernels
+mkdir ${KERNELDIR}
+%for kernel in kernels:
+ %if kernel.flavor:
+ ## i386 PAE
+ installkernel images-xen ${kernel.path} ${KERNELDIR}/vmlinuz-${kernel.flavor}
+ installinitrd images-xen ${kernel.initrd.path} ${KERNELDIR}/initrd-${kernel.flavor}.img
+ %else:
+ ## normal i386, x86_64
+ installkernel images-${basearch} ${kernel.path} ${KERNELDIR}/vmlinuz
+ installinitrd images-${basearch} ${kernel.initrd.path} ${KERNELDIR}/initrd.img
+ %endif
+%endfor
+
+hardlink ${KERNELDIR}/vmlinuz ${BOOTDIR}
+hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
+%if basearch == 'x86_64':
+ treeinfo images-xen kernel ${KERNELDIR}/vmlinuz
+ treeinfo images-xen initrd ${KERNELDIR}/initrd.img
+%endif
+
+## WHeeeeeeee, EFI.
+<% efiargs=""; efigraft=""; efiarch32=None; efiarch64=None %>
+%if exists("boot/efi/EFI/*/gcdia32.efi"):
+ <% efiarch32 = 'IA32' %>
+%endif
+%if exists("boot/efi/EFI/*/gcdx64.efi"):
+ <% efiarch64 = 'X64' %>
+%endif
+%if (efiarch32 or efiarch64) and basearch != 'i386':
+ <%
+ efigraft="EFI/BOOT={0}/EFI/BOOT".format(outroot)
+ images = [("images/efiboot.img", "-isohybrid-gpt-basdat")]
+ if domacboot:
+ images.append(("images/macboot.img", "-isohybrid-gpt-hfsplus"))
+ %>
+ %for img, hybrid in images:
+ <%
+ efiargs += " -eltorito-alt-boot -e {0} -no-emul-boot {1}".format(img, hybrid)
+ efigraft += " {0}={1}/{0}".format(img,outroot)
+ %>
+ treeinfo images-${basearch} ${img|basename} ${img}
+ %endfor
+ <%include file="efi.tmpl" args="configdir=configdir, KERNELDIR=KERNELDIR, efiarch32=efiarch32, efiarch64=efiarch64, isolabel=isolabel"/>
+%endif
+
+# Create optional product.img and updates.img
+<% filegraft=""; images=["product", "updates"]; compressargs=""; %>
+%if basearch == 'i386':
+ # Limit the amount of memory xz uses on i386
+ <% compressargs="--xz -9 --memlimit-compress=3700MiB" %>
+%endif
+%for img in images:
+ %if exists("%s/%s/" % (LORAXDIR, img)):
+ installimg ${compressargs} ${LORAXDIR}/${img}/ isoft/sw64/${img}.img
+ treeinfo images-${basearch} ${img}.img isoft/sw64/${img}.img
+ <% filegraft += " images/{0}.img={1}/isoft/sw64/{0}.img".format(img, outroot) %>
+ %endif
+%endfor
+
+# Inherit iso-graft/ if it exists from external templates
+<%
+ import os
+ if os.path.exists(workdir + "/iso-graft"):
+ filegraft += " " + workdir + "/iso-graft"
+%>
+
+# Add the license files
+%for f in glob("/usr/share/licenses/*-release/*"):
+ install ${f} ${f|basename}
+ <% filegraft += " {0}={1}/{0}".format(basename(f), outroot) %>
+%endfor
+
+## make boot.iso
+runcmd xorrisofs ${isoargs} -o ${outroot}/images/boot.iso \
+ -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin \
+ -b ${BOOTDIR}/isolinux.bin -c ${BOOTDIR}/boot.cat \
+ -boot-load-size 4 -boot-info-table -no-emul-boot \
+ ${efiargs} -R -J -V '${isolabel}' \
+ -graft-points \
+ .discinfo=${outroot}/.discinfo \
+ ${STAGE2IMG}=${outroot}/${STAGE2IMG} \
+ ${BOOTDIR}=${outroot}/${BOOTDIR} \
+ ${KERNELDIR}=${outroot}/${KERNELDIR} \
+ ${efigraft} ${filegraft}
+treeinfo images-${basearch} boot.iso images/boot.iso
diff --git a/src/pylorax/__init__.py b/src/pylorax/__init__.py
index 8700ff5..1b85052 100644
--- a/src/pylorax/__init__.py
+++ b/src/pylorax/__init__.py
@@ -61,13 +61,13 @@ else:
DRACUT_DEFAULT = ["--xz", "--install", "/.buildstamp", "--no-early-microcode", "--add", "fips"]
# Used for DNF conf.module_platform_id
-DEFAULT_PLATFORM_ID = "platform:f32"
+DEFAULT_PLATFORM_ID = "platform:sw64"
class ArchData(DataHolder):
lib64_arches = ("x86_64", "ppc64le", "s390x", "ia64", "aarch64")
bcj_arch = dict(i386="x86", x86_64="x86",
ppc64le="powerpc",
- arm="arm", armhfp="arm")
+ arm="arm", armhfp="arm", sw_64="sw64")
def __init__(self, buildarch):
super(ArchData, self).__init__()
@@ -309,7 +309,7 @@ class Lorax(BaseLoraxClass):
rb.writepkgsizes(joinpaths(logdir, "final-pkgsizes.txt"))
logger.info("creating the runtime image")
- runtime = "images/install.img"
+ runtime = "isoft/sw64/root-image.fs.sfs"
compression = self.conf.get("compression", "type")
compressargs = self.conf.get("compression", "args").split() # pylint: disable=no-member
if self.conf.getboolean("compression", "bcj"):
diff --git a/src/pylorax/creator.py b/src/pylorax/creator.py
index 7075d32..79d35fd 100644
--- a/src/pylorax/creator.py
+++ b/src/pylorax/creator.py
@@ -51,7 +51,7 @@ from pylorax.sysutils import joinpaths, remove
DRACUT_DEFAULT = ["--xz", "--add", "livenet dmsquash-live dmsquash-live-ntfs convertfs pollcdrom qemu qemu-net",
"--omit", "plymouth", "--no-hostonly", "--debug", "--no-early-microcode"]
-RUNTIME = "images/install.img"
+RUNTIME = "isoft/sw64/root-image.fs.sfs"
class FakeDNF(object):
"""
@@ -336,7 +336,7 @@ def make_livecd(opts, mount_dir, work_dir):
:param opts: options passed to livemedia-creator
:type opts: argparse options
:param str mount_dir: Directory tree to compress
- :param str work_dir: Output compressed image to work_dir+images/install.img
+ :param str work_dir: Output compressed image to work_dir+isoft/sw64/root-image.fs.sfs
This uses wwood's squashfs live initramfs method:
* put the real / into LiveOS/rootfs.img
@@ -354,7 +354,7 @@ def make_livecd(opts, mount_dir, work_dir):
# Link /images to work_dir/images to make the templates happy
if os.path.islink(joinpaths(mount_dir, "images")):
os.unlink(joinpaths(mount_dir, "images"))
- rc = execWithRedirect("/bin/ln", ["-s", joinpaths(work_dir, "images"),
+ rc = execWithRedirect("/bin/ln", ["-s", joinpaths(work_dir, "isoft/sw64"),
joinpaths(mount_dir, "images")])
if rc:
raise RuntimeError("Failed to symlink images from mount_dir to work_dir")
@@ -529,9 +529,8 @@ def make_live_images(opts, work_dir, disk_img):
sys_root = ""
squashfs_root_dir = joinpaths(work_dir, "squashfs_root")
- liveos_dir = joinpaths(squashfs_root_dir, "LiveOS")
- os.makedirs(liveos_dir)
- rootfs_img = joinpaths(liveos_dir, "rootfs.img")
+ os.makedirs(squashfs_root_dir)
+ rootfs_img = joinpaths(squashfs_root_dir, "root-image.fs")
if opts.fs_image or opts.no_virt:
# Find the ostree root in the fsimage
@@ -573,7 +572,7 @@ def make_live_images(opts, work_dir, disk_img):
log.info("Packing live rootfs image")
add_pxe_args = []
- live_image_name = "live-rootfs.squashfs.img"
+ live_image_name = "root-image.fs.sfs"
compression, compressargs = squashfs_args(opts)
rc = mksquashfs(squashfs_root_dir, joinpaths(work_dir, live_image_name), compression, compressargs)
if rc != 0:
diff --git a/src/pylorax/mount.py b/src/pylorax/mount.py
index 19e399b..a50f5a9 100644
--- a/src/pylorax/mount.py
+++ b/src/pylorax/mount.py
@@ -67,7 +67,7 @@ class IsoMountpoint(object):
else:
self.repo = None
self.stage2 = os.path.exists(self.mount_dir+"/LiveOS/squashfs.img") or \
- os.path.exists(self.mount_dir+"/images/install.img")
+ os.path.exists(self.mount_dir+"/isoft/sw64/root-image.fs.sfs")
try:
for kernel, initrd in kernel_list:
diff --git a/src/pylorax/treebuilder.py b/src/pylorax/treebuilder.py
index cbb8872..9335735 100644
--- a/src/pylorax/treebuilder.py
+++ b/src/pylorax/treebuilder.py
@@ -42,6 +42,7 @@ templatemap = {
'aarch64': 'aarch64.tmpl',
'arm': 'arm.tmpl',
'armhfp': 'arm.tmpl',
+ "sw_64": 'sw64.tmpl'
}
def generate_module_info(moddir, outfile=None):
--
2.33.0