3 ## live-build(7) - System Build Scripts
4 ## Copyright (C) 2006-2012 Daniel Baumann <daniel@debian.org>
6 ## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
7 ## This is free software, and you are welcome to redistribute it
8 ## under certain conditions; see COPYING for details.
13 # Including common functions
14 [ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh
16 # Setting static variables
17 DESCRIPTION="$(Echo 'installs syslinux into binary')"
19 USAGE="${PROGRAM} [--force]"
23 # Reading configuration files
24 Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
27 if [ "${LB_BOOTLOADER}" != "syslinux" ]
32 Echo_message "Begin installing syslinux..."
34 # Requiring stage file
35 Require_stagefile .build/config .build/bootstrap
38 Check_stagefile .build/binary_syslinux
47 Check_architectures amd64 i386
48 Check_crossarchitectures
50 # Assembling image specifics
51 case "${LB_BINARY_IMAGES}" in
53 _BOOTLOADER="isolinux"
61 _TARGET="binary/isolinux"
67 _BOOTLOADER="pxelinux"
72 _BOOTLOADER="syslinux"
80 _TARGET="binary/syslinux"
87 case "${LB_BUILD_WITH_CHROOT}" in
89 Check_package chroot/usr/bin/syslinux syslinux
90 Check_package chroot/usr/lib/syslinux syslinux-common
92 case "${LB_SYSLINUX_THEME}" in
94 Check_package chroot/usr/bin/rsvg librsvg2-bin
98 Check_package chroot/usr/share/syslinux/themes/${LB_SYSLINUX_THEME} syslinux-themes-${LB_SYSLINUX_THEME}
102 Check_package chroot/usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz gfxboot-theme-ubuntu
110 if [ ! -e /usr/bin/syslinux ]
113 Echo_error "/usr/bin/syslinux - no such file."
117 if [ ! -e /usr/lib/syslinux ]
120 Echo_error "/usr/lib/syslinux - no such directory"
124 case "${LB_SYSLINUX_THEME}" in
126 if [ ! -e /usr/bin/rsvg ]
129 Echo_error "/usr/bin/rsvg - no such file"
135 if [ ! -e /usr/share/syslinux/themes/${LB_SYSLINUX_THEME} ]
138 Echo_error "/usr/share/syslinux/themes/${LB_SYSLINUX_THEME} - no such directory."
147 Restore_cache cache/packages.binary
152 # FIXME: cleanup, unify, and extend themes for ${_BOOTLOADER}-live and ${_BOOTLOADER}-installer
153 if [ "${LB_SYSLINUX_THEME}" = "live-build" ]
155 if [ -e "config/bootloaders/${_BOOTLOADER}" ]
157 # Internal local copy
158 _SOURCE="config/bootloaders/${_BOOTLOADER}"
160 # Internal system copy
161 if [ -n "${LIVE_BUILD}" ]
163 _SOURCE="${LIVE_BUILD}/share/bootloaders/${_BOOTLOADER}"
165 _SOURCE="/usr/share/live/build/bootloaders/${_BOOTLOADER}"
169 # External copy from chroot or system
170 _SOURCE="/usr/share/syslinux/themes/${LB_SYSLINUX_THEME}/${_BOOTLOADER}-live"
174 case "${LB_BUILD_WITH_CHROOT}" in
176 mkdir -p $(dirname ${_TARGET})
178 # Copy in two steps since the theme can have absolute symlinks and would therefore not be dereferenced correctly
179 if [ "${LB_SYSLINUX_THEME}" = "live-build" ]
181 cp -a ${_SOURCE} chroot/root
182 Chroot chroot cp -aL /root/$(basename ${_SOURCE}) /root/$(basename ${_SOURCE}).tmp
183 rm -rf chroot/$(basename ${_SOURCE})
185 Chroot chroot cp -aL ${_SOURCE} /root/$(basename ${_SOURCE}).tmp
190 Chroot chroot "tar xfz /usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz -C /root/$(basename ${_SOURCE}).tmp"
194 mv chroot/root/$(basename ${_SOURCE}).tmp ${_TARGET}
200 cp -aL ${_SOURCE}/* ${_TARGET}
204 tar xfz /usr/share/gfxboot-theme-ubuntu/bootlogo.tar.gz -C ${_TARGET}
211 if [ -e "${_TARGET}/live.cfg.in" ]
213 # This is all rather suboptimal.. needs prettifying at some point
214 _FLAVOURS="$(echo ${LB_LINUX_FLAVOURS} | wc -w)"
216 case "${_FLAVOURS}" in
218 mv binary/live/vmlinuz-* binary/live/vmlinuz
219 mv binary/live/initrd.img-* binary/live/initrd.img
221 sed -e "s|@FLAVOUR@|${LB_LINUX_FLAVOURS}|g" \
222 -e "s|@KERNEL@|/live/vmlinuz|g" \
223 -e "s|@INITRD@|/live/initrd.img|g" \
224 -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
225 -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
226 "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
228 rm -f "${_TARGET}/live.cfg.in"
234 for _FLAVOUR in ${LB_LINUX_FLAVOURS}
236 _NUMBER="$((${_NUMBER} + 1))"
238 mv binary/live/vmlinuz-*-${_FLAVOUR} binary/live/vmlinuz${_NUMBER}
239 mv binary/live/initrd.img-*-${_FLAVOUR} binary/live/initrd${_NUMBER}.img
241 sed -e "s|@FLAVOUR@|${_FLAVOUR}|g" \
242 -e "s|@KERNEL@|/live/vmlinuz${_NUMBER}|g" \
243 -e "s|@INITRD@|/live/initrd${_NUMBER}.img|g" \
244 -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
245 -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
246 "${_TARGET}/live.cfg.in" >> "${_TARGET}/live.cfg"
249 rm -f "${_TARGET}/live.cfg.in"
252 elif [ -e "${_TARGET}/live.cfg" ]
254 sed -i -e "s|@LB_BOOTAPPEND_LIVE@|${LB_BOOTAPPEND_LIVE}|g" \
255 -e "s|@LB_BOOTAPPEND_FAILSAFE@|${LB_BOOTAPPEND_FAILSAFE}|g" \
259 if [ -e ${_TARGET}/install.cfg ]
261 sed -i -e "s|@LB_BOOTAPPEND_INSTALL@|${LB_BOOTAPPEND_INSTALL}|g" \
262 ${_TARGET}/install.cfg
265 if [ -e "${_TARGET}/splash.svg.in" ]
269 _PROJECT="Progress Linux"
271 if ls config/package-lists/client-gnome.list*
273 _DESCRIPTION="Client GNOME"
274 elif ls config/package-lists/client-lxde.list* > /dev/null 2>&1
276 _DESCRIPTION="Client LXDE"
277 elif ls config/package-lists/server-lxc.list* > /dev/null 2>&1
279 _DESCRIPTION="Server LXC"
281 _DESCRIPTION="Standard"
286 _PROJECT="Debian GNU/Linux"
292 eval _VERSION="$`echo RELEASE_${LB_DISTRIBUTION}`"
293 _DISTRIBUTION="${LB_DISTRIBUTION}"
294 _ARCHITECTURE="${LB_ARCHITECTURES}"
300 _MINUTE="$(date +%M)"
301 _SECOND="$(date +%S)"
302 _LINUX_VERSIONS="$(for _LINUX in chroot/boot/vmlinuz-* ; do chroot chroot apt-cache policy $(basename ${_LINUX} | sed -e 's|vmlinuz-|linux-image-|') | awk '/Installed: / { print $2 }' ; done | sort -u)"
303 _LIVE_BUILD_VERSION="$(lb --version)"
304 _LIVE_BOOT_VERSION="$(chroot chroot apt-cache policy live-boot | awk '/Installed: / { print $2 }')"
305 _LIVE_CONFIG_VERSION="$(chroot chroot apt-cache policy live-config | awk '/Installed: / { print $2 }')"
306 _LIVE_TOOLS_VERSION="$(chroot chroot apt-cache policy live-tools | awk '/Installed: / { print $2 }')"
308 sed -e "s|@PROJECT@|${_PROJECT}|g" \
309 -e "s|@DISTRIBUTION@|${_DISTRIBUTION}|g" \
310 -e "s|@VERSION@|${_VERSION}|g" \
311 -e "s|@ARCHITECTURE@|${_ARCHITECTURE}|g" \
312 -e "s|@DESCRIPTION@|${_DESCRIPTION}|g" \
313 -e "s|@DATE@|${_DATE}|g" \
314 -e "s|@YEAR@|${_YEAR}|g" \
315 -e "s|@MONTH@|${_MONTH}|g" \
316 -e "s|@DAY@|${_DAY}|g" \
317 -e "s|@HOUR@|${_HOUR}|g" \
318 -e "s|@MINUTE@|${_MINUTE}|g" \
319 -e "s|@SECOND@|${_SECOND}|g" \
320 -e "s|@LINUX_VERSIONS@|${_LINUX_VERSIONS}|g" \
321 -e "s|@LIVE_BUILD_VERSION@|${_LIVE_BUILD_VERSION}|g" \
322 -e "s|@LIVE_BOOT_VERSION@|${_LIVE_BOOT_VERSION}|g" \
323 -e "s|@LIVE_CONFIG_VERSION@|${_LIVE_CONFIG_VERSION}|g" \
324 -e "s|@LIVE_TOOLS_VERSION@|${_LIVE_TOOLS_VERSION}|g" \
325 "${_TARGET}/splash.svg.in" > "${_TARGET}/splash.svg"
327 case "${LB_BUILD_WITH_CHROOT}" in
329 cp "${_TARGET}/splash.svg" chroot
330 Chroot chroot "rsvg --format png --height 480 --width 640 splash.svg splash.png"
331 mv chroot/splash.png "${_TARGET}"
332 rm -f chroot/splash.svg
336 rsvg --format png --height 480 --width 640 "${_TARGET}/splash.svg" "${_TARGET}/splash.png"
340 rm -f "${_TARGET}/splash.svg.in" "${_TARGET}/splash.svg"
345 for _FILE in "${_TARGET}/isolinux.bin" "${_TARGET}/isolinux.cfg" "${_TARGET}/syslinux.cfg"
349 mv "${_FILE}" "${_TARGET}/$(echo ${_FILE} | sed -e 's|.*linux|boot|')"
355 case "${LB_BUILD_WITH_CHROOT}" in
358 Save_cache cache/packages.binary
365 # Creating stage file
366 Create_stagefile .build/binary_syslinux