And before I forget… Pascal Hambourg <pas...@plouf.fr.eu.org> (2023-04-01): > The current algorithm mounts only the first "suitable" disk or partition > when searching for loose firmware files or packages. > If it mounts the wrong devices, firmware files are not found. > > This patch adds the following subcommands to mountmedia: > mountmedia list [floppy]: list devices > mountmedia mounted: test if /media is mounted > mountmedia mount <device|dir>: mount device (ro) or directory on /media > > The behaviour when no subcommand is passed is unchanged. > > The "mount" subcommand loads the ext4 module to be able to mount media > with ext* filesystems in addition to vfat. It may be useful in cases > such as bug#1033498 when some loose firmware files are symlinks, which > are not supported by vfat. However it may increase the search time if > there are many ext* partitions. > > Additionally, the "list" subcommand adds /hd-media to the device list > if it exists for compatibility with the current behaviour. > > These subcommands are intended to be used by check-missing-firmware > from package hw-media in order to search firmware files or packages > on all available media.
This should be hw-detect, rather than hw-media. :) > --- > mountmedia | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 53 insertions(+), 2 deletions(-) > > diff --git a/mountmedia b/mountmedia > index 6013579..7181ac5 100755 > --- a/mountmedia > +++ b/mountmedia > @@ -1,6 +1,18 @@ > #!/bin/sh > set -e > > +# parse sub-commands > +if [ "$1" = list ]; then > + CMD_LIST=1 > + # shift to parse optional parameter "floppy" > + shift > +elif [ "$1" = mounted ]; then > + CMD_MOUNTED=1 > +elif [ "$1" = mount ]; then > + CMD_MOUNT=1 > + dev="$2" > +fi > + > if [ "$1" = driver ]; then > WANTDRIVER=1 > elif [ "$1" = floppy ]; then > @@ -59,10 +71,49 @@ checkcontents() { > fi > } > > +# execute sub-commands > + > +if [ "$CMD_LIST" ]; then > + if [ -d /hd-media ]; then > + # for compatibility with default behaviour > + echo /hd-media > + fi > + devlist > + exit 0 > +fi > + > +if [ "$CMD_MOUNTED" ]; then > + media_mounted > + exit > +fi > + > +if [ "$CMD_MOUNT" ]; then > + if [ -d "$dev" ]; then # directory -> bind mount > + mount --bind $dev $MNT > + exit > + elif [ -b "$dev" ]; then # block device -> normal mount > + modprobe -q vfat || true > + # allow to mount ext2/3/4 too, may be useful in some cases (see > #1033498) > + modprobe -q ext4 || true > + if [ $dev = /dev/fd0 ]; then > + # for compatibility with default behaviour > + # useless if floppy support is dropped > + log-output -t mountmedia modprobe -q floppy || true > + log-output -t mountmedia modprobe -q ide-floppy || true > + update-dev --settle > + fi > + mount -r -t auto $dev $MNT > + exit > + fi > + exit 1 > +fi > + > +# default operation when no subcommand is passed > + > if ! ( media_mounted && checkcontents $MNT ); then > # Special case for an already mounted /hd-media. > if [ -d /hd-media ] && checkcontents /hd-media; then > - mount --bind /hd-media /media > + mount --bind /hd-media $MNT Since new subcommands are supposed to have run and exited before, I would expect the default operation to require no changes at all, so the /media → $MNT update seems weird. > exit 0 > fi > > @@ -79,7 +130,7 @@ if ! ( media_mounted && checkcontents $MNT ); then > fi > done > > - if [ "$i" = 1 ]; then > + if [ "$i" = 1 ]; then > # Give USB time to settle, make sure all devices are > # seen next time though. > sleep 5 This part could have been dropped too, even if it's very minor compared to the question above. Cheers, -- Cyril Brulebois (k...@debian.org) <https://debamax.com/> D-I release manager -- Release team member -- Freelance Consultant
signature.asc
Description: PGP signature