Паніка ядра - не синхронізується: VFS: Не вдається встановити root fs на невідомий блок (0,0)


97

При спробі оновлення з 10.10 до 11.04 все, здавалося, йшло добре до перезавантаження. Це повідомлення про помилку - це те, що з’являється:

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

Як це виправити?


1
Ваші проблеми можуть не мати нічого спільного з вашою основною системою, а швидше з вашим носієм для встановлення (USB-накопичувач) ... ➪ дивіться тут: askubuntu.com/a/632636/479118
Frank Nocke

Я не можу опублікувати відповідь, оскільки у мене недостатньо представників, але коли я отримав цю проблему, я вирішив її, завантажившись на живу USB-накопичувач, встановивши основні та EFI-розділи , включивши мережу та запустивши sudo apt-get install linux-image-genericоновлення до останнього ядро.
Оуен

Відповіді:


82

Вам не вистачає initramfs для цього ядра. Виберіть інше ядро ​​в меню GRUB у розділі Додаткові параметри для Ubuntu та запустіть, sudo update-initramfs -u -k versionщоб генерувати initrd для version(замініть versionна рядок версії ядра, наприклад 4.15.0-36-generic) sudo update-grub.


2
що робити, якщо під час вибору унікальної опції ядра, що існує для цієї ОС (у сценарії з декількома завантаженнями), з’являється паніка ядра, як перейти до запуску update-initramfs?
knocte

3
@Dew, поганий коментар ...
psusi

2
@knocte, дивіться відповідь Томеу Рога.
psusi

1
Це виглядає як погана відповідь, але це правда!
user3215

2
Я не можу ввести Ubuntu Systemабо Recovery Modeяк я можу виконати цю команду, щоб перевірити, чи працює вона?
Каспер

53

Почніть з livecd, відкрийте термінал

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 

і тепер ви можете зробити update-initramfsі оновити-grub без помилок.

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

Якщо ви не знаєте своєї версії. Використання:

dpkg --list | grep linux-image

І просто оновіть Grub.

update-grub2

Перезавантажте систему.


1
Я додав sudo mount --bind /dev/pts /mnt/dev/ptsі sudo mount --bind /sys /mnt/sysв своїй редакції; без цього update-grub2скаржився.
Hbf

4
як я можу дізнатися точне version ?
knocte

1
Жодна з точок монтажу не існує за межі першого / dev / sdax, якщо ви використовуєте EFI.
Пол Грегуар

@knocte спробуйте ls /mnt/bootзнайти останню версію ядра. Або якщо ви хочете зробити це належним чином, читайте menuentry 'Ubuntu'з/mnt/boot/grub/grub.cfg
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Працював над Ubuntu 14.04! Пропав initrdбезвісти від /boot. Питання: як можливо, що файл просто зник? Я нічого не робив, що здавалося небезпечним.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

22

У моїй ситуації проблема полягала в тому, що вона /bootбула на 100% потужності, тому останні 2 оновлення ядра не завершилися успішно, тому перезавантаження, коли GRUB2 обрав останнє ядро, воно не вдалося.

Я вирішив проблему, завантажившись у найстаріше встановлене ядро ​​та видаливши кілька невикористаних ядер, використовуючи придатність. Використовуючи aptitude , після того, як видалення відбулося, dpkg автоматично спробував налаштувати зламані пакети, і цього разу вдалося.


3
Це було найближчим до мого рішення; просто запуску dpkg --configure -aбуло достатньо, щоб запустити гачок update-initramfs і виправити зламане ядро.
Симетричний

Ви маєте на увазі, що у вас був окремий /bootрозділ?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
Це був сервер, створений до мого приходу, і він був налаштований з / завантаженням на власному розділі та без нагляду оновлень
sheepeatingtaz

3
Ви можете використовувати sudo apt-get autoremoveдля видалення старих ядер у випадку, якщо у вас не вистачає місця /boot.
Флоріан Брюкер

Я завантажився в старіше ядро, зробив sudo apt-get autoremove, перезавантажив знову (старше ядро), потім зробив sudo apt-get dist-upgrade, і це спрацювало. Це було на невеликій тестовій машині, яку я маю. Хоча те саме питання, 100%/boot
jmlumpkin

19

У випадку, якщо це сталося після перерваного оновлення ядра (наприклад, аварія системи під час aptitude safe-upgrade),

  1. завантаження зі старшим ядром та
  2. бігати dpkg --configure -a.

Це завершить оновлення, включаючи налаштування параметрів завантаження, як пояснює psusi .


1

Повідомлення для завантаження ядра повідомляють, які диски ви можете використовувати

Наприклад, якщо в моєму тесті Linux 4,17 віртуальної установки машини я заміняю правильно root=/dev/vdaз root=/dev/vdbостаннім повідомленням є:

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

Однак через кілька рядків відображаються повідомлення типу:

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

що в основному мені прямо підказує, що vdbйого не знайдено, але що є таке, /dev/vdaщо можна прочитати завдяки virtio_blkдрайверу ( CONFIG_VIRTIO_BLK=y).




0

Я отримав цю проблему через те, що мій / завантажувальний розділ був повний, тому оновлення ядра не вдалося. Мені вдалося виправити це, завантаживши зі старого ядра в меню GRUB.

Коли мені вдалося завантажитися, я почав очищати старі ядра, але мені вдалося отримати деякі проблеми залежності, тому спочатку мені довелося видалити пакет Linux-сервера.

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

Потім я перезавантажився і все працювало нормально!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.