Всем доброго времени суток.
Всегда старался придерживаться принципов: работает - не лезь! и лучшее враг хорошего,
но тут захотелось воспользоваться своими кривыми ручками и сделать «еще лучше».
Все мы знаем, чем это заканчивается.
Короче хелп!
Исходные данные:
- OpenSUSE 12.2_64
- Ядро от 13.1 - 3.11.6-4-desktop (ставил пакетом, сам не собирал)
- Дисковая подсистема; тут такой бутерброд:
- HDD:
- sda1 -> ext4 -> /boot
- sda2 -> dm-crypt -> lvm2 -> btrfs -> /home
- SSD:
- sdb1 -> dm-crypt -> lvm2 -> ext4 -> /
Преамбула.
Система работала нормально до недавнего времени, когда я захотел наконец включить поддержку TRIM на своем SSD.
Дело в том, что в вышеуказанной конструкции TRIM (опция discard) должна быть на всех слоях дисковой подсистемы
- crypttab | lvm | fs.
В crypttab подключил discard, в fstab прописал опцию монтирования discard, а вот в lvm2 в своей версии не нашел
в комментах /etc/lvm/lvm.conf опции «issue_discards» и решил, что версия не подходит.
Версия была если не ошибаюсь 2.2.02.84. Ничего лучше не придумал как собрать из исходников.
Собрал версию 98 и благополучно ее воткнул. Как я потом понял, вместе с lvm2 собрался новый device-mapper.
После данного обновления система не стартанула и вывалилась в emergency.
Залогинившись рутом в emergency увидел:
- cryptsetup отработал - оба диска разлочены и активированы в /dev/maapper
- vgchange отработал только на корне, корень подмонтировался.
- С хомяком была следующая картина:
- в /dev/mapper было устройство +data-home (розового цвета), а должно быть @data-home
- должно быть устройство /dev/data/home, а его не было.
Т.е. vgchange на нем обломался.
Далее активировал lvm на sda2 ручками с помощью vgchange.
Нужное устройство появилось, но была ругань от vgchange примерно такого вида:
File descriptor 51 leaked on vgchange invocation. Parent PID 32047: /bin/sh
Далее примонтировал хомяка - все ок. Проверил файловую систему (btrfs) на предмет ошибок - все нормально.
Что было в логах.
В boot.log ничего особенного:
- cryptsetup отрабатывал,
- vgchange тоже,
- даже была инфа, что устройства /dev/main/root и /dev/data/home активны
и обе файловые системы - корень и хомяк смонтированы.
В messages была какая то шняга от systemd, говорящая что cryptsetup обламывается
и не только он в связи с нарушением зависимостей.
Лучше всего это было видно при попытке загрузиться в failsafe
- в консоли перед тем как вывалиться в emergency была инфа, что не один сервис не стартанул
(NetworkManager, bluetooth и т.д. в связи с нарушением зависимостей.
Что предпринимал.
- В режиме emergency ставил старую версию (стоковую) пакетов lvm2 и device-mapper.
Просто скачивал из репов и ставил ручками:rpm -Uvh ...
- Загружался с Live CD, активировал зашифрованные тома
(cryptsetup), активировал lvm (vgchange), монтировал
sdb1 в /mnt/root, sda1 -> /mnt/root/boot, sda2 -> /mnt/root/home
Далее:
Потом запускал yast и оттуда переустанавливал пакеты lvm2 и device-mapper.mount -t proc none proc/ mount -t sysfs none sys/ mount -o bind /dev dev/ chroot /mnt/root
Пакеты ставил прямо с LiveCD, из репов не получилось - сеть в chroot не поднялась. - Отключил хомяка в /etc/fstab и система стартанула вместе с иксами, но понятное дело что кривовато.
- Пересобрал и установил из исходников старую версию пакета lvm2 вместе с device-mapper (2.2.02.84)
Не помню точно на каком этапе, добился еще более крутого «хардкора»
- теперь не грузится даже в emergency -> сразу после grub2 в консоль плюется,
что vgchange/vgscan и /sbin/cryptsetup не может найти библиотеку libdevmapper.so.1.02.,
но приглашение для ввода ключа разблокировки dm-crypt выдает. После ввода пароля в консоль сыпется туча строк о том, что
libdevmapper.so.1.02 не найдена.
ldconfig -v дает что симлинки имеются в /lib64/
libdevmapper.so.1.02 -> libdevmapper.so.1.02
- очень много настроенного и допиленного как надо софта. Нужен совет в какую сторону курить?
UPD. Загрузился с другого Live CD и перешел в chroot, запустил yast.
Зашел в online update, система предложила установить три патча
- openSUSE-2012-671 (lvm2 in 12.2 did not use modprobe, so automated module loading was not correctly working)
- openSUSE-2012-736 (device-mapper.lvm - make sure udev trigger has run on systemd installs, else some devices might not yet be available;
boot.lvm not being started on boot-up)
Третий патч к lvm не имеет отношения. Проблема в том, что сеть у меня почему то
не работает в chroot, т.е. эти патчи не скачиваются из репов.
Как их скачать и применить?