Skip to content

Commit

Permalink
Fix grml2ram when booted via loopback.cfg
Browse files Browse the repository at this point in the history
When booted from a multiboot USB stick via loopback.cfg (or when using
`findiso=` kernel option manually), `/dev/loop0` is used for the ISO file and
`/dev/loop1` for the squashfs image.

Therefore, changing backing file descriptor of `/dev/loop0` will fail. Call `losetup` to find the name of
the loop device associaed to the squashfs image instead.
  • Loading branch information
schierlm committed Jan 14, 2023
1 parent 0ac4551 commit 099f921
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion usr_sbin/grml2ram
Expand Up @@ -65,6 +65,7 @@ fi

GRMLSIZE="$(du $IMAGE | awk '{print $1}')"
RAM=$(/usr/bin/gawk '/MemFree/{print $2}' /proc/meminfo)
LOOPDEV=$(/sbin/losetup -j "${IMAGE}" -n -O NAME)

case "$*" in -f|--force)
ewarn "Forcing copy process for grml-image (${GRMLSIZE}kB) as requested via force option." ; eend 0
Expand All @@ -80,7 +81,7 @@ esac
einfo "Copying $IMAGE to RAM, this might take a while."
rsync -a --progress $IMAGE /tmp/GRML
LANGUAGE=C LANG=C LC_ALL=C perl << EOF
open LOOP, '</dev/loop0' or die $!;
open LOOP, '<${LOOPDEV}' or die $!;
open DEST, '</tmp/GRML' or die $!;
ioctl(LOOP, 0x4C06, fileno(DEST)) or die $!;
close LOOP;
Expand Down

0 comments on commit 099f921

Please sign in to comment.