Kontener LXC często traci dostęp do urządzenia po ponownym uruchomieniu hosta, ponieważ host odtwarza urządzenie ze zmienioną ścieżką, stanem uprawnień lub w innym momencie podczas uruchamiania.
Potraktuj ponowne uruchomienie jako zdarzenie cyklu życia urządzenia hosta. Upewnij się, że sprzęt został wykryty przed uruchomieniem LXC, porównaj stabilne identyfikatory ze zmiennymi nazwami urządzeń, sprawdź trwałe uprawnienia udev i reguły dostępu kontenera, a następnie wykonaj ponowny zimny rozruch. Ponowne uruchomienie kontenera, które tymczasowo rozwiązuje problem, wskazuje na kwestię kolejności uruchamiania, a nie na trwałą naprawę.
Upewnij się, że host odtwarza urządzenie po ponownym uruchomieniu
Przed uruchomieniem kontenera sprawdź, czy host wykrywa urządzenie USB, szeregowe, GPU lub inne, i zapisz jego identyfikator dostawcy, identyfikator produktu, numer seryjny, numery major-minor oraz bieżącą ścieżkę.
Poradniki dotyczące przekazywania urządzeń w domowym laboratorium zalecają stabilne przekazywanie USB, zamiast zakładać, że zmienna nazwa urządzenia po wyliczeniu urządzeń zawsze będzie wskazywać ten sam sprzęt.
Jeśli sam host nie widzi urządzenia, zatrzymaj się na poziomie hosta. Ponowne podłączenie, oprogramowanie układowe, kontroler, zasilanie lub wykrywanie przez jądro muszą zostać naprawione, zanim jakakolwiek konfiguracja LXC zacznie działać.
Zastąp zmienne nazwy urządzeń stabilną identyfikacją
Porównaj ścieżki sprzed ponownego uruchomienia i po nim. Adaptery szeregowe USB mogą zmieniać numery ttyUSB, a podobne urządzenia mogą być wyliczane w innej kolejności po uruchomieniu hosta.
Szczegółowy przewodnik po przekazywaniu USB do LXC pokazuje, dlaczego przekazywanie urządzenia do LXC działa tylko wtedy, gdy obiekt po stronie hosta wskazany przez kontener nadal identyfikuje właściwy sprzęt.
Jeśli dana klasa urządzenia to obsługuje, użyj stabilnej ścieżki by-id lub celowo utworzonego dowiązania symbolicznego udev. Nie rozszerzaj dostępu kontenera na wszystkie urządzenia USB tylko po to, aby ukryć zmiany kolejności wyliczania urządzeń.
Zapewnij trwałość uprawnień urządzenia po jego odtworzeniu
Po ponownym uruchomieniu sprawdź właściciela, grupę, tryb, uprawnienia cgroup oraz mapowanie kontenera. Ręczne wykonanie chmod na węźle urządzenia nie jest trwałe, ponieważ udev może utworzyć ten węzeł ponownie.
Przykład przekazywania urządzenia Z-Wave wykorzystuje trwałe mapowanie urządzenia, aby urządzenie szeregowe pozostało dostępne mimo zmian po stronie hosta, zamiast polegać na jednorazowej modyfikacji uprawnień.
Zapisz wymagane reguły właściciela lub grupy w trwałej konfiguracji zarządzania urządzeniami hosta i przyznaj kontenerowi dostęp wyłącznie do potrzebnej mu klasy urządzeń.
Sprawdź, czy kontener nie uruchamia się zbyt wcześnie
Uruchom ponownie hosta i porównaj znaczniki czasu utworzenia urządzenia oraz uruchomienia LXC. Kontener może uruchomić się poprawnie, mimo że sprzęt, którego oczekuje, nie zakończył jeszcze procesu wyliczania.
Szersze informacje dotyczące mapowania urządzeń USB w Proxmox podkreślają, że przekazywanie USB zależy od wcześniejszego udostępnienia urządzenia przez hosta; kolejność ta ma kluczowe znaczenie podczas bezobsługowego uruchamiania domowego serwera.
Dodaj ograniczoną zależność lub kontrolę gotowości zamiast arbitralnie długiego uśpienia. Kontener powinien wyraźnie zgłosić błąd lub krótko zaczekać, gdy wymaganego urządzenia brakuje.
Przeprowadź pełną weryfikację po ponownym uruchomieniu
Po naprawieniu identyfikacji, uprawnień lub kolejności uruchamiania wykonaj dwukrotnie zimny rozruch hosta i przetestuj rzeczywiste działanie aplikacji korzystającej z urządzenia, a nie tylko sprawdzaj, czy w LXC istnieje odpowiedni węzeł.
Powiązany przewodnik ZimaSpace dotyczący konfiguracji domowego serwera w Proxmox wiąże naprawę z odtwarzalną konfiguracją domowego serwera Proxmox, zamiast z rozwiązaniem działającym tylko w ramach jednej sesji.
Usterkę można uznać za usuniętą dopiero wtedy, gdy to samo fizyczne urządzenie pojawia się z zamierzonym dostępem po wielokrotnym uruchomieniu. Jeśli identyfikacja jest stabilna, ale dostęp nadal się nie udaje, zachowaj logi odmowy dostępu po stronie hosta i kontenera do dalszej analizy.
Często zadawane pytania
Dlaczego ponowne uruchomienie kontenera czasami przywraca urządzenie?
Urządzenie mogło pojawić się dopiero po uruchomieniu kontenera. Późniejsze ponowne uruchomienie widzi już gotowy węzeł urządzenia hosta, ale tylko ukrywa to zależność od kolejności uruchamiania.
Czy powinienem mapować urządzenie USB przez /dev/ttyUSB0?
Jeśli dana klasa urządzenia udostępnia stabilną identyfikację, preferuj właśnie ją. Numeryczne nazwy urządzeń mogą się zmieniać, gdy sprzęt jest wyliczany po ponownym uruchomieniu.
Czy uprawnienia mogą zostać zresetowane, nawet jeśli ścieżka urządzenia pozostaje taka sama?
Tak. udev może ponownie utworzyć węzeł z skonfigurowanym właścicielem, grupą i trybem, dlatego ręczne zmiany wykonane za pomocą chmod mogą zniknąć przy następnym ponownym podłączeniu lub uruchomieniu.
Wsparcie i wskazówki
Więcej do przeczytania

Czy Plex może współdzielić kartę graficzną z innym kontenerem Dockera?
Plex i inny kontener często mogą korzystać z tego samego układu GPU, ale należy przetestować obsługę sterowników, mapowanie urządzeń, obciążenie silnika wideo, pamięć oraz...

Jak ustalić, czy błąd Plex pochodzi od klienta, czy od serwera
Odtwórz ten sam przypadek na innym kliencie, porównaj ścieżkę sesji, a następnie zbierz dowody z serwera dopiero wtedy, gdy zakres analizy wskaże, gdzie faktycznie...

Jak skonfigurować pamięć podręczną Plex i tymczasową pamięć na transkodowane pliki
Chroń trwały stan Plex, umieszczając tymczasowe pliki transkodowania na odpowiedniej pamięci lokalnej, a następnie zweryfikuj czyszczenie, ilość wolnego miejsca i zachowanie podczas ponownego uruchamiania.

