Oto kolejny krótki wpis, w którym opisuję przeszkadzajkę, na jaką trafiłem przez lata korzystania z systemu Linux Mint. A także sposób na poradzenie sobie z nią.

Mam nadzieję, że takie wpisy pokażą, że wiele problemów na Linuksie jest łatwych do rozwiązania i nieraz nie wynikają one nawet z winy systemu.

Tym razem będzie o niemożności zalogowania się przez brak miejsca na dysku.
Co zrobić, jeśli po wpisaniu hasła na ekranie startowym nasz Linux się nie uruchamia? Czasem wystarczy wejść w awaryjną konsolę i usunąć trochę dzienników systemowych.

A jak? Już piszę.

Opis problemu

Uruchamiam komputer, na którego dysku zainstalowałem kiedyś zaufany system Linux Mint. Wpisuję swoje hasło, jak to już setki razy robiłem.
Ekran ciemnieje, a wzrok odruchowo czeka, aż pojawi się tapeta ekranu głównego.

…Ale ta się nie pojawia. Zamiast niej znów wyświetla się ekran logowania.
Chwila konsternacji. Czyżbym źle wpisał hasło? Próbuję ponownie, i jeszcze raz.

Ale za każdym razem wracam do tego samego ekranu logowania. Jakbym grał w Dniu Świstaka. Pojawia się strach. Czy właśnie straciłem dostęp do całej zawartości swojego systemu?

Zrzut ekranu pokazujący pole na hasło użytkownika na ekranie logowania. Obok znajduje się strzałka prowadząca od pola z powrotem ku niemu.

Źródło: losowy filmik, okrągła strzałka z serwisu Flaticon (autor: onlyhasbi). Przeróbki moje.

Witajcie w piekle pętli logowania (albo loginowej; ang. login loop) :smiling_imp:

Przyczyną dawne podziały

Pętla logowania (cytując tę odpowiedź z forum Minta) może mieć dwie główne przyczyny:

  • brak miejsca na pliki na partycji systemowej
    (czyli tej części dysku twardego, na której tkwią pliki wewnętrzne systemu),
  • błędy w ważniejszych plikach środowiska graficznego.

W moim przypadku przyczyna sięgała daleko wstecz. Czasów, kiedy instalowałem Linuksa na komputerze. Czytałem wtedy różne fora i znalazłem poradę mówiącą, żeby wydzielić sobie dwie partycje – mniejszą na system, większą na pliki użytkownika.

Bo widzicie – na Linuksie istnieje tak zwany folder domowy, /home (oznaczany czasem tyldą, ~). To miejsce, w którym zwykle zapisuje się pliki użytkownika.
Dokumenty, zdjęcia, muzykę… A także zmienne ustawienia zainstalowanych programów, pamięć podręczną Firefoksa. I wiele innych rzeczy związanych z codziennym korzystaniem z komputera.

Czasem warto zaktualizować Linuksa do nowej wersji. A to, przynajmniej przy większych aktualizacjach, wymaga kompletnego wyczyszczenia partycji, na której znajdują się pliki systemowe.

Przenosząc folder domowy w osobne miejsce (a tym są właśnie partycje dysku), ukrywam go przed efektami „bombardowania” plików systemowych podczas większych aktualizacji. Zachowuję wszystkie obrazy, dokumenty itd., a zmieniam jedynie system, który tym wszystkim zarządza.

Analogia

Folder /home jest tutaj jak książki i inne multimedia zebrane w bibliotece. Mogą trwać niezmiennie przez dziesiątki lat.
I obojętne są im kolejne, motywowane politycznie, zmiany składu dyrektorskiego w różnych gabinetach (/bin, /etc…) w drugim skrzydle budynku.

Idąc za tą radą, stworzyłem sobie partycję na pliki systemowe o rozmiarze 20 GB. Resztę (poza jakimśtam swapem i mniejszymi partycjami) poświęciłem na swój folder /home.

Ciemne strony dwóch partycji

Podział na dwie części przebiegł z początku bezboleśnie.
Podczas codziennego użytkowania system wydawał się jednością i nie było widać, że gdzieś pod spodem jest rozdzielony na dwa miejsca.

Tyle że przez lata instalowałem różne programy.
Czasem większe, jak programy od uczenia maszynowego (obecnie nazywanego marketingowo AI). Czasem wpisywałem przed jakimś poleceniem instalacyjnym sudo, co prowadziło do instalacji programów między systemowymi (nawet jeśli dało się trzymać folderu użytkownika).

Do tego dochodziły dzienniki systemowe, w których konsekwentnie przybywało informacji.

…I tak oto doprowadziłem do tego, że moje 20 GB zostało po prostu wypełnione po brzegi. Partycja jest czymś stałym i sama się nie rozszerzy. Brakło miejsca.

Przerobiony zrzut ekranu pokazujący dwie partycje jako prostokąty obok siebie, mniejszy i większy. Mniejszy, podpisany znakiem ukośnika, ma czerwone tło i zawiera kilka rzędów wykrzykników

Źródło: informacje z programu Gparted od kontrolowania partycji. Przeróbki moje.

Zakładam, że podczas logowania system musi cośtam stworzyć w swoim wewnętrznym folderze. A nie stworzy niczego, ani bajta, bo miejsce się wyczerpało. A zatem – wyskakuje błąd i wyrzuca mnie z powrotem do ekranu logowania.

Rozwiązanie doraźne

Nie mogłem dłużej uciekać od problemu i musiałem oczyścić tę swoją 20-gigabajtową, zagraconą stajnię Augiasza.

Będąc w oknie logowania, mogłem nacisnąć kombinację Ctrl+Alt+F2, uruchamiającą konsolę awaryjną.

Następnie musiałem wpisać nazwę użytkownika i hasło.
Nazwa to zwykle to, co jest widoczne na ekranie logowania, nad polem tekstowym. Z kolei hasło jest tym samym, które bym w to pole wprowadził.

Włączyła się konsola, w którą mogłem wpisywać tradycyjne polecenia i na przykład usunąć w ten sposób niepotrzebne pliki. W moim przypadku postawiłem na wyczyszczenie dzienników systemowych:

journalctl --vacuum-size=5M

W ten sposób usunąłem wszystkie logi za wyjątkiem ostatnich 5 megabajtów – liczba dowolna, można zmienić wedle uznania.
Wyświetliło informację o usunięciu ponad 500 MB logów. Nieźle, teraz zdecydowanie miałem więcej miejsca!

Użyłem kombinacji Ctrl+Alt+F7, żeby wrócić do ekranu logowania.

Wpisanie hasła. Wdech, wydech. Przycisk potwierdzający.
Chwila czekania… I ulga. Oto pojawił się znajomy pulpit oraz ikony. Odzyskałem swój komputer.

Na przyszłość

Osoby, które dopiero wchodzą w świat Linuksa, mogą po prostu wybrać podczas instalowania opcję domyślną i nie ustawiać żadnych partycji ręcznie.

Przy tej opcji zarówno pliki systemowe, jak i pliki użytkownika zostaną zapisane na jednej wspólnej partycji. W ten sposób powinno być łatwiej kontrolować ilość miejsca, jaka jeszcze pozostała na dysku.

I owszem, zmusza to do odrobinę większej pracy przy aktualizacjach – ale nie wszystkich. Od jakiegoś czasu Linux Mint ułatwia drobniejsze aktualizacje (np. z 22.1 na 22.2) i są kwestią minut.

Osobna partycja na folder /home nie niesie za sobą już takich korzyści jak kiedyś. Można się po prostu nastawić na ciut więcej pracy co kilka lat, przy aktualizacji do większej wersji (np. z 22.x na 23.x):

  • zgrać sobie pliki z folderu /home w bezpieczne miejsce, np. na jakiś dysk zewnętrzny;
  • „odpalić atomówkę” i wyczyścić całą wspólną partycję podczas wgrania nowszej wersji Linuksa;
  • zgrać pliki z dysku zewnętrznego z powrotem do (nowego, pustego) folderu /home.

I to tyle. Mam nadzieję, że porady z tego wpisu pozwolą wszystkim czytającym osobom nieco oswoić się z problemem pętli logowania.

Znacznej większości osób nie dotknie on w ogóle, ale jeśli już dotknie – rozwiązanie bywa proste. Taka cecha otwartego Linuksa :smile: