Panika jądra - brak synchronizacji: VFS: Nie można zamontować root fs na nieznanym bloku (0,0)

97

Po próbie aktualizacji z 10.10 do 11.04 wszystko wydawało się iść dobrze do ponownego uruchomienia. Pojawia się następujący komunikat o błędzie:

Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Jak to naprawimy?

Jeffrywith1e
źródło
1
Twoje problemy mogą nie mieć nic wspólnego z głównym systemem, a raczej z nośnikiem instalacyjnym (pamięć USB) ... ➪ patrz tutaj: askubuntu.com/a/632636/479118
Frank Nocke
Nie mogę opublikować odpowiedzi, ponieważ nie mam wystarczającej liczby powtórzeń, ale kiedy dostałem ten problem, rozwiązałem go, uruchamiając pamięć USB na żywo, montując partycję główną i EFI , umożliwiając pracę w sieci i uruchamiając, sudo apt-get install linux-image-genericaby zaktualizować do najnowszej wersji jądro.
Owen

Odpowiedzi:

82

Brakuje initramfs dla tego jądra. Wybierz inne jądro z menu GRUB w sekcji Zaawansowane opcje dla Ubuntu i uruchom, sudo update-initramfs -u -k versionaby wygenerować initrd dla version(zamień versionna ciąg wersji jądra, np. 4.15.0-36-generic) sudo update-grub.

psusi
źródło
2
co się stanie, jeśli podczas wybierania unikalnej opcji jądra, która istnieje dla tego systemu operacyjnego (w scenariuszu wielokrotnego rozruchu), wyświetla się panika jądra, jak można uruchomić aktualizację-initramfs?
knocte
3
@ Rosa, kiepski komentarz ...
psusi
2
@knocte, patrz odpowiedź Tomeu Roiga.
psusi
1
Wygląda na kiepską odpowiedź, ale to prawda!
user3215
2
Nie mogę wprowadzić Ubuntu Systemlub Recovery Mode, jak wykonać to polecenie, aby sprawdzić, czy działa?
Casper
53

Zacznij od podglądu na żywo, otwórz terminal

sudo fdisk -l
sudo mount /dev/sdax /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt 

a teraz możesz tworzyć update-initramfsi aktualizować grub bez błędów.

update-initramfs -u -k 2.6.38-8-generic (or your version)

Jeśli nie znasz swojej wersji. Posługiwać się:

dpkg --list | grep linux-image

I po prostu zaktualizuj Grub.

update-grub2

Uruchom ponownie system.

Tomeu Roig
źródło
1
Dodałem sudo mount --bind /dev/pts /mnt/dev/ptsi sudo mount --bind /sys /mnt/sysw mojej edycji; bez tego update-grub2narzekał.
Hbf
4
jak mogę znaleźć dokładny version ?
knocte
1
Żaden punkt montowania nie istnieje poza pierwszym / dev / sdax, jeśli używasz EFI.
Paul Gregoire,
@knocte spróbuj ls /mnt/bootposzukać najnowszej wersji jądra. Lub jeśli chcesz to zrobić poprawnie, przeczytaj menuentry 'Ubuntu'od/mnt/boot/grub/grub.cfg
Ciro Santilli 事件 改造 中心 法轮功 六四 事件
Pracował na Ubuntu 14.04! initrdBrakowało /boot. Pytanie brzmi: jak to możliwe, że plik po prostu zniknął? Nie zrobiłem nic, co wydawałoby się niebezpieczne.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
22

W mojej sytuacji problem polegał na tym, że /bootmiał 100% pojemności, więc ostatnie 2 aktualizacje jądra nie zakończyły się pomyślnie, dlatego po ponownym uruchomieniu, gdy GRUB2 wybrał najnowsze jądro, nie powiodło się.

Rozwiązałem problem, uruchamiając się do najstarszego zainstalowanego jądra i usuwając niektóre nieużywane jądra za pomocą aptitude. Korzystając z aptitude , po dezinstalacji dpkg automatycznie próbował skonfigurować uszkodzone pakiety i tym razem się udało.

sheepeatingtaz
źródło
3
To było najbliższe mojemu rozwiązaniu; samo uruchomienie dpkg --configure -awystarczyło, aby uruchomić hak aktualizacji-initramfs i naprawić zepsute jądro.
Symetryczny
Masz na myśli, że miałeś osobną /bootpartycję?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Był to serwer skonfigurowany przed moim przybyciem i skonfigurowany z / boot na własnej partycji i nienadzorowanej aktualizacji
sheepeatingtaz
3
Możesz użyć sudo apt-get autoremovedo usunięcia starych jąder na wypadek, gdyby zabrakło Ci miejsca /boot.
Florian Brucker
Uruchomiłem starsze jądro, zrobiłem sudo apt-get autoremoveponownie, uruchomiłem ponownie (starsze jądro), potem zrobiłem a sudo apt-get dist-upgrade, i to zadziałało. To było na małej maszynie testowej, którą mam. Ten sam problem, 100%/boot
jmlumpkin
18

W przypadku gdy nastąpi to po przerwanej aktualizacji jądra (np. Awaria systemu podczas aptitude safe-upgrade),

  1. boot ze starszym jądrem i
  2. biegnij dpkg --configure -a.

To zakończy aktualizację, w tym konfigurację ustawień rozruchu, jak wyjaśnia psusi .

Raphael
źródło
1

Komunikaty rozruchowe jądra informują, których dysków można użyć

Na przykład, jeśli w moim teście Linux 4.17 wirtualny konfiguracji maszyna zastąpić prawidłowy root=/dev/vdaz root=/dev/vdbostatniej wiadomości wynosi:

---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)-

Jednak kilka wierszy powyżej pokazuje komunikaty typu:

VFS: Cannot open root device "vdb" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
fe00          524288 vda
 driver: virtio_blk

co w zasadzie mówi mi wprost, że vdbnie znaleziono, ale że istnieje taki, /dev/vdaktóry można odczytać dzięki virtio_blksterownikowi ( CONFIG_VIRTIO_BLK=y).

Ciro Santilli
źródło
0

Oprócz instrukcji Tomeu, przed chrootem musiałem:

sudo mount --bind /dev /mnt/dev

Dodatkowo po chroot:

cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/

( Mam to stąd. )

Jason
źródło
1
Tomeu już wspomniano montażu /devna /mnt/dev.
Lekensteyn
0

Mam ten problem, ponieważ moja partycja / boot była pełna, więc moje aktualizacje jądra nie powiodły się. Udało mi się to naprawić, uruchamiając ze starego jądra w menu GRUB.

Kiedy udało mi się uruchomić, zacząłem usuwać stare jądra, ale udało mi się uzyskać pewne problemy z zależnościami, więc najpierw musiałem odinstalować pakiet linux-server

apt-get remove linux-server
apt-get update
apt-get -f install
apt-get upgrade

Potem zrestartowałem się i wszystko działało dobrze!

Christopher Käck
źródło