qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 8/9] qemu-binfmt-conf.sh: add option --clear


From: Laurent Vivier
Subject: Re: [Qemu-devel] [PATCH v5 8/9] qemu-binfmt-conf.sh: add option --clear
Date: Tue, 12 Mar 2019 12:34:43 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

On 11/03/2019 21:23, Unai Martinez-Corral wrote:
> This is a partial implementation.
> 
> Allows to remove a single or a list of already registered binfmt
> interpreters. Valid values are those in qemu_target_list.
> If TARGETS is empty, all the existing 'qemu-*' interpreters are
> removed.
> 
> This is partial because 'debian' and 'systemd' configurations are not
> supported. The script will exit with error 'option clear not
> implemented for this mode yet'.
> 
> Removal is done by printing '-1' as explained at:
> https://www.kernel.org/doc/Documentation/admin-guide/binfmt-misc.rst
> 
> Signed-off-by: Unai Martinez-Corral <address@hidden>
> ---
>  scripts/qemu-binfmt-conf.sh | 39 +++++++++++++++++++++++++++++++++++--
>  1 file changed, 37 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
> index 2be9867727..382bdaabfe 100755
> --- a/scripts/qemu-binfmt-conf.sh
> +++ b/scripts/qemu-binfmt-conf.sh
> @@ -197,7 +197,7 @@ Options and associated environment variables:
> 
>  Argument             Env-variable     Description
>  TARGETS              QEMU_TARGETS     A single arch name or a list of them 
> (see all names below);
> -                                      if empty, configure all known targets;
> +                                      if empty, configure/clear all known 
> targets;
>                                        if 'NONE', no interpreter is 
> configured.
>  -h|--help                             display this usage
>  -Q|--path PATH       QEMU_PATH        set path to qemu interpreter(s)
> @@ -206,6 +206,8 @@ TARGETS              QEMU_TARGETS     A single arch name 
> or a list of them (see
>                                        uses are cloned from the open file.
>  -c|--credential      QEMU_CREDENTIAL  (yes) credential and security tokens 
> are calculated according
>                                        to the binary to interpret
> +-r|--clear           QEMU_CLEAR       (yes) remove registered interpreters 
> for target TARGETS;
> +                                      then exit.
>  -e|--exportdir PATH  DEBIANDIR        define where to write configuration 
> files
>                       SYSTEMDDIR
>  -s|--systemd                          don't write into /proc, generate 
> file(s) for
> @@ -218,6 +220,7 @@ QEMU_PATH=$QEMU_PATH
>  QEMU_SUFFIX=$QEMU_SUFFIX
>  QEMU_PERSISTENT=$QEMU_PERSISTENT
>  QEMU_CREDENTIAL=$QEMU_CREDENTIAL
> +QEMU_CLEAR=$QEMU_CLEAR
> 
>  To import templates with update-binfmts, use :
> 
> @@ -344,8 +347,28 @@ qemu_set_binfmts() {
>      done
>  }
> 
> +qemu_clear_notimplemented() {
> +    echo "ERROR: option clear not implemented for this mode yet" 1>&2
> +    usage
> +    exit 1
> +}
> +
> +qemu_clear_interpreter() {
> +    names='qemu-*'
> +    if [ $# -ne 0 ] ; then
> +        qemu_check_target_list $1
> +        unset names pre
> +        for t in $checked_target_list ; do
> +            names="${names}${pre}qemu-$t"
> +            pre=' -o -name '
> +        done
> +    fi
> +    find /proc/sys/fs/binfmt_misc/ -type f -name "$names" -exec sh -c 
> 'printf %s -1 > {}' \;

You don't need to use "find".

put the printf in the loop with the full path
/proc/sys/fs/binfmt_mist/qemu-$t.

For the ALL case, use the list of the known interpreters, or if you want
to remove them all, use the "status" file that does that.

Thanks,
Laurent



reply via email to

[Prev in Thread] Current Thread [Next in Thread]