[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 8/9] qemu-binfmt-conf.sh: add option --clear
From: |
Unai Martinez Corral |
Subject: |
Re: [Qemu-devel] [PATCH v7 8/9] qemu-binfmt-conf.sh: add option --clear |
Date: |
Tue, 12 Mar 2019 21:25:43 +0100 |
I could not see the indentation problems you mentioned before. Hope it
is fixed in v7 anyway.
El mar., 12 mar. 2019 a las 20:56, Laurent Vivier
(<address@hidden>) escribió:
>
> On 12/03/2019 20:54, 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 | 36 ++++++++++++++++++++++++++++++++++--
> > 1 file changed, 34 insertions(+), 2 deletions(-)
> >
> > diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
> > index 5d6535bfc9..16c48e13a8 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 define where to write configuration
> > files
> > (default: $SYSTEMDDIR or $DEBIANDIR)
> > -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,22 @@ 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() {
> > + p="/proc/sys/fs/binfmt_misc/$1"
> > + if [ -f "$p" ] ; then
> > + printf %s -1 > "$p"
> > + fi
> > +}
> > +
> > CHECK=qemu_check_bintfmt_misc
> > BINFMT_SET=qemu_register_interpreter
> > +BINFMT_CLEAR=qemu_clear_interpreter
> >
> > SYSTEMDDIR="/etc/binfmt.d"
> > DEBIANDIR="/usr/share/binfmts"
> > @@ -355,20 +372,26 @@ QEMU_PATH="${QEMU_PATH:-/usr/local/bin}"
> > QEMU_SUFFIX="${QEMU_SUFFIX:-}"
> > QEMU_PERSISTENT="${QEMU_PERSISTENT:-no}"
> > QEMU_CREDENTIAL="${QEMU_CREDENTIAL:-no}"
> > +QEMU_CLEAR="${QEMU_CLEAR:-no}"
> >
> > -options=$(getopt -o dsQ:S:e:hcp -l
> > debian,systemd,path:,suffix:,exportdir:,help,credential,persistent -- "$@")
> > +options=$(getopt -o rdsQ:S:e:hcp -l
> > clear,debian,systemd,path:,suffix:,exportdir:,help,credential,persistent --
> > "$@")
> > eval set -- "$options"
> >
> > while true ; do
> > case "$1" in
> > + -r|--clear)
> > + QEMU_CLEAR="yes"
> > + ;;
> > -d|--debian)
> > CHECK=qemu_check_debian
> > BINFMT_SET=qemu_generate_debian
> > + BINFMT_CLEAR=qemu_clear_notimplemented
> > EXPORTDIR=${EXPORTDIR:-$DEBIANDIR}
> > ;;
> > -s|--systemd)
> > CHECK=qemu_check_systemd
> > BINFMT_SET=qemu_generate_systemd
> > + BINFMT_CLEAR=qemu_clear_notimplemented
> > EXPORTDIR=${EXPORTDIR:-$SYSTEMDDIR}
> > ;;
> > -Q|--path)
> > @@ -403,4 +426,13 @@ done
> > shift
> >
> > $CHECK
> > +
> > +if [ "x$QEMU_CLEAR" = "xyes" ] ; then
> > + qemu_check_target_list "$@"
> > + for t in $checked_target_list ; do
> > + $BINFMT_CLEAR "qemu-$t"
> > + done
> > + exit
> > +fi
> > +
> > qemu_set_binfmts "$@"
> > --
> > 2.21.0
> >
>
> Reviewed-by: Laurent Vivier <address@hidden>
>
- [Qemu-devel] [PATCH v7 0/9] qemu-binfmt-conf.sh, Unai Martinez-Corral, 2019/03/12
- [Qemu-devel] [PATCH v7 7/9] qemu-binfmt-conf.sh: generalize <CPU> to positional TARGETS, Unai Martinez-Corral, 2019/03/12
- [Qemu-devel] [PATCH v7 6/9] qemu-binfmt-conf.sh: honour QEMU_PATH and/or QEMU_SUFFIX, Unai Martinez-Corral, 2019/03/12
- [Qemu-devel] [PATCH v7 4/9] qemu-binfmt-conf.sh: use the same presentation format as for qemu-*, Unai Martinez-Corral, 2019/03/12
- [Qemu-devel] [PATCH v7 3/9] qemu-binfmt-conf.sh: add QEMU_CREDENTIAL and QEMU_PERSISTENT, Unai Martinez-Corral, 2019/03/12