You are not logged in.
If you decide to run this way, consider enabling popularity contest (popcon), so the Debian devs know that an alternate init *is* being used. Also bear in mind, you're far more likely to see glitches than you would be if you were using systemd, it might be as glitch prone as running Testing or Sid.
For Bunsen, I still think it's a better idea and likely to cause less problems than trying to run on top of Devuan or another non Debian distro though.
Do a normal netinstall, when you get to package / desktop selection deselect everything except standard system utilities.
For Bunsen, DO NOT set a password for root, you'll be set up to use sudo.
I strongly recommend the same for any of the other desktop environments, but it's *required* for Bunsen.
Why OpenRC? OpenRC was absolutely needed in Buster, since I had to recompile policykit & doing that was broken without OpenRC present, I'm sticking with using it just in case I find any other broken package where building against libelogind-dev instead of libsystemd-dev with OpenRC present also cures it.
Both the Gentoo & Arch wikis are great resources for how to manage services using OpenRC.
Now to actually make the change.
sudo apt-get install sysvinit-core openrc
Since this is the only reboot in the how-to where this command will actually work politely and firmly say goodbye to using systemd as init
sudo systemctl reboot
Tell apt it's not allowed to install/reinstall systemd (sydtemd-sysv already went away, systemd will later).
If you don't actually *pin* systemd-sysv and systemd itself, apt struggles with deps resolution and sometimes blocks things that go on fine *with* the pin, you also avoid the risk that some random package decides to switch you back to systemd when you're not watching closely.
sudo nano /etc/apt/preferences.d/no-systemd-please
Make it as follows:
Package: systemd-sysv systemd
Pin: release *
Pin-Priority: -1
A *lot* of things in Buster were broken without this, In Bullseye it's *much* better, I think the init diversity team have been quietly busy. Some of, the standard Desktop environments install & seem to mostly work without doing this step, but there are random bugs & glitches, if (at your own risk) you skip this, & your system breaks, you get to keep the pieces! Others require it.
In case of packages hard-coded to look for libpam-systemd (e.g. gdm) we need to tell them to use libpam-elogind instead, which they can do if they find it. The poweroff/reboot options in lightdm being a case in point, broken (at least in 32 bit) without it, expect other random things to be broken too if you skip building it.
Get some required packages:
sudo apt install build-essential devscripts equivs fakeroot gdebi-core libdistro-info-perl --no-install-recommends
I had a shorter list here with recs, but you should have seen what it pulled in, this pulls enough in, but it does the job without errors.
Prepare to configure our package:
mkdir -p hacks/elogind-compat-equivs
cd hacks/elogind-compat-equivs
equivs-control elogind-compat-equivs
We need to define what this is and does, description in case someone does `apt show elogind-compat-equivs`, or you do later when cruft-hunting with `deborphan` or `aptitude search "~o"`
You can safely leave stuff I've not indicated commented out and use a shorter description if you like since this is strictly for personal use, just hit enter if it moans about email addresses when building, The layout is important though (note where there are leading spaces or not, it'll bomb out if you get those wrong).
nano elogind-compat-equivs
The key entries are:
Package: elogind-compat-equivs
Depends: libpam-elogind
Provides: libpam-systemd
Replaces: libpam-systemd
Architecture: amd64
Links: /usr/lib/x86_64-linux-gnu/security/pam_elogind.so /usr/lib/x86_64-linux-gnu/security/pam_systemd.so
Description: Compatibilty changes to use elogind
Let libpam-elogind satisfy depends on libpam-systemd
.
Creates a compatibility link for anything hard
coded or configured to look for pam_systemd.so
e.g. lightdm & others.
Architecture: i386 Links: /usr/lib/i386-linux-gnu/security/pam_elogind.so /usr/lib/i386-linux-gnu/security/pam_systemd.so
This needs a .conf file before building and then building.
echo "# Original elogind-compat-equivs.conf file." > elogind-compat-equivs.conf
Now build it:
equivs-build elogind-compat-equivs
Time to install it. This is where libnss-systemd libsystemd0 systemd and systemd-timesyncd go away It pulls in policykit-1 as a recommend, which we don't mind since all the DEs and lots of other software have it as a depend.
Remember gdebi defaults to NO when it asks to install, the opposite of apt or dpkg.
sudo gdebi elogind-compat-equivs_1.0_amd64.deb
elogind-compat-equivs_1.0_i386.deb
On Buster I had to rebuild policykit-1 and install the rebuilt version at this point otherwise it was broken, which appears to be no longer required in Bullseye, thank goodness! It more than doubles the length of the how-to, and required an extra file substitution & link in the equivs package because I did it the hacky way & not properly...
For the standard Debian desktops normally offered by the installer (32 or 64 bit) you can now do:
sudo tasksel
Then pick whichever one you want, they all install, but skip to the bottom "Network Manager Notes" *before rebooting* anything except LXDE or LXQT, else network manager won't work, LXDE & LXQT use other network management software which doesn't come up disabled after a reboot.
When I tried them (yes all, yes both bitnesses, several times in some cases) all the normal GUI based things I tried seemed to work as well as they did under systemd, obviously the systemd `systemctl` stuff in a terminal does't, but that's kind of the point!
For session information, reboot, hibernate, sleep, & poweroff, try `loginctl option` instead of `systemctl option`, the options match.
For service management & control you're working with OpenRC now, & that's not even similar to systemd.
We need to add sources for Bunsen Beryllim-dev:
echo "deb https://kelaino.bunsenlabs.org/~johnraff/debian beryllium main" | sudo tee /etc/apt/sources.list.d/bunsen.list
Then get and add the archive key:
wget https://kelaino.bunsenlabs.org/~johnraff/bunsen-dev.asc -O bunsen-dev.asc
sudo mv bunsen-dev.asc /etc/apt/trusted.gpg.d/
Also make sure you add contrib and non-free to all the existing debian lines in /etc/apt/sources.list
bunsen-meta-(all|lite) have depends that require them. If you never plan to compile anything yourself you can #Comment all the deb-src lines too, it speeds up apt update marginally & saves a little bandwidth.
something like: (but all of them)
deb https://deb.debian.org/debian bullseye main contrib non-free
#deb-src https://deb.debian.org/debian bullseye main contrib non-free
Since our sources have changed:
sudo apt update && sudo apt upgrade
At least for the time being bunsen-meta-all and bunsen-meta-lite are *not* installable directly via apt/apt-get, hopefully that might change, post in or soon to be in Development & Suggestions. I believe I'm onto a fix, still doing some tests. Maybe the Devs will be amenable to my suggestion about how to make them init agnostic, we can hope.
Meanwhile to install bunsen skipping the one package with depends on systemd (dbus-user-session) without having to download, unpack, edit the depends, & re-pack (actually easier & quicker than it sounds) I have a one-liner.
The command below will abort without the -y switch and install nothing, even though I'd normally say it's a very dangerous switch with apt-get and to only ever use it with *EXTREME* caution! Apt also complains about not being scriptable, & says use apt-get, apt actually still works despite moaning, but I'm being good & taking it's advice:
apt-cache show bunsen-meta-all | grep ^Depends: | cut -d ' ' -f 2- | sed 's/,//g' | sed 's/ dbus-user-session//g' | xargs sudo apt-get install --no-install-recommends -y
Best of luck typing that without errors since you're still at a TTY & can't copy/paste ;-) You might need to scroll sideways to see it all especially if you're still on a 1024x768 monitor like my seconary hardware!
See NetworkManager notes below before rebooting into Bunsen.
For any DEs except LXDE or LXQT you'll need to edit /etc/network/interfaces as the message that scrolled by when N-M installed (Bunsen) or was hidden by tasksel (others) said to do.
Since we've had networking set up on a command-line system network-manager won't change the configs we already have as it's installing, which will stop network-manager actually managing the network.
So we have to make changes manually.
sudo nano /etc/network/interfaces
Leave "iface lo inet loopback" but #comment out every entry below that.
Should look similar to below when done "enp9s0" may be completely different, it'll be different again if you installed on a wireless network.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#allow-hotplug enp9s0
#iface enp9s0 inet dhcp
Now rebooot into your new DE
Bunsen users can do:
bl-exit -b
Others (and Bunsen) can use:
loginctl reboot
All the standard DEs come configured to reboot this way without root.
Or your favourite "old school" command, but you might need root/sudo for those.
You now have a genuine Debian Bullseye system that's not using systemd. It wasn't even that hard, I've had tougher experiences installing Windows.
Have fun!!!
Last edited by Bearded_Blunder (2022-01-18 03:57:21)
Blessed is he who expecteth nothing, for he shall not be disappointed...
If there's an obscure or silly way to break it, but you don't know what.. Just ask me
Offline
Hello. Thanks for this no-systemd-please guide, Bearded_Blunder. Very cool.
I tried to install BL Beryllium atop Devuan--because Devuan is my favorite base and BL my favorite everything else--using John Raff's excellent netinstall script. It worked, basically, but I couldn't get the network to function, and so many minor things were broken once the DE was up and running, that I gave up. I then found this thread.
I installed BL Beryllium and followed the steps above until, at TTY, I was unable to solve (once again) the network non-detection so I'm stuck there.
I followed your advice RE the /etc/network/interfaces edit, and I also added "ipv6.disable=1" to GRUB, but to no avail. Strangely, the network was detected when first running Beryllium, just after install, but before commencing your steps.
Any ideas as to where I might go from here?
Thanks in advance.
PS To the devs, Beryllium, is a brilliant success on my 2012 and 2013 Macbook Pros. Great work!
Last edited by tahoebunsen (2023-01-07 05:55:11)
Offline
Nice work on this guide and maybe add information about common OpenRC commands to do service management like start/stop and enable/disable services.
Real Men Use Linux
Offline
Thanks for the response, DeepDayze. It hadn't occurred to me (being a linux newb) that OpenRC might require a different method for starting (network) services than Systemd. I'll research this.
Offline
Just a heads up that the responses to the OP are coming in a year late. Bearded Blunder hasn't posted since August.
Carry on without him, though!
I don't care what you do at home. Would you care to explain?
Offline
Ah, okay, thanks Colonel. I hope he's well, nonetheless.
Offline
Lol, colonel. Funny word.
I don't care what you do at home. Would you care to explain?
Offline
Well, if the boot fits. ;-)
Offline
Sorry to those I didn't respond to on this, life got a bit hectic while my late Father was in failing health, I basically had other priorities.
I might do an updated & hopefully shorter version for Boron, I think it may have got easier. I can't tell without some testing & I have other things ahead of that in the queue.
Blessed is he who expecteth nothing, for he shall not be disappointed...
If there's an obscure or silly way to break it, but you don't know what.. Just ask me
Offline