Zepsułem podsystem Windows Linux (Bash na Ubuntu na Windows 10). Linux Pomoc?

22

Grałem z nowym podsystemem linux w systemie Windows i jakoś go zepsułem, a teraz większość elementów wewnętrznych Ubuntu (apt-get, dpkg itp.) Nie działa. Wszystko, czego próbuję, dostaję tę samą wiadomość ...

    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)

Wszelkie pomysły, jak to naprawić?

Mike Pengelly
źródło
Czy jest dostępna opcja „resetuj” lub odinstaluj / zainstaluj ponownie? To chyba najłatwiejszy i najszybszy. Masz pojęcie, co zrobiłeś, aby to się stało? Usunąć root ( /) czy coś?
Xen2050
1
Na AskUbuntu spróbuj: w sudo apt-get install upstart-sysv celu szybkiej poprawki - ten post zawiera również link do „zalecanej” poprawki. Nie jestem pewien, czy to ten sam problem, ale wygląda na to, że może być powiązany.
garbarz
1
@ Ramhound Nie zapytałem, jak ponownie zainstalować Bash na Ubuntu w systemie Windows 10, zapytałem, jak rozwiązać problem. W rzeczywistości nigdy nie miałem tego problemu w Ubuntu. Jeśli przejście na Nuclear naprawia problemy, to nie chcę być w pobliżu, gdy naprawiają globalne ocieplenie
Mike Pengelly
1
@Ramhound Ale nie odpowiadam na moje pytanie. To tak, jakby powiedzieć „zainstaluj ponownie system Windows za każdym razem, gdy pojawi się komunikat o błędzie” lub „kup nowy samochód za każdym razem, gdy usłyszysz hałas” ... Rozwiązuje problem, ale nie jest to praktyczne rozwiązanie.
Mike Pengelly,

Odpowiedzi:

34

Ostrzeżenie, ten proces przywróci Lxss do początkowej konfiguracji

Aby ponownie zainstalować Lxss, otwórz Windows cmdjako administrator i uruchom:

C:\WINDOWS\system32>LxRun.exe /uninstall

Następnie:

C:\WINDOWS\system32>LxRun.exe /install
Jonas
źródło
1
Nie zaznaczyłem tego jako odpowiedzi, ponieważ jest to nuklearne podejście do problemu, który miałem. Tak, naprawiłoby to (teoretycznie nie próbowałem), ale sposób, w jaki to naprawiłem, rozwiązuje mój dokładny problem z brakiem broni jądrowej. Ale jeśli nadal mam problem, zaleciłbym to podejście, jeśli chcesz zaoszczędzić godziny. W przyszłości jednak wątpię, by ludzie chcieli rekonfigurować tam Podsystem Linux za każdym razem, gdy coś pójdzie nie tak.
Mike Pengelly,
Problem dotyczy samego podsystemu Ubuntu. Ponowna instalacja nic nie naprawi
Panagiotis Kanavos
2
@PanagiotisKanavos dla tych z nas, którzy znaleźli pytanie za pośrednictwem Google (zrobili bałagan w naszych instalacjach): Mogę zapewnić, że odpowiedź jest nadal bardzo doceniana!
Marc Gravell
2
Macie rację, to nie jest odpowiedź i powinniśmy użyć tego jako ostatniej opcji.
Jonas
Pojawia się, Access is denied.gdy uruchamiam, C:\WINDOWS\system32>LxRun.exe /uninstallnawet jeśli sesja cmd jest uruchamiana „jako administrator”. Jakieś pomysły?
fredrik
18

Naprawione.

Biegł:

apt-get remove upstart

następnie

apt-get remove udev

następnie

apt-get autoremove

i wydaje się, że teraz wszystko działa.

Mike Pengelly
źródło
1
Musiałem mieć zainstalowany, gdy zainstalowałem x11 (zbyt nowa wersja) ... btw x serwer musi działać w systemie Windows poza podsystemem Linux. a następnie przekazujesz aplikację, uruchamiając DISPLAY = 0: firefox
Mike Pengelly,
9

Oficjalna odpowiedź od Microsoft

github: Microsoft / BashOnWindows

Jest to problem, który wszyscy zaczną widzieć. Musimy coś do tego dodać w naszych oficjalnych dokumentach.

Jak wskazuje @nuclearmistake, udev to coś, co psuje się w apt-get, ale błędy nie powinny powodować żadnych problemów w WSL. Skontaktowaliśmy się z firmą Canonical w tej sprawie, prosząc o najlepsze rozwiązanie, i zalecają następujące zmiany:

Napisz następujące informacje do /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

Próbowałem tego sam i wygląda na to, że działa całkiem dobrze.

bez wołów
źródło
6

Oto bardziej ukierunkowane rozwiązanie. Utwórz skrypt o nazwie /usr/sbin/policy-rc.d( nano /usr/sbin/policy-rc.d) o następującej treści:

#!/bin/sh
case "$1" in
    udev|systemd-logind) exit 101;;
esac

Zapisz i wyjdź ( Ctrl+ O Ctrl+ X). Oznacz skrypt jako wykonywalny ( chmod +x /usr/sbin/policy-rc.d). Ten skrypt mówi, dpkgaby nie próbować uruchomić udevlub systemd-logind.

Będziesz wtedy mógł wykonać poprzednio nieudany dpkgkrok konfiguracji ( dpkg --configure -a).

Anders Kaseorg
źródło
2
Jest to odpowiedź, którą można poprawić, wyjaśniając, co się stało , czym właściwie było „jakoś” w pytaniu i jak ta seria kroków rozwiązuje ten problem. Oto jeden wskaźnik do użycia. Oto kolejna .
JdeBP