I broke the Windows Linux Subsystem (Bash on Ubuntu on Windows 10). Linux Help?
I have been playing with the new linux subsystem on Windows and somehow i have broken it and now most of Ubuntu's internals (apt-get,dpkg, etc) don't work. Everything i try something i get the same message...
Setting up udev (204-5ubuntu20.19) ...
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: No such file or directory
runlevel:/var/run/utmp: No such file or directory
* udev requires devtmpfs support, not started
...fail!
invoke-rc.d: initscript udev, action "restart" failed.
dpkg: error processing package udev (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of systemd-services:
systemd-services depends on udev (>= 175-0ubuntu23); however:
Package udev is not configured yet.
dpkg: error processing package systemd-services (--configure):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of libpam-systemd:amd64:
No apport report written because the error message indicates its a followup error from a previous failure. libpam-systemd:amd64 depends on systemd-services (= 204-5ubuntu20.19); however:
Package systemd-services is not configured yet.
dpkg: error processing package libpam-systemd:amd64 (--configure):
dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
Errors were encountered while processing:
udev
systemd-services
libpam-systemd:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
Any ideas how to fix this?
Warning, this process will restore Lxss to initial config
To reinstall the Lxss open Windows cmd
as administrator and run:
C:\WINDOWS\system32>LxRun.exe /uninstall
Then:
C:\WINDOWS\system32>LxRun.exe /install
Fixed it.
Ran:
apt-get remove upstart
then
apt-get remove udev
then
apt-get autoremove
and it all seems to be working now.
The official response from microsoft
github:Microsoft/BashOnWindows
This is an issue that everyone will start seeing. We need to add something on this in our official docs.
As @nuclearmistake points out, udev is something that breaks in apt-get but the errors should not cause any issues in WSL. We have reached out to Canonical on this one asking for the best solution and they recommend the following changes:
Write the following to /usr/sbin/policy-rc.d
#!/bin/sh exit 101
chmod +x /usr/sbin/policy-rc.d
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl
I have tried this one myself and it looks to work quite well.
Here is a more targeted solution. Create a script named /usr/sbin/policy-rc.d
(nano /usr/sbin/policy-rc.d
) with the following contents:
#!/bin/sh
case "$1" in
udev|systemd-logind) exit 101;;
esac
Save and exit (Ctrl+O Ctrl+X). Mark the script as executable (chmod +x /usr/sbin/policy-rc.d
). This script tells dpkg
not to attempt to start udev
or systemd-logind
.
You will then be able to complete the previously failing dpkg
configuration step (dpkg --configure -a
).