[arch-releng] [archiso] [PATCH] releng: Allow specifying a mirror on the kernel command line.

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Fri Jun 14 19:20:29 EDT 2013


On 06/05/2013 03:32 PM, Thomas Bächler wrote:
> The new mirror= option takes a mirror URL and creates a new mirrorlist.
> When setting mirror=auto, the mirror is taken from archiso_http_srv in
> order to keep using the mirror selected in the netboot menu.

Cool :)

PS: Oh! this was classified as spam by Yahoo!, grrr!



> ---
>  .../etc/systemd/system/choose-mirror.service       | 10 +++++++++
>  .../releng/root-image/root/customize_root_image.sh |  2 +-
>  .../root-image/usr/local/bin/choose-mirror.sh      | 26 ++++++++++++++++++++++

Nice, I think a better place for /usr/local/bin/choose-mirror.sh is
/etc/systemd/scripts/choose-mirror ;)


>  3 files changed, 37 insertions(+), 1 deletion(-)
>  create mode 100644 configs/releng/root-image/etc/systemd/system/choose-mirror.service
>  create mode 100755 configs/releng/root-image/usr/local/bin/choose-mirror.sh
> 
> diff --git a/configs/releng/root-image/etc/systemd/system/choose-mirror.service b/configs/releng/root-image/etc/systemd/system/choose-mirror.service
> new file mode 100644
> index 0000000..daef1f2
> --- /dev/null
> +++ b/configs/releng/root-image/etc/systemd/system/choose-mirror.service
> @@ -0,0 +1,10 @@
> +[Unit]
> +Description=Choose mirror from the command line

...the kernel command... (looks better)


> +ConditionKernelCommandLine=mirror
> +
> +[Service]
> +Type=oneshot
> +ExecStart=/usr/local/bin/choose-mirror.sh
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/configs/releng/root-image/root/customize_root_image.sh b/configs/releng/root-image/root/customize_root_image.sh
> index 97e2874..a60f308 100755
> --- a/configs/releng/root-image/root/customize_root_image.sh
> +++ b/configs/releng/root-image/root/customize_root_image.sh
> @@ -17,4 +17,4 @@ chmod 440 /etc/sudoers.d/g_wheel
>  
>  sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist
>  
> -systemctl enable multi-user.target pacman-init.service
> +systemctl enable multi-user.target pacman-init.service choose-mirror.service
> diff --git a/configs/releng/root-image/usr/local/bin/choose-mirror.sh b/configs/releng/root-image/usr/local/bin/choose-mirror.sh
> new file mode 100755
> index 0000000..0ae0806
> --- /dev/null
> +++ b/configs/releng/root-image/usr/local/bin/choose-mirror.sh
> @@ -0,0 +1,26 @@
> +#!/bin/bash
> +
> +get_cmdline() {
> +    local param
> +    for param in $(< /proc/cmdline); do
> +        case "${param}" in
> +            $1=*) echo "${param##*=}";
> +            return 0
> +            ;;
> +        esac
> +    done
> +}
> +
> +mirror=$(get_cmdline mirror)
> +[[ $mirror = auto ]] && mirror=$(get_cmdline archiso_http_srv)
> +[[ $mirror ]] || exit 0
> +
> +mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig
> +cat >/etc/pacman.d/mirrorlist << EOF
> +#
> +# Arch Linux repository mirrorlist
> +# Generated by archiso
> +#
> +
> +Server = ${mirror%%/}/\$repo/os/\$arch
> +EOF
> 

PS: not much related to this, but I like at some point in the future,
that systemd gets the possibility, in some way, manage
kernel-command-line, to be easily usable from units, this will be really
useful, if we want to migrate to full systemd in initramfs stage for
example.




-- 
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 555 bytes
Desc: OpenPGP digital signature
URL: <http://mailman.archlinux.org/pipermail/arch-releng/attachments/20130614/decaced8/attachment-0001.asc>


More information about the arch-releng mailing list