summaryrefslogtreecommitdiff
path: root/setup-bootable.in
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2013-11-07 14:14:03 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2013-11-07 14:14:03 +0100
commite8c99e12ef55bbc4d5a3bbb1d4075fb9d8bb8cae (patch)
tree6dc252fbedfb347673b52237164c892973235807 /setup-bootable.in
parent412d2152d0b608ee4b256bad18daefe0b2217772 (diff)
downloadalpine-conf-e8c99e12ef55bbc4d5a3bbb1d4075fb9d8bb8cae.zip
setup-bootable: move syslinux.cfg to /boot/syslinux/ if needed
Diffstat (limited to 'setup-bootable.in')
-rw-r--r--setup-bootable.in55
1 files changed, 37 insertions, 18 deletions
diff --git a/setup-bootable.in b/setup-bootable.in
index 2df03e6..374a40c 100644
--- a/setup-bootable.in
+++ b/setup-bootable.in
@@ -174,7 +174,7 @@ parent_dev=$(find_disk_dev $dev)
# check if this files exist and not in upgrade mode
if [ -z "$upgrade" ] && [ -z "$force" ]; then
for i in boot apks syslinux.cfg .alpine-release; do
- [ -e "$destdir"/$i ] && die "$destdir/$i already exists. Aborting"
+ [ -e "$destdir"/$i ] && die "$destdir/$i already exists. Use -u to upgrade."
done
fi
@@ -207,15 +207,17 @@ available_space=$(( $free_blocks / $blocks_per_mb ))
vecho "Available space: $available_space MiB"
if [ -n "$srcdir" ]; then
- needed_space=$(cd "$srcdir" && du -m -s -c boot apks syslinux.cfg .alpine-release | awk '$2 == "total" {print $1}')
+ needed_space=$(cd "$srcdir" && du -m -s -c boot apks .alpine-release | awk '$2 == "total" {print $1}')
vecho "Needed space: $needed_space MiB"
[ $available_space -lt $needed_space ] \
&& die "Not enough space on $destdir. Aborting."
# copy the files to .new
for i in boot apks syslinux.cfg .alpine-release; do
- vecho "Copying $srcdir/$i to $destdir/.new/"
- cp -a "$srcdir"/$i "$destdir"/.new/
+ if [ -e "$srcdir"/$i ]; then
+ vecho "Copying $srcdir/$i to $destdir/.new/"
+ cp -a "$srcdir"/$i "$destdir"/.new/
+ fi
done
elif [ -n "$srcurl" ]; then
cd "$destdir"/.new
@@ -224,6 +226,19 @@ elif [ -n "$srcurl" ]; then
echo ""
fi
+# find where new syslinux.cfg is
+for i in boot/syslinux/syslinux.cfg syslinux.cfg; do
+ if [ -e "$destdir"/.new/$i ]; then
+ syslinux_cfg=$i
+ vecho "Found $syslinux_cfg"
+ break
+ fi
+done
+# abort early in case unexpected trouble
+if [ -z "$syslinux_cfg" ]; then
+ die "Could not find any syslinux.cfg on new iso?"
+fi
+
# make sure files are really there before we replace existing
vecho "Flushing cache..."
sync
@@ -231,18 +246,7 @@ sync
vecho "Replacing existing files..."
mkdir -p "$destdir"/.old || die "Failed to create $destdir/.old"
-# do we want keep existing syslinux.cfg?
-tomove="boot apks .alpine-release"
-if [ -n "$force" ] || ! [ -e "$destdir"/syslinux.cfg ]; then
- tomove="$tomove syslinux.cfg"
- # update syslinux.cfg unless device is on usb bus
- # this is so we can boot from CF's and harddisk
- if ! on_usb_bus $parent_dev; then
- vecho "Updating syslinux.cfg to use $dest"
- sed -i -e "s/usbdisk/${dest##*/}/g" \
- "$destdir"/.new/syslinux.cfg
- fi
-fi
+tomove="boot apks syslinux.cfg .alpine-release"
# move current files to .old
for i in $tomove; do
@@ -251,14 +255,29 @@ for i in $tomove; do
fi
done
+# keep any existing syslinux.cfg
+if [ -e "$destdir"/.old/$syslinux_cfg ]; then
+ mv "$destdir"/.old/$syslinux_cfg "$destdir"/.new/$syslinux_cfg
+elif [ -e "$destdir"/.old/syslinux.cfg ] \
+ && [ -e "$destdir"/.new/boot/syslinux/syslinux.cfg ]; then
+ echo "Warning: moving syslinux.cfg to boot/syslinux/syslinux.cfg" >&2
+ mv "$destdir"/.old/syslinux.cfg "$destdir"/.new/boot/syslinux
+ if [ -z "$syslinux" ]; then
+ echo " You might need run: syslinux $dest" >&2
+ fi
+fi
+
# move .new to current
for i in $tomove; do
- mv "$destdir"/.new/$i "$destdir"/ || die "Failed to move $destdir/.new/ to $destdir"
+ if [ -e "$destdir"/.new/$i ]; then
+ mv "$destdir"/.new/$i "$destdir"/ \
+ || die "Failed to move $destdir/.new/ to $destdir"
+ fi
done
if [ -n "$replace_alpine_dev" -o -z "$upgrade" ] && [ -n "$UUID" ]; then
sed -i -e "s/alpine_dev=[^ \t:]\+/alpine_dev=UUID=$UUID/" \
- "$destdir"/syslinux.cfg
+ "$destdir"/$syslinux_cfg
fi
# cleanup