You are not logged in.
usrmerge is not the end of the world tho there are valid critiscisms on the way it is implemented, mainly that the decision was taken to just symlink the directories without consulting with the author of dpkg and how that impacted dpkg, as it may lead to some issues (big may, so far i have not experienced any but could) not to mention taking that decision the way it was taken put a lot more pressure on the dpkg author to figure a way to support the usrmerge scheme fast and without potentially impacting packages, tho a situation arose where packages built for usrmerge systems would not work on non usrmerge systems due to autotools resolving the destination paths in a different manner, personally i do see the benefit of the usrmerge as there is no longer a good reason to make the separation of the directories and it is more compatible with very legacy stuff that had binaries in the "wrong" directory for one reason or another.
well, sysvinit is unix philosophy compliant, you know that that means?
we do not need to make those other features a necessary part of sysvinit, just implement programs that can perform them and then can interact with sysvinit, for example for hot-swapping/hot-plugging hardware there is a daemon that can manage devices and apply rules, properties and run other programs in response to device plugging, it is called the udev daemon, in devuan it is provided by eudev.
now for service monitoring i know some use daemontools and i remember reading o someone that rolled out a daemon to monitor the running services.
daemon is on the repos and i will say is a good solution all things considered.
regardless i'm still working on this: https://github.com/eylles/shed with the goal of perhaps having a release this month.
perhaps a more "sane" approach would be a repo with 3 branches:
upstream: containing only the code relevant to systemd-boot.
patches: containing the patches to turn upstream into "egummyboot".
gummy: the code to be put into release tarballs.
there are 2 alternatives that ARE in debian and devuan without messing with outdated packages.
one is to use an askpass frontend for sudo, sudo with the -A flag will launch a helper program to get the user password, i've seen even rofi used for that purpose (mind you the author recomends to NOT use rofi for sudo askpass) but a good package for that is ssh-askpass-gnome (gtk frontend), then simply put this line on your .profile export SUDO_ASKPASS="/usr/bin/ssh-askpass"
two is to use pkexec with some polkit authentication agent, most desktop environments have their own polkit agent autostarted but if your's doesn't or you use a window manager then the package policykit-1-gnome provides a gtk polkit auth agent, the autostart desktop file specifies it as gnome only iirc, but you can add your own autostart entry in ~/.config/autostart or simply run /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 somewhere in your .xsession.
ah finally at long last i put out a 0.0.0 version of this daemon.
the package is on unstable, https://tracker.debian.org/pkg/scrcpy
probably because usrmerge was pulled by some update, testing and unstable require usrmerge while stable doesn't.
with elogind you should not need sudo to run loginctl hibernate, tho nowadays i use suspend-then-hibernate, and configure logind so that 30 minutes after suspend-then-hibernate the laptop shuts down for hibernation, i find that more useful than either suspend or hibernate as if it is on StH for less than 30 mins i get practically instant resume, but for more than that it saves battery.
you need to either grow that swap partition or ditch the swap parition, put that 1 gb to your / dir, then create a swap file.
usually for hibernation you want about 1.5x the size of your ram for either a partition or a file
what is the problem? it should add just like any other repo, if it is for the part of the script where it uses lsb_release just use the debian suite name i guess.
i'd say it is better to use sudoedit after running update-alternatives --set editor /usr/bin/vim (or nvim), also editing the sudoers file and being able to use sudo without password is a hell no!
as for other controversial post installation configurations there exist my scripts https://github.com/eylles/devuan-scripts and there are a couple more that will still be added...
well, necroposting side, it doesn't seem like there would be complication to the plan of using the systemd sources to build an 'egummyboot' after rolling a shim that provides the functionality of kernel install, at least so long as the upstream systemd-boot does NOT integrate the libraries and utilities of systemd more into it's own code beyond the level of simply calling their named binaries for the function, tho still i will say for as simple as that seems it almost feels like there's a foot gun waiting to happen there...
https://github.com/eylles/devuan-scripts these are scripts i use on devuan, mostly installlers for stuff like brave or lazygit and firmware blobs, some may find them useful or that there is just the right snippet of shell script they want.
this post is more of a Public Sservice Announcement as this is a problem i've encountered and solved quite a while ago but there is not enough mention online of what happens, why, or how to solve it, so this is intended as a short resource that may perhaps be easy to find.
First and foremost the symptoms you may encounter. These are to be expected on rather modern devices like laptops that support uefi options like secure boot, tho it is not related to the secure boot at all but to the other many options available on such boards.
## Symptoms ##
on boots with splash (plymouth) the screen may simply turn black or get "stuck" on the splash animation and never advance no matter how many time goes by, on non splash boots (text only or quiet) the text either isn't cleared or a black screen is shown around the time the init goes to runlevel S, notice when this happens the sysrq keys do work and you can do the by now "classic" alt+printscr reisub to restart the machine.
the only ways you can get past the black screen or endless splash is by passing the nomodeset flag to the kernel at grub, other flags don't work, if you manage to get a x11 server running (no idea if wayland can even work here) it will be running on software rendering mode with vesa or fbdev with no way to change to accelerated rendering.
if you got all the drivers installed, in this example the packages for amd graphic cards in stable currently:
firmware-linux
firmware-linux-nonfree
firmware-amd-graphics
firmware-misc-nonfree
libglx-mesa0
libegl-mesa0
libgl1-mesa-dri
libdrm-radeon1
libdrm-amdgpu1
libdrm2
libdrm-amdgpu1
libdrm-common
libdrm2
libegl-mesa0
libegl1-mesa
libgbm1
libgl1-mesa-dri
libglapi-mesa
libglx-mesa0
libvulkan1
libx11-xcb1
libxatracker2
mesa-vulkan-drivers
mesa-vdpau-drivers
mesa-va-drivers
then when running glxinfo -B you'll see that you are running in software rendering with Vendor: VMware, Inc. (0xffffffff)
mind you that this last symptom will also occur on unsupported hardware by the kernel and drivers, for example hardware that has come out a year or 2 after the running stable devuan release, in those cases trying testing or unstable may not be a bad idea for hardware support.
## Cause ##
tangent aside, this occurs due to how the kernel gets the information about hardware from the BIOS ROM (or EFI in modern systems), as despite the uefi standarization many manufacturers will provide options that have terrible to downright hacky implementations and break the standar, crucially when it comes to providing boot options such as legacy boot and fast boot, they will expose malformed data and the kernel will fail to properly recognize the hardware.
## Solution ##
on the efi menu options for your device (usually accessed through pressing esc or f12 during boot, if not just get to a grub prompt and type fwsetup) you NEED to disable:
fastboot (name in hp bios) | fast start ("regular" name) | ultra fast boot | ultra fast start # this option keeps the device ram powered on, now you don't need to be a genius to figure out why that can bite you on the behind, but the linux kernel tries to resume form ram then from disk, that is the mechanism on which suspend and hybrid sleep rely on, miscrosoft since windows 8 has made their OS not truly shutdown and start cold but rather this unholy mix of sleep and hibernation along resume which causes laptops with windows OSes to discharge as the os may perform automatic updates when it "should" be off so there's no one to attend it and it can run out off battery mid update breaking the OS... truly m$ innovation
legacy boot # yep, the BIOS mode boot, on boards from 2020 onwards you can be confident the legacy boot will be implemented incorrectly and produce bad data for the kernel to read about the hardware...
that's it, all you have to do is disable fastboot, disable legacy boot and ensure the system can only boot on uefi mode, after that the linux kernel should not have any problem detecting hardware and using it so long as the drivers are installed and support the hardware.
as for secure boot, it has been supported by debian since buster (debian 10, 2019) and it should just work without you needing to disable it, now if you need to disable secure boot to boot a devuan installation image that is a whole different can of worms that is NOT directly related to this.
## sources ##
sources and references for this post:
amd drivers list:
https://dev1galaxy.org/viewtopic.php?id=3913 # the one on post is updated for current stable
bios legacy boot:
https://bbs.archlinux.org/viewtopic.php?id=237818
fastboot | fast start:
there are mutiple sources for this, the brave search ai generated summary is okay enough for the purpose of this post and provides the sources used for it's summary.
brave search summary:
https://search.brave.com/search?q=what+ … ee79c60166
max's tech fast boot video:
https://www.youtube.com/watch?v=pdi9c1tsRQU
## keywords ##
boot stuck, black screen on boot, stuck on plymouth, plymouth black screen, bios, uefi, uefi legacy boot, uefi fast boot, uefi fast start, uefi fastboot
perchance.
#!/bin/sh
fetch_keyrin (){
curl -fsSLo \
/usr/share/keyrings/brave-browser-archive-keyring.gpg \
https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
}
add_sources () {
debsrc="deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main"
echo "$debsrc" \
| tee /etc/apt/sources.list.d/brave-browser-release.list
}
install_brave () {
apt update
apt install brave-browser -y
}
main () {
fetch_keyrin
add_sources
install_brave
}
case "$1" in
run)
main
;;
install)
if [ ! "$( id -u )" -eq 0 ]; then
main
else
pkexec sudo "$0" "run"
fi
;;
esac
the script is very dumb and the use of pkexec is if for example you want to run the script from some graphic prompt or program like a welcome center or the sort that is running unpriviledged.
it also detects if it was ran with sudo directly and skips the whole pkexec business.
i do personally use pipewire and it works for what i do, which is using software that relies on pulse while using software that relies on jack, last i checked that was still a set of hoops to jump with pulse and jack, but since pipewire can provide the interfaces for both pulse and jack from the same daemon it is just a matter of simply running any DAW or plugboard and it just works.
take a look at https://github.com/eylles/afreq.sh it is just a shell script (posxi shell, not even bash) along the initscript to run it as a daemon.
sudo should not be used on init scripts, not directly because of security, but it is assumed not every system may had sudo installed as a minimal install with a root account and password will only have su and require running su to change into the root account to perform all administrative tasks.
that aside in a proper initscript the variable RUN_AS_USER is defined, usually as RUN_AS_USER=root for daemons intended to be ran by the root user, for daemons that need to be ran under a specific user the variable is defined with the intended user.
accordingly the start-stop-daemon program will be used to guarantee correct behaviour, ie check for initialization of instance and creation of the pid file.
an example standar use of start-stop-daemon would be as follows:
start-stop-daemon -S --pidfile ${PIDFILE} --make-pidfile --background \
--chuid ${RUN_AS_USER} --startas ${DAEMON} -- ${DAEMON_ARGS}
as for the options straight from the manual:
-S, --start [--] arguments
Check for the existence of a specified process. If such a process exists, start-stop-daemon does nothing, and exits with error status 1 (0 if --oknodo is specified). If such a process does not exist, it
starts an instance, using either the executable specified by --exec or, if specified, by --startas. Any arguments given after -- on the command line are passed unmodified to the program being started.
the flags and the vars passed should be descriptive enough and those are expected to be defined earlier on the initscript.
as for --background it is used with prgrams that will not fork to background by themselves.
if you want an okay example of a proper initscript file for an arbitrary daemon check https://github.com/eylles/afreq.sh
the file acpufreq.is is the definition of the initscrip, mind you that when you write initscript files not every daemon will support options like reloading the configuration so the route that many initscripts take is to just have the restart idiom also match reload and force-reload like so:
restart|reload|force-reload)
$0 stop && sleep 3 && $0 start
;;
sytemd makes everything easier
took a look at the pipewire setup, left a suggestion in an issue.
honestly as sad as it may seem the devuan forum is not a good place to get feedback on software you are writing on principle of barely getting feedback for one reason or another.
fun, my current solution was to not even bother with daemon but instead write a whole program to do management of user level services independient of any init...
tho i need to work on it.
https://github.com/eylles/shed
i do not use a desktop environment so instead of a regular autostart i use this program, there is a lot more that i need to do since i know next to nothing about some stuff and shed is written off my limited understanding of how sysvinit works.
thanks to shed all i need to have these 3 simple files:
pipewire:
NAME=pipewire
EXEC=/usr/bin/pipewire
pipewire-pulse:
NAME=pipewire-pulse
EXEC=/usr/bin/pipewire-pulse
wireplumber:
NAME=wireplumber
EXEC=/usr/bin/wireplumber
and shed will do the rest, i can restart any individual binary if needed or all 3.
in march i had to move from devuan unstable to testing because the t64 migration wasn't kind to my system and i needed some extra time running as i was, i really want to avoid a re-install but seems like that is what i will have to do.
fun enough, systemd does link xz-utils so machines running systemd with xz-utils 5.6.0 are extra compromised with an init level backdoor...
weird i installed usrmerge back in at least march and everything works, then again i'm on ceres so maybe the usrmerge is more "volatile" on stable but still nothing has broke, as for the argument about uptimes it ain't weird when i clock about 70 days of uptime, the only thing that i've ever noticed not working is the plugin scripts of krita but i never tried using them before the usrmerge so as far as i'm concerned krita on debian is slightly broken and may as well have been forever broken.