1 # Build script to compose the Live CD image.
3 # Copyright (c) 2017 MMPG.
4 # Copyright (c) 2017-2019 Matias Fonzo <selk@dragora.org>.
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
18 # Default mkisofs(8) invocation name
21 # Perform sanity checks (requirements)
23 if ! test -e "${rootdir}/squashfs-tools_lzip/mksquashfs"
25 echo "Local \`${rootdir}/squashfs-tools_lzip/mksquashfs' does not exist." 1>&2
28 if ! type mkisofs > /dev/null
31 echo "\`mkisofs' is not found in your PATH." 1>&2
32 if type genisoimage > /dev/null
36 echo "\`genisoimage' was not found in your PATH." 1>&2
38 echo "Please install one of these programs to make the ISO image." 1>&2
44 # This depends on the existence of the stage 1
46 if test ! -d "${output}/stage1/usr/pkg"
48 echo "The stage number 1 does not exist or is incomplete." 1>&2
49 echo "Build (completely) the stage 1 before processing '$stage'." 1>&2
52 if test ! -f "${rootdir}/initrd/initrd.img"
54 echo "${rootdir}/initrd/initrd.img: No such initramfs file" 1>&2
58 STAGE1="${output}/stage1"
59 CDROM="${rootdir}/cdrom"
63 echo "Re-creating CD tree (${CDROM}) ..."
65 mkdir -p -- "${CDROM}/isolinux"
67 # Copy kernel installation to isolinux/
69 cd -- "${STAGE1}/boot"
71 for file in System.map-* config-* vmlinuz-*
73 cp -p "${STAGE1}/boot/$file" "${CDROM}/isolinux/${file%%-*}"
77 # Copy local isolinux files and initramfs for ISOLINUX
79 cp -p "${worktree}"/archive/isolinux/* "${CDROM}/isolinux/"
80 rm -f "${CDROM}/isolinux/isohybrid.pl" \
81 "${CDROM}/isolinux/generate-keymap"
83 cp -p "${rootdir}/initrd/initrd.img" "${CDROM}/isolinux/"
85 # Produce compressed image using mksquashfs(1)
89 "${rootdir}"/squashfs-tools_lzip/mksquashfs ./* "${CDROM}/dragora.sfs" \
90 -comp lzip -b 128K -Xcompression-level 0 -Xdict-size 100% \
91 -noappend -e ./tools ./var/cache/qi/packages ./root/.ash_history \
92 ./*-log* ./usr/pkg/kernel-buildtree-* ./usr/src/linux-* ./usr/src/qi
94 # Produce hybrid ISO-9660 image
99 $MKISOFS -v -o dragora-live.iso \
101 -no-emul-boot -boot-load-size 4 -boot-info-table \
102 -b "isolinux/isolinux.bin" \
103 -c "isolinux/boot.cat" \
104 -A 'Dragora' -V 'Dragora' \
108 echo "Applying \"hybrid booting\" to the ISO image ..."
109 "${worktree}"/archive/isolinux/isohybrid.pl dragora-live.iso
111 sha256sum dragora-live.iso > dragora-live.iso.sha256
116 echo "The ISO image has been produced at"
117 echo " ${CDROM}/dragora-live.iso"