Migrating from Debian to Devuan
How to migrate from Debian to Devuan (fork with sysvinit as default init system and without systemd);
Init system is required to start your OS services in correct order. Due to long period of live UNIX-like systems and due to different tasks for each one some number of different init systems have appeared. Some of them are very easy to use as end-user, due to lot’s of automatic and complex logic. Some of them are very easy to maintain and troubleshoot because of KISS principle and plain text nature of scripts that are running. Bad thing that very complicated to combine both factors in one init-system and make it reliable and predictable.
If everything work as expected you usually don’t need to think about what init system you use, but when problems begins - you understand advantages and disadvantages one init system with compare to another.
Simple factor - possibility to fix your broken system without any access to the Internet - can be critical in some cases.
If you want to use power of GNU/Linux Debian, but don’t want systemd as your init system - let’s migrate to Devuan.
Freedom of choice is the best thing from F/OSS world.
First of all
- I am not “systemd hater”;
- I have no reason to blame Lennart Poettering personally not for issues Pulseaudio, not for issues with systemd or systemd itself;
- For my personal opinion, systemd can be good for special cases and in 5 years will be production ready and match for some cases for today, I think;
- Sysvinit, OpenRC, Upstart, (…) aren’t better in generic as init systems; They provide much different way of how init process goes;
- Whether we like or not - currently systemd is widely used on enterprise level and we have to learn how to use it and how it’s works.
This article is not about systemd, but about practice to migrate to Devuan;
What’s wrong with Systemd, for my opinion?
- Systemd have lot’s of security bugs;
This one liner will freeze your system and you don’t have to be root;
while true; do NOTIFY_SOCKET=/run/systemd/notify systemd-notify ""; done
(no matter that it can be fixed for now - there are ton’s of them)
- Complexity of systemd can be compared with Linux kernel with exception drivers;
- Systemd is huge project;
- It keep growing and changing;
- Boot time speedup looks not very huge benefit for server or desktop that’s reboots only 3 times per year when security patches installing;
- For any other systemd cons - there are already existing tool that can be used if required;
- Nice image that’s explains a lot about systemd from emotional point of view:
Some other random known issues
- You will no be able to have a separate /usr mount with systemd;
- Systemd terminates postgresql 90 sec after start
- Systemd fallback to google 126.96.36.199 if no resolvers are configured
- CVE2017-1000082 Systemd: if username starts from number it count it as root
- systemd shut down your network before it unnmounted remote filesystems
- systemd-journalctl 100% cpu usage
- upd: CVE-2019-6454 Insufficient input validation in bus_process_object() resulting in PID 1 crash ( Check systemdsucks twitter for more )
From eudev anounce:
(...) If you want to understand the worst case scenario when dealing with this regression, disable udev and reboot your system. You should have a virtual terminal with no networking and no X. Should this happen with systemd-udevd, then you would also have a hung systemd-udevd process that you cannot kill. Attempts restart systemd-udevd should result in more hung processes. (..)
Are there any modern OS without systemd?
So… Let’s stop with theory let’s move to Devuan.
What will not work as I expect
Network-manager; (can be replaced with WICD)(FIXED) Systemd-Udev; (can be used original Debian or replaced to alternative)UPDATED: replaced by EUDEV
- Create backup of live system;
- Get new version of official manual from devuan.org site;
- Devuan supports painless migration from Debian or fresh installation; If you have possibility better to choose fresh installation;
Sources.list before begin
- Disable all other sources in your /etc/sources.list/ for Debian;
- Devuan repository is not compatible with Debian;
- Enable or disable non-free contrib - as you like (here is enabled)
- Enable source lines if required;
for ASCII :
cat > /etc/apt/sources.d/devuan-ascii.list << EOF deb http://auto.mirror.devuan.org/merged ascii main non-free contrib #deb-src http://auto.mirror.devuan.org/merged ascii main non-free contrib deb http://auto.mirror.devuan.org/merged ascii-updates main non-free contrib #deb-src http://auto.mirror.devuan.org/merged ascii-updates main non-free contrib deb http://auto.mirror.devuan.org/merged ascii-proposed-updates main non-free contrib #deb-src http://auto.mirror.devuan.org/merged ascii-proposed-updates main non-free contrib deb http://auto.mirror.devuan.org/merged ascii-security main non-free contrib #deb-src http://auto.mirror.devuan.org/merged ascii-security main non-free contrib deb http://auto.mirror.devuan.org/merged ascii-backports main non-free contrib #deb-src http://auto.mirror.devuan.org/merged ascii-backports main non-free contrib EOF
cat > /etc/apt/sources.d/devuan-jessie.list << EOF deb http://auto.mirror.devuan.org/merged jessie main non-free contrib #deb-src http://auto.mirror.devuan.org/merged jessie main non-free contrib deb http://auto.mirror.devuan.org/merged jessie-updates main non-free contrib #deb-src http://auto.mirror.devuan.org/merged jessie-updates main non-free contrib deb http://auto.mirror.devuan.org/merged jessie-proposed-updates main non-free contrib #deb-src http://auto.mirror.devuan.org/merged jessie-proposed-updates main non-free contrib deb http://auto.mirror.devuan.org/merged jessie-security main non-free contrib #deb-src http://auto.mirror.devuan.org/merged jessie-security main non-free contrib deb http://auto.mirror.devuan.org/merged jessie-backports main non-free contrib #deb-src http://auto.mirror.devuan.org/merged jessie-backports main non-free contrib EOF
apt-get update apt-get install -y --force-yes devuan-keyring apt-get update apt-get install -y sysvinit sysvinit-core apt-get remove --purge --auto-remove systemd apt-get install -y base-files apt-get -y dist-upgrade apt-get -y autoremove --purge apt-get -y autoclean
echo -e '\n\nPackage: *systemd*\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd
Network-manager - not usable without systemd (UPD: - FIXED)
As expected Network Manager can’t be installed due to dependency from systemd; To fix this you can install Wicd or configure network, wifi, 3G manually.
apt-get install wicd wicd-cli wicd-gtk
root@host: service wicd start ^D user@host: nohup wicd-gtk &
UPD: From 10/Jan/2018 - was tested - FIXED.
Cryptdisks stop will hung when reboot/shutdown
To prevent issues with hunging cryptdisk you have to exclude pid of systemd-udev (if you use it) from termination list like this:
root@host# cat /usr/local/bin/reboot-1.sh pgrep udev > /run/sendsigs.omit.d/udev reboot
UPD: From 10/Jan/2018 - was tested - FIXED.
- No other issues were detected yet, but keep eyes on Devuan bug tracker
Will continue testing.