Powolny rozruch, długi czas ładowania jądra z powodu niewłaściwego wznowienia urządzenia

44

Od pewnego czasu proces uruchamiania trwa zbyt długo (prawie 1 min.).

systemd-analyse time 

pokazuje, że jądro zajmuje 35,765s

Patrząc na dmesgto, wydaje się, że problem dotyczy montowania systemów plików:

...
[    2.186084]  sdb: sdb1 sdb9
[    2.186919] sd 2:0:0:0: [sdb] supports TCG Opal
[    2.186922] sd 2:0:0:0: [sdb] Attached SCSI disk
[    2.499795] ata5: SATA link down (SStatus 0 SControl 300)
[    2.844320] clocksource: Switched to clocksource tsc
[   35.670493] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[   35.782128] ip_tables: (C) 2000-2006 Netfilter Core Team
[   35.803610] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
...

Mój /etc/fstabwygląda tak:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=3996-2381  /boot/efi       vfat    umask=0077      0       1
#/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0

Jak mogę rozwiązać ten problem?

EDYCJA: przyglądając się uważnie komunikatom rozruchowym (po usunięciu cichej opcji w grub) zauważyłem podejrzaną linię:

gave up waiting for suspend/resume device

Myślę, że moja zamiana jest zaszyfrowana, a także uważam, że identyfikator UUID w /etc/initramfs/conf.d/resumenie odpowiada żadnemu urządzeniu.

Czy powinienem wyłączyć wznawianie / zawieszanie? i jak to zrobić?

alci
źródło
6
Problem jest w rzeczywistości `` Begin: Running / scripts / local-premount '' `` Jest wyświetlany podczas rozruchu (jeśli wyłączysz cicho). Z jakiegoś powodu ten skrypt wstępnego montażu zajmuje około 30 sekund.
Sudhanshu,
1
To pytanie / odpowiedź jest cenne, ponieważ pomaga rozwiązać błąd w Lubuntu Bionic, więc proszę o pomoc w jego ponownym otwarciu :-)
sudodus 20.04.2018

Odpowiedzi:

59

Ok, znalazłem rozwiązanie dzięki komentarzowi Sudhanshu.

Problem był spowodowany zaszyfrowaniem mojej wymiany. Tak więc local-premountskrypt w initramfs czekał na urządzenie wymiany, które nie było dostępne, aż do przekroczenia limitu czasu. Odpowiednia wiadomość brzmiała gave up waiting for suspend/resume device.

Aby to wyłączyć (jak wznowieniu z zamiany nie jest to możliwe z zaszyfrowanym swap, a nie używam hibernacji i tak), I zmodyfikowane ten plik /etc/initramfs-tools/conf.d/resume.

W tym pliku linia z

RESUME=none

(zamiast UUID, który był tutaj) wyłączy czekanie na urządzenie do wznowienia.

Biegać

sudo update-initramfs -u

zastosować zmiany.

System uruchamia się teraz normalnie.

alci
źródło
3
Znakomity! Dzięki za poprawkę. Musiałem wyciągać włosy!
Murray
Dzięki za poprawkę
Adhikari Bishwash
Miałem problem od dawna spowodowany przez zram (brak partycji wymiany). Właśnie to naprawiłem, dzięki!
Pierre-Damien
3

Widziałem to również w Linux Mint (opartym na Ubuntu) i spędziłem trochę czasu na rozwiązywaniu problemów.

Dzieje się tak, jeśli system jest zainstalowany na LVM i używa wolumenu LVM jako dysku wymiany.

Istnieje długotrwały, powtarzający się błąd, w którym plik CV ma niepoprawnie identyfikator UUID (nieprawidłowy dla LVM) zamiast ścieżki urządzenia, którą powinien mieć. Zobacz https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1768230

Możesz to naprawić, edytując /etc/initramfs-tools/conf.d/resumeplik i zastępując UUID ścieżką urządzenia dysku wymiany. Poniższy fragment polecenia zrobi to za Ciebie, używając pierwszego dysku wymiany znalezionego i zgłoszonego przez blkid:

sudo bash -c 'mv /etc/initramfs-tools/conf.d/resume /tmp/resume.bak; echo RESUME=$(blkid | \grep -I swap | head -n 1 | cut -d : -f 1) > /etc/initramfs-tools/conf.d/resume'
Bezimienny głos
źródło
2

Żadne z powyższych rozwiązań lub gdzie indziej nie zadziałało dla mnie, ale znalazłem rozwiązanie, które skraca mój czas uruchamiania do 40 sekund z 2 minut i 10 sekund.

Kiedyś tworzyłem i usuwałem partycje wymiany i jakoś te dzienniki pozostały w pliku etc / fstab. Więc mój system próbował zamontować wcześniej utworzone partycje wymiany, które już nie istnieją. Więc proszę, pozwól mi wyjaśnić, co zrobiłem krok po kroku.

  1. Uruchomiłem to polecenie, sudo blkid | grep swapaby znaleźć moje partycje wymiany. Były dwa, ale jeden tak naprawdę nie istnieje (nie odnosi się do żadnej z moich partycji).

  2. Więc poszedłem edytować plik / etc / fstab, pisząc sudo gedit /etc/fstab

  3. Potem zdałem sobie sprawę, że jest tak wiele plików wymiany, które usunąłem, ale jakoś wznowiłem istniejące w tym pliku. Odniosłem się więc do kroku 1 i usunąłem partycje, które już nie istnieją .

Zobacz dwa zrzuty ekranu przed i po pliku / etc / fstab. Po tym oczyszczeniu wszystko działa normalnie.

To nie jest edytowany plik / etc / fstab bez edycji / etc / fstab

i tutaj po usunięciu nieistniejących partycji wymiany wyczyść / etc / fstab

deni
źródło
To zadziałało dla mnie. Dzięki.
Abanoub Hanna
2

Ten problem wystąpił po zainstalowaniu 2 różnych dystrybucji Linuksa. W jakiś sposób, w jednej dystrybucji, partycja wymiany ma przypisany inny identyfikator UUID, niż oczekiwano. Moje rozwiązanie polegało na: Najpierw uruchom, sudo blkidaby uzyskać odpowiedni identyfikator UUID dla partycji wymiany. Skopiuj identyfikator UUID wymiany. Wklej to, /etc/initramfs-tools/conf.d/resumeaby dostać RESUME=_the_correct_UUID_. Teraz uruchom, sudo update-initramfs -uaby zastosować tę zmianę.

Następnie sprawdź / etc / fstab iw razie potrzeby zmień tam identyfikator UUID partycji wymiany. (Musiałem)

Benny
źródło
To mi pomogło. Dzięki.
Abanoub Hanna