d35d87f252
Currently, when booting loopmounted iso file, it is necessary to specify not only img_dev and img_loop (which should be sufficient), but also archisolabel or archisodevice. With this patch, archisodevice is directly populated with the correct loop device, and it is not necessary to specify the label when booting from loopmounted iso, which makes for leaner and cleaner grub.cfg.
35 lines
991 B
Bash
35 lines
991 B
Bash
# vim: set ft=sh:
|
|
|
|
run_hook () {
|
|
[[ -n "${img_label}" ]] && img_dev="/dev/disk/by-label/${img_label}"
|
|
if [[ -n "${img_dev}" && -n "${img_loop}" ]]; then
|
|
mount_handler="archiso_loop_mount_handler"
|
|
fi
|
|
}
|
|
|
|
archiso_loop_mount_handler () {
|
|
newroot="${1}"
|
|
|
|
local _dev_loop
|
|
|
|
msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}"
|
|
_mnt_dev "${img_dev}" "/run/archiso/img_dev" "-r"
|
|
if [[ "${copytoram}" != "y" ]]; then
|
|
echo $(readlink -f ${img_dev}) >> /run/archiso/used_block_devices
|
|
fi
|
|
|
|
if _dev_loop=$(losetup --find --show --read-only "/run/archiso/img_dev/${img_loop}"); then
|
|
archisodevice="${_dev_loop}"
|
|
else
|
|
echo "ERROR: Setting loopback device for file '/run/archiso/img_dev/${img_loop}'"
|
|
launch_interactive_shell
|
|
fi
|
|
|
|
archiso_mount_handler ${newroot}
|
|
|
|
if [[ "${copytoram}" == "y" ]]; then
|
|
losetup -d ${_dev_loop} 2>/dev/null
|
|
umount /run/archiso/img_dev
|
|
fi
|
|
}
|