You are not logged in.

#1 2022-01-18 02:31:41

Bearded_Blunder
Dodging A Bullet
From: Seat: seat0; vc7
Registered: 2015-09-29
Posts: 1,146

[How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

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.

Install

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.

Tip: wrote:

Both the Gentoo & Arch wikis are great resources for how to manage services using OpenRC.

Swich init

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 tongue

sudo systemctl reboot
Stop systemd coming back

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
equivs package

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.
32 bit wrote:
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.

Tip wrote:

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
32bit wrote:
elogind-compat-equivs_1.0_i386.deb
Historic note wrote:

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...

Liftoff! (Almost)

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.

Bunsen specific

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.

Network Manager notes:

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
Liftoff!

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

#2 2023-01-07 05:53:34

tahoebunsen
Member
Registered: 2022-04-25
Posts: 18

Re: [How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

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

#3 2023-01-08 03:10:17

DeepDayze
Like sands through an hourglass...
From: In Linux Land
Registered: 2017-05-28
Posts: 1,901

Re: [How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

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

#4 2023-01-08 18:19:30

tahoebunsen
Member
Registered: 2022-04-25
Posts: 18

Re: [How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

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

#5 2023-01-10 06:47:53

hhh
Gaucho
From: High in the Custerdome
Registered: 2015-09-17
Posts: 16,138
Website

Re: [How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

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

#6 2023-01-10 15:48:55

tahoebunsen
Member
Registered: 2022-04-25
Posts: 18

Re: [How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

Ah, okay, thanks Colonel. I hope he's well, nonetheless.

Offline

#7 2023-01-11 07:32:40

hhh
Gaucho
From: High in the Custerdome
Registered: 2015-09-17
Posts: 16,138
Website

Re: [How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

Lol, colonel. Funny word.


I don't care what you do at home. Would you care to explain?

Offline

#8 2023-01-12 23:34:50

tahoebunsen
Member
Registered: 2022-04-25
Posts: 18

Re: [How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

Well, if the boot fits. ;-)

Offline

#9 2024-05-31 19:10:50

Bearded_Blunder
Dodging A Bullet
From: Seat: seat0; vc7
Registered: 2015-09-29
Posts: 1,146

Re: [How To] Debian Bullseye {& BL Beryllium(dev)} Without systemd

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

Board footer

Powered by FluxBB