scripts:prune-kernel:remove old kernels and modules dir from system
diff mbox series

Message ID 20191102063036.28601-1-unixbhaskar@gmail.com
State New
Headers show
Series
  • scripts:prune-kernel:remove old kernels and modules dir from system
Related show

Commit Message

Bhaskar Chowdhury Nov. 2, 2019, 6:30 a.m. UTC
This patch allow you to remove old kernels and associated modules
directory from the system.You can do it at once with the -r flag
and interactively with the -i flag.

Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
---
 scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
 1 file changed, 65 insertions(+), 17 deletions(-)

--
2.23.0

Comments

Randy Dunlap Nov. 5, 2019, 2:03 a.m. UTC | #1
On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
> This patch allow you to remove old kernels and associated modules
> directory from the system.You can do it at once with the -r flag
> and interactively with the -i flag.
> 
> Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
> ---
>  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
>  1 file changed, 65 insertions(+), 17 deletions(-)

Hi,
I believe that this script now does what the patch author intends it to do.
It does have a few whitespace issues, but no big deals.  (see below)

Tested-by: Randy Dunlap <rdunlap@infradead.org>


> diff --git a/scripts/prune-kernel b/scripts/prune-kernel
> index e8aa940bc0a9..01d0778db71f 100755
> --- a/scripts/prune-kernel
> +++ b/scripts/prune-kernel
> @@ -1,21 +1,69 @@
>  #!/bin/bash
>  # SPDX-License-Identifier: GPL-2.0
> +#This script will remove old kernels and modules directory related to it.
> +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
> +# "-h" or "--help" show how to use this script or show without parameter.
> +#"-i" or "--interactive" show how to remove interactively.
> +
> +flag=$1
> +kernel_version=$2
> +modules_version=$3
> +boot_dir=/boot
> +modules_dir=/lib/modules
> +
> +remove_old_kernel() {
> +	cd $boot_dir
> +	rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
> +	return 0
> +}
> +
> +remove_old_modules_dir() {
> +	cd $modules_dir
> +	rm -rf $modules_version
> +	return 0
> +}
> +
> +usage() {
> +	printf "Usage: $(basename $0) [-ri]\n"
> +	printf "\n -r or --remove  kernel_version modules_version\n"
> +	printf "\n -i or --interactive do as interactive way\n"
> +	return 0
> +}
> +
> +case "$flag" in
> +	-i | --interactive)
> +		printf "\nEnter kernel version to remove or blank/empty to exit:"
> +		read kernel_version
> +		if [[ $kernel_version != "" ]]; then
> +			remove_old_kernel
> +			printf "\nRemoved kernel version:$kernel_version from the system.\n\n"

space after ':'

drop one \n above.

> +			printf "Please give the full modules directory name to remove:"
> +			read modules_version
> +			if [[ $modules_version != "" ]]; then
> +				remove_old_modules_dir
> +				printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"

space after ':'

drop one \n above.

> +			else
> +				exit 1
> +			fi
> +		fi
> +		;;
> +	-h | --help)
> +		usage
> +		exit 0
> +		;;
> +	-r | --remove)
> +		if [[ $# -ne 3 ]]; then
> +			 printf "You need to provide kernel version and modules directory name.\n"
> +			 exit 1
> +		 else
> +			 remove_old_kernel
> +			 remove_old_modules_dir
> +		fi
> +		;;
> +	*)
> +		usage
> +		exit 1
> +		;;
> +esac
> 
> -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
> -# again, /boot and /lib/modules/ eventually fill up.
> -# Dumb script to purge that stuff:
> 

OK, the former script's loop is removed.. good.
But the 2 preceding blank lines are not removed, so the script
now ends with 2 unnecessary blank lines.

> -for f in "$@"
> -do
> -        if rpm -qf "/lib/modules/$f" >/dev/null; then
> -                echo "keeping $f (installed from rpm)"
> -        elif [ $(uname -r) = "$f" ]; then
> -                echo "keeping $f (running kernel) "
> -        else
> -                echo "removing $f"
> -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
> -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
> -                rm -rf "/lib/modules/$f"
> -                new-kernel-pkg --remove $f
> -        fi
> -done
> --
J. Bruce Fields Nov. 5, 2019, 2:32 a.m. UTC | #2
On Mon, Nov 04, 2019 at 06:03:13PM -0800, Randy Dunlap wrote:
> On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
> > This patch allow you to remove old kernels and associated modules
> > directory from the system.You can do it at once with the -r flag
> > and interactively with the -i flag.
> > 
> > Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
> > ---
> >  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
> >  1 file changed, 65 insertions(+), 17 deletions(-)
> 
> Hi,
> I believe that this script now does what the patch author intends it to do.
> It does have a few whitespace issues, but no big deals.  (see below)

My original comment stands: looks like it prompts for full module path
and kernel versions which means it's no more convenient than just doing
an "ls" and then removing the ones you want to.  (In fact, with "rm"
you'd also get the benefit of tab completion....)

It's quite different from the original script and I don't really see the
advantage.

--b.

> 
> Tested-by: Randy Dunlap <rdunlap@infradead.org>
> 
> 
> > diff --git a/scripts/prune-kernel b/scripts/prune-kernel
> > index e8aa940bc0a9..01d0778db71f 100755
> > --- a/scripts/prune-kernel
> > +++ b/scripts/prune-kernel
> > @@ -1,21 +1,69 @@
> >  #!/bin/bash
> >  # SPDX-License-Identifier: GPL-2.0
> > +#This script will remove old kernels and modules directory related to it.
> > +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
> > +# "-h" or "--help" show how to use this script or show without parameter.
> > +#"-i" or "--interactive" show how to remove interactively.
> > +
> > +flag=$1
> > +kernel_version=$2
> > +modules_version=$3
> > +boot_dir=/boot
> > +modules_dir=/lib/modules
> > +
> > +remove_old_kernel() {
> > +	cd $boot_dir
> > +	rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
> > +	return 0
> > +}
> > +
> > +remove_old_modules_dir() {
> > +	cd $modules_dir
> > +	rm -rf $modules_version
> > +	return 0
> > +}
> > +
> > +usage() {
> > +	printf "Usage: $(basename $0) [-ri]\n"
> > +	printf "\n -r or --remove  kernel_version modules_version\n"
> > +	printf "\n -i or --interactive do as interactive way\n"
> > +	return 0
> > +}
> > +
> > +case "$flag" in
> > +	-i | --interactive)
> > +		printf "\nEnter kernel version to remove or blank/empty to exit:"
> > +		read kernel_version
> > +		if [[ $kernel_version != "" ]]; then
> > +			remove_old_kernel
> > +			printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
> 
> space after ':'
> 
> drop one \n above.
> 
> > +			printf "Please give the full modules directory name to remove:"
> > +			read modules_version
> > +			if [[ $modules_version != "" ]]; then
> > +				remove_old_modules_dir
> > +				printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
> 
> space after ':'
> 
> drop one \n above.
> 
> > +			else
> > +				exit 1
> > +			fi
> > +		fi
> > +		;;
> > +	-h | --help)
> > +		usage
> > +		exit 0
> > +		;;
> > +	-r | --remove)
> > +		if [[ $# -ne 3 ]]; then
> > +			 printf "You need to provide kernel version and modules directory name.\n"
> > +			 exit 1
> > +		 else
> > +			 remove_old_kernel
> > +			 remove_old_modules_dir
> > +		fi
> > +		;;
> > +	*)
> > +		usage
> > +		exit 1
> > +		;;
> > +esac
> > 
> > -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
> > -# again, /boot and /lib/modules/ eventually fill up.
> > -# Dumb script to purge that stuff:
> > 
> 
> OK, the former script's loop is removed.. good.
> But the 2 preceding blank lines are not removed, so the script
> now ends with 2 unnecessary blank lines.
> 
> > -for f in "$@"
> > -do
> > -        if rpm -qf "/lib/modules/$f" >/dev/null; then
> > -                echo "keeping $f (installed from rpm)"
> > -        elif [ $(uname -r) = "$f" ]; then
> > -                echo "keeping $f (running kernel) "
> > -        else
> > -                echo "removing $f"
> > -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
> > -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
> > -                rm -rf "/lib/modules/$f"
> > -                new-kernel-pkg --remove $f
> > -        fi
> > -done
> > --
> 
> 
> -- 
> ~Randy
Bhaskar Chowdhury Nov. 5, 2019, 4:33 a.m. UTC | #3
On 18:03 Mon 04 Nov 2019, Randy Dunlap wrote:
>On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
>> This patch allow you to remove old kernels and associated modules
>> directory from the system.You can do it at once with the -r flag
>> and interactively with the -i flag.
>> 
>> Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
>> ---
>>  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
>>  1 file changed, 65 insertions(+), 17 deletions(-)
>
>Hi,
>I believe that this script now does what the patch author intends it to do.
>It does have a few whitespace issues, but no big deals.  (see below)
>
>Tested-by: Randy Dunlap <rdunlap@infradead.org>
>
>
Thank you Randy..
>> diff --git a/scripts/prune-kernel b/scripts/prune-kernel
>> index e8aa940bc0a9..01d0778db71f 100755
>> --- a/scripts/prune-kernel
>> +++ b/scripts/prune-kernel
>> @@ -1,21 +1,69 @@
>>  #!/bin/bash
>>  # SPDX-License-Identifier: GPL-2.0
>> +#This script will remove old kernels and modules directory related to it.
>> +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
>> +# "-h" or "--help" show how to use this script or show without parameter.
>> +#"-i" or "--interactive" show how to remove interactively.
>> +
>> +flag=$1
>> +kernel_version=$2
>> +modules_version=$3
>> +boot_dir=/boot
>> +modules_dir=/lib/modules
>> +
>> +remove_old_kernel() {
>> +	cd $boot_dir
>> +	rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
>> +	return 0
>> +}
>> +
>> +remove_old_modules_dir() {
>> +	cd $modules_dir
>> +	rm -rf $modules_version
>> +	return 0
>> +}
>> +
>> +usage() {
>> +	printf "Usage: $(basename $0) [-ri]\n"
>> +	printf "\n -r or --remove  kernel_version modules_version\n"
>> +	printf "\n -i or --interactive do as interactive way\n"
>> +	return 0
>> +}
>> +
>> +case "$flag" in
>> +	-i | --interactive)
>> +		printf "\nEnter kernel version to remove or blank/empty to exit:"
>> +		read kernel_version
>> +		if [[ $kernel_version != "" ]]; then
>> +			remove_old_kernel
>> +			printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
>
>space after ':'
>
>drop one \n above.
>
Will do.
>> +			printf "Please give the full modules directory name to remove:"
>> +			read modules_version
>> +			if [[ $modules_version != "" ]]; then
>> +				remove_old_modules_dir
>> +				printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
>
>space after ':'
>
>drop one \n above.
>
Will do.
>> +			else
>> +				exit 1
>> +			fi
>> +		fi
>> +		;;
>> +	-h | --help)
>> +		usage
>> +		exit 0
>> +		;;
>> +	-r | --remove)
>> +		if [[ $# -ne 3 ]]; then
>> +			 printf "You need to provide kernel version and modules directory name.\n"
>> +			 exit 1
>> +		 else
>> +			 remove_old_kernel
>> +			 remove_old_modules_dir
>> +		fi
>> +		;;
>> +	*)
>> +		usage
>> +		exit 1
>> +		;;
>> +esac
>> 
>> -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
>> -# again, /boot and /lib/modules/ eventually fill up.
>> -# Dumb script to purge that stuff:
>> 
>
>OK, the former script's loop is removed.. good.
>But the 2 preceding blank lines are not removed, so the script
>now ends with 2 unnecessary blank lines.
>
Will do.
>> -for f in "$@"
>> -do
>> -        if rpm -qf "/lib/modules/$f" >/dev/null; then
>> -                echo "keeping $f (installed from rpm)"
>> -        elif [ $(uname -r) = "$f" ]; then
>> -                echo "keeping $f (running kernel) "
>> -        else
>> -                echo "removing $f"
>> -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
>> -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
>> -                rm -rf "/lib/modules/$f"
>> -                new-kernel-pkg --remove $f
>> -        fi
>> -done
>> --
>
>
>-- 
>~Randy
>
Bhaskar
Bhaskar Chowdhury Nov. 5, 2019, 4:39 a.m. UTC | #4
On 21:32 Mon 04 Nov 2019, J. Bruce Fields wrote:
>On Mon, Nov 04, 2019 at 06:03:13PM -0800, Randy Dunlap wrote:
>> On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
>> > This patch allow you to remove old kernels and associated modules
>> > directory from the system.You can do it at once with the -r flag
>> > and interactively with the -i flag.
>> > 
>> > Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
>> > ---
>> >  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
>> >  1 file changed, 65 insertions(+), 17 deletions(-)
>> 
>> Hi,
>> I believe that this script now does what the patch author intends it to do.
>> It does have a few whitespace issues, but no big deals.  (see below)
>
>My original comment stands: looks like it prompts for full module path
>and kernel versions which means it's no more convenient than just doing
>an "ls" and then removing the ones you want to.  (In fact, with "rm"
>you'd also get the benefit of tab completion....)

Hi Bruce,
I am forcing user to put full modules directory name,kinda engagement 
to the process.It is not a trivial operation, so the users should be 
aware.
OHT Could you please state what else you would like to be inducted in
the so it can be useful?? So sorry for my weak memory if you already 
explicitly stated something like that before.

Thanks,
Bhaskar
>
>It's quite different from the original script and I don't really see the
>advantage.
>
>--b.
>
>> 
>> Tested-by: Randy Dunlap <rdunlap@infradead.org>
>> 
>> 
>> > diff --git a/scripts/prune-kernel b/scripts/prune-kernel
>> > index e8aa940bc0a9..01d0778db71f 100755
>> > --- a/scripts/prune-kernel
>> > +++ b/scripts/prune-kernel
>> > @@ -1,21 +1,69 @@
>> >  #!/bin/bash
>> >  # SPDX-License-Identifier: GPL-2.0
>> > +#This script will remove old kernels and modules directory related to it.
>> > +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
>> > +# "-h" or "--help" show how to use this script or show without parameter.
>> > +#"-i" or "--interactive" show how to remove interactively.
>> > +
>> > +flag=$1
>> > +kernel_version=$2
>> > +modules_version=$3
>> > +boot_dir=/boot
>> > +modules_dir=/lib/modules
>> > +
>> > +remove_old_kernel() {
>> > +	cd $boot_dir
>> > +	rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
>> > +	return 0
>> > +}
>> > +
>> > +remove_old_modules_dir() {
>> > +	cd $modules_dir
>> > +	rm -rf $modules_version
>> > +	return 0
>> > +}
>> > +
>> > +usage() {
>> > +	printf "Usage: $(basename $0) [-ri]\n"
>> > +	printf "\n -r or --remove  kernel_version modules_version\n"
>> > +	printf "\n -i or --interactive do as interactive way\n"
>> > +	return 0
>> > +}
>> > +
>> > +case "$flag" in
>> > +	-i | --interactive)
>> > +		printf "\nEnter kernel version to remove or blank/empty to exit:"
>> > +		read kernel_version
>> > +		if [[ $kernel_version != "" ]]; then
>> > +			remove_old_kernel
>> > +			printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
>> 
>> space after ':'
>> 
>> drop one \n above.
>> 
>> > +			printf "Please give the full modules directory name to remove:"
>> > +			read modules_version
>> > +			if [[ $modules_version != "" ]]; then
>> > +				remove_old_modules_dir
>> > +				printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
>> 
>> space after ':'
>> 
>> drop one \n above.
>> 
>> > +			else
>> > +				exit 1
>> > +			fi
>> > +		fi
>> > +		;;
>> > +	-h | --help)
>> > +		usage
>> > +		exit 0
>> > +		;;
>> > +	-r | --remove)
>> > +		if [[ $# -ne 3 ]]; then
>> > +			 printf "You need to provide kernel version and modules directory name.\n"
>> > +			 exit 1
>> > +		 else
>> > +			 remove_old_kernel
>> > +			 remove_old_modules_dir
>> > +		fi
>> > +		;;
>> > +	*)
>> > +		usage
>> > +		exit 1
>> > +		;;
>> > +esac
>> > 
>> > -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
>> > -# again, /boot and /lib/modules/ eventually fill up.
>> > -# Dumb script to purge that stuff:
>> > 
>> 
>> OK, the former script's loop is removed.. good.
>> But the 2 preceding blank lines are not removed, so the script
>> now ends with 2 unnecessary blank lines.
>> 
>> > -for f in "$@"
>> > -do
>> > -        if rpm -qf "/lib/modules/$f" >/dev/null; then
>> > -                echo "keeping $f (installed from rpm)"
>> > -        elif [ $(uname -r) = "$f" ]; then
>> > -                echo "keeping $f (running kernel) "
>> > -        else
>> > -                echo "removing $f"
>> > -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
>> > -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
>> > -                rm -rf "/lib/modules/$f"
>> > -                new-kernel-pkg --remove $f
>> > -        fi
>> > -done
>> > --
>> 
>> 
>> -- 
>> ~Randy
Bhaskar Chowdhury Nov. 5, 2019, 4:52 a.m. UTC | #5
On 10:09 Tue 05 Nov 2019, Bhaskar Chowdhury wrote:
>On 21:32 Mon 04 Nov 2019, J. Bruce Fields wrote:
>>On Mon, Nov 04, 2019 at 06:03:13PM -0800, Randy Dunlap wrote:
>>> On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
>>> > This patch allow you to remove old kernels and associated modules
>>> > directory from the system.You can do it at once with the -r flag
>>> > and interactively with the -i flag.
>>> > 
>>> > Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
>>> > ---
>>> >  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
>>> >  1 file changed, 65 insertions(+), 17 deletions(-)
>>> 
>>> Hi,
>>> I believe that this script now does what the patch author intends it to do.
>>> It does have a few whitespace issues, but no big deals.  (see below)
>>
>>My original comment stands: looks like it prompts for full module path
>>and kernel versions which means it's no more convenient than just doing
>>an "ls" and then removing the ones you want to.  (In fact, with "rm"
>>you'd also get the benefit of tab completion....)

Bruce,

There is -r or --remove option , with that you can pass the kernel
version and modules directory name , and the script will remove those
without prompting you for those.

For instance you need to pass the options like this :

./scripts/prune-kernel -r kernel_version modules_directory_name
OR
./scripts/prune-kernel --remove kernel_version modules_directory_name

Which I certainly believe is not just "ls and rm" stuff...could you
please give it a shot ,and let me know the shortcoming please??

So , I can fix the damn thing.
>
>Hi Bruce,
>I am forcing user to put full modules directory name,kinda engagement 
>to the process.It is not a trivial operation, so the users should be 
>aware.
>OHT Could you please state what else you would like to be inducted in
>the so it can be useful?? So sorry for my weak memory if you already 
>explicitly stated something like that before.
>
>Thanks,
>Bhaskar
>>
>>It's quite different from the original script and I don't really see the
>>advantage.
>>
>>--b.
>>
>>> 
>>> Tested-by: Randy Dunlap <rdunlap@infradead.org>
>>> 
>>> 
>>> > diff --git a/scripts/prune-kernel b/scripts/prune-kernel
>>> > index e8aa940bc0a9..01d0778db71f 100755
>>> > --- a/scripts/prune-kernel
>>> > +++ b/scripts/prune-kernel
>>> > @@ -1,21 +1,69 @@
>>> >  #!/bin/bash
>>> >  # SPDX-License-Identifier: GPL-2.0
>>> > +#This script will remove old kernels and modules directory related to it.
>>> > +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
>>> > +# "-h" or "--help" show how to use this script or show without parameter.
>>> > +#"-i" or "--interactive" show how to remove interactively.
>>> > +
>>> > +flag=$1
>>> > +kernel_version=$2
>>> > +modules_version=$3
>>> > +boot_dir=/boot
>>> > +modules_dir=/lib/modules
>>> > +
>>> > +remove_old_kernel() {
>>> > +	cd $boot_dir
>>> > +	rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
>>> > +	return 0
>>> > +}
>>> > +
>>> > +remove_old_modules_dir() {
>>> > +	cd $modules_dir
>>> > +	rm -rf $modules_version
>>> > +	return 0
>>> > +}
>>> > +
>>> > +usage() {
>>> > +	printf "Usage: $(basename $0) [-ri]\n"
>>> > +	printf "\n -r or --remove  kernel_version modules_version\n"
>>> > +	printf "\n -i or --interactive do as interactive way\n"
>>> > +	return 0
>>> > +}
>>> > +
>>> > +case "$flag" in
>>> > +	-i | --interactive)
>>> > +		printf "\nEnter kernel version to remove or blank/empty to exit:"
>>> > +		read kernel_version
>>> > +		if [[ $kernel_version != "" ]]; then
>>> > +			remove_old_kernel
>>> > +			printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
>>> 
>>> space after ':'
>>> 
>>> drop one \n above.
>>> 
>>> > +			printf "Please give the full modules directory name to remove:"
>>> > +			read modules_version
>>> > +			if [[ $modules_version != "" ]]; then
>>> > +				remove_old_modules_dir
>>> > +				printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
>>> 
>>> space after ':'
>>> 
>>> drop one \n above.
>>> 
>>> > +			else
>>> > +				exit 1
>>> > +			fi
>>> > +		fi
>>> > +		;;
>>> > +	-h | --help)
>>> > +		usage
>>> > +		exit 0
>>> > +		;;
>>> > +	-r | --remove)
>>> > +		if [[ $# -ne 3 ]]; then
>>> > +			 printf "You need to provide kernel version and modules directory name.\n"
>>> > +			 exit 1
>>> > +		 else
>>> > +			 remove_old_kernel
>>> > +			 remove_old_modules_dir
>>> > +		fi
>>> > +		;;
>>> > +	*)
>>> > +		usage
>>> > +		exit 1
>>> > +		;;
>>> > +esac
>>> > 
>>> > -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
>>> > -# again, /boot and /lib/modules/ eventually fill up.
>>> > -# Dumb script to purge that stuff:
>>> > 
>>> 
>>> OK, the former script's loop is removed.. good.
>>> But the 2 preceding blank lines are not removed, so the script
>>> now ends with 2 unnecessary blank lines.
>>> 
>>> > -for f in "$@"
>>> > -do
>>> > -        if rpm -qf "/lib/modules/$f" >/dev/null; then
>>> > -                echo "keeping $f (installed from rpm)"
>>> > -        elif [ $(uname -r) = "$f" ]; then
>>> > -                echo "keeping $f (running kernel) "
>>> > -        else
>>> > -                echo "removing $f"
>>> > -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
>>> > -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
>>> > -                rm -rf "/lib/modules/$f"
>>> > -                new-kernel-pkg --remove $f
>>> > -        fi
>>> > -done
>>> > --
>>> 
>>> 
>>> -- 
>>> ~Randy

>-----BEGIN PGP SIGNATURE-----
>
>iQEzBAABCAAdFiEEnwF+nWawchZUPOuwsjqdtxFLKRUFAl3A/PMACgkQsjqdtxFL
>KRUyqQgAya3BYL2iEMk0N3b1/Ji3TVzjrhaMrYM1bc6MDs7UA83ikBBG7C/dSmZ9
>3l9ANXfEnjaF64FpuLTNE2pT/tVxEj+xQz5iWw3JXV9TR7P2rq6814LH4b3hXX54
>A9r0sIRz0xwCMq7ihtNtgXziyviLp8UkUjIK+1C4vQ0h9/CvP0YETq8fgRWASMrS
>2+VErRPd06DryAAnapz9CnZz2Fju6S4mA2aaTJ3hiDLNmbj++6IoNQw+r5MZrWde
>yUqPQcfAzxs6/GIuUPK3uStudgofQjCKbHbPho9jjmwXrNSFH6/0/pjz5R91oMu9
>AWpkl0vkvAvzLsjRIeMG/MmClx0c3w==
>=VReA
>-----END PGP SIGNATURE-----
Masahiro Yamada Nov. 6, 2019, 2:53 a.m. UTC | #6
On Tue, Nov 5, 2019 at 11:32 AM J. Bruce Fields <bfields@fieldses.org> wrote:
>
> On Mon, Nov 04, 2019 at 06:03:13PM -0800, Randy Dunlap wrote:
> > On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
> > > This patch allow you to remove old kernels and associated modules
> > > directory from the system.You can do it at once with the -r flag
> > > and interactively with the -i flag.
> > >
> > > Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
> > > ---
> > >  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
> > >  1 file changed, 65 insertions(+), 17 deletions(-)
> >
> > Hi,
> > I believe that this script now does what the patch author intends it to do.
> > It does have a few whitespace issues, but no big deals.  (see below)
>
> My original comment stands: looks like it prompts for full module path
> and kernel versions which means it's no more convenient than just doing
> an "ls" and then removing the ones you want to.  (In fact, with "rm"
> you'd also get the benefit of tab completion....)
>
> It's quite different from the original script and I don't really see the
> advantage.
>
> --b.

I am with Bruce.

This patch is trying to replace everything
with worse code.


BTW.
Bruce,
Does the current script expect RHEL or something?
I do not see 'new-kernel-pkg' on my Ubuntu machine.

It would still work with 'new-kernel-pkg: command not found'
warning.

We could bypass it if we like.

command -v new-kernel-pkg && new-kernel-pkg --remove $f



Masahiro Yamada



> >
> > Tested-by: Randy Dunlap <rdunlap@infradead.org>
> >
> >
> > > diff --git a/scripts/prune-kernel b/scripts/prune-kernel
> > > index e8aa940bc0a9..01d0778db71f 100755
> > > --- a/scripts/prune-kernel
> > > +++ b/scripts/prune-kernel
> > > @@ -1,21 +1,69 @@
> > >  #!/bin/bash
> > >  # SPDX-License-Identifier: GPL-2.0
> > > +#This script will remove old kernels and modules directory related to it.
> > > +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
> > > +# "-h" or "--help" show how to use this script or show without parameter.
> > > +#"-i" or "--interactive" show how to remove interactively.
> > > +
> > > +flag=$1
> > > +kernel_version=$2
> > > +modules_version=$3
> > > +boot_dir=/boot
> > > +modules_dir=/lib/modules
> > > +
> > > +remove_old_kernel() {
> > > +   cd $boot_dir
> > > +   rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
> > > +   return 0
> > > +}
> > > +
> > > +remove_old_modules_dir() {
> > > +   cd $modules_dir
> > > +   rm -rf $modules_version
> > > +   return 0
> > > +}
> > > +
> > > +usage() {
> > > +   printf "Usage: $(basename $0) [-ri]\n"
> > > +   printf "\n -r or --remove  kernel_version modules_version\n"
> > > +   printf "\n -i or --interactive do as interactive way\n"
> > > +   return 0
> > > +}
> > > +
> > > +case "$flag" in
> > > +   -i | --interactive)
> > > +           printf "\nEnter kernel version to remove or blank/empty to exit:"
> > > +           read kernel_version
> > > +           if [[ $kernel_version != "" ]]; then
> > > +                   remove_old_kernel
> > > +                   printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
> >
> > space after ':'
> >
> > drop one \n above.
> >
> > > +                   printf "Please give the full modules directory name to remove:"
> > > +                   read modules_version
> > > +                   if [[ $modules_version != "" ]]; then
> > > +                           remove_old_modules_dir
> > > +                           printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
> >
> > space after ':'
> >
> > drop one \n above.
> >
> > > +                   else
> > > +                           exit 1
> > > +                   fi
> > > +           fi
> > > +           ;;
> > > +   -h | --help)
> > > +           usage
> > > +           exit 0
> > > +           ;;
> > > +   -r | --remove)
> > > +           if [[ $# -ne 3 ]]; then
> > > +                    printf "You need to provide kernel version and modules directory name.\n"
> > > +                    exit 1
> > > +            else
> > > +                    remove_old_kernel
> > > +                    remove_old_modules_dir
> > > +           fi
> > > +           ;;
> > > +   *)
> > > +           usage
> > > +           exit 1
> > > +           ;;
> > > +esac
> > >
> > > -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
> > > -# again, /boot and /lib/modules/ eventually fill up.
> > > -# Dumb script to purge that stuff:
> > >
> >
> > OK, the former script's loop is removed.. good.
> > But the 2 preceding blank lines are not removed, so the script
> > now ends with 2 unnecessary blank lines.
> >
> > > -for f in "$@"
> > > -do
> > > -        if rpm -qf "/lib/modules/$f" >/dev/null; then
> > > -                echo "keeping $f (installed from rpm)"
> > > -        elif [ $(uname -r) = "$f" ]; then
> > > -                echo "keeping $f (running kernel) "
> > > -        else
> > > -                echo "removing $f"
> > > -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
> > > -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
> > > -                rm -rf "/lib/modules/$f"
> > > -                new-kernel-pkg --remove $f
> > > -        fi
> > > -done
> > > --
> >
> >
> > --
> > ~Randy



--
Best Regards

Masahiro Yamada
Bhaskar Chowdhury Nov. 6, 2019, 3:10 a.m. UTC | #7
On 11:53 Wed 06 Nov 2019, Masahiro Yamada wrote:
>On Tue, Nov 5, 2019 at 11:32 AM J. Bruce Fields <bfields@fieldses.org> wrote:
>>
>> On Mon, Nov 04, 2019 at 06:03:13PM -0800, Randy Dunlap wrote:
>> > On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
>> > > This patch allow you to remove old kernels and associated modules
>> > > directory from the system.You can do it at once with the -r flag
>> > > and interactively with the -i flag.
>> > >
>> > > Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
>> > > ---
>> > >  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
>> > >  1 file changed, 65 insertions(+), 17 deletions(-)
>> >
>> > Hi,
>> > I believe that this script now does what the patch author intends it to do.
>> > It does have a few whitespace issues, but no big deals.  (see below)
>>
>> My original comment stands: looks like it prompts for full module path
>> and kernel versions which means it's no more convenient than just doing
>> an "ls" and then removing the ones you want to.  (In fact, with "rm"
>> you'd also get the benefit of tab completion....)
>>
>> It's quite different from the original script and I don't really see the
>> advantage.
>>
>> --b.
>
>I am with Bruce.
>
>This patch is trying to replace everything
>with worse code.
Well,Masahiro,
I won't mind dropping the idea, which you already concluded.But, would
you care to let me know how worse the code seems to be????
>
>
>BTW.
>Bruce,
>Does the current script expect RHEL or something?
>I do not see 'new-kernel-pkg' on my Ubuntu machine.
>
>It would still work with 'new-kernel-pkg: command not found'
>warning.
>
>We could bypass it if we like.
>
>command -v new-kernel-pkg && new-kernel-pkg --remove $f
>
>
>
>Masahiro Yamada
>
>
>
>> >
>> > Tested-by: Randy Dunlap <rdunlap@infradead.org>
>> >
>> >
>> > > diff --git a/scripts/prune-kernel b/scripts/prune-kernel
>> > > index e8aa940bc0a9..01d0778db71f 100755
>> > > --- a/scripts/prune-kernel
>> > > +++ b/scripts/prune-kernel
>> > > @@ -1,21 +1,69 @@
>> > >  #!/bin/bash
>> > >  # SPDX-License-Identifier: GPL-2.0
>> > > +#This script will remove old kernels and modules directory related to it.
>> > > +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
>> > > +# "-h" or "--help" show how to use this script or show without parameter.
>> > > +#"-i" or "--interactive" show how to remove interactively.
>> > > +
>> > > +flag=$1
>> > > +kernel_version=$2
>> > > +modules_version=$3
>> > > +boot_dir=/boot
>> > > +modules_dir=/lib/modules
>> > > +
>> > > +remove_old_kernel() {
>> > > +   cd $boot_dir
>> > > +   rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
>> > > +   return 0
>> > > +}
>> > > +
>> > > +remove_old_modules_dir() {
>> > > +   cd $modules_dir
>> > > +   rm -rf $modules_version
>> > > +   return 0
>> > > +}
>> > > +
>> > > +usage() {
>> > > +   printf "Usage: $(basename $0) [-ri]\n"
>> > > +   printf "\n -r or --remove  kernel_version modules_version\n"
>> > > +   printf "\n -i or --interactive do as interactive way\n"
>> > > +   return 0
>> > > +}
>> > > +
>> > > +case "$flag" in
>> > > +   -i | --interactive)
>> > > +           printf "\nEnter kernel version to remove or blank/empty to exit:"
>> > > +           read kernel_version
>> > > +           if [[ $kernel_version != "" ]]; then
>> > > +                   remove_old_kernel
>> > > +                   printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
>> >
>> > space after ':'
>> >
>> > drop one \n above.
>> >
>> > > +                   printf "Please give the full modules directory name to remove:"
>> > > +                   read modules_version
>> > > +                   if [[ $modules_version != "" ]]; then
>> > > +                           remove_old_modules_dir
>> > > +                           printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
>> >
>> > space after ':'
>> >
>> > drop one \n above.
>> >
>> > > +                   else
>> > > +                           exit 1
>> > > +                   fi
>> > > +           fi
>> > > +           ;;
>> > > +   -h | --help)
>> > > +           usage
>> > > +           exit 0
>> > > +           ;;
>> > > +   -r | --remove)
>> > > +           if [[ $# -ne 3 ]]; then
>> > > +                    printf "You need to provide kernel version and modules directory name.\n"
>> > > +                    exit 1
>> > > +            else
>> > > +                    remove_old_kernel
>> > > +                    remove_old_modules_dir
>> > > +           fi
>> > > +           ;;
>> > > +   *)
>> > > +           usage
>> > > +           exit 1
>> > > +           ;;
>> > > +esac
>> > >
>> > > -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
>> > > -# again, /boot and /lib/modules/ eventually fill up.
>> > > -# Dumb script to purge that stuff:
>> > >
>> >
>> > OK, the former script's loop is removed.. good.
>> > But the 2 preceding blank lines are not removed, so the script
>> > now ends with 2 unnecessary blank lines.
>> >
>> > > -for f in "$@"
>> > > -do
>> > > -        if rpm -qf "/lib/modules/$f" >/dev/null; then
>> > > -                echo "keeping $f (installed from rpm)"
>> > > -        elif [ $(uname -r) = "$f" ]; then
>> > > -                echo "keeping $f (running kernel) "
>> > > -        else
>> > > -                echo "removing $f"
>> > > -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
>> > > -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
>> > > -                rm -rf "/lib/modules/$f"
>> > > -                new-kernel-pkg --remove $f
>> > > -        fi
>> > > -done
>> > > --
>> >
>> >
>> > --
>> > ~Randy
>
>
>
>--
>Best Regards
>
>Masahiro Yamada
Masahiro Yamada Nov. 6, 2019, 4:03 a.m. UTC | #8
On Wed, Nov 6, 2019 at 12:10 PM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
>
> On 11:53 Wed 06 Nov 2019, Masahiro Yamada wrote:
> >On Tue, Nov 5, 2019 at 11:32 AM J. Bruce Fields <bfields@fieldses.org> wrote:
> >>
> >> On Mon, Nov 04, 2019 at 06:03:13PM -0800, Randy Dunlap wrote:
> >> > On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
> >> > > This patch allow you to remove old kernels and associated modules
> >> > > directory from the system.You can do it at once with the -r flag
> >> > > and interactively with the -i flag.
> >> > >
> >> > > Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
> >> > > ---
> >> > >  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
> >> > >  1 file changed, 65 insertions(+), 17 deletions(-)
> >> >
> >> > Hi,
> >> > I believe that this script now does what the patch author intends it to do.
> >> > It does have a few whitespace issues, but no big deals.  (see below)
> >>
> >> My original comment stands: looks like it prompts for full module path
> >> and kernel versions which means it's no more convenient than just doing
> >> an "ls" and then removing the ones you want to.  (In fact, with "rm"
> >> you'd also get the benefit of tab completion....)
> >>
> >> It's quite different from the original script and I don't really see the
> >> advantage.
> >>
> >> --b.
> >
> >I am with Bruce.
> >
> >This patch is trying to replace everything
> >with worse code.
> Well,Masahiro,
> I won't mind dropping the idea, which you already concluded.But, would
> you care to let me know how worse the code seems to be????


As far as I understood this script,
it is useful to delete stale versions with a single command.

scripts/prune-kernel  5.2-rc1  5.2-rc2  5.2-rc3


This patch is dropping the 'for f in "$@"' loop,
so you would end up with running this script multiple times.

scripts/prune-kernel -r  5.2-rc1  5.2-rc1
scripts/prune-kernel -r  5.2-rc2  5.2-rc2
scripts/prune-kernel -r  5.2-rc3  5.2-rc3


What is funny is, it takes the kernel_version and modules_version
separately.
And now it requires -r option for the default behavior.
I see nothing cool overall.



J. Bruce Fields suggested:
"But if somebody does actually use it as-is, it'd be nicer to keep the
current behavior and add an option ("-i" or something) for the
interactive behavior."


I want to see a patch if and only if
you can add -i without intrusively changing the current code.


Masahiro




> >
> >BTW.
> >Bruce,
> >Does the current script expect RHEL or something?
> >I do not see 'new-kernel-pkg' on my Ubuntu machine.
> >
> >It would still work with 'new-kernel-pkg: command not found'
> >warning.
> >
> >We could bypass it if we like.
> >
> >command -v new-kernel-pkg && new-kernel-pkg --remove $f
> >
> >
> >
> >Masahiro Yamada
> >
> >
> >
> >> >
> >> > Tested-by: Randy Dunlap <rdunlap@infradead.org>
> >> >
> >> >
> >> > > diff --git a/scripts/prune-kernel b/scripts/prune-kernel
> >> > > index e8aa940bc0a9..01d0778db71f 100755
> >> > > --- a/scripts/prune-kernel
> >> > > +++ b/scripts/prune-kernel
> >> > > @@ -1,21 +1,69 @@
> >> > >  #!/bin/bash
> >> > >  # SPDX-License-Identifier: GPL-2.0
> >> > > +#This script will remove old kernels and modules directory related to it.
> >> > > +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
> >> > > +# "-h" or "--help" show how to use this script or show without parameter.
> >> > > +#"-i" or "--interactive" show how to remove interactively.
> >> > > +
> >> > > +flag=$1
> >> > > +kernel_version=$2
> >> > > +modules_version=$3
> >> > > +boot_dir=/boot
> >> > > +modules_dir=/lib/modules
> >> > > +
> >> > > +remove_old_kernel() {
> >> > > +   cd $boot_dir
> >> > > +   rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
> >> > > +   return 0
> >> > > +}
> >> > > +
> >> > > +remove_old_modules_dir() {
> >> > > +   cd $modules_dir
> >> > > +   rm -rf $modules_version
> >> > > +   return 0
> >> > > +}
> >> > > +
> >> > > +usage() {
> >> > > +   printf "Usage: $(basename $0) [-ri]\n"
> >> > > +   printf "\n -r or --remove  kernel_version modules_version\n"
> >> > > +   printf "\n -i or --interactive do as interactive way\n"
> >> > > +   return 0
> >> > > +}
> >> > > +
> >> > > +case "$flag" in
> >> > > +   -i | --interactive)
> >> > > +           printf "\nEnter kernel version to remove or blank/empty to exit:"
> >> > > +           read kernel_version
> >> > > +           if [[ $kernel_version != "" ]]; then
> >> > > +                   remove_old_kernel
> >> > > +                   printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
> >> >
> >> > space after ':'
> >> >
> >> > drop one \n above.
> >> >
> >> > > +                   printf "Please give the full modules directory name to remove:"
> >> > > +                   read modules_version
> >> > > +                   if [[ $modules_version != "" ]]; then
> >> > > +                           remove_old_modules_dir
> >> > > +                           printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
> >> >
> >> > space after ':'
> >> >
> >> > drop one \n above.
> >> >
> >> > > +                   else
> >> > > +                           exit 1
> >> > > +                   fi
> >> > > +           fi
> >> > > +           ;;
> >> > > +   -h | --help)
> >> > > +           usage
> >> > > +           exit 0
> >> > > +           ;;
> >> > > +   -r | --remove)
> >> > > +           if [[ $# -ne 3 ]]; then
> >> > > +                    printf "You need to provide kernel version and modules directory name.\n"
> >> > > +                    exit 1
> >> > > +            else
> >> > > +                    remove_old_kernel
> >> > > +                    remove_old_modules_dir
> >> > > +           fi
> >> > > +           ;;
> >> > > +   *)
> >> > > +           usage
> >> > > +           exit 1
> >> > > +           ;;
> >> > > +esac
> >> > >
> >> > > -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
> >> > > -# again, /boot and /lib/modules/ eventually fill up.
> >> > > -# Dumb script to purge that stuff:
> >> > >
> >> >
> >> > OK, the former script's loop is removed.. good.
> >> > But the 2 preceding blank lines are not removed, so the script
> >> > now ends with 2 unnecessary blank lines.
> >> >
> >> > > -for f in "$@"
> >> > > -do
> >> > > -        if rpm -qf "/lib/modules/$f" >/dev/null; then
> >> > > -                echo "keeping $f (installed from rpm)"
> >> > > -        elif [ $(uname -r) = "$f" ]; then
> >> > > -                echo "keeping $f (running kernel) "
> >> > > -        else
> >> > > -                echo "removing $f"
> >> > > -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
> >> > > -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
> >> > > -                rm -rf "/lib/modules/$f"
> >> > > -                new-kernel-pkg --remove $f
> >> > > -        fi
> >> > > -done
> >> > > --
> >> >
> >> >
> >> > --
> >> > ~Randy
> >
> >
> >
> >--
> >Best Regards
> >
> >Masahiro Yamada
Bhaskar Chowdhury Nov. 6, 2019, 4:29 a.m. UTC | #9
On 13:03 Wed 06 Nov 2019, Masahiro Yamada wrote:
>On Wed, Nov 6, 2019 at 12:10 PM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
>>
>> On 11:53 Wed 06 Nov 2019, Masahiro Yamada wrote:
>> >On Tue, Nov 5, 2019 at 11:32 AM J. Bruce Fields <bfields@fieldses.org> wrote:
>> >>
>> >> On Mon, Nov 04, 2019 at 06:03:13PM -0800, Randy Dunlap wrote:
>> >> > On 11/1/19 11:30 PM, Bhaskar Chowdhury wrote:
>> >> > > This patch allow you to remove old kernels and associated modules
>> >> > > directory from the system.You can do it at once with the -r flag
>> >> > > and interactively with the -i flag.
>> >> > >
>> >> > > Signed-off-by: Bhaskar Chowdhury <unixbhaskar@gmail.com>
>> >> > > ---
>> >> > >  scripts/prune-kernel | 82 +++++++++++++++++++++++++++++++++++---------
>> >> > >  1 file changed, 65 insertions(+), 17 deletions(-)
>> >> >
>> >> > Hi,
>> >> > I believe that this script now does what the patch author intends it to do.
>> >> > It does have a few whitespace issues, but no big deals.  (see below)
>> >>
>> >> My original comment stands: looks like it prompts for full module path
>> >> and kernel versions which means it's no more convenient than just doing
>> >> an "ls" and then removing the ones you want to.  (In fact, with "rm"
>> >> you'd also get the benefit of tab completion....)
>> >>
>> >> It's quite different from the original script and I don't really see the
>> >> advantage.
>> >>
>> >> --b.
>> >
>> >I am with Bruce.
>> >
>> >This patch is trying to replace everything
>> >with worse code.
>> Well,Masahiro,
>> I won't mind dropping the idea, which you already concluded.But, would
>> you care to let me know how worse the code seems to be????
>
>
>As far as I understood this script,
>it is useful to delete stale versions with a single command.
>
>scripts/prune-kernel  5.2-rc1  5.2-rc2  5.2-rc3
>
>
>This patch is dropping the 'for f in "$@"' loop,
>so you would end up with running this script multiple times.
>
>scripts/prune-kernel -r  5.2-rc1  5.2-rc1
>scripts/prune-kernel -r  5.2-rc2  5.2-rc2
>scripts/prune-kernel -r  5.2-rc3  5.2-rc3
>
Yes, true. You don't want all the stale kernels to be discarded at once,
do you???
>
>What is funny is, it takes the kernel_version and modules_version
>separately.
Lack of farsight of mine ...will take your suggestion. Should have
realized it before, but was writing for different purpose.

>And now it requires -r option for the default behavior.
Because other flags are involved and they do different things.

>I see nothing cool overall.
>
Meh... I am interpreting you "cool" literal way...which you certainly
didn't mean it...do you??
>
>
>J. Bruce Fields suggested:
>"But if somebody does actually use it as-is, it'd be nicer to keep the
>current behavior and add an option ("-i" or something) for the
>interactive behavior."
>
Yes, that's true ...and now I understood. On the contrary ,if I
recollect properly, Bruce ,once told that he won't if do something which
will be useful to the wider users..not sure that stands anymore.
>
>I want to see a patch if and only if
>you can add -i without intrusively changing the current code.
>
Hopefully , you wish get fulfilled sooner than later.
>
>Masahiro
>
>
>
Bhaskar
>
>> >
>> >BTW.
>> >Bruce,
>> >Does the current script expect RHEL or something?
>> >I do not see 'new-kernel-pkg' on my Ubuntu machine.
>> >
>> >It would still work with 'new-kernel-pkg: command not found'
>> >warning.
>> >
>> >We could bypass it if we like.
>> >
>> >command -v new-kernel-pkg && new-kernel-pkg --remove $f
>> >
>> >
>> >
>> >Masahiro Yamada
>> >
>> >
>> >
>> >> >
>> >> > Tested-by: Randy Dunlap <rdunlap@infradead.org>
>> >> >
>> >> >
>> >> > > diff --git a/scripts/prune-kernel b/scripts/prune-kernel
>> >> > > index e8aa940bc0a9..01d0778db71f 100755
>> >> > > --- a/scripts/prune-kernel
>> >> > > +++ b/scripts/prune-kernel
>> >> > > @@ -1,21 +1,69 @@
>> >> > >  #!/bin/bash
>> >> > >  # SPDX-License-Identifier: GPL-2.0
>> >> > > +#This script will remove old kernels and modules directory related to it.
>> >> > > +#"-r" or "--remove" show how to silently remove old kernel and modules dir.
>> >> > > +# "-h" or "--help" show how to use this script or show without parameter.
>> >> > > +#"-i" or "--interactive" show how to remove interactively.
>> >> > > +
>> >> > > +flag=$1
>> >> > > +kernel_version=$2
>> >> > > +modules_version=$3
>> >> > > +boot_dir=/boot
>> >> > > +modules_dir=/lib/modules
>> >> > > +
>> >> > > +remove_old_kernel() {
>> >> > > +   cd $boot_dir
>> >> > > +   rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
>> >> > > +   return 0
>> >> > > +}
>> >> > > +
>> >> > > +remove_old_modules_dir() {
>> >> > > +   cd $modules_dir
>> >> > > +   rm -rf $modules_version
>> >> > > +   return 0
>> >> > > +}
>> >> > > +
>> >> > > +usage() {
>> >> > > +   printf "Usage: $(basename $0) [-ri]\n"
>> >> > > +   printf "\n -r or --remove  kernel_version modules_version\n"
>> >> > > +   printf "\n -i or --interactive do as interactive way\n"
>> >> > > +   return 0
>> >> > > +}
>> >> > > +
>> >> > > +case "$flag" in
>> >> > > +   -i | --interactive)
>> >> > > +           printf "\nEnter kernel version to remove or blank/empty to exit:"
>> >> > > +           read kernel_version
>> >> > > +           if [[ $kernel_version != "" ]]; then
>> >> > > +                   remove_old_kernel
>> >> > > +                   printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
>> >> >
>> >> > space after ':'
>> >> >
>> >> > drop one \n above.
>> >> >
>> >> > > +                   printf "Please give the full modules directory name to remove:"
>> >> > > +                   read modules_version
>> >> > > +                   if [[ $modules_version != "" ]]; then
>> >> > > +                           remove_old_modules_dir
>> >> > > +                           printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
>> >> >
>> >> > space after ':'
>> >> >
>> >> > drop one \n above.
>> >> >
>> >> > > +                   else
>> >> > > +                           exit 1
>> >> > > +                   fi
>> >> > > +           fi
>> >> > > +           ;;
>> >> > > +   -h | --help)
>> >> > > +           usage
>> >> > > +           exit 0
>> >> > > +           ;;
>> >> > > +   -r | --remove)
>> >> > > +           if [[ $# -ne 3 ]]; then
>> >> > > +                    printf "You need to provide kernel version and modules directory name.\n"
>> >> > > +                    exit 1
>> >> > > +            else
>> >> > > +                    remove_old_kernel
>> >> > > +                    remove_old_modules_dir
>> >> > > +           fi
>> >> > > +           ;;
>> >> > > +   *)
>> >> > > +           usage
>> >> > > +           exit 1
>> >> > > +           ;;
>> >> > > +esac
>> >> > >
>> >> > > -# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
>> >> > > -# again, /boot and /lib/modules/ eventually fill up.
>> >> > > -# Dumb script to purge that stuff:
>> >> > >
>> >> >
>> >> > OK, the former script's loop is removed.. good.
>> >> > But the 2 preceding blank lines are not removed, so the script
>> >> > now ends with 2 unnecessary blank lines.
>> >> >
>> >> > > -for f in "$@"
>> >> > > -do
>> >> > > -        if rpm -qf "/lib/modules/$f" >/dev/null; then
>> >> > > -                echo "keeping $f (installed from rpm)"
>> >> > > -        elif [ $(uname -r) = "$f" ]; then
>> >> > > -                echo "keeping $f (running kernel) "
>> >> > > -        else
>> >> > > -                echo "removing $f"
>> >> > > -                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
>> >> > > -                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
>> >> > > -                rm -rf "/lib/modules/$f"
>> >> > > -                new-kernel-pkg --remove $f
>> >> > > -        fi
>> >> > > -done
>> >> > > --
>> >> >
>> >> >
>> >> > --
>> >> > ~Randy
>> >
>> >
>> >
>> >--
>> >Best Regards
>> >
>> >Masahiro Yamada
>
>
>
>-- 
>Best Regards
>Masahiro Yamada
J. Bruce Fields Nov. 6, 2019, 4:31 a.m. UTC | #10
On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
> BTW.
> Bruce,
> Does the current script expect RHEL or something?
> I do not see 'new-kernel-pkg' on my Ubuntu machine.

I test on Fedora.  Looks like on recent Fedora that's only provided by
an rpm "grubby-deprecated", which is an inauspicious name....

I think maybe you're supposed to use "grubby" itself now.  Do you have
that?

> It would still work with 'new-kernel-pkg: command not found'
> warning.
> 
> We could bypass it if we like.
> 
> command -v new-kernel-pkg && new-kernel-pkg --remove $f

Looks like it's what updates the grub configuration, which is probably a
nice thing to do if you can.

--b.
Randy Dunlap Nov. 6, 2019, 4:32 a.m. UTC | #11
On 11/5/19 8:31 PM, J. Bruce Fields wrote:
> On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
>> BTW.
>> Bruce,
>> Does the current script expect RHEL or something?
>> I do not see 'new-kernel-pkg' on my Ubuntu machine.
> 
> I test on Fedora.  Looks like on recent Fedora that's only provided by
> an rpm "grubby-deprecated", which is an inauspicious name....
> 
> I think maybe you're supposed to use "grubby" itself now.  Do you have
> that?
> 
>> It would still work with 'new-kernel-pkg: command not found'
>> warning.
>>
>> We could bypass it if we like.
>>
>> command -v new-kernel-pkg && new-kernel-pkg --remove $f
> 
> Looks like it's what updates the grub configuration, which is probably a
> nice thing to do if you can.

on openSUSE, I don't have new-kernel-pkg or grubby.
Bhaskar Chowdhury Nov. 6, 2019, 4:42 a.m. UTC | #12
On 23:31 Tue 05 Nov 2019, J. Bruce Fields wrote:
>On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
>> BTW.
>> Bruce,
>> Does the current script expect RHEL or something?
>> I do not see 'new-kernel-pkg' on my Ubuntu machine.
>
>I test on Fedora.  Looks like on recent Fedora that's only provided by
>an rpm "grubby-deprecated", which is an inauspicious name....
>
>I think maybe you're supposed to use "grubby" itself now.  Do you have
>that?
>
>> It would still work with 'new-kernel-pkg: command not found'
>> warning.
>> 
>> We could bypass it if we like.
>> 
>> command -v new-kernel-pkg && new-kernel-pkg --remove $f
>
>Looks like it's what updates the grub configuration, which is probably a
>nice thing to do if you can.
>
>--b.

Bruce,

Two things,

If the system doesn't run grub , how the fallback policy???

This binary "new-kernel-pkg" also missing in other systems too...I can
confirm that... i.e gentoo,slackware,

So , you are only targeting the rpm based system???? 

~
Bhaskar
J. Bruce Fields Nov. 6, 2019, 7:30 p.m. UTC | #13
On Wed, Nov 06, 2019 at 10:12:26AM +0530, Bhaskar Chowdhury wrote:
> On 23:31 Tue 05 Nov 2019, J. Bruce Fields wrote:
> >On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
> >>BTW.
> >>Bruce,
> >>Does the current script expect RHEL or something?
> >>I do not see 'new-kernel-pkg' on my Ubuntu machine.
> >
> >I test on Fedora.  Looks like on recent Fedora that's only provided by
> >an rpm "grubby-deprecated", which is an inauspicious name....
> >
> >I think maybe you're supposed to use "grubby" itself now.  Do you have
> >that?
> >
> >>It would still work with 'new-kernel-pkg: command not found'
> >>warning.
> >>
> >>We could bypass it if we like.
> >>
> >>command -v new-kernel-pkg && new-kernel-pkg --remove $f
> >
> >Looks like it's what updates the grub configuration, which is probably a
> >nice thing to do if you can.
> >
> >--b.
> 
> Bruce,
> 
> Two things,
> 
> If the system doesn't run grub , how the fallback policy???
> 
> This binary "new-kernel-pkg" also missing in other systems too...I can
> confirm that... i.e gentoo,slackware,
> 
> So , you are only targeting the rpm based system????

It's just what I happen to use.  If someone wants to make it work
elsewhere that'd be great, as long as we don't break what already works.

I think Debian uses grub2-mkconfig?  Might be OK for Fedora too, I
dunno.

--b.
Bhaskar Chowdhury Nov. 6, 2019, 10:39 p.m. UTC | #14
On 14:30 Wed 06 Nov 2019, J. Bruce Fields wrote:
>On Wed, Nov 06, 2019 at 10:12:26AM +0530, Bhaskar Chowdhury wrote:
>> On 23:31 Tue 05 Nov 2019, J. Bruce Fields wrote:
>> >On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
>> >>BTW.
>> >>Bruce,
>> >>Does the current script expect RHEL or something?
>> >>I do not see 'new-kernel-pkg' on my Ubuntu machine.
>> >
>> >I test on Fedora.  Looks like on recent Fedora that's only provided by
>> >an rpm "grubby-deprecated", which is an inauspicious name....
>> >
>> >I think maybe you're supposed to use "grubby" itself now.  Do you have
>> >that?
>> >
>> >>It would still work with 'new-kernel-pkg: command not found'
>> >>warning.
>> >>
>> >>We could bypass it if we like.
>> >>
>> >>command -v new-kernel-pkg && new-kernel-pkg --remove $f
>> >
>> >Looks like it's what updates the grub configuration, which is probably a
>> >nice thing to do if you can.
>> >
>> >--b.
>> 
>> Bruce,
>> 
>> Two things,
>> 
>> If the system doesn't run grub , how the fallback policy???
>> 
>> This binary "new-kernel-pkg" also missing in other systems too...I can
>> confirm that... i.e gentoo,slackware,
>> 
>> So , you are only targeting the rpm based system????
>
>It's just what I happen to use.  If someone wants to make it work
>elsewhere that'd be great, as long as we don't break what already works.
>
>I think Debian uses grub2-mkconfig?  Might be OK for Fedora too, I
>dunno.
>
>--b.

Okay , thanks for the input. I was trying to write something in
generalize way , that is why my code spins off.And if you see the
subject line of my very first attempt to patch written was "removing
old kernels and modules dir in selective way"... that was it.

Now, there are plenty of distros around, not only rpm based one(yes I do
agree that ,you wrote it while using and testing on it, but that is
limited in nature),the broader user base might be using something else.

we simply can not restrict it to certain packaging version or several
packaging versions of selected distros. We are making and building this
(worth an effort) to make it as generalized as possible. 

Importantly I was only thinking of people who put the stuff in standard
places in the FSH and use it. I might be wrong.

As I have said it before, I was no way trying to bypass your work ,but
it seems very limited in nature to adopted. So trying to widen the
spectrum.

I am trying to incorporating both the pole, different kind user base in
mind, like you , who don't like to be prompted for this operation and
assuming things should go well, and you are right.

On the other hand , I am kinda guy , sometime I need to know what is
going on, so the prompting. 

Well, I have never taken into account about modifying the bootloader
config by looking at your work. Had I been, I would have done it already
and it would be extremely trivial in nature.

Now, Grub, no doubt it's fantastic piece of software, but complexity
is paramount with it. Don't you think so???  I HAVE NOTHING AGAINST
GRUB!

I have personally stops using it for years and using something very
rudimentary and simple and useful. That is because I know what I am
doing and my system well. 

Caveat emptor: that was me, not every one else in the wild. Grub is used
by the most distro by default,everybody knows it,but certainly not the
norm.

I would love to give it a stab again and if you better people feel it is
necessary, but I need some concrete understanding from you,Masahiro and
Randy(who is helping me actively).

Say, You people might come up ,

We need these :

a)
b)
c) 

and we don't need these:

a)
b)
c)


My two cents! kindly, flame me with your thoughts.

~Bhaskar
Masahiro Yamada Nov. 9, 2019, 7:25 a.m. UTC | #15
On Thu, Nov 7, 2019 at 7:39 AM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
>
> On 14:30 Wed 06 Nov 2019, J. Bruce Fields wrote:
> >On Wed, Nov 06, 2019 at 10:12:26AM +0530, Bhaskar Chowdhury wrote:
> >> On 23:31 Tue 05 Nov 2019, J. Bruce Fields wrote:
> >> >On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
> >> >>BTW.
> >> >>Bruce,
> >> >>Does the current script expect RHEL or something?
> >> >>I do not see 'new-kernel-pkg' on my Ubuntu machine.
> >> >
> >> >I test on Fedora.  Looks like on recent Fedora that's only provided by
> >> >an rpm "grubby-deprecated", which is an inauspicious name....
> >> >
> >> >I think maybe you're supposed to use "grubby" itself now.  Do you have
> >> >that?
> >> >
> >> >>It would still work with 'new-kernel-pkg: command not found'
> >> >>warning.
> >> >>
> >> >>We could bypass it if we like.
> >> >>
> >> >>command -v new-kernel-pkg && new-kernel-pkg --remove $f
> >> >
> >> >Looks like it's what updates the grub configuration, which is probably a
> >> >nice thing to do if you can.
> >> >
> >> >--b.
> >>
> >> Bruce,
> >>
> >> Two things,
> >>
> >> If the system doesn't run grub , how the fallback policy???
> >>
> >> This binary "new-kernel-pkg" also missing in other systems too...I can
> >> confirm that... i.e gentoo,slackware,
> >>
> >> So , you are only targeting the rpm based system????
> >
> >It's just what I happen to use.  If someone wants to make it work
> >elsewhere that'd be great, as long as we don't break what already works.
> >
> >I think Debian uses grub2-mkconfig?  Might be OK for Fedora too, I
> >dunno.
> >
> >--b.
>
> Okay , thanks for the input. I was trying to write something in
> generalize way , that is why my code spins off.And if you see the
> subject line of my very first attempt to patch written was "removing
> old kernels and modules dir in selective way"... that was it.
>
> Now, there are plenty of distros around, not only rpm based one(yes I do
> agree that ,you wrote it while using and testing on it, but that is
> limited in nature),the broader user base might be using something else.
>
> we simply can not restrict it to certain packaging version or several
> packaging versions of selected distros. We are making and building this
> (worth an effort) to make it as generalized as possible.
>
> Importantly I was only thinking of people who put the stuff in standard
> places in the FSH and use it. I might be wrong.
>
> As I have said it before, I was no way trying to bypass your work ,but
> it seems very limited in nature to adopted. So trying to widen the
> spectrum.
>
> I am trying to incorporating both the pole, different kind user base in
> mind, like you , who don't like to be prompted for this operation and
> assuming things should go well, and you are right.
>
> On the other hand , I am kinda guy , sometime I need to know what is
> going on, so the prompting.
>
> Well, I have never taken into account about modifying the bootloader
> config by looking at your work. Had I been, I would have done it already
> and it would be extremely trivial in nature.
>
> Now, Grub, no doubt it's fantastic piece of software, but complexity
> is paramount with it. Don't you think so???  I HAVE NOTHING AGAINST
> GRUB!
>
> I have personally stops using it for years and using something very
> rudimentary and simple and useful. That is because I know what I am
> doing and my system well.
>
> Caveat emptor: that was me, not every one else in the wild. Grub is used
> by the most distro by default,everybody knows it,but certainly not the
> norm.
>
> I would love to give it a stab again and if you better people feel it is
> necessary, but I need some concrete understanding from you,Masahiro and
> Randy(who is helping me actively).
>
> Say, You people might come up ,
>
> We need these :
>
> a)
> b)
> c)
>
> and we don't need these:
>
> a)
> b)
> c)
>
>
> My two cents! kindly, flame me with your thoughts.


Honestly, I did not even know this script
before you submitted the patch.

I prune stale kernel/modules with my own script,
and I guess people do similar to meet their demand.

I am not sure how many people are using this.
If somebody is passionate to improve this script
in a simple way, that is fine, but
I do not want to see messy code for covering various use-cases.
Bhaskar Chowdhury Nov. 9, 2019, 11:13 a.m. UTC | #16
On 16:25 Sat 09 Nov 2019, Masahiro Yamada wrote:
>On Thu, Nov 7, 2019 at 7:39 AM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
>>
>> On 14:30 Wed 06 Nov 2019, J. Bruce Fields wrote:
>> >On Wed, Nov 06, 2019 at 10:12:26AM +0530, Bhaskar Chowdhury wrote:
>> >> On 23:31 Tue 05 Nov 2019, J. Bruce Fields wrote:
>> >> >On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
>> >> >>BTW.
>> >> >>Bruce,
>> >> >>Does the current script expect RHEL or something?
>> >> >>I do not see 'new-kernel-pkg' on my Ubuntu machine.
>> >> >
>> >> >I test on Fedora.  Looks like on recent Fedora that's only provided by
>> >> >an rpm "grubby-deprecated", which is an inauspicious name....
>> >> >
>> >> >I think maybe you're supposed to use "grubby" itself now.  Do you have
>> >> >that?
>> >> >
>> >> >>It would still work with 'new-kernel-pkg: command not found'
>> >> >>warning.
>> >> >>
>> >> >>We could bypass it if we like.
>> >> >>
>> >> >>command -v new-kernel-pkg && new-kernel-pkg --remove $f
>> >> >
>> >> >Looks like it's what updates the grub configuration, which is probably a
>> >> >nice thing to do if you can.
>> >> >
>> >> >--b.
>> >>
>> >> Bruce,
>> >>
>> >> Two things,
>> >>
>> >> If the system doesn't run grub , how the fallback policy???
>> >>
>> >> This binary "new-kernel-pkg" also missing in other systems too...I can
>> >> confirm that... i.e gentoo,slackware,
>> >>
>> >> So , you are only targeting the rpm based system????
>> >
>> >It's just what I happen to use.  If someone wants to make it work
>> >elsewhere that'd be great, as long as we don't break what already works.
>> >
>> >I think Debian uses grub2-mkconfig?  Might be OK for Fedora too, I
>> >dunno.
>> >
>> >--b.
>>
>> Okay , thanks for the input. I was trying to write something in
>> generalize way , that is why my code spins off.And if you see the
>> subject line of my very first attempt to patch written was "removing
>> old kernels and modules dir in selective way"... that was it.
>>
>> Now, there are plenty of distros around, not only rpm based one(yes I do
>> agree that ,you wrote it while using and testing on it, but that is
>> limited in nature),the broader user base might be using something else.
>>
>> we simply can not restrict it to certain packaging version or several
>> packaging versions of selected distros. We are making and building this
>> (worth an effort) to make it as generalized as possible.
>>
>> Importantly I was only thinking of people who put the stuff in standard
>> places in the FSH and use it. I might be wrong.
>>
>> As I have said it before, I was no way trying to bypass your work ,but
>> it seems very limited in nature to adopted. So trying to widen the
>> spectrum.
>>
>> I am trying to incorporating both the pole, different kind user base in
>> mind, like you , who don't like to be prompted for this operation and
>> assuming things should go well, and you are right.
>>
>> On the other hand , I am kinda guy , sometime I need to know what is
>> going on, so the prompting.
>>
>> Well, I have never taken into account about modifying the bootloader
>> config by looking at your work. Had I been, I would have done it already
>> and it would be extremely trivial in nature.
>>
>> Now, Grub, no doubt it's fantastic piece of software, but complexity
>> is paramount with it. Don't you think so???  I HAVE NOTHING AGAINST
>> GRUB!
>>
>> I have personally stops using it for years and using something very
>> rudimentary and simple and useful. That is because I know what I am
>> doing and my system well.
>>
>> Caveat emptor: that was me, not every one else in the wild. Grub is used
>> by the most distro by default,everybody knows it,but certainly not the
>> norm.
>>
>> I would love to give it a stab again and if you better people feel it is
>> necessary, but I need some concrete understanding from you,Masahiro and
>> Randy(who is helping me actively).
>>
>> Say, You people might come up ,
>>
>> We need these :
>>
>> a)
>> b)
>> c)
>>
>> and we don't need these:
>>
>> a)
>> b)
>> c)
>>
>>
>> My two cents! kindly, flame me with your thoughts.
>
>
>Honestly, I did not even know this script
>before you submitted the patch.
>
:)

>I prune stale kernel/modules with my own script,
>and I guess people do similar to meet their demand.
>
I do the same.

>I am not sure how many people are using this.
Only people who look up in the kernel source scripts directory , nobody
else for sure.
>If somebody is passionate to improve this script
>in a simple way, that is fine, but
>I do not want to see messy code for covering various use-cases.
Agreed. That is why need guideline from you people(You, Randy and Bruce
needs to tell me clearly), like what I mentioned, we can do
these and we can not do these. I am asking because you people have had more
exposure ,so might come up with some valid points to build up.
>
>-- 
>Best Regards
>Masahiro Yamada

Thanks,
Bhaskar
Masahiro Yamada Nov. 15, 2019, 1:58 a.m. UTC | #17
On Sat, Nov 9, 2019 at 8:14 PM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
>
> On 16:25 Sat 09 Nov 2019, Masahiro Yamada wrote:
> >On Thu, Nov 7, 2019 at 7:39 AM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
> >>
> >> On 14:30 Wed 06 Nov 2019, J. Bruce Fields wrote:
> >> >On Wed, Nov 06, 2019 at 10:12:26AM +0530, Bhaskar Chowdhury wrote:
> >> >> On 23:31 Tue 05 Nov 2019, J. Bruce Fields wrote:
> >> >> >On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
> >> >> >>BTW.
> >> >> >>Bruce,
> >> >> >>Does the current script expect RHEL or something?
> >> >> >>I do not see 'new-kernel-pkg' on my Ubuntu machine.
> >> >> >
> >> >> >I test on Fedora.  Looks like on recent Fedora that's only provided by
> >> >> >an rpm "grubby-deprecated", which is an inauspicious name....
> >> >> >
> >> >> >I think maybe you're supposed to use "grubby" itself now.  Do you have
> >> >> >that?
> >> >> >
> >> >> >>It would still work with 'new-kernel-pkg: command not found'
> >> >> >>warning.
> >> >> >>
> >> >> >>We could bypass it if we like.
> >> >> >>
> >> >> >>command -v new-kernel-pkg && new-kernel-pkg --remove $f
> >> >> >
> >> >> >Looks like it's what updates the grub configuration, which is probably a
> >> >> >nice thing to do if you can.
> >> >> >
> >> >> >--b.
> >> >>
> >> >> Bruce,
> >> >>
> >> >> Two things,
> >> >>
> >> >> If the system doesn't run grub , how the fallback policy???
> >> >>
> >> >> This binary "new-kernel-pkg" also missing in other systems too...I can
> >> >> confirm that... i.e gentoo,slackware,
> >> >>
> >> >> So , you are only targeting the rpm based system????
> >> >
> >> >It's just what I happen to use.  If someone wants to make it work
> >> >elsewhere that'd be great, as long as we don't break what already works.
> >> >
> >> >I think Debian uses grub2-mkconfig?  Might be OK for Fedora too, I
> >> >dunno.
> >> >
> >> >--b.
> >>
> >> Okay , thanks for the input. I was trying to write something in
> >> generalize way , that is why my code spins off.And if you see the
> >> subject line of my very first attempt to patch written was "removing
> >> old kernels and modules dir in selective way"... that was it.
> >>
> >> Now, there are plenty of distros around, not only rpm based one(yes I do
> >> agree that ,you wrote it while using and testing on it, but that is
> >> limited in nature),the broader user base might be using something else.
> >>
> >> we simply can not restrict it to certain packaging version or several
> >> packaging versions of selected distros. We are making and building this
> >> (worth an effort) to make it as generalized as possible.
> >>
> >> Importantly I was only thinking of people who put the stuff in standard
> >> places in the FSH and use it. I might be wrong.
> >>
> >> As I have said it before, I was no way trying to bypass your work ,but
> >> it seems very limited in nature to adopted. So trying to widen the
> >> spectrum.
> >>
> >> I am trying to incorporating both the pole, different kind user base in
> >> mind, like you , who don't like to be prompted for this operation and
> >> assuming things should go well, and you are right.
> >>
> >> On the other hand , I am kinda guy , sometime I need to know what is
> >> going on, so the prompting.
> >>
> >> Well, I have never taken into account about modifying the bootloader
> >> config by looking at your work. Had I been, I would have done it already
> >> and it would be extremely trivial in nature.
> >>
> >> Now, Grub, no doubt it's fantastic piece of software, but complexity
> >> is paramount with it. Don't you think so???  I HAVE NOTHING AGAINST
> >> GRUB!
> >>
> >> I have personally stops using it for years and using something very
> >> rudimentary and simple and useful. That is because I know what I am
> >> doing and my system well.
> >>
> >> Caveat emptor: that was me, not every one else in the wild. Grub is used
> >> by the most distro by default,everybody knows it,but certainly not the
> >> norm.
> >>
> >> I would love to give it a stab again and if you better people feel it is
> >> necessary, but I need some concrete understanding from you,Masahiro and
> >> Randy(who is helping me actively).
> >>
> >> Say, You people might come up ,
> >>
> >> We need these :
> >>
> >> a)
> >> b)
> >> c)
> >>
> >> and we don't need these:
> >>
> >> a)
> >> b)
> >> c)
> >>
> >>
> >> My two cents! kindly, flame me with your thoughts.
> >
> >
> >Honestly, I did not even know this script
> >before you submitted the patch.
> >
> :)
>
> >I prune stale kernel/modules with my own script,
> >and I guess people do similar to meet their demand.
> >
> I do the same.
>
> >I am not sure how many people are using this.
> Only people who look up in the kernel source scripts directory , nobody
> else for sure.
> >If somebody is passionate to improve this script
> >in a simple way, that is fine, but
> >I do not want to see messy code for covering various use-cases.
> Agreed. That is why need guideline from you people(You, Randy and Bruce
> needs to tell me clearly), like what I mentioned, we can do
> these and we can not do these. I am asking because you people have had more
> exposure ,so might come up with some valid points to build up.
> >

We have two topics here.

[1]  add the interactive option
[2]  do nice things for non-rpm systems


They should be done by separate patches.

I think [1] is easy to do in a few liners.


For [2], I am not sure how well it goes
until I see an actual patch.
Bhaskar Chowdhury Nov. 15, 2019, 3:21 p.m. UTC | #18
On 10:58 Fri 15 Nov 2019, Masahiro Yamada wrote:
>On Sat, Nov 9, 2019 at 8:14 PM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
>>
>> On 16:25 Sat 09 Nov 2019, Masahiro Yamada wrote:
>> >On Thu, Nov 7, 2019 at 7:39 AM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
>> >>
>> >> On 14:30 Wed 06 Nov 2019, J. Bruce Fields wrote:
>> >> >On Wed, Nov 06, 2019 at 10:12:26AM +0530, Bhaskar Chowdhury wrote:
>> >> >> On 23:31 Tue 05 Nov 2019, J. Bruce Fields wrote:
>> >> >> >On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
>> >> >> >>BTW.
>> >> >> >>Bruce,
>> >> >> >>Does the current script expect RHEL or something?
>> >> >> >>I do not see 'new-kernel-pkg' on my Ubuntu machine.
>> >> >> >
>> >> >> >I test on Fedora.  Looks like on recent Fedora that's only provided by
>> >> >> >an rpm "grubby-deprecated", which is an inauspicious name....
>> >> >> >
>> >> >> >I think maybe you're supposed to use "grubby" itself now.  Do you have
>> >> >> >that?
>> >> >> >
>> >> >> >>It would still work with 'new-kernel-pkg: command not found'
>> >> >> >>warning.
>> >> >> >>
>> >> >> >>We could bypass it if we like.
>> >> >> >>
>> >> >> >>command -v new-kernel-pkg && new-kernel-pkg --remove $f
>> >> >> >
>> >> >> >Looks like it's what updates the grub configuration, which is probably a
>> >> >> >nice thing to do if you can.
>> >> >> >
>> >> >> >--b.
>> >> >>
>> >> >> Bruce,
>> >> >>
>> >> >> Two things,
>> >> >>
>> >> >> If the system doesn't run grub , how the fallback policy???
>> >> >>
>> >> >> This binary "new-kernel-pkg" also missing in other systems too...I can
>> >> >> confirm that... i.e gentoo,slackware,
>> >> >>
>> >> >> So , you are only targeting the rpm based system????
>> >> >
>> >> >It's just what I happen to use.  If someone wants to make it work
>> >> >elsewhere that'd be great, as long as we don't break what already works.
>> >> >
>> >> >I think Debian uses grub2-mkconfig?  Might be OK for Fedora too, I
>> >> >dunno.
>> >> >
>> >> >--b.
>> >>
>> >> Okay , thanks for the input. I was trying to write something in
>> >> generalize way , that is why my code spins off.And if you see the
>> >> subject line of my very first attempt to patch written was "removing
>> >> old kernels and modules dir in selective way"... that was it.
>> >>
>> >> Now, there are plenty of distros around, not only rpm based one(yes I do
>> >> agree that ,you wrote it while using and testing on it, but that is
>> >> limited in nature),the broader user base might be using something else.
>> >>
>> >> we simply can not restrict it to certain packaging version or several
>> >> packaging versions of selected distros. We are making and building this
>> >> (worth an effort) to make it as generalized as possible.
>> >>
>> >> Importantly I was only thinking of people who put the stuff in standard
>> >> places in the FSH and use it. I might be wrong.
>> >>
>> >> As I have said it before, I was no way trying to bypass your work ,but
>> >> it seems very limited in nature to adopted. So trying to widen the
>> >> spectrum.
>> >>
>> >> I am trying to incorporating both the pole, different kind user base in
>> >> mind, like you , who don't like to be prompted for this operation and
>> >> assuming things should go well, and you are right.
>> >>
>> >> On the other hand , I am kinda guy , sometime I need to know what is
>> >> going on, so the prompting.
>> >>
>> >> Well, I have never taken into account about modifying the bootloader
>> >> config by looking at your work. Had I been, I would have done it already
>> >> and it would be extremely trivial in nature.
>> >>
>> >> Now, Grub, no doubt it's fantastic piece of software, but complexity
>> >> is paramount with it. Don't you think so???  I HAVE NOTHING AGAINST
>> >> GRUB!
>> >>
>> >> I have personally stops using it for years and using something very
>> >> rudimentary and simple and useful. That is because I know what I am
>> >> doing and my system well.
>> >>
>> >> Caveat emptor: that was me, not every one else in the wild. Grub is used
>> >> by the most distro by default,everybody knows it,but certainly not the
>> >> norm.
>> >>
>> >> I would love to give it a stab again and if you better people feel it is
>> >> necessary, but I need some concrete understanding from you,Masahiro and
>> >> Randy(who is helping me actively).
>> >>
>> >> Say, You people might come up ,
>> >>
>> >> We need these :
>> >>
>> >> a)
>> >> b)
>> >> c)
>> >>
>> >> and we don't need these:
>> >>
>> >> a)
>> >> b)
>> >> c)
>> >>
>> >>
>> >> My two cents! kindly, flame me with your thoughts.
>> >
>> >
>> >Honestly, I did not even know this script
>> >before you submitted the patch.
>> >
>> :)
>>
>> >I prune stale kernel/modules with my own script,
>> >and I guess people do similar to meet their demand.
>> >
>> I do the same.
>>
>> >I am not sure how many people are using this.
>> Only people who look up in the kernel source scripts directory , nobody
>> else for sure.
>> >If somebody is passionate to improve this script
>> >in a simple way, that is fine, but
>> >I do not want to see messy code for covering various use-cases.
>> Agreed. That is why need guideline from you people(You, Randy and Bruce
>> needs to tell me clearly), like what I mentioned, we can do
>> these and we can not do these. I am asking because you people have had more
>> exposure ,so might come up with some valid points to build up.
>> >
>
>We have two topics here.
>
>[1]  add the interactive option
For that, my last patch stand , I have covered it in a sane way, please try that
once more with options.Yes , you said, the modules directory should be
pruned at once with kernel. But , every system keeps the modules
directory in different names AFAIK. So, the explicitness of the calling.
>[2]  do nice things for non-rpm systems
Bruce's code cover the base for RPM based system , which can be applied
to other similar distribution using that format.Provided I figure out
the "unknown binary" in the code.

I might add other packaging format distribution to cover. Those will
append behind the existing code.
>
>
>They should be done by separate patches.
>
Agreed. Moduler and clear.
>I think [1] is easy to do in a few liners.
>
My last patch stand.AFAIK...let me know if you feel it should be done
differently.
>
>For [2], I am not sure how well it goes
>until I see an actual patch.
>
That would be a undertaking to deal with the native packaging system for
different distributions.

>-- 
>Best Regards
>Masahiro Yamada

Thanks,
Bhaskar
Masahiro Yamada Nov. 18, 2019, 7:30 a.m. UTC | #19
On Sat, Nov 16, 2019 at 12:21 AM Bhaskar Chowdhury
<unixbhaskar@gmail.com> wrote:
>
> On 10:58 Fri 15 Nov 2019, Masahiro Yamada wrote:
> >On Sat, Nov 9, 2019 at 8:14 PM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
> >>
> >> On 16:25 Sat 09 Nov 2019, Masahiro Yamada wrote:
> >> >On Thu, Nov 7, 2019 at 7:39 AM Bhaskar Chowdhury <unixbhaskar@gmail.com> wrote:
> >> >>
> >> >> On 14:30 Wed 06 Nov 2019, J. Bruce Fields wrote:
> >> >> >On Wed, Nov 06, 2019 at 10:12:26AM +0530, Bhaskar Chowdhury wrote:
> >> >> >> On 23:31 Tue 05 Nov 2019, J. Bruce Fields wrote:
> >> >> >> >On Wed, Nov 06, 2019 at 11:53:28AM +0900, Masahiro Yamada wrote:
> >> >> >> >>BTW.
> >> >> >> >>Bruce,
> >> >> >> >>Does the current script expect RHEL or something?
> >> >> >> >>I do not see 'new-kernel-pkg' on my Ubuntu machine.
> >> >> >> >
> >> >> >> >I test on Fedora.  Looks like on recent Fedora that's only provided by
> >> >> >> >an rpm "grubby-deprecated", which is an inauspicious name....
> >> >> >> >
> >> >> >> >I think maybe you're supposed to use "grubby" itself now.  Do you have
> >> >> >> >that?
> >> >> >> >
> >> >> >> >>It would still work with 'new-kernel-pkg: command not found'
> >> >> >> >>warning.
> >> >> >> >>
> >> >> >> >>We could bypass it if we like.
> >> >> >> >>
> >> >> >> >>command -v new-kernel-pkg && new-kernel-pkg --remove $f
> >> >> >> >
> >> >> >> >Looks like it's what updates the grub configuration, which is probably a
> >> >> >> >nice thing to do if you can.
> >> >> >> >
> >> >> >> >--b.
> >> >> >>
> >> >> >> Bruce,
> >> >> >>
> >> >> >> Two things,
> >> >> >>
> >> >> >> If the system doesn't run grub , how the fallback policy???
> >> >> >>
> >> >> >> This binary "new-kernel-pkg" also missing in other systems too...I can
> >> >> >> confirm that... i.e gentoo,slackware,
> >> >> >>
> >> >> >> So , you are only targeting the rpm based system????
> >> >> >
> >> >> >It's just what I happen to use.  If someone wants to make it work
> >> >> >elsewhere that'd be great, as long as we don't break what already works.
> >> >> >
> >> >> >I think Debian uses grub2-mkconfig?  Might be OK for Fedora too, I
> >> >> >dunno.
> >> >> >
> >> >> >--b.
> >> >>
> >> >> Okay , thanks for the input. I was trying to write something in
> >> >> generalize way , that is why my code spins off.And if you see the
> >> >> subject line of my very first attempt to patch written was "removing
> >> >> old kernels and modules dir in selective way"... that was it.
> >> >>
> >> >> Now, there are plenty of distros around, not only rpm based one(yes I do
> >> >> agree that ,you wrote it while using and testing on it, but that is
> >> >> limited in nature),the broader user base might be using something else.
> >> >>
> >> >> we simply can not restrict it to certain packaging version or several
> >> >> packaging versions of selected distros. We are making and building this
> >> >> (worth an effort) to make it as generalized as possible.
> >> >>
> >> >> Importantly I was only thinking of people who put the stuff in standard
> >> >> places in the FSH and use it. I might be wrong.
> >> >>
> >> >> As I have said it before, I was no way trying to bypass your work ,but
> >> >> it seems very limited in nature to adopted. So trying to widen the
> >> >> spectrum.
> >> >>
> >> >> I am trying to incorporating both the pole, different kind user base in
> >> >> mind, like you , who don't like to be prompted for this operation and
> >> >> assuming things should go well, and you are right.
> >> >>
> >> >> On the other hand , I am kinda guy , sometime I need to know what is
> >> >> going on, so the prompting.
> >> >>
> >> >> Well, I have never taken into account about modifying the bootloader
> >> >> config by looking at your work. Had I been, I would have done it already
> >> >> and it would be extremely trivial in nature.
> >> >>
> >> >> Now, Grub, no doubt it's fantastic piece of software, but complexity
> >> >> is paramount with it. Don't you think so???  I HAVE NOTHING AGAINST
> >> >> GRUB!
> >> >>
> >> >> I have personally stops using it for years and using something very
> >> >> rudimentary and simple and useful. That is because I know what I am
> >> >> doing and my system well.
> >> >>
> >> >> Caveat emptor: that was me, not every one else in the wild. Grub is used
> >> >> by the most distro by default,everybody knows it,but certainly not the
> >> >> norm.
> >> >>
> >> >> I would love to give it a stab again and if you better people feel it is
> >> >> necessary, but I need some concrete understanding from you,Masahiro and
> >> >> Randy(who is helping me actively).
> >> >>
> >> >> Say, You people might come up ,
> >> >>
> >> >> We need these :
> >> >>
> >> >> a)
> >> >> b)
> >> >> c)
> >> >>
> >> >> and we don't need these:
> >> >>
> >> >> a)
> >> >> b)
> >> >> c)
> >> >>
> >> >>
> >> >> My two cents! kindly, flame me with your thoughts.
> >> >
> >> >
> >> >Honestly, I did not even know this script
> >> >before you submitted the patch.
> >> >
> >> :)
> >>
> >> >I prune stale kernel/modules with my own script,
> >> >and I guess people do similar to meet their demand.
> >> >
> >> I do the same.
> >>
> >> >I am not sure how many people are using this.
> >> Only people who look up in the kernel source scripts directory , nobody
> >> else for sure.
> >> >If somebody is passionate to improve this script
> >> >in a simple way, that is fine, but
> >> >I do not want to see messy code for covering various use-cases.
> >> Agreed. That is why need guideline from you people(You, Randy and Bruce
> >> needs to tell me clearly), like what I mentioned, we can do
> >> these and we can not do these. I am asking because you people have had more
> >> exposure ,so might come up with some valid points to build up.
> >> >
> >
> >We have two topics here.
> >
> >[1]  add the interactive option
> For that, my last patch stand , I have covered it in a sane way, please try that
> once more with options.Yes , you said, the modules directory should be
> pruned at once with kernel. But , every system keeps the modules
> directory in different names AFAIK. So, the explicitness of the calling.
> >[2]  do nice things for non-rpm systems
> Bruce's code cover the base for RPM based system , which can be applied
> to other similar distribution using that format.Provided I figure out
> the "unknown binary" in the code.
>
> I might add other packaging format distribution to cover. Those will
> append behind the existing code.
> >
> >
> >They should be done by separate patches.
> >
> Agreed. Moduler and clear.
> >I think [1] is easy to do in a few liners.
> >
> My last patch stand.AFAIK...let me know if you feel it should be done
> differently.
> >
> >For [2], I am not sure how well it goes
> >until I see an actual patch.


As I said before, your patch is replacing everything,
and breaking how it previously worked.

If you want to support the interactive mode,
what you need to do is quite simple -
1) check the command line option -i
2) if -i is given, show a prompt before the removal


It would be possible to do these
in smaller changes.
I attached a sample patch.






> That would be a undertaking to deal with the native packaging system for
> different distributions.
>
> >--
> >Best Regards
> >Masahiro Yamada
>
> Thanks,
> Bhaskar

Patch
diff mbox series

diff --git a/scripts/prune-kernel b/scripts/prune-kernel
index e8aa940bc0a9..01d0778db71f 100755
--- a/scripts/prune-kernel
+++ b/scripts/prune-kernel
@@ -1,21 +1,69 @@ 
 #!/bin/bash
 # SPDX-License-Identifier: GPL-2.0
+#This script will remove old kernels and modules directory related to it.
+#"-r" or "--remove" show how to silently remove old kernel and modules dir.
+# "-h" or "--help" show how to use this script or show without parameter.
+#"-i" or "--interactive" show how to remove interactively.
+
+flag=$1
+kernel_version=$2
+modules_version=$3
+boot_dir=/boot
+modules_dir=/lib/modules
+
+remove_old_kernel() {
+	cd $boot_dir
+	rm -If vmlinuz-$kernel_version System.map-$kernel_version config-$kernel_version
+	return 0
+}
+
+remove_old_modules_dir() {
+	cd $modules_dir
+	rm -rf $modules_version
+	return 0
+}
+
+usage() {
+	printf "Usage: $(basename $0) [-ri]\n"
+	printf "\n -r or --remove  kernel_version modules_version\n"
+	printf "\n -i or --interactive do as interactive way\n"
+	return 0
+}
+
+case "$flag" in
+	-i | --interactive)
+		printf "\nEnter kernel version to remove or blank/empty to exit:"
+		read kernel_version
+		if [[ $kernel_version != "" ]]; then
+			remove_old_kernel
+			printf "\nRemoved kernel version:$kernel_version from the system.\n\n"
+			printf "Please give the full modules directory name to remove:"
+			read modules_version
+			if [[ $modules_version != "" ]]; then
+				remove_old_modules_dir
+				printf "\n\nRemoved modules directory:$modules_version from the system.\n\n"
+			else
+				exit 1
+			fi
+		fi
+		;;
+	-h | --help)
+		usage
+		exit 0
+		;;
+	-r | --remove)
+		if [[ $# -ne 3 ]]; then
+			 printf "You need to provide kernel version and modules directory name.\n"
+			 exit 1
+		 else
+			 remove_old_kernel
+			 remove_old_modules_dir
+		fi
+		;;
+	*)
+		usage
+		exit 1
+		;;
+esac

-# because I use CONFIG_LOCALVERSION_AUTO, not the same version again and
-# again, /boot and /lib/modules/ eventually fill up.
-# Dumb script to purge that stuff:

-for f in "$@"
-do
-        if rpm -qf "/lib/modules/$f" >/dev/null; then
-                echo "keeping $f (installed from rpm)"
-        elif [ $(uname -r) = "$f" ]; then
-                echo "keeping $f (running kernel) "
-        else
-                echo "removing $f"
-                rm -f "/boot/initramfs-$f.img" "/boot/System.map-$f"
-                rm -f "/boot/vmlinuz-$f"   "/boot/config-$f"
-                rm -rf "/lib/modules/$f"
-                new-kernel-pkg --remove $f
-        fi
-done