forked from mirrored-repos/manjaro-tools
251f56befd
* Correction for a faulty condition The current condition works for checking existence of the .sfs files on the local file system. The proposed condition checks for the existence of the .sfs files on a remote server. * Correction for NFS & NBD & HTTP boot By default, Calamares searches for the .sfs files in the "bootmnt" directory. When "copytoram==y" (relevant for NFS & NBD & HTTP boot), the .sfs files are stored in the "copytoram" directory. The proposed code binds the "copytoram" dir with "bootmnt" so Calamares can "see" the .sfs. files.
59 lines
1.8 KiB
Bash
59 lines
1.8 KiB
Bash
# vim: set ft=sh:
|
|
|
|
run_hook() {
|
|
if [[ -n "${ip}" && -n "${miso_http_srv}" ]]; then
|
|
|
|
# booting with http is always copy-to-ram, so set here to make sure
|
|
# addresses are flushed and interface is set down
|
|
copytoram="y"
|
|
|
|
miso_http_srv=$(eval echo ${miso_http_srv})
|
|
[[ -z "${miso_http_spc}" ]] && miso_http_spc="75%"
|
|
|
|
mount_handler="miso_pxe_http_mount_handler"
|
|
fi
|
|
}
|
|
|
|
# Fetch a file with CURL
|
|
#
|
|
# $1 URL
|
|
# $2 Destination directory inside httpspace/${misobasedir}
|
|
_curl_get() {
|
|
local _url="${1}"
|
|
local _dst="${2}"
|
|
|
|
msg ":: Downloading '${_url}'"
|
|
if ! curl -L -f -o "/run/miso/httpspace/${misobasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then
|
|
echo "ERROR: Downloading '${_url}'"
|
|
echo " Falling back to interactive prompt"
|
|
echo " You can try to fix the problem manually, log out when you are finished"
|
|
launch_interactive_shell
|
|
fi
|
|
}
|
|
|
|
miso_pxe_http_mount_handler () {
|
|
newroot="${1}"
|
|
|
|
msg ":: Mounting /run/miso/httpspace (tmpfs) filesystem, size='${miso_http_spc}'"
|
|
mkdir -p "/run/miso/httpspace"
|
|
mount -t tmpfs -o size="${miso_http_spc}",mode=0755 httpspace "/run/miso/httpspace"
|
|
|
|
local _src=${miso_http_srv}${misobasedir}/${arch}
|
|
|
|
for sfs in livefs mhwdfs desktopfs rootfs;do
|
|
if [[ ! -z "$( curl -s --head "${_src}/${sfs}.sfs" | grep "OK" )" ]]; then
|
|
_curl_get "${_src}/${sfs}.sfs" "/${arch}"
|
|
|
|
if [[ "${checksum}" == "y" ]]; then
|
|
_curl_get "${_src}/${sfs}.md5" "/${arch}"
|
|
fi
|
|
if [[ "${verify}" == "y" ]]; then
|
|
_curl_get "${_src}/${sfs}.sfs.sig" "/${arch}"
|
|
fi
|
|
fi
|
|
done
|
|
mkdir -p "/run/miso/bootmnt"
|
|
mount -o bind /run/miso/httpspace /run/miso/bootmnt
|
|
|
|
miso_mount_handler ${newroot}
|
|
}
|