Manjaro — замечательная операционная система из семейства Linux, прекрасно работающая на моем ноутбуке последние несколько лет. Поборов лень, решил установить Manjaro на основной домашний ПК и здесь, к своему удивлению, пришлось столкнуться с некоторыми сложностями, возникшими из-за того, что на ПК использую программный RAID-массив mdraid. Впрочем, возникшие сложности легко решаются, о чем и пойдет речь в данной статье.
Итак, установка Manjaro на программный рейд mdraid — решение проблем.
Подразумевается, что вы знаете, что такое mdraid и умеете с ним работать, поскольку описывается решение проблем, возникающих при установке именно на mdraid.
Error: diskfilter writes are not supported
Данная ошибка возникнет, если раздел /boot является программным RAID-массивом и связана с тем, что загрузчик Manjaro умеет запоминать некоторые параметры, например, выбранную на стадии загрузки ОС, записывая эти данные в раздел /boot, но он не может выполнить запись, если /boot является массивом mdraid.
На самом деле, сохранение параметров состояния, это очень удобно, например, если на одном ПК несколько ОС — Windows любит перезагружаться в процессе обновления и продолжать обновление после перезагрузки — если загрузчик запомнил, какая именно была выбрана ОС, то не требуется присутствовать постоянно у ПК, чтобы не пропустить момент перезагрузки и вручную снова выбирать Windows, для продолжения обновления.
Итак, определились, что в загрузчик Manjaro по умолчанию встроен весьма удобный алгоритм, обеспечивающий запоминание некоторой информации. Информация записывается (save_env) в файл (environment block), обычно, находящийся по адресу /boot/grub/grubenv, но по соображениям безопасности, это хранилище доступно лишь при хранении на обычном диске — не являющимся программным RAID-массивом или томом LVM, а также, в файловой системе без контрольной суммы (традиционно, для раздела /boot используются файловые системы ext3 или ext4, вполне совместимые с данной опцией). Файловая же система ZFS, например, не подойдет.
В случае, если /boot является программным RAID-массивом, возникает упомянутая ошибка при загрузке ОС — «diskfilter writes are not supported».
Решение:
- Наиболее распространенным вариантом решения данной проблемы является отключение функционала описанного выше. Для этого, в файле /etc/default/grub необходимо задать следующий параметр:
GRUB_SAVEDEFAULT="false"
Затем, применить новую конфигурацию grub:
sudo update-grub
Основным минусом данного решения является потеря функционала сохранения состояния между перезагрузками. Мне данное решение не понравилось, поскольку хотелось сохранить удобную для себя опцию, поэтому, решил пойти другим путем. - Для сохранения всего функционала, просто разобрал RAID-массив смонтированный в /boot и назначил /boot разделом обычного диска, а раздел второго диска, освободившийся после того, как был разобран RAID-массив, пустил под резервное копирование /boot, которое выполняется при загрузке ОС и дополнительно раз в сутки, по расписанию CRON, при помощи rsync.
Минусы данного решения — если выйдет из строя диск, на котором расположен /boot, ОС не сможет загрузиться. Однако, с учетом наличия резервной копии /boot на втором диске, решить такую проблему будет не сложно.
Плюсы данного решения — полный функционал save_env/load_env.
Grub ERROR: device ‘UUID=xxx’ not found.
Данная ошибка может выражаться в черном экране, вместо Manjaro, на стадии загрузки, после выбора ОС. При просмотре консоли можно увидеть также:
mount: /new_root: can't find UUID='xxx' You are now being dropped into and emergency shell. sh: can't access tty: job control turned off
Решению подобной проблемы может помочь следующий алгоритм действий:
-
- Загружаемся с LiveCD (Rescue/Repair).
- Монтируем файловую систему ОС в /mnt
- Выполняем chroot-prepare
mount —bind /dev /mnt/dev/
mount —bind /proc /mnt/proc/
mount —bind /sys /mnt/sys/
mount —bind /run /mnt/run - Заходит в chroot, выполняем:
chroot /mnt
export PATH=$PATH:/usr/sbin:/bin:/sbin
mount devpts /dev/pts -t devpts
mkinitcpio -P - Теперь отмонтируем всё в обратном порядке и пробуем перезагрузиться и это вполне вероятно, что этого будет достаточно.
Также, нужно понимать, что мир не стоит на месте и информация изложенная в данной статье может потерять актуальность в любой момент. Однако, это не отменяет того факта, что Manjaro остается отличной ОС, а mdraid отличным решением обеспечения сохранности своих данных.