Существует множество ответов и уроков, как это исправить, но я не смог применить ни одно из решений в моем случае.
Вот моя ситуация:
У меня USB-флешка с 14.04 и работает 12.04, поэтому я могу применять исправления или отлаживать дальше.
Запуск sudo grub-update
дает мне:
> Generating grub.cfg ... Found linux image:
> /boot/vmlinuz-3.5.0-52-generic Found initrd image:
> /boot/initrd.img-3.5.0-52-generic Found linux image:
> /boot/vmlinuz-3.5.0-46-generic Found initrd image:
> /boot/initrd.img-3.5.0-46-generic Found linux image:
> /boot/vmlinuz-3.5.0-45-generic Found initrd image:
> /boot/initrd.img-3.5.0-45-generic Found linux image:
> /boot/vmlinuz-3.5.0-23-generic Found initrd image:
> /boot/initrd.img-3.5.0-23-generic Found memtest86+ image:
> /boot/memtest86+.bin Found Ubuntu 14.04 LTS (14.04) on /dev/sda6
> done
Одним из решений, которое я попробовал, было нажать e
на grub menu
и заменить идентификатор на /dev/sda6
, но ничего не изменилось.
Что является причиной проблемы, и существует ли простой способ исправить личинку, используя 12.04?
<час>
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
linux /boot/vmlinuz-3.5.0-52-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.5.0-52-generic
}
--
search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
echo 'Loading Linux 3.5.0-52-generic ...'
linux /boot/vmlinuz-3.5.0-52-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.5.0-52-generic
--
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
linux /boot/vmlinuz-3.5.0-46-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.5.0-46-generic
}
--
search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
echo 'Loading Linux 3.5.0-46-generic ...'
linux /boot/vmlinuz-3.5.0-46-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.5.0-46-generic
--
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
linux /boot/vmlinuz-3.5.0-45-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.5.0-45-generic
}
--
search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
echo 'Loading Linux 3.5.0-45-generic ...'
linux /boot/vmlinuz-3.5.0-45-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.5.0-45-generic
--
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
linux /boot/vmlinuz-3.5.0-23-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.5.0-23-generic
}
--
search --no-floppy --fs-uuid --set=root 0970394e-13f2-47c9-979e-c93cb6eef06d
echo 'Loading Linux 3.5.0-23-generic ...'
linux /boot/vmlinuz-3.5.0-23-generic root=UUID=0970394e-13f2-47c9-979e-c93cb6eef06d ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.5.0-23-generic
--
set root='(hd0,msdos6)'
search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
linux /boot/vmlinuz-3.13.0-30-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro nomodeset quiet splash $vt_handoff
initrd /boot/initrd.img-3.13.0-30-generic
}
--
set root='(hd0,msdos6)'
search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
linux /boot/vmlinuz-3.13.0-30-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro nomodeset quiet splash $vt_handoff
initrd /boot/initrd.img-3.13.0-30-generic
}
--
set root='(hd0,msdos6)'
search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
linux /boot/vmlinuz-3.13.0-30-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro recovery nomodeset nomodeset
initrd /boot/initrd.img-3.13.0-30-generic
}
--
set root='(hd0,msdos6)'
search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
linux /boot/vmlinuz-3.13.0-24-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro nomodeset quiet splash $vt_handoff
initrd /boot/initrd.img-3.13.0-24-generic
}
--
set root='(hd0,msdos6)'
search --no-floppy --fs-uuid --set=root ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
linux /boot/vmlinuz-3.13.0-24-generic root=UUID=ee707b14-31a7-4f86-a6e5-1b9aa38bdd68 ro recovery nomodeset nomodeset
initrd /boot/initrd.img-3.13.0-24-generic
}
Две возможных причины для вышеупомянутой ошибки (предполагающий, что установка не полностью повреждается):
a) Личинка не загружается, корректные поддерживают начальную загрузку 14,04
b) Запись для корня в fstab и/или initrd 14,04 установок повреждается.
Учитывая рассматриваемые комментарии, это выглядит маловероятным, что a) был бы причиной. Так как причиной была та замена корнем =/dev/sda6 в личинке, не помог. 12,04 записей личинки выглядят корректными, но вероятно, что фактическая установка личинки, в настоящее время от 14,04 (может быть проверен от записей, показанных на передней странице начальной загрузки личинки, имел бы 14,04, и 12.04 будет на альтернативном экране). Так замену 12,04 личинками можно попробовать сначала, хотя, как упомянуто, это вероятно не проблема. От работы 12,04 сред:
sudo grub-install /dev/sda
Действительно подтвердите, что личинка имеет некоторый набор тайм-аута, чтобы позволить выбрать опцию: sudo gedit /etc/default/grub
, и GRUB_HIDDEN_TIMEOUT и GRUB_TIMEOUT должны быть ненулевыми, говорят 10 (для 10secs тайм-аут) и затем работают sudo update-grub
. Перезагрузка теперь покажет 12.04 на переднем экране начальной загрузки, в то время как 14.04 будет на альтернативном экране. Если 14.04 теперь работы затем мы сделаны и можем просто установить 14.04's личинка путем выполнения sudo grub-install /dev/sda
от 14,04 сред. Иначе мы попытаемся зафиксировать b), как упомянуто затем.
Существует два способа пойти о b). Нужно загрузиться с живого CD, смонтировать существующую установку и затем зафиксировать его. Другой должен зафиксировать от работы 12,04 установок. Я уточню 2-й, хотя 1-я опция будет довольно похожей с единственной разницей, являющейся загружающимся в живой CD вместо существующих 12,04 установок.
После начальной загрузки в 12,04, сначала заскочите в корневую оболочку для предотвращения повторенный sudo
вызовы: sudo -i
.
Теперь мы смонтируемся, эти 14,04 установок где-нибудь (сказать /mnt/trusty
) и chroot
в него, который сделает эти 14,04 установок как новый корень для той оболочки (и эффективно сделает оболочку как 14.04 одну). В старые дни Linux это было главным образом достаточно для работы в 14,04 средах от оболочки, но в более новых ядрах большинство файлов устройств в /dev
стали динамичными и замененными udev
демон, таким образом, это требует ручного создания многих вещей сначала. Однако в наших целях зафиксировать fstab/initrd это должно быть прекрасным, как. Тем не менее мы должны будем сделать несколько вещей избежать, чтобы предупреждения/ошибки - скопировали текущий mtab и смонтировали proc.
mkdir /mnt/trusty
mount /dev/sda6 /mnt/trusty
cp /etc/mtab /mnt/trusty/etc/mtab
В этой точке мы готовы проверить и зафиксировать fstab, прежде chroot
луг, затем повторно создайте изображение initrd 14,04 ядер. Так откройте его: gedit /mnt/trusty/etc/fstab
и проверьте, что первая непрокомментированная строка имеет корректный UUID для точки монтирования корня (/). В этом случае мы видели, что UUID 14.04's корень/dev/sda6 ee707b14-31a7-4f86-a6e5-1b9aa38bdd68
, так проверьте, что fstab также говорит, что то же еще исправляет UUID, сохраняет fstab и близко. Теперь мы можем повторно создать initrd:
chroot /mnt/trusty
mount -t proc proc /proc
update-initramfs -k all -c
Это должно закончиться без ошибок. Затем размонтируйте/proc, выход из системы от chroot
среда и размонтирование 14.04:
umount /proc
exit
umount /mnt/trusty
Теперь перезагрузка и попытка, запускающаяся 14.04. Если это теперь запускается прекрасный, то замените 14.04's личинка, как упомянуто прежде: sudo grub-install /dev/sda
от 14,04 сред. Также будет хорошая идея повторно создать initrd из 14,04 сред на всякий случай, chrooted среда имела некоторые различия: sudo update-initramfs -k all -c
.
Я получил то же сообщение об ошибке, и ничто не помогло. В моем случае ошибка оказалась повреждениями файловая система. Этому не удавалось читать из диска.
я зафиксировал его путем выполнения fsck на моих дисках Linux (/dev/sdaN) с опция-f . Тем путем я вынудил fsck проверить диск на наличие ошибок (и не только считать флаг из последней проверки) и вручную исправил ошибки, которые это нашло.
, Как только ошибки были зафиксированы, моя система назад была онлайн после перезагрузки. Я надеюсь, что это помогает.