Не удается найти корень LVM, возвращенный в initramfs
Когда я загружаюсь, я получаю сообщение:
Gave up waiting for root device
Затем перечисляются общие проблемы:
ALERT! /dev/mapper/ubuntu--vg-root does npt exist. Dropping to a shell!
Затем я получаю приглашение initramfs.
Это исправимо без бэкапа?
Я не помню точно, что я сделал, чтобы это перестало работать...
(Мой жесткий диск НЕ зашифрован.)
4 ответа
Автоопределение LVM в Ubuntu у меня тоже не сработало. Чтобы исправить это, я сделал скрипт в
/etc/initramfs-tools/scripts/local-top/forcelvm
со следующим содержанием:
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
. /scripts/functions
# Begin real processing below this line
# This was necessary because ubuntu's LVM autodetect is completely broken. This
# is the only line they needed in their script. It makes no sense.
# How was this so hard for you to do, Ubuntu?!?!?
lvm vgchange -ay
Потом сделал
# chmod +x `/etc/initramfs-tools/scripts/local-top/forcelvm`
для хорошей меры и
# update-initramfs -u -k all
Это все исправило, сохраняя после обновления системы.
Попробуйте временное решение
В командной строке initramfs введите:
vgchange -ay
Образец вывода:
логические тома в группе томов "vg1000" теперь активны
С последующим:
exit
Если у вас есть снимок LVM корневого раздела, это ошибка # 360237. Я решаю эту проблему, удаляя / удаляя этот снимок.
Если не ваш случай, попробуйте исправить это.
1
В initramfs введите:
#/sbin/lvm vgchange -a y
#vgchange -a y
#exit
Если вы не можете решить проблему, введите следующее:
ls / dev / mapper Теперь вы должны найти root (например, /dev/vgname/lvname).
перезагрузка. Затем выберите ядро на экране и выберите e, чтобы отредактировать и вставить корневое значение (например, / dev / vgname / lvname) в:
/ boot / vmlinuxxxxx корень = uuid / dev / xxx. Затем, наконец, нажмите Ctrl+X для загрузки.
Если проблема повторяется при перезагрузке сервера
идти к
#/boot/grub/grub.cfg at /vm/vmlinuz root= напишите свой полный путь к lv
если проблема не устранена, попробуйте исправить initramfs, как показано ниже
1.Перейдите к серверному терминалу
# sudo rmmod floppy
#echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklis-floppy.conf
#dpkg-reconfigure initramfs-tools #update-initramfs -u #update-grub #reboot Выполните это
#/etc/initramfs-tools/scripts/local-top/forcelvm со следующим содержимым:
#! / bin / sh PREREQ="" prereqs() {echo "$PREREQ"}case $1 в prereqs) prereqs exit 0;; esac . /scripts/functions lvm vgchange -ay Затем выполните
# chmod +x `/etc/initramfs-tools/scripts/local-top/forcelvm`
# update-initramfs -u -k all
сделать резервную копию lvm2
#apt-get install lvm2
#cp /usr/share/initramfs-tools/scripts/local-top/lvm2 /tmp
Изменить lvm2
#vi /usr/share/initramfs-tools/scripts/local-top/lvm2
напишите Между modprobe -q dm-mod и activate_vg "$ROOT" добавьте эту строку для инициализации вашего lvm:
lvm vgchange -ayactivate_vg "$ROOT", если вы не найдете эту строку
напишите ниже двух строк в конце файла выше выхода 0
#lvm vgchange -ayactivate_vg "$ROOT"
#activate_vg="$ROOT"
затем сохраните файл
#update-initramfs -u
#update-grub
#reboot
Для некоторых из вас это может быть проблемой в вашем grub.cfg:
Споткнулся о той же проблеме (root не найден, так как группы томов lvm не были активированы initrd) сегодня 18.04. Я понял, что группы томов автоматически активируются, если вы указываете свое корневое устройство в "grub.cfg" через имя устройства
linux /vmlinuz root=/dev/mapper/vg-root
где, поскольку они не активируются автоматически, если вы укажете это для UUID
linux /vmlinuz root=UUID=abcd-[...]
Таким образом, в initrd должен быть какой-то скрипт, содержащий эту логику.
Резервное копирование
/usr/share/initramfs-tools/scripts/local-top/lvm2редактировать
/usr/share/initramfs-tools/scripts/local-top/lvm2Между
modprobe -q dm-modа такжеactivate_vg "$ROOT"добавьте эту строку для инициализации вашего lvm:lvm vgchange -ayactivate_vg "$ROOT"Восстановите ваши initramfs:
sudo update-initramfs -uВосстановите ваш grub cfg:
sudo update-grub
Наслаждайтесь!:-)