Как бороться с Gentoo, который не загружается из-за «Ошибка инициализации типа блокировки» в checkroot?

1665
kwutchak

Моя система загружается с Gentoo Linux с корневого раздела на основе LVM.

Система успешно загружается через initrd. Он запускает инициализацию основного ядра, но затем завершается неудачно при попытке проверить корневой диск (/etc/init.d/checkroot).

Сообщается об ошибке: корневой диск (/ dev / vg / lv ) недоступен для fsck. в зависимости от того .

[Примечание: я нашел одно решение этой проблемы и публикую это, чтобы помочь другим. Если вы знаете лучший подход, я хотел бы услышать об этом!]

2

1 ответ на вопрос

1
kwutchak

Проблема может заключаться в том, что схема блокировки LVM не позволяет активировать группу томов.

Если lvm.conf имеет:

/etc/lvm/lvm.conf  locking_type = 1 : locking_dir = "/var/lock/lvm" 

Тогда каталог блокировки должен быть доступен для записи, чтобы группа томов была активирована. Это проблема на этапе checkroot, поскольку корневая файловая система только для чтения только в этой точке.

Можно установить для lock_type значение 0, но это сопряжено с риском потери данных.

Некоторые из команд lvm принимают опцию --ignorelockingfailure, которая позволяет временно обойти блокировку. Это используется в стартовых скриптах initrd.

Чтобы заставить checkroot работать, я добавил две строки, прежде чем они начали.

&& ! is_net_fs / && ! is_union_fs / ; then  + lvm vgchange -ayl --ignorelockingfailure + lvm vgmknodes --ignorelockingfailure  if touch -c / >& /dev/null ; then