Co powoduje utratę dostępu do urządzenia przez kontener LXC po ponownym uruchomieniu hosta?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

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ń.

-15% OFF

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

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.