[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