You are not logged in.
SSDs and it says they can draw 1.7 amps!? The spinning drives I have are rated .48 to .55 amps.
What is the voltage they are using with that amperage? If the SSD is using 5v and the HDD is using 12v then the power consumed is well over four times as much at the same amperage. When you double the voltage you quadruple the power drawn, it is a squared function. Actually my quick calculation is 5.76 times as much for equal amps drawn from 12v vs 5v as it is 2.4 times the voltage. A SSD is always drawing power too you will see the idle rating there somewhere too. You would need to determine the amount of each power voltage the drives use and the amps at those voltages to figure it out the total watts. The old amps x volts = watts consumed formula comes into play to determine that.
zeus@9600k:~$ calc 2.4^2
5.76Someone tried to open a bug report about it several years ago, but Pottering himself closed it. He said it sounded "like a support issue!"
More garbage produce by that asshole, small shock there.
but it must have been changed recently.
Debian have become rather fond of breaking changes made recently. If you are lucky that showed up in a news file most people never see or read when the package with the breaking change was installed. Good to see you get it solved and actually posted the solution something that can be a rare occurrence on internet forums, thanks for doing it.
Well check what is actually being sourced.
/bin/bash -lixc exit 2>&1 | sed -n 's/^+* \(source\|\.\) //p'That showed me for my machine.
zeus@9600k:~$ /bin/bash -lixc exit 2>&1 | sed -n 's/^+* \(source\|\.\) //p'
/etc/bash.bashrc
/etc/profile.d/bash_completion.sh
/usr/share/bash-completion/bash_completion
/etc/bash_completion.d/000_bash_completion_compat.bash
/etc/bash_completion.d/git-prompt
/usr/lib/git-core/git-sh-prompt
/etc/profile.d/vte-2.91.sh
/home/zeus/.bashrc
/home/zeus/.bash_aliases
/usr/share/bash-completion/bash_completion
/etc/bash_completion.d/000_bash_completion_compat.bash
/etc/bash_completion.d/git-prompt
/usr/lib/git-core/git-sh-prompt
/home/zeus/.bash_functionsAnd I have a a .profile that is never used.
zeus@9600k:~$ ls -l .profile
-rw-r--r-- 1 zeus zeus 641 Aug 31 2022 .profileWhen I use the autostart option of KDE to launch it I use this script.
zeus@9600k:~$ cat bin/pipewire_start.sh
#!/bin/bash
# Added to start pipewire on login to desktop
# https://dev1galaxy.org/viewtopic.php?id=5867
# was the ~/.xsessionrc -rw-rw-r-- permissions
# now ~/bin/pipewire_start.sh executable permissions
# as bash script loaded from KDE autostart in System Settings
# kill any existing pipewire instance to restore sound
pkill -u "$USER" -fx /usr/bin/pipewire-pulse 1>/dev/null 2>&1
pkill -u "$USER" -fx /usr/bin/wireplumber 1>/dev/null 2>&1
pkill -u "$USER" -fx /usr/bin/pipewire 1>/dev/null 2>&1
# start pipewire
exec /usr/bin/pipewire &
# wait for pipewire to start before attempting to start related daemons
while [ "$(pgrep -f /usr/bin/pipewire)" = "" ] ; do
sleep 1
done
# start wireplumber
exec /usr/bin/wireplumber &
# start pipewire-pulse
exec /usr/bin/pipewire-pulse &As you can see from my comment in that file I used to actually start processes in the ~/.xsessionrc. Save yourself the time and trouble and do the same, it just works without fail. I only changed it as I wanted to test that steaming pile of dung they call Wayland and it would not start using the X11 config file method obviously.
I think he was talking about video playback, not the website.
How else do you access Netflix video on Linux except through a web browser and that garbage javascript all of them sites use. That is the main reason I have noscript running to prevent that trash from spiking my cpu every time I visit one of them sites that use that junk.
especially with Netflix, I was getting an average of 20% CPU and 30% GPU, and now again with 100% CPU
That tells you nothing but a bloated website is running like shit which can be due to many reasons. Do an actual test like I suggested if the glxgears fails to run properly then you have a problem, it does nothing but test the performance of the graphics.
However when I check (and I test it) it using LLVMPIPE:
What testing did you do? I have the idea on my Debian systemd less install it says it is using llvmpipe but the glxgears gives the same FPS output as Devuan booted on it saying it is using the HD630 integrated graphics. In my case a total false positive output. Oh and if you do not know it the glxgears should give the same FPS as the refresh rate of your monitor if working correctly.
You need to use
su -
or the path setting will be incorrect.
Unless you were reading the change log file and took the advice contained in it to make this file overcoming that breaking change, perhaps might have been news file not sure now it occurs to me. Something that is becoming far to common in Debian these days breaking compatibility just for the hell of it...
root@9600k:~# cat /etc/default/su
# Added to always have the PATH set for su.
ALWAYS_SET_PATH yesEdit: Oh if you are going to be messing with the sources file move it to a backup and create the new style one and use that.
root@9600k:~# cat /etc/apt/sources.list.d/devuan.sources
# Devuan 6 excalibur
## The new style method of using repositories to install software.
## This /etc/apt/sources.list.d/devuan.sources is new style and location file
## The /etc/apt/old.style.sources.list contains the same as this.
## https://linuxconfig.org/ubuntus-repository-configuration-ubuntu-sources-have-moved-to-etc-apt-sources-list-d-ubuntu-sources
## Normal excalibur sources
Types: deb
URIs: http://gnlug.org/pub/devuan/merged
Suites: excalibur excalibur-backports excalibur-proposed-updates excalibur-updates
Components: main non-free contrib non-free-firmware
Enabled: yes
Signed-By: /usr/share/keyrings/devuan-archive-keyring.gpg
Architectures: amd64
## excalibur security sources
Types: deb
URIs: http://gnlug.org/pub/devuan/merged
Suites: excalibur-security
Components: main non-free contrib non-free-firmware
Enabled: yes
Signed-By: /usr/share/keyrings/devuan-archive-keyring.gpg
Architectures: amd64i can toggle between the two by changing the displayserver value and rebooting.
Going to a virtual terminal logging in to edit the file to make the switch then a pkill X should be enough to get it done by killing off the X server and respawing it with the new value being read at its start up.
Hope that helps.
Well it is not in the the Pi images on that page with it you get stuck with a kernel that is roughly 60 revisions behind the Debian kernel with no way to upgrade. As I posted I got rid of that and went with a install that updates without problems, just today got the latest new kernel from the archives.
zeus@raspi:~$ uname -a
Linux raspi 6.12.57+deb13-arm64 #1 SMP Debian 6.12.57-1 (2025-11-05) aarch64 GNU/LinuxOh for anyone interested going to the Debian site getting the Pi images there using them for install then converting to Devuan install with the instructions from here to do it works well. You end up with a working Devuan system with an up to date kernel with all the packages able to install without problems. Not a broken system with out of date kernel and problems if you try to install a package(s) that need the /boot/firmware directory in place.
Debian files: https://raspi.debian.net/tested-images/
Trixie to Excalibur: https://www.devuan.org/os/documentation … libur.html
Works great with only couple of glitches you need the ntpsec-ntpdate package installed or you end up with the time set to 1970 the beginning of the Unix epoch on every boot. As a Pi has no hardware clock so it needs to be set on every boot. You will want the locales package installed and set to yours to get rid of them warnings and a dpkg-reconfigure tzdata done to set your time zone from the UTC it defaults to yours. Works great wish I had done that install instead of wasting all that time trying to get that pre-built broken image functioning correctly.
root@raspi:~# cat /etc/os-release
PRETTY_NAME="Devuan GNU/Linux 6 (excalibur)"
NAME="Devuan GNU/Linux"
VERSION_ID="6"
VERSION="6 (excalibur)"
VERSION_CODENAME="excalibur"
ID=devuan
ID_LIKE=debian
HOME_URL="https://www.devuan.org/"
SUPPORT_URL="https://devuan.org/os/community"
BUG_REPORT_URL="https://bugs.devuan.org/"
root@raspi:~# uname -a
Linux raspi 6.12.48+deb13-arm64 #1 SMP Debian 6.12.48-1 (2025-09-20) aarch64 GNU/Linux
root@raspi:~# apt policy linux-image-arm64
linux-image-arm64:
Installed: 6.12.48-1
Candidate: 6.12.48-1
Version table:
6.16.3-1~bpo13+1 100
100 http://gnlug.org/pub/devuan/merged excalibur-backports/main arm64 P>
*** 6.12.48-1 500
500 http://gnlug.org/pub/devuan/merged excalibur-proposed-updates/main >
500 http://gnlug.org/pub/devuan/merged excalibur-security/main arm64 Packages
100 /var/lib/dpkg/status
6.12.43-1 500
500 http://gnlug.org/pub/devuan/merged excalibur/main arm64 PackagesAnd if you are wondering just where the hell the usrmerge is like I was last night it is located so helpfully in /usr/lib, a directory not in your $PATH, not even named usrmerge for shits and giggles but convert-usrmerge by the systemd loving morons who did it.
root@9600k:~# apt-file list usrmerge
usrmerge: /usr/lib/usrmerge/convert-etc-shells
usrmerge: /usr/lib/usrmerge/convert-usrmerge
usrmerge: /usr/share/doc/usrmerge/README.Debian
usrmerge: /usr/share/doc/usrmerge/changelog.gz
usrmerge: /usr/share/doc/usrmerge/copyrightProblem now is, that the main purpose of that raspi was watching netflix,
If looking for a cheap small low power box and the funds are available to buy one try something like a Lenovo Think Center or the equivalent from Dell, HP ot several other brands have them too. SFF is what to search for they are more than enough to do most tasks on I got my two Think Centers with i5s, 8400t & 8500t six core, dirt cheap on Ebay for just over a $100. Wish I had went with them instead of the Pi I bought the year or two before they are much easier to deal with as they are a bog standard x86_64 computer. Easily upgraded with standard off the shelf parts nothing hanging off a dongles with flaky USB performance like a Pi has.
Is it because I ran it with sudo, or is there some critical difference in the builds?
I will go with difference in the builds it fails in exactly the same way here. And I see you have a 6.12.52 kernel installed somehow that fails to install on this build too as I mentioned. How did you get that kernel installed?
root@raspi:~# apt install raspi-firmware
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
firmware-brcm80211 bluez-firmware
The following NEW packages will be installed:
raspi-firmware
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,816 kB of archives.
After this operation, 22.8 MB of additional disk space will be used.
Get:1 http://gnlug.org/pub/devuan/merged daedalus/non-free-firmware arm64 raspi-firmware all 1.20220830+ds-1 [4,816 kB]
Fetched 4,816 kB in 1s (4,678 kB/s)
Selecting previously unselected package raspi-firmware.
(Reading database ... 70924 files and directories currently installed.)
Preparing to unpack .../raspi-firmware_1.20220830+ds-1_all.deb ...
Unpacking raspi-firmware (1.20220830+ds-1) ...
Setting up raspi-firmware (1.20220830+ds-1) ...
Error: missing /boot/firmware, did you forget to mount it?
dpkg: error processing package raspi-firmware (--configure):
installed raspi-firmware package post-installation script subprocess returned e
rror exit status 1
Processing triggers for initramfs-tools (0.142+deb12u3) ...
update-initramfs: Generating /boot/initrd.img-6.1.93What does work is my suggestion for it.
root@raspi:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 3.6G 0 3.6G 0% /dev
tmpfs 782M 4.9M 777M 1% /run
/dev/sdb2 40G 2.2G 35G 6% /
tmpfs 5.0M 12K 5.0M 1% /run/lock
tmpfs 1.6G 0 1.6G 0% /dev/shm
/dev/sdb1 499M 45M 455M 9% /boot/broadcom
tmpfs 3.9G 0 3.9G 0% /tmp
/dev/sda1 3.6T 1.2T 2.4T 34% /home/zeus/rtorrent
tmpfs 782M 0 782M 0% /run/user/1000
root@raspi:~# umount /dev/sdb1
root@raspi:~# mkdir /boot/firmware
root@raspi:~# mount /dev/sdb1 /boot/firmware
root@raspi:~# apt install raspi-firmware
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
firmware-brcm80211 bluez-firmware
The following NEW packages will be installed:
raspi-firmware
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/4,816 kB of archives.
After this operation, 22.8 MB of additional disk space will be used.
Selecting previously unselected package raspi-firmware.
(Reading database ... 70924 files and directories currently installed.)
Preparing to unpack .../raspi-firmware_1.20220830+ds-1_all.deb ...
Unpacking raspi-firmware (1.20220830+ds-1) ...
Setting up raspi-firmware (1.20220830+ds-1) ...
Processing triggers for initramfs-tools (0.142+deb12u3) ...
update-initramfs: Generating /boot/initrd.img-6.1.93
Creating initrd.gz.
root@raspi:~# cat /etc/os-release
PRETTY_NAME="Devuan GNU/Linux 5 (daedalus)"
NAME="Devuan GNU/Linux"
VERSION_ID="5"
VERSION="5 (daedalus)"
VERSION_CODENAME="daedalus"
ID=devuan
ID_LIKE=debian
HOME_URL="https://www.devuan.org/"
SUPPORT_URL="https://devuan.org/os/community"
BUG_REPORT_URL="https://bugs.devuan.org/"
root@raspi:~# uname -a
Linux raspi 6.1.93 #1 SMP PREEMPT Wed Oct 29 02:31:11 CET 2025 aarch64 GNU/LinuxI would go with a.
umount /dev/mmcblk0p1
mkdir /boot/firmware
mount /dev/mmcblk0p1 /boot/firmwareInstall the package then go back to the broken method the image is built with by reversing the changes to mount the /boot/broadcom again. I have no idea why the images are built with breaking changes that are not compatible with the debian archive files but it is the situation we find ourselves in by using it. I used an installer from a few days before that on my Pi4 and tried to update it to the Excalibur when it released the damn thing fails on the install of the kernel and initramfs-tools. So there is something to look forward too if ever wanting to do that. Oh if the mounting idea fails then try a symbolic link of the /boot/firmware to the /boot/broadcom.
Thanks, didn't know that. Good news, makes things a bit easier.
May as well make it even easier and set it up with the new style file layout, this includes everything and works without problems. Move the sources.list to a backup to stop apt from complaining about duplicates.
root@9600k:~# cat /etc/apt/sources.list.d/devuan.sources
# Devuan 6 excalibur
## The new style method of using repositories to install software.
## This /etc/apt/sources.list.d/devuan.sources is new style and location file
## The /etc/apt/old.style.sources.list contains the same as this.
## https://linuxconfig.org/ubuntus-repository-configuration-ubuntu-sources-have-moved-to-etc-apt-sources-list-d-ubuntu-sources
## Normal excalibur sources
Types: deb
URIs: http://gnlug.org/pub/devuan/merged
Suites: excalibur excalibur-backports excalibur-proposed-updates excalibur-updates
Components: main non-free contrib non-free-firmware
Enabled: yes
Signed-By: /usr/share/keyrings/devuan-archive-keyring.gpg
Architectures: amd64
## excalibur security sources
Types: deb
URIs: http://gnlug.org/pub/devuan/merged
Suites: excalibur-security
Components: main non-free contrib non-free-firmware
Enabled: yes
Signed-By: /usr/share/keyrings/devuan-archive-keyring.gpg
Architectures: amd64i can't get apt to update from the obsolete libupower-glib1 to libupower-glib3, something is borked in this vm but not sure what. maybe the version "number" is confusing apt due to the presence of the colon?
That is called an epoch in debian packaging terms it is used when there is a mis match in the package numbers. In addition your package you want to replace has a devuan in the name which means it has been edited by the maintainers to ensure it works on the system. Trying to replace it because you think you know better what packaging is needed than the people who put together the system is a bad idea. I have not seen one mention of why this replacement is needed by you other than it is outdated, on a system that is working properly with it installed at that version.
for kde, upower is a 'depends' and not a 'recommends' so it cannot be removed:
apt will remove the entire desktop when purging upower:
It most certainly can be removed/purged without losing the KDE desktop.
root@9600k:~# apt -s purge upower
The following package was automatically installed and is no longer required:
libupower-glib3
Use 'apt autoremove' to remove it.
REMOVING:
upower*
Summary:
Upgrading: 0, Installing: 0, Removing: 1, Not Upgrading: 0
Purg upower [1.90.9-5]root@9600k:~# apt policy plasma-desktop plasma-workspace kde-plasma-desktop kde-standard task-kde-desktop
plasma-desktop:
Installed: 4:6.3.6-1
Candidate: 4:6.3.6-1
Version table:
*** 4:6.3.6-1 990
990 http://gnlug.org/pub/devuan/merged excalibur/main amd64 Packages
100 /var/lib/dpkg/status
plasma-workspace:
Installed: 4:6.3.6-2
Candidate: 4:6.3.6-2
Version table:
*** 4:6.3.6-2 990
990 http://gnlug.org/pub/devuan/merged excalibur/main amd64 Packages
100 /var/lib/dpkg/status
kde-plasma-desktop:
Installed: (none)
Candidate: 5:162
Version table:
5:162 990
990 http://gnlug.org/pub/devuan/merged excalibur/main amd64 Packages
kde-standard:
Installed: (none)
Candidate: 5:162
Version table:
5:162 990
990 http://gnlug.org/pub/devuan/merged excalibur/main amd64 Packages
task-kde-desktop:
Installed: (none)
Candidate: 3.81devuan1
Version table:
3.81devuan1 990
990 http://gnlug.org/pub/devuan/merged excalibur/main amd64 PackagesWhat is going to be removed by your command is the meta packages which bring in the complete set of packages for those tasks. If it was removing all of them packages you would see hundreds of them being removed not the grand total of four it will remove with your simulation. In short your desktop would still be intact without them but without the upower being used. It is time to accept the people who put this system together know what they are doing with the version of the software they install on it to get and keep it running.
I don't have any memory issue or anything,
So for the sake of less than a 100M saving you are going to waste all that time on every kernel upgrade to get rid of them.
root@9600k:~# du -h /lib/modules/6.12.48+deb13-amd64
snip....
40K /lib/modules/6.12.48+deb13-amd64/kernel/sound/firewire/motu
312K /lib/modules/6.12.48+deb13-amd64/kernel/sound/firewire
20K /lib/modules/6.12.48+deb13-amd64/kernel/sound/isa/sb
24K /lib/modules/6.12.48+deb13-amd64/kernel/sound/isa
8.2M /lib/modules/6.12.48+deb13-amd64/kernel/sound
68K /lib/modules/6.12.48+deb13-amd64/kernel/block
102M /lib/modules/6.12.48+deb13-amd64/kernel
107M /lib/modules/6.12.48+deb13-amd64The quickest way for you to do this if you want to persist is to start building your own kernels with only the modules needed for your install. That guarantees that you will never have any excess modules loaded. Unless you apply the Debian patches to it it will lack the possible security fixes they do this is solved if you use their source to build the kernel.
I recommend any FLS/copyleft license: some places public domain gets ruined (stolen/copyrighted by commercialists).
I am certain most are not going to want to steal it to make some cash the vast majority of it is code I found other places and adopted for my use. Or trial and error for parts of it to get it working correctly. They will most likely be able to come up with better. Well the size of it is mainly due to all of the drives/machines options it does the backups to. You can cut them back considerably without it effecting the script. Just start simply using pieces of it to start with, with a lot of simply echo commands in place of where you want code to run after a condition you want to do is reached. This gives you idea it works as you want then you put the code you want in the section there. Then test it a few times with to see how it does. This allows you to build it up over time to do what you want done. Always make backup copies when you make changes this allows you to go back to known working copy if you mess it up totally to start again on what you want done. For example to start off with use this.
root@9600k:~# nano test.sh
root@9600k:~# cat test.sh
#!/bin/bash
# The file test is to test the mounting to the drive specified, pass in /dev/sda for example
# The partitions have to be labeled properly for it to find the UUIDs and the EFI partition
# needs to be of the form with the UUID in the fifth position. The EFI partition as 1,
# the / partition as 2 and the /home partition as 3
# Check to make certain the variables have been passed in the script.
if [ -z "$1" ] ; then
echo "The drive needs to be specified if sda for backup then /dev/sda."
exit 0
fi
# The partitions to be mounted for the copying/syncing operation make the mount points.
# Check to see if efi sync/copy directory exists if not create it.
if [ ! -d /tmp/efi ] ; then
mkdir "/tmp/efi"
echo "Created /tmp/efi directory for syncing/copying boot files"
else
echo "Already created /tmp/efi directory for syncing/copying boot files"
fi
# Check to see if /home sync/copy directory exists if not create it.
if [ ! -d /tmp/home ] ; then
mkdir "/tmp/home"
echo "Created /tmp/home directory for syncing/copying home files"
else
echo "Already created /tmp/home directory for syncing/copying home files"
fi
# Check to see if / sync/copy directory exists if not create it.
if [ ! -d /tmp/root ] ; then
mkdir "/tmp/root"
echo "Created /tmp/root directory for syncing/copying root files"
else
echo "Already created /tmp/root directory for syncing/copying root files"
fi
# mount the directories checking for an already mounted directory if doing a second rsync
# run without unmounting.
# check to see if /tmp/efi already mounted
mount1=$(mount | grep "$1"1 | cut -d " " -f 1)
mount2=$(mount | grep "$1"1 | cut -d " " -f 3)
if [ "$mount1" = "$1"1 ]; then
echo "$mount1"" is mounted as ""$mount2"
else
mount "$1"1 /tmp/efi
echo "Mounted ""$1""1 as /tmp/efi"
fi
# check to see if /tmp/root already mounted
mount3=$(mount | grep "$1"2 | cut -d " " -f 1)
mount4=$(mount | grep "$1"2 | cut -d " " -f 3)
if [ "$mount3" = "$1"2 ]; then
echo "$mount3"" is mounted as ""$mount4"
else
mount "$1"2 /tmp/root
echo "Mounted ""$1""2 as /tmp/root"
fi
# check to see if /tmp/home already mounted
mount5=$(mount | grep "$1"3 | cut -d " " -f 1)
mount6=$(mount | grep "$1"3 | cut -d " " -f 3)
if [ "$mount5" = "$1"3 ]; then
echo "$mount5"" is mounted as ""$mount6"
else
mount "$1"3 /tmp/home
echo "Mounted ""$1""3 as /tmp/home"
fi
root@9600k:~# chmod +x test.sh
root@9600k:~# ./test.sh /dev/sda
Already created /tmp/efi directory for syncing/copying boot files
Already created /tmp/home directory for syncing/copying home files
Already created /tmp/root directory for syncing/copying root files
Mounted /dev/sda1 as /tmp/efi
Mounted /dev/sda2 as /tmp/root
Mounted /dev/sda3 as /tmp/homeSo now you would have script that mounts a backup drive on the passed in to the script variable the /dev/sda like I use here. Which on my machine is the backup drive for my main install that I backup to before any major changes are done so I have something to go back to if it fails. After this you add the next thing you want done like copy/rsyncing the files to them.
I would add the comment at the very top about the labels set are this.
root@9600k:~# blkid |grep nvme0 | sort -n
/dev/nvme0n1p1: SEC_TYPE="msdos" LABEL_FATBOOT="CRUCIAL_EFI" LABEL="CRUCIAL_EFI" UUID="F0D8-55B1" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="06c13ca4-c6b9-41b0-9ed3-756ce6282278"
/dev/nvme0n1p2: LABEL="CrucialRoot" UUID="766dcfc3-a1e4-495f-86e2-570205723fef" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="74a3fd28-a39c-4a91-b015-31676217edaa"
/dev/nvme0n1p3: LABEL="CrucialHome" UUID="dc257f43-9b9a-4db0-bf79-7af981389d29" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="5c46783f-9051-463e-add8-fadcbe15d0f0"
/dev/nvme0n1p4: LABEL="CrucialMusic" UUID="5a6278cb-79eb-424b-a6d5-c85add3e641a" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Linux filesystem" PARTUUID="63732088-e879-490e-8f32-dff97ee9dd99"Without them the grepping I do to check if they are mounted fails and of course as I say in it the partition order is critical 1 is efi, 2 is / and 3 is /home. All my drive are setup this way if not the script has no idea if the correct partitions to backup are chosen.
Edit: And as I was looking at it again there are now 18 options for the backups to be done.
Is your whole script Free/Libre Opensource Software (FLS, OSS, FOSS, FLOSS) anywhere people can learn?
I have just sent it to you using the email function here when looking at the username. It is not anywhere else but on my machine. As to the license consider it in the public domain you can do anything you wish with it.
but I'm slightly bewildered why you'd backup /dev, /proc, /sys, /run, /tmp, swap
You must have missed the exclude= in front of those things, they are not backed up as they are not necessary to do so. The computer recreates all of those directories on boot as that line is for a running system. It is even easier for a system booted from as USB stick a simple mounting of the machine drive and then the back to drive and an rsync of everything on the machine drive to the backup is done. There is no need to exclude anything all that needs to be done on the backup drive you need to make the changes required to boot it on the new machine, in the efi, grub.cfg, fstab, hosts, hostname and any other things you need done. Once completed it should just boot on the new machine. Just make your script going bit by bit at a time testing it along the way until you get it done. Other tools mentioned when I first tried this many years ago not a single one of them could preform a backup and restore so I just carried on and got my solution which works flawlessly after all these years so I see no point in even trying them to judge the state of them now. All they are anyways is just someones code to do the same thing mine does, which if it goes wrong I have no clue where to search to make it work. With mine I know it inside and out and know exactly where to look if my recent change caused some problem. Worse case I go back to the previously working backed up script and try again with new one.
Edit: Oh one of those excluded items are needed the /swap but on an existing install you need not do anything with copying it. It is cleared and used on the reboot/boot of the machine like the /tmp directory. One thing I do need though is the fix_swap.sh run if it is new install drive as it will not exist and you will get a warning error on boot. So I run this file on such a drive and everything is back to normal as it should be.
root@9600k:~# cat bin/fix_swap.sh
#!/bin/bash
# A script to fix the swapfile missed when using new partition without one already there for a backup/clone/restore.
# make the /swapfile file
fallocate -l 2G /swapfile
# correct the permissions
chmod 600 /swapfile
# format as swap space
mkswap /swapfile
# load the /swapfile
swapon /swapfileI use swap file as I am not interested in dedicated partition for the purpose that is just one more UUID to keep track of one each and every install.
It'd also be a way one might quickly copy a Devuan install from an old to new PC without having to do an entire new installation.
In my backup script I use I have this for the main backup of root.
# Snyc/Copy the / directory.
rsync -ahPHAXx --delete --exclude={/boot/efi/*,/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/swapfile,/lost+found} / /tmp/root/
echo "Completed Sync/Copy to /tmp/root directory used for root files backup"That is run to copy to external usb drive which then get booted on the machine it will be installed on. An example of the files copied to the external drive.
6)
# Backup the install to the Intel_Spare drive for use in my spare machine full install with extra directories mounted on HD & NVMe drive
cp /root/bin/EFI_intel_grub.cfg /tmp/efi/EFI/debian/grub.cfg
cp /root/bin/boot_intel_grub.cfg /tmp/root/boot/grub/grub.cfg
cp /root/bin/intel_fstab_spare /tmp/root/etc/fstab
;;As you can see it is option number six of sixteen in that script which backs up to various drives and machine they will be booted on. Including cloning to the internal boot drive on the machines. I have quite the number of files used in this procedure depending on the machine involved. In addition there are sections in the script that solve the hostname problem.
# For changing the host name
HNAME=$(hostname)
echo "The host name is currently ""$HNAME"
read -r -p "Change it to another name? (y/n)? " choice
case "$choice" in
y|Y )
# Get new host name
read -r -p "Enter new hostname " newNAME
sed -i "s/$HNAME/$newNAME/g" /tmp/root/etc/hostname
sed -i "s/$HNAME/$newNAME/g" /tmp/root/etc/samba/smb.conf
# If 8400 hostname machine
if [ $newNAME == 8400 ]; then
cp /root/bin/etc_hosts_8400 /tmp/root/etc/hosts
echo "Copied /root/bin/etc_hosts_8400 to /tmp/root/etc/hosts"
cp /root/bin/gkrellm_user-config_8400 /tmp/home/$USER/.gkrellm2/user-config
cp /root/bin/gkrellm_sensor-config_8400 /tmp/home/$USER/.gkrellm2/sensor-config
chown $USER:$USER /tmp/home/$USER/.gkrellm2/user-config
chown $USER:$USER /tmp/home/$USER/.gkrellm2/sensor-config
echo "Copied /root/bin/gkrellm_user-config_8400 to home directory"
echo "Copied /root/bin/gkrellm_sensor-config_8400 to home directory"
cp /root/bin/rtorrent-rc_8400 /tmp/home/$USER/.rtorrent.rc
chown $USER:$USER /tmp/home/$USER/.rtorrent.rc
echo "Copied /root/bin/rtorrent-rc_8400 to home directory"
rm /tmp/root/etc/rc0.d/K01apcupsd
rm /tmp/root/etc/rc1.d/K01apcupsd
rm /tmp/root/etc/rc2.d/S03apcupsd
rm /tmp/root/etc/rc3.d/S03apcupsd
rm /tmp/root/etc/rc4.d/S03apcupsd
rm /tmp/root/etc/rc5.d/S03apcupsd
rm /tmp/root/etc/rc6.d/K01apcupsd
echo "Removed apcupsd init.d startup/shutdown files"
rm /tmp/root/etc/rc0.d/K01rtorrent
rm /tmp/root/etc/rc1.d/K01rtorrent
rm /tmp/root/etc/rc2.d/S03rtorrent
rm /tmp/root/etc/rc3.d/S03rtorrent
rm /tmp/root/etc/rc4.d/S03rtorrent
rm /tmp/root/etc/rc5.d/S03rtorrent
rm /tmp/root/etc/rc6.d/K01rtorrent
echo "Removed rtorrent init.d startup/shutdown files"
fiThere you can see in this section what is to be done for the machine 8400 I change the hostname in the three places it needs to be done. Copy over the gkrellm config files for the machine, the rtorrent.rc while at the same time disabling the started of the rtorrent and the apcupsd. As those are not needed on startup on that machine but can be used if necessary. Since all my machines are efi booting I also have section in there for it too.
# remove files on /tmp/efi gets only the files present on the install.
rm -r /tmp/efi/*
echo "efi directory now empty"
# Snyc/Copy the efi directory.
scp -r /boot/efi/* /tmp/efi/
echo "Completed Sync/Copy to /tmp/efi directory used for efi files backup"The machine specific file for the efi is copied in its drive section to be set by it so it will boot. I also have separate home partition I backup this uses a file I found years ago to stop my rsync from including things it should not be.
root@9600k:~# cat /usr/local/bin/rsync-homedir-excludes.txt
# rsync-homedir-excludes
#
# A list of files to exclude when backing up *nix home directories using rsync.
#
# Author: Ruben Barkow-Kuder <https://github.com/rubo77/rsync-homedir-excludes>
# Version: 2019-11-30
#The section of the home backup in the script.
# Snyc/Copy the /home directory.
USER=zeus
# Delete the SingletonLock on target drive if there so these browsers do not get stuck opening.
if [ -d "/tmp/home/$USER/.config/BraveSoftware/Brave-Browser/SingletonLock" ]; then
rm "/tmp/home/$USER/.config/BraveSoftware/Brave-Browser/SingletonLock"
echo "Removed /tmp/home/$USER/.config/BraveSoftware/Brave-Browser/SingletonLock"
fi
if [ -d "/tmp/home/$USER/.config/chromium/SingletonLock" ]; then
rm "/tmp/home/$USER/.config/chromium/SingletonLock"
echo "Removed /tmp/home/$USER/.config/chromium/SingletonLock"
fi
if [ -d "/tmp/home/$USER/.config/microsoft-edge/SingletonLock" ]; then
rm "/tmp/home/$USER/.config/microsoft-edge/SingletonLock"
echo "Removed /tmp/home/$USER/.config/microsoft-edge/SingletonLock"
fi
rsync -avP --delete --exclude-from=/usr/local/bin/rsync-homedir-excludes.txt /home/$USER/.[^.]* /tmp/home/$USER/
rsync -avP --delete /home/$USER/bin /tmp/home/$USER/
rsync -avP --delete /home/$USER/Desktop /tmp/home/$USER/
rsync -avP --delete /home/$USER/Documents /tmp/home/$USER/
rsync -avP --delete /home/$USER/Downloads /tmp/home/$USER/
rsync -avP --delete /home/$USER/Pictures /tmp/home/$USER/
rsync -avP --delete /home/$USER/Public /tmp/home/$USER/
rsync -avP --delete /home/$USER/src /tmp/home/$USER/
rsync -avP --delete /home/$USER/Templates /tmp/home/$USER/
rsync -avP --delete /home/$USER/Videos /tmp/home/$USER/
# For my wallpapers to be copied
mkdir -p /tmp/home/$USER/.cache/gnome-control-center/backgrounds
chown $USER:$USER /tmp/home/$USER/.cache/gnome-control-center/backgrounds
cp -vp /home/$USER/Pictures/background/* /tmp/home/$USER/.cache/gnome-control-center/backgrounds/
# For the Music directory that is not synced, if this is fresh formatted disk
# so the mount point will exist and it not fail on boot due lack of it.
if [ ! -d "/tmp/home/$USER/Music" ]; then
mkdir "/tmp/home/$USER/Music"
chown $USER:$USER "/tmp/home/$USER/Music"
echo "Created home/$USER/Music directory"
fi
# For the rtorrent directory that is not synced, if this is fresh formatted disk
# so the mount point will exist and it not fail on boot due lack of it.
if [ ! -d "/tmp/home/$USER/rtorrent" ]; then
mkdir "/tmp/home/$USER/rtorrent"
chown $USER:$USER "/tmp/home/$USER/rtorrent"
echo "Created home/$USER/rtorrent directory"
fi
echo "Completed Sync/Copy to /tmp/home directory used for home files backup"Hopefully this will give you some ideas on how to do it, it took me some amount of time to get it right threw trail and error to have a script that works flawlessly now for years. I use it may times a week to clone my install to install to my backup machine if testing something new. It is also the basis for my cron jobs that backup my machine to a drive in the machine every two hours.
Oh almost forgot the grub files.
root@9600k:~# ll bin/boot_
boot_crucial_grub.cfg boot_nvme_external_spare_grub.cfg
boot_ediloca_8500t_grub.cfg boot_nvme_grub.cfg
boot_elements_grub.cfg boot_nvme_spare_grub.cfg
boot_intel_grub.cfg boot_samsung_256_grub.cfg
boot_kingston_grub.cfg boot_sp_external_grub.cfg
boot_lenovo_grub.cfg boot_sp_nvme_grub.cfg
boot_mushkin_8500t_grub.cfg boot_wd_nvme_spare_grub.cfg
boot_mushkin_grub.cfg Those files get copied over depening on the option chosen and after every kernel upgrade I run the fix for the files so everything will continue to boot.
root@9600k:~# ll bin/fix_
fix_apcupsd.sh fix_grub_samsung_256.sh
fix_grub_crucial_nvme.sh fix_grub_sp_nvme.sh
fix_grub_ediloca_8500t.sh fix_grub_sp_nvme_spare.sh
fix_grub_intel_external.sh fix_grub_wd_nvme_spare.sh
fix_grub_kingston_ssd.sh fix_rtorrent.sh
fix_grub_lenovo.sh fix_swap.sh
fix_grub_mushkin_8500t_ssd.sh fix_timeout_grub.shA section of one of the files.
root@9600k:~# cat bin/fix_grub_crucial_nvme.sh
#!/bin/bash
# A script to fix the GRUB loader that is put into the boot directory when
# making a copy of my install. It is used when a kernel is upgraded so it will
# have a proper /boot/grub/grub.cfg to boot the install after the copying his done.
# Used when booted from my Crucial 4TB NVMe 9600k drive
# Fix the always 30 countdown in grub with a 5 second one before doing
# the rest of this.
sed -i "s/timeout=30/timeout=5/g" /boot/grub/grub.cfg
# My main Crucial NVMe install.
cp /boot/grub/grub.cfg /root/bin/boot_crucial_grub.cfg
sed -i "s/766dcfc3-a1e4-495f-86e2-570205723fef/766dcfc3-a1e4-495f-86e2-570205723fef/g" /root/bin/boot_crucial_grub.cfg
# My spare SP NVMe install.
cp /boot/grub/grub.cfg /root/bin/boot_sp_nvme_grub.cfg
sed -i "s/766dcfc3-a1e4-495f-86e2-570205723fef/a4410a13-b1ea-4007-b22f-6eb9e0a2ead4/g" /root/bin/boot_sp_nvme_grub.cfg
# My spare machine SP NVMe install.
cp /boot/grub/grub.cfg /root/bin/boot_nvme_spare_grub.cfg
sed -i "s/766dcfc3-a1e4-495f-86e2-570205723fef/f5b84b31-ce88-48ed-bbe4-edeec7a29fb2/g" /root/bin/boot_nvme_spare_grub.cfg
# My Intel external
cp /boot/grub/grub.cfg /root/bin/boot_intel_grub.cfg
sed -i "s/766dcfc3-a1e4-495f-86e2-570205723fef/6977106c-69db-4634-b33f-9a03da4b46ed/g" /root/bin/boot_intel_grub.cfg
# My laptop
cp /boot/grub/grub.cfg /root/bin/boot_lenovo_grub.cfg
sed -i "s/766dcfc3-a1e4-495f-86e2-570205723fef/cd974621-e821-401a-9df2-82054deed073/g" /root/bin/boot_lenovo_grub.cfgAs you can see it is a rather involved process I have developed to get this done but it has worked for years for me now. It will take time for you to get your own up and running but if you keep at it you can get it done.
I think they are letting young people work on the code... BAD! Leave it to us old farts!
Meh, I like the new format I think the idea is to make it more machine readable. Just for giggles looking at the labels in it I put two repositories on the single line it updates both of them just fine. Who knows if it will install packages from both or not.
root@9600k:~# agu
Hit:1 http://gnlug.org/pub/devuan/merged excalibur InRelease
Hit:2 http://gnlug.org/pub/devuan/merged excalibur-backports InRelease
Hit:3 http://gnlug.org/pub/devuan/merged excalibur-proposed-updates InRelease
Hit:4 http://gnlug.org/pub/devuan/merged excalibur-updates InRelease
Hit:5 http://de.deb.devuan.org/merged excalibur InRelease
Hit:6 http://gnlug.org/pub/devuan/merged excalibur-security InRelease
Hit:7 https://apt.benthetechguy.net/debian trixie InRelease
Hit:8 http://de.deb.devuan.org/merged excalibur-backports InRelease
Hit:9 http://de.deb.devuan.org/merged excalibur-proposed-updates InRelease
Hit:10 http://de.deb.devuan.org/merged excalibur-updates InRelease
All packages are up to date. root@9600k:~# cat /etc/apt/sources.list.d/devuan.sources
# Devuan 6 excalibur
## The new style method of using repositories to install software.
## This /etc/apt/sources.list.d/devuan.sources is new style and location file
## The /etc/apt/old.style.sources.list contains the same as this.
## https://linuxconfig.org/ubuntus-repository-configuration-ubuntu-sources-have-moved-to-etc-apt-sources-list-d-ubuntu-sources
## Normal excalibur sources
Types: deb
URIs: http://gnlug.org/pub/devuan/merged http://de.deb.devuan.org/merged
Suites: excalibur excalibur-backports excalibur-proposed-updates excalibur-updates
Components: main non-free contrib non-free-firmware
Enabled: yes
Signed-By: /usr/share/keyrings/devuan-archive-keyring.gpg
Architectures: amd64
## excalibur security sources
Types: deb
URIs: http://gnlug.org/pub/devuan/merged
Suites: excalibur-security
Components: main non-free contrib non-free-firmware
Enabled: yes
Signed-By: /usr/share/keyrings/devuan-archive-keyring.gpg
Architectures: amd64Edit:
root@9600k:~# alias agu
alias agu='apt update'