2007-09-23 08:04:46 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
2010-09-02 11:12:37 +00:00
|
|
|
## live-build(7) - System Build Scripts
|
2020-03-11 09:07:21 -01:00
|
|
|
## Copyright (C) 2016-2020 The Debian Live team
|
2015-01-04 18:05:39 -01:00
|
|
|
## Copyright (C) 2006-2015 Daniel Baumann <mail@daniel-baumann.ch>
|
2010-09-02 11:12:37 +00:00
|
|
|
##
|
2012-07-29 23:59:00 +00:00
|
|
|
## This program comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
|
2010-09-02 11:12:37 +00:00
|
|
|
## This is free software, and you are welcome to redistribute it
|
|
|
|
## under certain conditions; see COPYING for details.
|
|
|
|
|
2007-09-23 08:04:46 +00:00
|
|
|
|
|
|
|
set -e
|
|
|
|
|
2007-09-23 08:05:11 +00:00
|
|
|
# Including common functions
|
2012-08-27 13:52:29 +00:00
|
|
|
[ -e "${LIVE_BUILD}/scripts/build.sh" ] && . "${LIVE_BUILD}/scripts/build.sh" || . /usr/lib/live/build.sh
|
2007-09-23 08:04:46 +00:00
|
|
|
|
2007-09-23 08:05:11 +00:00
|
|
|
# Setting static variables
|
2015-02-05 02:30:47 -01:00
|
|
|
DESCRIPTION="Build binary image"
|
2007-09-23 08:04:48 +00:00
|
|
|
USAGE="${PROGRAM} [--force]"
|
|
|
|
|
2015-02-05 02:30:47 -01:00
|
|
|
# Processing arguments and configuration files
|
|
|
|
Init_config_data "${@}"
|
2007-09-23 08:04:46 +00:00
|
|
|
|
2020-04-06 17:46:47 +00:00
|
|
|
if [ "${LB_IMAGE_TYPE}" != "hdd" ]; then
|
2007-09-23 08:05:11 +00:00
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
2011-09-13 07:10:28 +00:00
|
|
|
Echo_message "Begin building binary hdd image..."
|
2007-09-23 08:05:11 +00:00
|
|
|
|
|
|
|
# Requiring stage file
|
2020-03-15 12:05:44 -01:00
|
|
|
Require_stagefiles config bootstrap chroot_proc
|
2007-09-23 08:05:11 +00:00
|
|
|
|
|
|
|
# Checking stage file
|
2020-03-13 16:11:53 -01:00
|
|
|
Check_stagefile
|
2007-09-23 08:05:11 +00:00
|
|
|
|
2020-03-13 15:19:59 -01:00
|
|
|
# Acquire lock file
|
2015-02-05 02:30:47 -01:00
|
|
|
Acquire_lockfile
|
2007-09-23 08:05:11 +00:00
|
|
|
|
|
|
|
# Checking depends
|
2012-07-18 20:27:30 +00:00
|
|
|
case "${LB_BINARY_FILESYSTEM}" in
|
|
|
|
fat*)
|
2015-01-04 16:08:09 -01:00
|
|
|
Check_package chroot /sbin/mkdosfs dosfstools
|
2012-07-18 20:27:30 +00:00
|
|
|
;;
|
|
|
|
|
|
|
|
ntfs)
|
2018-02-14 16:49:36 -01:00
|
|
|
Check_package chroot /sbin/mkfs.ntfs ntfs-3g
|
2012-07-18 20:27:30 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2015-01-04 16:08:09 -01:00
|
|
|
Check_package chroot /usr/share/doc/mtools mtools
|
|
|
|
Check_package chroot /sbin/parted parted
|
2020-03-11 16:56:03 -01:00
|
|
|
Check_package host /sbin/fdisk fdisk
|
remove obsolete loop-aes-utils related losetup hack
677415f6d7efc1e5b888570d70af311d2900c69c (2007) in v1.0~a2-1 added a hack
relating to the loop-aes-utils package and losetup. this commit bundled
a bunch of changes, it was not specific to the hack, and so info about the
hack is limited to a brief comment included within the related change in
defaults:
```
# Workaround for loop-aes-utils divertion
# (loop-aes-utils' losetup lacks features).
```
though it is very similar to the removed fdisk hack in that it seems that
one package may replace a binary from another, moving the original to a
new location, and this hack gives the user the opportunity to select the
original instead of the one put in its place, for use in LB.
the comment mentions a package called loop-aes-utils as being the package
that performs such a diversion, and that the need for the hack was that
losetup itself lacked features, presumably encryption support, and it is
clear that it is the losetup binary that is the focus of the diversion.
looking into the history of loop-aes-utils a little, this package was
dropped from debian back in 2012 (#680748), favouring encrytion support of
dm-crypt/cryptsetup.
double checking file contents of packages, only the mount package carries
an /sbin/losetup file, so presumably this means that dm-setup/cryptsetup
do not perform such a diversion of losetup (i.e. their use is exclusively
done directly).
since the possible diversion is simply gone, that completely removes any
point in having the hack of giving users choice between losetup and the
diverted one. so let's remove this obsolete hack...
2020-03-11 17:43:12 -01:00
|
|
|
Check_package host /sbin/losetup mount
|
2007-09-23 08:05:11 +00:00
|
|
|
|
2020-05-04 15:12:45 +00:00
|
|
|
case "${LB_BOOTLOADER_BIOS}" in
|
|
|
|
grub-legacy)
|
|
|
|
Check_package chroot /usr/sbin/grub grub
|
|
|
|
;;
|
|
|
|
|
2020-05-04 16:40:23 +00:00
|
|
|
syslinux)
|
|
|
|
case ${LB_BINARY_FILESYSTEM} in
|
|
|
|
fat*|ntfs)
|
|
|
|
_BOOTLOADER=syslinux
|
|
|
|
;;
|
|
|
|
ext[234]|btrfs)
|
|
|
|
_BOOTLOADER=extlinux
|
2022-01-18 14:19:43 -01:00
|
|
|
Check_package host /usr/bin/lsattr e2fsprogs
|
2020-05-04 16:40:23 +00:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
Echo_error "syslinux/extlinux doesn't support ${LB_BINARY_FILESYSTEM}"
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
Check_package chroot /usr/bin/${_BOOTLOADER} ${_BOOTLOADER}
|
|
|
|
;;
|
2007-09-23 08:05:11 +00:00
|
|
|
esac
|
|
|
|
|
2007-09-23 08:05:15 +00:00
|
|
|
# Restoring cache
|
2015-01-06 02:46:37 -01:00
|
|
|
Restore_package_cache binary
|
2007-09-23 08:05:15 +00:00
|
|
|
|
2007-09-23 08:05:11 +00:00
|
|
|
# Installing depends
|
2020-05-05 15:42:44 +00:00
|
|
|
Install_packages
|
2007-09-23 08:05:11 +00:00
|
|
|
|
|
|
|
# Remove old binary
|
2020-04-06 17:43:41 +00:00
|
|
|
if [ -f ${LB_IMAGE_NAME}.img ]
|
2007-09-23 08:05:11 +00:00
|
|
|
then
|
2020-04-06 17:43:41 +00:00
|
|
|
rm -f ${LB_IMAGE_NAME}.img
|
2007-09-23 08:05:11 +00:00
|
|
|
fi
|
|
|
|
|
Handle hardlinks in binary_hdd
To generate an hdd image, binary_hdd first estimates the needed size of
the image using du. By default, when du finds multiple hardlinked copies
of a file, it counts them only once. However, when the target filesystem
is FAT, which does not support hardlinks, these files will take up more
space when finally copying the contents, breaking the build:
P: Copying binary contents into image...
cp: error writing 'chroot/binary.tmp/live/initrd.img-4.9.0-3-amd64': No space left on device
cp: error writing 'chroot/binary.tmp/efi/boot/bootx64.efi': No space left on device
cp: error writing 'chroot/binary.tmp/efi/boot/bootia32.efi': No space left on device
cp: cannot create directory 'chroot/binary.tmp/boot/grub': No space left on device
cp: cannot create directory 'chroot/binary.tmp/isolinux': No space left on device
To fix this, pass --count-links to du when the target is FAT, to make
the space estimation correct.
This problem is exposed by commit 9c974b26b (Instead of renaming kernel
for syslinux, create hardlinks), which might need to be separately fixed
(to not waste space on FAT targets), but binary_hdd should at least
handle hardlinks more gracefully.
2017-08-29 12:50:46 +00:00
|
|
|
case "${LB_BINARY_FILESYSTEM}" in
|
|
|
|
fat*)
|
|
|
|
# If the target does not support hardlinks, tell du to
|
|
|
|
# count them double
|
|
|
|
DU_OPTIONS="--count-links"
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
DU_OPTIONS=""
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
2008-09-11 07:16:58 +00:00
|
|
|
# Enforce fat32 if we find individual files bigger than 2GB
|
2010-09-07 13:11:20 +00:00
|
|
|
if [ "${LB_BINARY_FILESYSTEM}" = "fat16" ] && [ -n "$(find binary -size +1999M)" ]
|
2008-09-11 07:16:58 +00:00
|
|
|
then
|
|
|
|
Echo_warning "FAT16 doesn't support files larger than 2GB, automatically enforcing FAT32."
|
|
|
|
|
2010-09-07 13:11:20 +00:00
|
|
|
LB_BINARY_FILESYSTEM="fat32"
|
|
|
|
export LB_BINARY_FILESYSTEM
|
2008-09-11 07:16:58 +00:00
|
|
|
fi
|
|
|
|
|
2008-09-11 07:22:45 +00:00
|
|
|
# Enforce fat32 if we have images in total bigger than 2GB
|
Handle hardlinks in binary_hdd
To generate an hdd image, binary_hdd first estimates the needed size of
the image using du. By default, when du finds multiple hardlinked copies
of a file, it counts them only once. However, when the target filesystem
is FAT, which does not support hardlinks, these files will take up more
space when finally copying the contents, breaking the build:
P: Copying binary contents into image...
cp: error writing 'chroot/binary.tmp/live/initrd.img-4.9.0-3-amd64': No space left on device
cp: error writing 'chroot/binary.tmp/efi/boot/bootx64.efi': No space left on device
cp: error writing 'chroot/binary.tmp/efi/boot/bootia32.efi': No space left on device
cp: cannot create directory 'chroot/binary.tmp/boot/grub': No space left on device
cp: cannot create directory 'chroot/binary.tmp/isolinux': No space left on device
To fix this, pass --count-links to du when the target is FAT, to make
the space estimation correct.
This problem is exposed by commit 9c974b26b (Instead of renaming kernel
for syslinux, create hardlinks), which might need to be separately fixed
(to not waste space on FAT targets), but binary_hdd should at least
handle hardlinks more gracefully.
2017-08-29 12:50:46 +00:00
|
|
|
if [ "${LB_BINARY_FILESYSTEM}" = "fat16" ] && [ "$(du ${DU_OPTIONS} -s binary | awk '{ print $1 }')" -gt "1900000" ]
|
2008-09-11 07:22:45 +00:00
|
|
|
then
|
|
|
|
Echo_warning "FAT16 doesn't support partitions larger than 2GB, automatically enforcing FAT32"
|
|
|
|
|
2010-09-07 13:11:20 +00:00
|
|
|
LB_BINARY_FILESYSTEM="fat32"
|
|
|
|
export LB_BINARY_FILESYSTEM
|
2008-09-11 07:22:45 +00:00
|
|
|
fi
|
|
|
|
|
2012-07-18 20:27:30 +00:00
|
|
|
# Enforce ntfs if we find individual files bigger than 4GB
|
|
|
|
if [ "${LB_BINARY_FILESYSTEM}" = "fat32" ] && [ -n "$(find binary -size +3999M)" ]
|
|
|
|
then
|
|
|
|
Echo_warning "FAT32 doesn't support files larger than 4GB, automatically enforcing NTFS."
|
|
|
|
|
|
|
|
LB_BINARY_FILESYSTEM="ntfs"
|
|
|
|
export LB_BINARY_FILESYSTEM
|
|
|
|
fi
|
|
|
|
|
2007-09-23 08:05:11 +00:00
|
|
|
# Everything which comes here needs to be cleaned up,
|
2013-04-02 11:59:38 +00:00
|
|
|
if [ "$LB_HDD_SIZE" = "auto" ];
|
|
|
|
then
|
Handle hardlinks in binary_hdd
To generate an hdd image, binary_hdd first estimates the needed size of
the image using du. By default, when du finds multiple hardlinked copies
of a file, it counts them only once. However, when the target filesystem
is FAT, which does not support hardlinks, these files will take up more
space when finally copying the contents, breaking the build:
P: Copying binary contents into image...
cp: error writing 'chroot/binary.tmp/live/initrd.img-4.9.0-3-amd64': No space left on device
cp: error writing 'chroot/binary.tmp/efi/boot/bootx64.efi': No space left on device
cp: error writing 'chroot/binary.tmp/efi/boot/bootia32.efi': No space left on device
cp: cannot create directory 'chroot/binary.tmp/boot/grub': No space left on device
cp: cannot create directory 'chroot/binary.tmp/isolinux': No space left on device
To fix this, pass --count-links to du when the target is FAT, to make
the space estimation correct.
This problem is exposed by commit 9c974b26b (Instead of renaming kernel
for syslinux, create hardlinks), which might need to be separately fixed
(to not waste space on FAT targets), but binary_hdd should at least
handle hardlinks more gracefully.
2017-08-29 12:50:46 +00:00
|
|
|
DU_DIM="$(du ${DU_OPTIONS} -ms binary | cut -f1)"
|
2013-04-02 11:59:38 +00:00
|
|
|
REAL_DIM="$(Calculate_partition_size ${DU_DIM} ${LB_BINARY_FILESYSTEM})"
|
|
|
|
else
|
|
|
|
REAL_DIM=$LB_HDD_SIZE
|
|
|
|
fi
|
|
|
|
|
2007-11-15 08:11:56 -01:00
|
|
|
dd if=/dev/zero of=chroot/binary.img bs=1024k count=0 seek=${REAL_DIM}
|
remove obsolete loop-aes-utils related losetup hack
677415f6d7efc1e5b888570d70af311d2900c69c (2007) in v1.0~a2-1 added a hack
relating to the loop-aes-utils package and losetup. this commit bundled
a bunch of changes, it was not specific to the hack, and so info about the
hack is limited to a brief comment included within the related change in
defaults:
```
# Workaround for loop-aes-utils divertion
# (loop-aes-utils' losetup lacks features).
```
though it is very similar to the removed fdisk hack in that it seems that
one package may replace a binary from another, moving the original to a
new location, and this hack gives the user the opportunity to select the
original instead of the one put in its place, for use in LB.
the comment mentions a package called loop-aes-utils as being the package
that performs such a diversion, and that the need for the hack was that
losetup itself lacked features, presumably encryption support, and it is
clear that it is the losetup binary that is the focus of the diversion.
looking into the history of loop-aes-utils a little, this package was
dropped from debian back in 2012 (#680748), favouring encrytion support of
dm-crypt/cryptsetup.
double checking file contents of packages, only the mount package carries
an /sbin/losetup file, so presumably this means that dm-setup/cryptsetup
do not perform such a diversion of losetup (i.e. their use is exclusively
done directly).
since the possible diversion is simply gone, that completely removes any
point in having the hack of giving users choice between losetup and the
diverted one. so let's remove this obsolete hack...
2020-03-11 17:43:12 -01:00
|
|
|
FREELO="$(losetup -f)"
|
2020-02-20 07:12:54 -01:00
|
|
|
MAKEDEV=false
|
2007-09-23 08:05:11 +00:00
|
|
|
if [ ! -b chroot/${FREELO} ]
|
|
|
|
then
|
2020-02-20 07:12:54 -01:00
|
|
|
MAKEDEV=true
|
2007-09-23 08:05:11 +00:00
|
|
|
|
|
|
|
mv chroot/dev chroot/dev.tmp
|
2022-01-08 08:26:48 -01:00
|
|
|
# Don't copy mount points (e.g. /dev/shm)
|
|
|
|
find /dev -xdev | cpio -dmpu chroot
|
2007-09-23 08:05:11 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
echo "!!! The following error/warning messages can be ignored !!!"
|
2007-11-14 07:55:50 -01:00
|
|
|
Losetup $FREELO chroot/binary.img 0
|
2007-09-23 08:05:11 +00:00
|
|
|
|
2015-01-04 16:58:35 -01:00
|
|
|
PARTITION_TABLE_TYPE="msdos"
|
2008-06-15 15:20:55 +00:00
|
|
|
|
2010-09-07 13:11:20 +00:00
|
|
|
case "${LB_BINARY_FILESYSTEM}" in
|
2011-08-25 21:47:30 +00:00
|
|
|
ext2|ext3|ext4)
|
2008-06-15 15:27:35 +00:00
|
|
|
PARTITION_TYPE="ext2"
|
2008-06-17 05:08:24 +00:00
|
|
|
;;
|
2008-06-15 15:27:35 +00:00
|
|
|
|
2008-06-15 15:17:42 +00:00
|
|
|
fat16|fat32)
|
2010-09-07 13:11:20 +00:00
|
|
|
PARTITION_TYPE="${LB_BINARY_FILESYSTEM}"
|
2008-06-15 15:17:42 +00:00
|
|
|
;;
|
|
|
|
|
2012-07-18 20:27:30 +00:00
|
|
|
ntfs)
|
|
|
|
PARTITION_TYPE="NTFS"
|
|
|
|
;;
|
|
|
|
|
2008-06-15 15:17:42 +00:00
|
|
|
*)
|
2010-09-07 13:11:20 +00:00
|
|
|
Echo_error "Unsupported binary filesystem %s" "${LB_BINARY_FILESYSTEM}"
|
2008-06-15 15:17:42 +00:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2010-09-07 13:11:20 +00:00
|
|
|
case "${LB_BUILD_WITH_CHROOT}" in
|
2009-12-13 19:17:45 -01:00
|
|
|
true)
|
2008-10-28 14:44:06 -01:00
|
|
|
Chroot chroot "parted -s ${FREELO} mklabel ${PARTITION_TABLE_TYPE}" || true
|
2015-09-23 08:59:28 +00:00
|
|
|
if [ "x${LB_HDD_PARTITION_START}" = "x" ];
|
|
|
|
then
|
|
|
|
Chroot chroot "parted -a optimal -s ${FREELO} mkpart primary\
|
|
|
|
${PARTITION_TYPE} 0% 100%" || true
|
2015-07-16 07:58:46 +00:00
|
|
|
else
|
2015-09-23 08:59:28 +00:00
|
|
|
Echo_message "using partition start at ${LB_HDD_PARTITION_START}"
|
|
|
|
Chroot chroot "parted -s ${FREELO} mkpart primary ${PARTITION_TYPE}\
|
|
|
|
${LB_HDD_PARTITION_START} 100%" || true
|
2015-07-16 07:58:46 +00:00
|
|
|
fi
|
2012-07-31 17:30:59 +00:00
|
|
|
Chroot chroot "parted -s ${FREELO} set 1 boot on" || true
|
|
|
|
Chroot chroot "parted -s ${FREELO} set 1 lba off" || true
|
2007-09-23 08:05:16 +00:00
|
|
|
|
2020-05-04 15:12:45 +00:00
|
|
|
if [ "${LB_BOOTLOADER_BIOS}" = "syslinux" ]; then
|
2022-01-08 11:30:45 -01:00
|
|
|
dd if=chroot/usr/lib/$(echo ${_BOOTLOADER} | tr '[a-z]' '[A-Z]')/mbr.bin of=${FREELO} bs=440 count=1
|
2007-09-23 08:05:16 +00:00
|
|
|
fi
|
|
|
|
;;
|
|
|
|
|
2009-12-13 19:17:45 -01:00
|
|
|
false)
|
2008-06-15 15:20:55 +00:00
|
|
|
parted -s ${FREELO} mklabel ${PARTITION_TABLE_TYPE} || true
|
2015-09-23 08:59:28 +00:00
|
|
|
if [ "x${LB_HDD_PARTITION_START}" = "x" ];
|
|
|
|
then
|
|
|
|
parted -a optimal -s ${FREELO} mkpart primary ${PARTITION_TYPE}\
|
|
|
|
0% 100% || true
|
2015-07-16 07:58:46 +00:00
|
|
|
else
|
2015-09-23 08:59:28 +00:00
|
|
|
Echo_message "using partition start at ${LB_HDD_PARTITION_START}"
|
|
|
|
parted -s ${FREELO} mkpart primary ${PARTITION_TYPE}\
|
|
|
|
${LB_HDD_PARTITION_START} 100% || true
|
2015-07-16 07:58:46 +00:00
|
|
|
fi
|
2012-07-31 17:30:59 +00:00
|
|
|
parted -s "${FREELO}" set 1 boot on || true
|
|
|
|
parted -s "${FREELO}" set 1 lba off || true
|
2007-09-23 08:05:16 +00:00
|
|
|
|
2020-05-04 15:12:45 +00:00
|
|
|
if [ "${LB_BOOTLOADER_BIOS}" = "syslinux" ]; then
|
2022-01-08 11:30:45 -01:00
|
|
|
dd if=/usr/lib/$(echo ${_BOOTLOADER} | tr '[a-z]' '[A-Z]')/mbr.bin of=${FREELO} bs=440 count=1
|
2007-09-23 08:05:16 +00:00
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
2007-09-23 08:05:11 +00:00
|
|
|
|
2011-07-21 15:00:54 +00:00
|
|
|
Lodetach ${FREELO}
|
2007-09-23 08:05:11 +00:00
|
|
|
|
remove obsolete loop-aes-utils related losetup hack
677415f6d7efc1e5b888570d70af311d2900c69c (2007) in v1.0~a2-1 added a hack
relating to the loop-aes-utils package and losetup. this commit bundled
a bunch of changes, it was not specific to the hack, and so info about the
hack is limited to a brief comment included within the related change in
defaults:
```
# Workaround for loop-aes-utils divertion
# (loop-aes-utils' losetup lacks features).
```
though it is very similar to the removed fdisk hack in that it seems that
one package may replace a binary from another, moving the original to a
new location, and this hack gives the user the opportunity to select the
original instead of the one put in its place, for use in LB.
the comment mentions a package called loop-aes-utils as being the package
that performs such a diversion, and that the need for the hack was that
losetup itself lacked features, presumably encryption support, and it is
clear that it is the losetup binary that is the focus of the diversion.
looking into the history of loop-aes-utils a little, this package was
dropped from debian back in 2012 (#680748), favouring encrytion support of
dm-crypt/cryptsetup.
double checking file contents of packages, only the mount package carries
an /sbin/losetup file, so presumably this means that dm-setup/cryptsetup
do not perform such a diversion of losetup (i.e. their use is exclusively
done directly).
since the possible diversion is simply gone, that completely removes any
point in having the hack of giving users choice between losetup and the
diverted one. so let's remove this obsolete hack...
2020-03-11 17:43:12 -01:00
|
|
|
FREELO="$(losetup -f)"
|
2007-11-14 07:55:50 -01:00
|
|
|
Losetup $FREELO chroot/binary.img 1
|
2007-09-23 08:05:16 +00:00
|
|
|
|
2010-09-07 13:11:20 +00:00
|
|
|
case "${LB_BINARY_FILESYSTEM}" in
|
2011-08-25 21:47:30 +00:00
|
|
|
ext2|ext3|ext4)
|
2010-09-07 13:11:20 +00:00
|
|
|
MKFS="${LB_BINARY_FILESYSTEM}"
|
2016-06-17 21:14:41 +00:00
|
|
|
MKFS_OPTIONS="-L ${LB_HDD_LABEL} -m 0 -O ^64bit"
|
2013-03-13 20:07:05 -01:00
|
|
|
MOUNT_OPTIONS=""
|
2008-06-15 15:27:35 +00:00
|
|
|
;;
|
|
|
|
|
2007-11-16 21:01:03 -01:00
|
|
|
fat16)
|
2008-06-17 05:08:24 +00:00
|
|
|
MKFS="vfat"
|
2011-09-12 07:19:30 +00:00
|
|
|
MKFS_OPTIONS="-F 16 -n ${LB_HDD_LABEL}"
|
2013-03-13 20:07:05 -01:00
|
|
|
MOUNT_OPTIONS=""
|
2007-11-16 21:01:03 -01:00
|
|
|
;;
|
|
|
|
|
|
|
|
fat32)
|
2008-06-17 05:08:24 +00:00
|
|
|
MKFS="vfat"
|
2011-09-12 07:19:30 +00:00
|
|
|
MKFS_OPTIONS="-F 32 -n ${LB_HDD_LABEL}"
|
2013-03-13 20:07:05 -01:00
|
|
|
MOUNT_OPTIONS=""
|
2007-11-16 21:01:03 -01:00
|
|
|
;;
|
2012-07-18 20:27:30 +00:00
|
|
|
|
|
|
|
ntfs)
|
|
|
|
MKFS="ntfs"
|
|
|
|
MKFS_OPTIONS="-L ${LB_HDD_LABEL}"
|
2013-03-13 20:07:05 -01:00
|
|
|
MOUNT_OPTIONS="-t ntfs-3g"
|
2012-07-18 20:27:30 +00:00
|
|
|
;;
|
2007-11-16 21:01:03 -01:00
|
|
|
esac
|
|
|
|
|
2010-09-07 13:11:20 +00:00
|
|
|
case "${LB_BUILD_WITH_CHROOT}" in
|
2009-12-13 19:17:45 -01:00
|
|
|
true)
|
2008-10-28 14:44:06 -01:00
|
|
|
Chroot chroot "mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}"
|
2007-09-23 08:05:16 +00:00
|
|
|
;;
|
|
|
|
|
2009-12-13 19:17:45 -01:00
|
|
|
false)
|
2008-06-15 15:25:34 +00:00
|
|
|
mkfs.${MKFS} ${MKFS_OPTIONS} ${FREELO}
|
2007-09-23 08:05:16 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2010-09-07 13:11:20 +00:00
|
|
|
case "${LB_BINARY_FILESYSTEM}" in
|
2008-06-15 15:51:49 +00:00
|
|
|
fat*)
|
2014-04-25 19:12:53 +00:00
|
|
|
CP_OPTIONS="-r -L"
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
|
|
|
CP_OPTIONS="-a"
|
2008-06-15 15:51:49 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2014-04-27 10:35:58 +00:00
|
|
|
Echo_message "Copying binary contents into image..."
|
|
|
|
|
2007-09-23 08:05:12 +00:00
|
|
|
mkdir -p chroot/binary.tmp
|
2013-03-13 20:07:05 -01:00
|
|
|
mount ${MOUNT_OPTIONS} ${FREELO} chroot/binary.tmp
|
2014-04-25 19:12:53 +00:00
|
|
|
cp -T ${CP_OPTIONS} binary/ chroot/binary.tmp
|
2007-09-23 08:05:12 +00:00
|
|
|
|
|
|
|
FIXME()
|
|
|
|
{
|
2020-05-04 15:12:45 +00:00
|
|
|
if [ "${LB_BOOTLOADER_BIOS}" = "grub-legacy" ]; then
|
2007-09-23 08:05:12 +00:00
|
|
|
|
|
|
|
cat > chroot/grub.sh << EOF
|
2020-02-22 13:36:58 -01:00
|
|
|
#!/bin/sh
|
2007-09-23 08:05:12 +00:00
|
|
|
cd binary.tmp
|
|
|
|
grub --batch << EOM
|
|
|
|
find /live/vmlinuz
|
|
|
|
EOM
|
|
|
|
EOF
|
|
|
|
|
2008-10-28 14:44:06 -01:00
|
|
|
rootpartition="$(Chroot chroot 'sh grub.sh' 2>/dev/null | grep -A 1 'find /live/vmlinuz' | grep -v 'find /live/vmlinuz')"
|
2011-09-13 07:10:28 +00:00
|
|
|
hdddev="$(echo $rootpartition | sed -e 's|,[[:digit:]]||')"
|
|
|
|
echo "Root partition is $rootpartition, device is: $hdddev"
|
2007-09-23 08:05:12 +00:00
|
|
|
|
2007-11-13 07:00:16 -01:00
|
|
|
echo "WAITING..." && read WAIT
|
2007-09-23 08:05:12 +00:00
|
|
|
|
|
|
|
#cat > chroot/grub.sh << EOF
|
2020-02-22 13:36:58 -01:00
|
|
|
#!/bin/sh
|
2007-09-23 08:05:12 +00:00
|
|
|
#grub --batch << EOM
|
|
|
|
#root $rootpartition
|
2011-09-13 07:10:28 +00:00
|
|
|
#setup $hdddev
|
2007-09-23 08:05:12 +00:00
|
|
|
#EOM
|
|
|
|
#EOF
|
|
|
|
|
2008-10-28 14:44:06 -01:00
|
|
|
#Chroot chroot "sh grub.sh"
|
2007-09-23 08:05:12 +00:00
|
|
|
|
|
|
|
rm -f chroot/grub.sh
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2014-04-27 10:35:58 +00:00
|
|
|
case "${_BOOTLOADER}" in
|
|
|
|
syslinux)
|
|
|
|
_SYSLINUX_INSTALLER="syslinux ${FREELO}"
|
|
|
|
;;
|
|
|
|
extlinux)
|
|
|
|
_SYSLINUX_INSTALLER="extlinux --install /binary.tmp/boot/extlinux"
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
_SYSLINUX_INSTALLER=""
|
|
|
|
;;
|
|
|
|
esac
|
2007-09-23 08:05:11 +00:00
|
|
|
|
2014-04-27 10:35:58 +00:00
|
|
|
if [ -n "${_SYSLINUX_INSTALLER}" ]
|
2007-09-23 08:05:11 +00:00
|
|
|
then
|
2010-09-07 13:11:20 +00:00
|
|
|
case "${LB_BUILD_WITH_CHROOT}" in
|
2009-12-13 19:17:45 -01:00
|
|
|
true)
|
2014-04-27 10:35:58 +00:00
|
|
|
Chroot chroot "${_SYSLINUX_INSTALLER}"
|
2007-09-23 08:05:16 +00:00
|
|
|
;;
|
2009-12-13 19:17:45 -01:00
|
|
|
false)
|
2014-04-27 10:35:58 +00:00
|
|
|
${_SYSLINUX_INSTALLER}
|
2007-09-23 08:05:16 +00:00
|
|
|
;;
|
|
|
|
esac
|
2007-09-23 08:05:11 +00:00
|
|
|
fi
|
|
|
|
|
2022-01-18 14:19:43 -01:00
|
|
|
case "${_BOOTLOADER}" in
|
|
|
|
extlinux)
|
|
|
|
if lsattr chroot/binary.tmp/boot/extlinux/ldlinux.sys | cut -f 1 -d " " | grep -q "i"; then
|
|
|
|
# The file ldlinux.sys is marked immutable by extlinux
|
|
|
|
# Set the timestamp
|
|
|
|
chattr -i chroot/binary.tmp/boot/extlinux/ldlinux.sys
|
|
|
|
touch -d@${SOURCE_DATE_EPOCH} chroot/binary.tmp/boot/extlinux/ldlinux.sys
|
|
|
|
chattr +i chroot/binary.tmp/boot/extlinux/ldlinux.sys
|
|
|
|
echo "f chroot/binary.tmp/boot/extlinux/ldlinux.sys" >> binary.modified_timestamps
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# Set the timestamp inside the image
|
|
|
|
find chroot/binary.tmp -newermt "$(date -d@${SOURCE_DATE_EPOCH} '+%Y-%m-%d %H:%M:%S')" -printf "%y %p\n" -exec touch '{}' -d@${SOURCE_DATE_EPOCH} ';' >> binary.modified_timestamps
|
2014-04-27 10:35:58 +00:00
|
|
|
umount chroot/binary.tmp
|
|
|
|
rmdir chroot/binary.tmp
|
|
|
|
|
2011-07-21 15:00:54 +00:00
|
|
|
Lodetach ${FREELO}
|
2007-09-23 08:05:11 +00:00
|
|
|
|
|
|
|
echo "!!! The above error/warning messages can be ignored !!!"
|
|
|
|
|
2020-02-20 07:12:54 -01:00
|
|
|
if $MAKEDEV; then
|
2007-09-23 08:05:13 +00:00
|
|
|
rm -rf chroot/dev
|
2007-09-23 08:05:11 +00:00
|
|
|
mv chroot/dev.tmp chroot/dev
|
|
|
|
fi
|
|
|
|
|
2022-01-18 14:19:43 -01:00
|
|
|
# Set the timestamp of the image
|
|
|
|
touch -d@${SOURCE_DATE_EPOCH} chroot/binary.img
|
|
|
|
echo "f ${LB_IMAGE_NAME}-${LB_ARCHITECTURE}.img" >> binary.modified_timestamps
|
2020-04-06 17:43:41 +00:00
|
|
|
mv chroot/binary.img ${LB_IMAGE_NAME}-${LB_ARCHITECTURE}.img
|
2007-09-23 08:05:12 +00:00
|
|
|
|
2007-09-23 08:05:15 +00:00
|
|
|
# Saving cache
|
2015-01-06 02:46:37 -01:00
|
|
|
Save_package_cache binary
|
2007-09-23 08:05:15 +00:00
|
|
|
|
2007-09-23 08:05:11 +00:00
|
|
|
# Removing depends
|
2020-05-05 15:45:57 +00:00
|
|
|
Remove_packages
|
2007-09-23 08:05:11 +00:00
|
|
|
|
|
|
|
# Creating stage file
|
2020-03-13 16:11:53 -01:00
|
|
|
Create_stagefile
|