You are not logged in.
Hi there:
Last night I switched to a pure systemd installation without problems, so today I decided to remove systemd-sysvcompat (believing that it was only necessary for the mixed systemd/initscripts installation) just to discover that without that package my sistem won't boot anymore:
ERROR: Root device mounted successfully, but /sbin/init does not exist.
Bailing out, you are on your own. Good look.
sh: can't access tty: job control turned off
[rootfs /]#
Is there a way to manually reinstall that package or do I must reinstall the entire system?
Thanks beforehand.
Last edited by Tae (2012-10-06 16:17:00)
Offline
Append, init=/bin/systemd to your bootloader command line, boot, then reinstall systemd-sysvcompat. I am not sure where you got the idea that you shoudl take it off, but in the future, maybe you should look to see what something is becore you do something like that. If you juct checked it out, you would have seen that it is just a package of symlinks to the native systemd commands.
Offline
No need to reinstall the system, there are two fixes - one that would be easier and should probably work - the other only slightly less easy and will definitely work:
1) edit your bootloader kernel line and append the following:
init=/bin/systemd
This should allow you to boot into your system normally, run pacman to install systemd-sysvcompat, then all should be fixed.
2) If the above fails, you can boot a live media and chroot to fix your system. Even better if you have a live media with the install scripts (installation iso) then you can just mount your root partition and `pacstrap /mnt systemd-sysvcompat.
edit: too slow (and had wrong path)
Last edited by Trilby (2012-10-06 15:54:36)
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline
Boot off of you Arch install media, chroot (arch-chroot command on the install media) into your Arch installation and reinstall the systemd-sysvcompat package. Reboot again with your hard drive installation.
https://wiki.archlinux.org/index.php/Chroot
Alternatively, in your boot loader you can edit your boot line so that it contains "init=/usr/lib/systemd/systemd" That will just boot the system enough for you to install the package. Reboot and shutdown may not work correctly with that but you should get a running system enough to install systemd-sysvcompat.
Edit: double slow.
Last edited by headkase (2012-10-06 15:55:28)
Offline
Alternatively, in your boot loader you can edit your boot line so that it contains "init=/usr/lib/systemd/systemd"
Hey, I never noticed that /bin/systemd is a symlink to /usr/lib/systemd/systemd ... way to go headkase, I like learning.
Offline
headkase wrote:Alternatively, in your boot loader you can edit your boot line so that it contains "init=/usr/lib/systemd/systemd"
Hey, I never noticed that /bin/systemd is a symlink to /usr/lib/systemd/systemd ... way to go headkase, I like learning.
All I did is:
ls -l /sbin/init
Which tells me right where it goes..
Offline
Well, when you posted your advice above, I did the same, but on /bin/systemd. Interesting though... I wonder why not simply either actually put it in /bin/systemd, or do away with /bin/systemd altogether since /sbin/init is pointing to the /lib spot anyway. I mean, since systemd will only run on Linux, it seems unnecessary to really stick to the FHS for compatibility.
Offline
Had to look up FHS.
I would say that a bit of redundancy is good because Arch as a whole is a mish-mash of many different packages. For the same reason when you have a pure-systemd computer you still have lots of scripts in "/etc/rc.d" - they are owned by packages that haven't been updated to systemd yet. So those scripts sit there as cruft. Unused. The "good" part is that different users will have different setups. The more redundancy the greater the chance of all setups working.
But, hey, if everything was pure-systemd including all of the packages in Arch's repos then I wouldn't mind - getting to that is a ton of work however, both with Arch and upstream.
Offline
Thank you all, my system is back. I promise never to do such a stupid thing.
Now I wonder if systemd-systemvcompat have any advantage over set up the init path in my bootloader.
Offline
You want to keep systemd-sysvcompat installed. It is a tiny little package, ~45KB, and all that is in it is symlinks from initscripts commands over to the appropriate systemd commands.
Do:
pacman -Ql systemd-sysvcompat
To see exactly what is in there. It is nothing but mappings from sysv to systemd. Trivial, but when your kernel says "do /sbin/init" there needs to be something AT /sbin/init..
Offline
Thank you all, my system is back. I promise never to do such a stupid thing.
Now I wonder if systemd-systemvcompat have any advantage over set up the init path in my bootloader.
I kind of read this as "Oh crap I did something silly, I promise not to do something like that again. .... but I wonder if I take of systemd-sysvcompat....."
Offline
I know that systemd-systemvcompa is a small package. What bothers me is now I'm using systemd, so why don't do all the daily stuff in a systemd way? (Like pas systemd as kernel parameter and use 'systemctl hibernate' to hibernate).
Offline
You can do it that way. This is just legacy support. It is just a package of symlinks.
Offline
Got it. Thank you
Offline