[GUIDE] OpenSUSE Tumbleweed on the AMD Ryzen Framework

Same here.

I found this:
https://build.opensuse.org/package/show/Base:System/power-profiles-daemon

And commented on one of the PRs, apparently they are pending review.

I’m just sticking to 0.13 until it’s out sigh

I am recently trying out Tumbleweed because of the Plasma 6 rollout. So far it has been super smooth sailing. However, I did notice that they ship with TLP by default. I tried to install PPD from the experimental repository and it also wouldn’t start for me. I did uninstall and disable TLP beforehand as well. Not sure what’s going on.

I did not notice any issues with TLP though, sleep and everything works fine. I would like to see PPD working properly.

You should be able to install power-profiles-daemon from the normal (not “experimental”) repository. To enable it, either use Yast (Services Manager → select “power-profiles-daemon” → Start Mode → on Boot) or a terminal command (sudo systemctl enable --now power-profiles-daemon)

I made a small effort to debug the PPD-0.20 crash. I recompiled it on the latest snapshot and confirmed that the issue is not related to dependencies, but to a d-bus permissions error related to the fact that PPD changed d-bus service names between 0.13 and 0.20. Maybe someone who understands d-bus and polkit better than I can figure out what part of the config needs to be changed…

Hey thanks this is how I was running it, but the PPD v0.13 is in the current repositories. v0.2 includes a bunch of AMD fixes that improve battery life based on other threads.

The issues in opensuse’s polkit (profiles: power-profiles-daemon (bsc#1219957) by wfrisch · Pull Request #103 · openSUSE/polkit-default-privs · GitHub) and dbus config (dbus-services: power-profiles-daemon (bsc#1219956) by wfrisch · Pull Request #1197 · rpm-software-management/rpmlint · GitHub) have been resolved and merged into opensuse upstream, so PPD 0.20 should work a few snapshots from now.

2 Likes

Just recently (like since thursday (09/05/2024) replaced my fedora 41 install with Tumbleweed. Man i find its awesome out of the box experience for my Framework 13 AMD. No tweaks performed except for my zsh preferences. Pipewire airplay is default enabled in Tumbleweed. So that was great IMO.

YaST out-of-the-box default post-install by itself is great. It was great to know how easy is zypper package manager is also like arch linux’s pacman. I still have some cool bash/zsh aliases for zypper to make it even more easy :slight_smile:

alias zdup='sudo zypper dist-upgrade'
alias zins='sudo zypper install '
alias zref='sudo zypper refresh'
alias zrem='sudo zypper remove '
alias zsearch='sudo zypper search '

I now have Arch Linux, Debian Testing, Windows 11 Pro, and now openSUSE Tumbleweed. Compared to Debian Testing, tumbleweed is really easy install to booting into gnome DE was so easy.

Framework you people are awesome, THANK YOU for making such a great hardware for us all.

2 Likes

one other tiny snippet of info for tumbleweed enthusiasts on framework laptops : tumbleweed: What is the message of “Enrol MOK” while booting from UEFI and specifically this part of the conversation in the same forum: reply by malcolmlewis - Malcolm, SUSE Knowledge Partner

This issue of MOK enrollment prompt everytime i had a kernal update.

just use your ‘root’ user password when prompted during bootup, if you choose to enroll (maybe needed if your setup has SecureBoot enabled in UEFI) or in my case i just ignore and let it time out by itself (i have mine setup with SecureBoot disabled in UEFI).
::
Cheers.

1 Like

Or enter it and choose Continue boot (first option, I think), should be faster. :slight_smile:

1 Like

UPDATE:

DisplayLink drivers for my Dell D6000 Laptop Dock now work flawlessly in Tumbleweed. I have not had success in setting up displaylink drivers in my ArchLinux and Debian Testing (next-stable) installs on my Framework 13 AMD 7040 laptop.

For those of you interested in displaylink drivers, check the below website, read through the author CubicleNate’s notes and recommendations.

My experience: using “opi” (OBS Package Installer) worked best for me than the repo method. Both methods are discussed and I tried both methods.

DisplayLink on openSUSE Tumbleweed, by CubicleNate

Take a look at the various repos available for displaylink, evdi at the following OpenSUSE URL:

OpenSUSE SDB DisplayLink

Output of lsblk, kernels installed :

                     
PATH            LABEL     FSTYPE     SIZE FSUSE% UUID
/dev/nvme0n1                         3.6T        
/dev/nvme0n1p1  ESP       vfat       996M    16% 18C4-5D0A
/dev/nvme0n1p2  ARCH_BOOT ext4         2G    28% c41be70e-0c04-4703-a423-9e436dcb5583
/dev/nvme0n1p3  TW_BOOT   ext4         2G    17% cb61d749-ee2e-41e2-aee2-587f7660e3ca
/dev/nvme0n1p4  DEB_BOOT  ext4         2G    34% 66667054-99fa-4efb-afe2-b3bd2478255a
/dev/nvme0n1p5  ARCH_ROOT ext4       180G    36% 93c86984-fc4f-454a-8e3b-7973c50aaec6
/dev/nvme0n1p6  TW_ROOT   ext4       180G    32% e92d30d1-01ba-4e91-9309-692d5e78981f
/dev/nvme0n1p7  DEB_ROOT  ext4       180G    38% bf5d09c3-1c62-469e-b1ea-5cf6c1c3f976
/dev/nvme0n1p8                        16M        
/dev/nvme0n1p9  WIN_C     ntfs     179.2G    62% 1092CE8792CE70B0
/dev/nvme0n1p10           ntfs       850M        42D6DA54D6DA4835
/dev/nvme0n1p11 WIN_D     ntfs       400G     4% 6C38D6DA38D6A27E
/dev/nvme0n1p12 DATA      ext4       2.4T    26% 44e835d7-9b7d-439b-bb3f-dfa9eecf429f
/dev/nvme0n1p13 arch_swap swap        64G        ec8d38c8-0686-4685-81c5-725762d6a0da
/dev/nvme0n1p14 tw_swap   swap        64G        11a04322-f564-4ddb-8793-f430b5a0fa3c
/dev/nvme0n1p15 deb_swap  swap        64G        fdc66a4b-49d6-4d4c-b2e0-c97db0f8ba73

List all the installed kernels:
/boot/vmlinuz-6.12.40-1-longterm
/boot/vmlinuz-6.12.41-1-longterm
/boot/vmlinuz-6.15.6-1-default
/boot/vmlinuz-6.15.8-1-default

Currently runninng kernel: 6.15.8-1-default x86_64 GNU/Linux

Attached snapshot showing three displays:

Also, a little shell script I prepared for installing displaylink drivers.

#!/bin/bash
## FILE: Tumbleweed_DisplayLink_Driver_Install.sh
##  URL: https://cubiclenate.com/2023/10/07/displaylink-video-on-opensuse-tumbleweed/
##  URL: https://software.opensuse.org/package/displaylink
#
/usr/bin/echo ""
## Install OPI if its not installed already
if [[ ! -x /usr/bin/opi ]]; then
   /usr/bin/sudo /usr/bin/zypper install -y opi;
else
   /usr/bin/echo -e '"opi" is already installed';
fi
/usr/bin/echo ""

## Install evdi using opi
if [[ -e /usr/lib64/displaylink/libevdi.so && -e /etc/modprobe.d/evdi.conf ]]; then
   /usr/bin/echo '"evdi" is already installed';
else
   /usr/bin/echo -e 'Install "evdi", choose 1';
   /usr/bin/sudo /usr/bin/opi evdi;
fi
/usr/bin/echo ""

## Install displaylink-driver using opi
if [[ -e /usr/lib64/displaylink && -d /dev/displaylink/by-id ]]; then
   /usr/bin/echo '"displaylink-driver" is already installed';
else
   /usr/bin/echo -e 'Install "displaylink-driver", choose 1';
   /usr/bin/sudo opi displaylink-driver;
fi
/usr/bin/echo ""

exit 0

I have chosen to keep the zypper repo(s) from which the evdi and displaylink-driver packages installed disabled after OPI has done installing.

Suggest, that either increase the zypper repo priority number above 100 or disable the repo.

Notes:

  • Zypper repo higher priority number means, less priority for package updates and install source. All OpenSUSE Tumbleweed repos are factory set priority 99 for context. Priority can also be set in the GUI app Yast Software Management.

  • OPI provides dialogue (Y/n) after installing to disable or keep it enabled.

BONUS UPDATE: Sharing my shell script for regular Tumbleweed updates / upgrades. Its still a work-in-progress. There will be more future mods i envisage. Sharing this for the benefit of community here, critiques are welcome.

#! /bin/bash
#
## FILE: /usr/local/sbin/system-updater-script-tw.sh
#
if [[ -x /usr/bin/snap ]]; then
 if [[ ! -x /snap/bin/lolcat && ! -f /usr/bin/lolcat ]]; then
   /usr/bin/echo -e "\n#@ Check if LOLCAT is installed else install. @#\nINSTALLING LOLCAT.";
   /usr/bin/sleep 1;
   /usr/bin/sudo /usr/bin/snap refresh;
   /usr/bin/sudo /usr/bin/snap install --stable lolcat;
   /usr/bin/ln -s /snap/bin/lolcat /usr/bin/lolcat;
 elif [[ -x /snap/bin/lolcat && ! -f /usr/bin/lolcat ]]; then
   /usr/bin/ln -s /snap/bin/lolcat /usr/bin/lolcat;
 elif [[ ! -f /usr/bin/lolcat ]]; then
   /usr/bin/echo -e "\nCannot proceed. Install LOLCAT.";
   exit 1;
 fi
else
  /usr/bin/echo -e "\nCannot proceed. Install LOLCAT from snap store.";
  exit 1;
fi
if [[ ! -x /usr/bin/curl ]]; then
   /usr/bin/echo -e "\n#@ Check if CURL is installed else install. @#\nINSTALLING CURL.";
   /usr/bin/sleep 1;
   /usr/bin/sudo /usr/bin/zypper install -y curl;
   /usr/bin/echo "";
fi

/usr/bin/echo ""
/usr/bin/echo -e "\t<<< Starting openSUSE Tumbleweed System Updater Script >>>\n" | /usr/bin/lolcat
/usr/bin/sleep 1

/usr/bin/echo "###########################################################################" | /usr/bin/lolcat
/usr/bin/echo "#@ Perform Internet Connectivity Check before executing Upgrade Commands @#" | /usr/bin/lolcat
/usr/bin/echo "::             curl -s -I https://opensuse.org | grep -q "HTTP/2 301"      " | /usr/bin/lolcat
/usr/bin/echo "###########################################################################" | /usr/bin/lolcat
if /usr/bin/curl -s --head "https://opensuse.org" | /usr/bin/grep -q "HTTP/2 301";
## [BEGIN THEN] ##
then /usr/bin/echo -e "\nNetwork is up and running. OK to proceed with UPGRADE.\n" | /usr/bin/lolcat
/usr/bin/sleep 1

## RUN NEOFETCH OR FASTFETCH TO SHOW STATS ##
if [[ -x /usr/bin/fastfetch && -f "${HOME}/.config/fastfetch/00-config.jsonc" ]]; then
#   /usr/bin/fastfetch -c $HOME/.config/fastfetch/00-config.jsonc | /usr/bin/lolcat -a -d 1;
#   /usr/bin/fastfetch -c $HOME/.config/fastfetch/00-config.jsonc | /usr/bin/lolcat;
#   /usr/bin/fastfetch -c $HOME/.config/fastfetch/00-config.jsonc;
#   /usr/bin/fastfetch -c $HOME/.config/fastfetch/00-config.jsonc -l small;
   /usr/bin/fastfetch -c $HOME/.config/fastfetch/00-config.jsonc -l small | /usr/bin/lolcat;
#   /usr/bin/fastfetch -c $HOME/.config/fastfetch/00-config.jsonc -l small | /usr/bin/lolcat -a -d 1;
#   /usr/bin/fastfetch -c $HOME/.config/fastfetch/00-config.jsonc --logo-width 150 --logo-height 150 --logo-preserve-aspect-ratio 1 | /usr/bin/lolcat -a -d 1;
elif [[ -x /usr/bin/fastfetch && ! -f "${HOME}/.config/fastfetch/00-config.jsonc" ]]; then
#   /usr/bin/fastfetch | /usr/bin/lolcat -a -d 1;
#   /usr/bin/fastfetch | /usr/bin/lolcat;
#   /usr/bin/fastfetch;
#   /usr/bin/fastfetch -l small;
   /usr/bin/fastfetch -l small | /usr/bin/lolcat;
#   /usr/bin/fastfetch -l small | /usr/bin/lolcat -a -d 1;
#   /usr/bin/fastfetch --logo-width 150 --logo-height 150 --logo-preserve-aspect-ratio 1 | /usr/bin/lolcat -a -d 1;
elif [[ -x /usr/bin/neofetch ]]; then
#   /usr/bin/neofetch | /usr/bin/lolcat -a -d 1
#   /usr/bin/neofetch --ascii_distro debian_small | /usr/bin/lolcat -a -d 1
#   /usr/bin/neofetch --ascii_distro openSUSE_Tumbleweed_small --size 20% | /usr/bin/lolcat -a -d 1;
#   /usr/bin/neofetch --ascii_distro openSUSE_Tumbleweed_small --size 20% | /usr/bin/lolcat -a -d 1 -s 30;
   /usr/bin/neofetch --ascii_distro openSUSE_Tumbleweed_small --size 20% | /usr/bin/lolcat;
#   /usr/bin/neofetch;
else /usr/bin/echo "Install Neofetch or Fastfetch";
fi
/usr/bin/echo -e "\n###########################################################################\n" | /usr/bin/lolcat
/usr/bin/sudo /usr/sbin/update-ca-certificates
/usr/bin/sleep 1

## [BEGIN UPGRADE] ##
/usr/bin/echo "############################################" | /usr/bin/lolcat
/usr/bin/echo "#@ Check & upgrade laptop device firmware @#" | /usr/bin/lolcat
/usr/bin/echo "############################################" | /usr/bin/lolcat
/usr/bin/echo -e ":: fwupdmgr refresh --force" | /usr/bin/lolcat
/usr/bin/fwupdmgr refresh --force
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo -e ":: fwupdmgr get-updates" | /usr/bin/lolcat
/usr/bin/fwupdmgr get-updates
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo -e ":: fwupdmgr update" | /usr/bin/lolcat
/usr/bin/fwupdmgr update
/usr/bin/echo "##########################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo -e "####################################" | /usr/bin/lolcat
/usr/bin/echo -e "#@ Refresh local package database @#" | /usr/bin/lolcat
/usr/bin/echo -e "####################################" | /usr/bin/lolcat
/usr/bin/echo -e ":: sudo zypper refresh" | /usr/bin/lolcat
#/usr/bin/echo ":: sudo zypper ref" | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/zypper clean | /usr/bin/lolcat

## URL: https://cubiclenate.com/2025/05/02/zyppers-new-parallel-downloads-speed-up-your-opensuse-tumbleweed-updates/
/usr/bin/sudo env ZYPP_CURL2=1 /usr/bin/zypper --gpg-auto-import-keys refresh --services | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

## perform only refresh again (optional)
/usr/bin/sudo env ZYPP_CURL2=1 /usr/bin/zypper --non-interactive refresh | /usr/bin/lolcat
#/usr/bin/sudo /usr/bin/zypper refresh --services | /usr/bin/lolcat
#/usr/bin/sudo /usr/bin/zypper refresh --services
#/usr/bin/sudo /usr/bin/zypper ref --services
/usr/bin/echo -e "####################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

## List Repositories
/usr/bin/echo -e "###################################" | /usr/bin/lolcat
/usr/bin/echo -e "#@ List all enabled repositories @#" | /usr/bin/lolcat
/usr/bin/echo -e "###################################" | /usr/bin/lolcat
/usr/bin/echo ":: sudo zypper lr -P" | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/zypper lr -P
/usr/bin/echo -e "###################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "############################" | /usr/bin/lolcat
/usr/bin/echo "#@   Remove OLD kernels   @#" | /usr/bin/lolcat
/usr/bin/echo "############################" | /usr/bin/lolcat
/usr/bin/echo ":: sudo zypper purge-kernels" | /usr/bin/lolcat
#/usr/bin/sudo /usr/bin/zypper purge-kernels --details | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/zypper purge-kernels --details
/usr/bin/echo "############################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "##################################" | /usr/bin/lolcat
/usr/bin/echo "#@ List all installable updates #@" | /usr/bin/lolcat
/usr/bin/echo "##################################" | /usr/bin/lolcat
/usr/bin/echo ":: sudo zypper list-updates" | /usr/bin/lolcat
#/usr/bin/sudo /usr/bin/zypper list-updates | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/zypper list-updates -a | /usr/bin/lolcat
#/usr/bin/sudo /usr/bin/zypper list-updates
#/usr/bin/sudo /usr/bin/zypper list-updates -a
/usr/bin/echo "##################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "######################################" | /usr/bin/lolcat
/usr/bin/echo "#@ Update Tumbleweed (dry-run only) @#" | /usr/bin/lolcat
/usr/bin/echo "######################################" | /usr/bin/lolcat
#/usr/bin/echo ":: sudo zypper update" | /usr/bin/lolcat
/usr/bin/echo ":: sudo zypper up --dry-run" | /usr/bin/lolcat
## with --details
##/usr/bin/sudo env ZYPP_PCK_PRELOAD=1 /usr/bin/zypper --non-interactive update -y --dry-run --download-only --details -l --no-allow-vendor-change | /usr/bin/lolcat
## without --details
/usr/bin/sudo env ZYPP_PCK_PRELOAD=1 /usr/bin/zypper --non-interactive update -y --dry-run --download-only -l --no-allow-vendor-change | /usr/bin/lolcat
/usr/bin/echo "######################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "#####################################" | /usr/bin/lolcat
/usr/bin/echo "#@     Dist-Upgrade Tumbleweed     @#" | /usr/bin/lolcat
/usr/bin/echo "#####################################" | /usr/bin/lolcat
## URL: https://cubiclenate.com/2025/05/02/zyppers-new-parallel-downloads-speed-up-your-opensuse-tumbleweed-updates/
/usr/bin/echo -e ":: sudo zypper dup --no-allow-vendor-change --dry-run" | /usr/bin/lolcat
/usr/bin/sudo env ZYPP_PCK_PRELOAD=1 /usr/bin/zypper --non-interactive dist-upgrade -y --dry-run --download-only -l --no-allow-vendor-change | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo -e ":: sudo zypper dup --allow-vendor-change --dry-run" | /usr/bin/lolcat
/usr/bin/sudo env ZYPP_PCK_PRELOAD=1 /usr/bin/zypper --non-interactive dist-upgrade -y --dry-run --download-only -l --allow-vendor-change | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo -e ":: sudo zypper dup -allow-vendor-change" | /usr/bin/lolcat
## zypper dup --no-allow-vendor-change
## disabled ##/usr/bin/sudo /usr/bin/zypper dist-upgrade -l --download-in-advance --no-allow-vendor-change
## zypper dup --allow-vendor-change
/usr/bin/sudo /usr/bin/zypper dist-upgrade -l --download-in-advance --allow-vendor-change
/usr/bin/echo "#####################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "########################################################" | /usr/bin/lolcat
/usr/bin/echo '#@ Upgrade from "Packman" & "MN17 Fonts" repositories @#' | /usr/bin/lolcat
/usr/bin/echo "########################################################" | /usr/bin/lolcat
/usr/bin/echo ":: sudo zypper dist-upgrade --dry-run --from 'Packman' --allow-vendor-change" | /usr/bin/lolcat
/usr/bin/sudo env ZYPP_PCK_PRELOAD=1 /usr/bin/zypper --non-interactive dist-upgrade -l --details -y --dry-run --download-only --allow-vendor-change --from 'Packman' --from "Packman Repository" --from "Fonts (openSUSE_Tumbleweed)" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo ":: sudo zypper dist-upgrade --from 'Packman' --allow-vendor-change" | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/zypper dist-upgrade -l --download-in-advance --allow-vendor-change --from 'Packman' --from "Packman Repository" --from "Fonts (openSUSE_Tumbleweed)"
/usr/bin/echo "########################################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "#####################################" | /usr/bin/lolcat
/usr/bin/echo '#@     Install New Recommends      @#' | /usr/bin/lolcat
/usr/bin/echo "#####################################" | /usr/bin/lolcat
#/usr/bin/echo ":: sudo zypper install-new-recommends" | /usr/bin/lolcat
/usr/bin/echo ":: sudo zypper inr --dry-run" | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/zypper --non-interactive install-new-recommends --dry-run --download-only | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo ":: sudo zypper inr" | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/zypper install-new-recommends
#/usr/bin/sudo /usr/bin/zypper --non-interactive inr --dry-run --download-only
#/usr/bin/sudo /usr/bin/zypper inr
/usr/bin/echo "#####################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "####################" | /usr/bin/lolcat
/usr/bin/echo "#@ Updating Snaps @#" | /usr/bin/lolcat
/usr/bin/echo "####################" | /usr/bin/lolcat
/usr/bin/echo ":: sudo snap refresh" | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/snap refresh | /usr/bin/lolcat
#/usr/bin/sudo /usr/bin/snap refresh
/usr/bin/echo "####################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "#######################" | /usr/bin/lolcat
/usr/bin/echo "#@ Updating FlatPaks @#" | /usr/bin/lolcat
/usr/bin/echo "#######################" | /usr/bin/lolcat
/usr/bin/echo ":: sudo flatpak update" | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/flatpak update -y | /usr/bin/lolcat
/usr/bin/flatpak update -y | /usr/bin/lolcat
#/usr/bin/sudo /usr/bin/flatpak update -y
#/usr/bin/flatpak update -y
/usr/bin/echo "#######################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "###########################################" | /usr/bin/lolcat
/usr/bin/echo "#@             Update plocate            @#" | /usr/bin/lolcat
/usr/bin/echo "#@ Synch filesystems /, /boot, /mnt/data @#" | /usr/bin/lolcat
/usr/bin/echo "###########################################" | /usr/bin/lolcat
#/usr/bin/echo ""
/usr/bin/sudo /usr/bin/updatedb
/usr/bin/sudo /usr/bin/sync -f /
/usr/bin/sudo /usr/bin/sync -f /boot
/usr/bin/sudo /usr/bin/sync -f /mnt/data
/usr/bin/update-desktop-database ~/.local/share/applications
/usr/bin/sudo /usr/bin/update-desktop-database
/usr/bin/echo "DONE!" | /usr/bin/lolcat
#/usr/bin/echo ""
/usr/bin/echo "###########################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo "###################################" | /usr/bin/lolcat
/usr/bin/echo "#@   Check if Reboot necessary   @#" | /usr/bin/lolcat
/usr/bin/echo "###################################" | /usr/bin/lolcat
/usr/bin/sudo /usr/bin/zypper ps -s | /usr/bin/lolcat
#/usr/bin/sudo /usr/bin/zypper ps -s
/usr/bin/echo "###################################" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo -e '\t<<< "SYSTEM UPGRADE IS NOW COMPLETE" >>>' | /usr/bin/lolcat
/usr/bin/echo ""
## [END UPGRADE] ##

## LIST KERNELS ##
#/usr/bin/echo "##################################" | /usr/bin/lolcat
/usr/bin/echo -e "List all the installed kernels:\n$(/usr/bin/sudo /usr/bin/find /boot -name "vmlinuz-*" -type f -printf '%h\0%p\n' | sort | awk -F'\0' '{print $2}')" | /usr/bin/lolcat
##/usr/bin/echo -e "List all the installed kernels:\n$(/usr/bin/sudo /usr/bin/find /boot -name "vmlinuz-*" | /usr/bin/grep "vmlinuz-" -type f -printf '%h\0%p\n' | sort | awk -F'\0' '{print $2}')" | /usr/bin/lolcat
/usr/bin/echo ""
/usr/bin/sleep 1

/usr/bin/echo -e "Currently runninng kernel: $(/usr/bin/uname -mor)" | /usr/bin/lolcat
#/usr/bin/echo "##################################" | /usr/bin/lolcat
/usr/bin/sleep 1
/usr/bin/echo ""
## [END THEN] ##
else /usr/bin/echo -e "Network is DOWN. It is NOT OK to proceed with Upgrade.\n\nABORTING & EXITING UPGRADE SCRIPT.\n###########################################################################\n" | /usr/bin/lolcat;
fi
/usr/bin/echo -e "\t<<< Now Exiting Script!! >>>\n" | /usr/bin/lolcat
/usr/bin/sleep 1
##ENDOFSCRIPT
exit 0

Best wishes all.