[pve-devel] [RFC proxmox-ve/kernel-meta 00/15] ESP sync improvements
Fabian Grünbichler
f.gruenbichler at proxmox.com
Thu Jul 11 10:30:29 CEST 2019
On Wed, Jul 10, 2019 at 09:04:39PM +0200, Thomas Lamprecht wrote:
> On 7/10/19 6:12 PM, Thomas Lamprecht wrote:
> > On 7/10/19 5:04 PM, Fabian Grünbichler wrote:
> >> - mktemp or something fancier for mountpoint directory creation, instead
> >> of easy-to-guess hardcoded ones
> >
> > We could just use a mount namespace, e.g., with
> > # unshare --mount
> >
> > Then the outside would not see our mounts, at least unpriv. users..
>
> E.g., something like the following:
yes, that looks like it should work and DTRT ;)
I'll send a patch based on it that also integrates it into
zz-pve-efiboot.
>
> ----8<----
> diff --git a/bin/pveesptool b/bin/pveesptool
> index 6bbf679..e4b3928 100755
> --- a/bin/pveesptool
> +++ b/bin/pveesptool
> @@ -92,6 +92,28 @@ format() {
> exit 0
> }
>
> +do_esp_install() {
> + part="$1"
> + UUID="$2"
> +
> + esp_mp="/var/tmp/espmounts/$UUID"
> +
> + mkdir -p "$esp_mp"
> + echo "Mounting '$part' on '$esp_mp'."
> + mount -t vfat "$part" "$esp_mp"
> +
> + echo "Installing systemd-boot.."
> + mkdir -p "$esp_mp/$PMX_ESP_DIR"
> + bootctl --path "$esp_mp" install
> +
> + echo "Configuring systemd-boot.."
> + echo "timeout 3" > "$esp_mp/$PMX_LOADER_CONF.tmp"
> + echo "default proxmox-*" >> "$esp_mp/$PMX_LOADER_CONF.tmp"
> + mv "$esp_mp/$PMX_LOADER_CONF.tmp" "$esp_mp/$PMX_LOADER_CONF"
> + echo "Unmounting '$part'."
> + umount "$part"
> +}
> +
> init() {
> part="$1"
>
> @@ -112,22 +134,8 @@ init() {
> exit 1
> fi
>
> - esp_mp="/var/tmp/espmounts/$UUID"
> -
> - mkdir -p "$esp_mp"
> - echo "Mounting '$part' on '$esp_mp'."
> - mount -t vfat "$part" "$esp_mp"
> -
> - echo "Installing systemd-boot.."
> - mkdir -p "$esp_mp/$PMX_ESP_DIR"
> - bootctl --path "$esp_mp" install
> -
> - echo "Configuring systemd-boot.."
> - echo "timeout 3" > "$esp_mp/$PMX_LOADER_CONF.tmp"
> - echo "default proxmox-*" >> "$esp_mp/$PMX_LOADER_CONF.tmp"
> - mv "$esp_mp/$PMX_LOADER_CONF.tmp" "$esp_mp/$PMX_LOADER_CONF"
> - echo "Unmounting '$part'."
> - umount "$part"
> + echo "Do real ESP initialization in mount namespace.."
> + unshare --mount --propagation private "$0" "do-esp-install" "$part" "$UUID"
>
> echo "Adding '$part' to list of synced ESPs.."
> if [ -e "$ESP_LIST" ]; then
> @@ -199,6 +207,16 @@ case "$1" in
> init "$@"
> exit 0
> ;;
> + 'do-esp-install')
> + shift
> + if [ -z "$1" ] || [ -z "$2" ]; then
> + warn "E: <partition> and <uuid> are mandatory."
> + warn ""
> + exit 1
> + fi
> + do_esp_install "$@"
> + exit 0
> + ;;
> 'refresh')
> shift
> refresh
> --
>
More information about the pve-devel
mailing list