LINUX.ORG.RU

Gentoo, автомонтирование fstab с /dev/mapper/*

 , , ,


1

2

Всем привет!

Имеется SSD, на котором контейнер LUKS, на котором развернута BTRFS, на которой несколько Subvolume-ов (arch, gentoo, vvl).

Как можно догадаться, в первых двух Subvol стоит по одноименному дистрибутиву. Проблема состоит в том, что третий subvol - общий ресурс, который должен монтироваться в любую из систем.

Имеем fstab:

...
/dev/mapper/cryptroot [путь] btrfs rw,relatime,compress=lzo,nossd,discard,space_cache,subvol=vvl 0 0
... 
Arch грузится, все монтируется. Никаких доп. настроек/пересборок mkinitcpio не производилось. Crypttab тоже отсутствует.

Gentoo (тоже systemd) при загрузке ожидает /dev/mapper/cryptroot и вываливается с ошибкой:

...
Timed out waiting for device /dev/mapper/cryptroot
Dependency failed for [путь из fstab]
...
В случае, если сделать systemd default в shell-e (ls /dev/mapper - устройство есть!), а потом mount -a, то все работает нормально. В случае, если монтировать этот subvol вручную в initramfs (он собранный вручную), то все грузится нормально.

Почему Gentoo не видит устройство на этапе загрузки? Также, при входе в KDE система настойчиво просит пароль для устройства (WTF, оно открыто и смонтировано), чего нет в том же Arch-е.

P.S. initramfs на Arch - mkinitcpio, на Gentoo - самосбор, с кодом

...
cryptsetup open --allow-discards $(findfs ${cryptroot}) --key-file ${cryptkey}
mount -t btrfs -o compress=lzo,nossd,discard,subvol=${1}
exec switch_root /mnt/root /usr/lib/systemd/systemd
...
P.P.S. Очень прошу помочь разобраться в проблеме, а не разводить холивар (а в [дистрибутив]|у меня все работает|btrfs=сыро|systemd=от лукавого) и прочие. Заранее спасибо!


на Gentoo - самосбор

А почему не genkernel? Не, самосбор наверное тоже должен работать, я просто не пробовал никогда - не было желания делать лишнюю работу, которую до меня уже сделали разработчики genkernel.

BattleCoder ★★★★★ ()
Ответ на: комментарий от VVL-

Ну первое, что приходит в голову, нужные опции то включены?

grep LUKS /etc/genkernel.conf 
#LUKS="no"
grep BTRFS /etc/genkernel.conf 
# Add BTRFS support.
#BTRFS="no"

Подозреваю, что да, иначе бы вопроса не возникло. Если так, то я бы на bugs.gentoo.org обратился с таким вопросом (правда, там крайне медленно могут реагировать).

subvolume - это что-то типа logical volume в LVM? Не в теме, просто.

BattleCoder ★★★★★ ()
Последнее исправление: BattleCoder (всего исправлений: 1)
Ответ на: комментарий от BattleCoder

Ну первое, что приходит в голову, нужные опции то включены?

Разумеется, root то монтируется.

subvolume - это что-то типа logical volume в LVM? Не в теме, просто.

Ну, очень грубо говоря, да. В btrfs есть «подразделы» - ФС внутри ФС. Так вот, один из подразделов монтируется (root) без ошибок, а второй не подгружается.

Смотрел в сторону systemd - похожая проблема была на трекере Debian. Решением было маскирование сервиса а-ля udev, тут не помогло.

VVL- ()

Как сложно всё у тебе.

blitz@inode /etc % cat /etc/fstab
...
# /dev/mapper/home LABEL=Root
UUID=74c8209e-03ec-46e8-9b4c-4f4601efae2e		/root	btrfs	rw,relatime,autodefrag,space_cache,subvol=root	0 0

# /dev/mapper/home LABEL=Home
UUID=74c8209e-03ec-46e8-9b4c-4f4601efae2e		/home	btrfs	rw,relatime,autodefrag,space_cache,subvol=home	0 0
blitz@inode /etc % sudo cat /etc/crypttab                                                                                   # crypttab: mappings for encrypted partitions
#
# Each mapped device will be created in /dev/mapper, so your /etc/fstab
# should use the /dev/mapper/<name> paths for encrypted devices.
#
# The Arch specific syntax has been deprecated, see crypttab(5) for the
# new supported syntax.
#
# NOTE: Do not list your root (/) partition here, it must be set up
#       beforehand by the initramfs (/etc/mkinitcpio.conf).

home	UUID=f8044bdc-xxxx-41b3-8e8d-fc9980fdxxx	none	luks,cipher=aes-xts-plain64:sha512,size=512,timeout=300
blitz ()
Ответ на: комментарий от VVL-

У меня, была проблема с /var - при выключении PC
systemd, одновременно - отключала файловую систему и пыталась записать в этот каталог данные сервиса systemd.

Смотрите и анализируйте вывод комманды journalctl -xb | grep -Ei 'fail|error|not found|warning'

P.S. initramfs на Arch - mkinitcpio, на Gentoo - самосбор, с кодом

И что важно, initramfs - не в криптованном диске.
для этого - есть /boot на SSD.
SSD - это каша, файловых систем ntfs, vfat, f2fs. Работает.

И за /root - нужено видеть видеть вывод lsblk -f именно на твоём компе.
Есть одна догадка - если подтвердится, проблема будет решена.

blitz ()
Ответ на: комментарий от blitz

journalctl:

-- Subject: Unit dev-mapper-cryptroot.device has failed
-- Unit dev-mapper-cryptroot.device has failed.
Sep 14 09:25:43 VVL-Lenovo systemd[1]: Dependency failed for /home/vvl/folder                                                                                                                                                                                               
-- Subject: Unit home-vvl-folder.mount has failed                                                                                                                                                                                                                            
-- Unit home-vvl-folder.mount has failed.                                                                                                                                                                                                                                    
Sep 14 09:25:43 VVL-Lenovo systemd[1]: home-vvl-folder.mount: Job home-vvl-folder.mount/start failed with result 'dependency'.                                                                                                                                             
lsblk:
sda                                                                         
├─sda2        vfat                     [UUID]                            /boot/efi
└─sda5        crypto_LUKS              [UUID] 
  └─cryptroot                                                            /
Вся суть в том, что /dev/mapper/cryptroot смонтирован и доступен, но systemd на это пофиг. Забыл упомянуть, что в обеих системах systemd 234-я.

VVL- ()
Ответ на: комментарий от VVL-

This!
Помню, что начало постоянно выводило сообщение об ошибке месяца два тому назад:

blitz@inode / % journalctl -xb | grep -Ei 'dev-mapper'                  
Sep 12 23:31:01 inode systemd[1]: Unnecessary job for dev-mapper-home.device was removed.
-- Subject: Unit dev-mapper-home.device has failed
-- Unit dev-mapper-home.device has failed.
Sep 12 23:31:19 inode systemd[1]: Unnecessary job for dev-mapper-home.device was removed.
-- Subject: Unit dev-mapper-home.device has failed
-- Unit dev-mapper-home.device has failed.

И тем не менее, LUKS device dev-mapper-home.device монтируется и работает.
Диагностическое сообщение systemd не раскрывает полностью причину ошибки.

Где именно находится systemd unit dev-mapper - пока не нашёл.

blitz ()
Ответ на: комментарий от blitz

И тем не менее, LUKS device dev-mapper-home.device монтируется и работает.

Вот нифига...

Где именно находится systemd unit dev-mapper - пока не нашёл.

Эти юниты формируются на основе /etc/fstab. Fstab в принципе нужен только для обратной с openrc совместимости.

VVL- ()
Ответ на: комментарий от VVL-

Если посмотреть на время вывода сообщений, можно заметить разницу в 18 секунд.
Мне, для ввода пассворда требуется 10 секунд.

При этом, на дисплее - отображается сообщение LUKS, что он готов к работе и требует вводить пассворд быстрее.
Возможно, объясняю несколько коряво - но факт есть факт, запускается и работает.

Да, и у меня Lenovo.

blitz ()
Ответ на: комментарий от blitz

Если посмотреть на время вывода сообщений, можно заметить разницу в 18 секунд.

У меня стоит iter-time 5000, открывается контейнер около 15 секунд.

Да, и у меня Lenovo.

Y700-15ISK (i7-6700hq skylake).

VVL- ()