В последнее время я обнаружил, что монтирование томов veracrypt изначально поддерживается cryptsetup и systemd.
Поскольку я ищу полностью зашифрованную установку с двойной загрузкой, где все разделы доступны для всех систем, а LUKS не может быть прочитан из Windows AFAIK, я решил зайти в кроличью нору, которая устанавливает Ubuntu вручную на veracrypt объем.
Пока я добился почти всего. Я распаковал образ squashfs, поставляемый с компакт-диском, в корневой раздел, сделал несколько настроек конфигурации и получил:
/ dev / sdb5
(зашифрованный том veracrypt), / boot / efi
в / dev / sdb2
(незашифрованный раздел FAT32), / home
, расположенная в / dev / sdb6
(Другой зашифрованный том veracrypt) Поскольку у корневого и домашнего разделов один и тот же пароль, я настроил crypttab как таковой (предположительно, скрипт ключей decrypt_keyctl быстро кэширует пароли и передает их последующим вызовам):
# <target name> <source device> <key file> <options>
ubunturoot /dev/sda5 /dev/null tcrypt,tcrypt-veracrypt,keyscript=decrypt_keyctl
sharedfiles /dev/sda6 /dev/null tcrypt,tcrypt-veracrypt,keyscript=decrypt_keyctl
И для монтирования файловых систем мой fstab
настроен как таковой:
#[Device] [Mount Point] [File System Type] [Options] [Dump] [Pass]
/dev/mapper/ubunturoot / ext4 defaults 0 1
/dev/mapper/sharedfiles /media/sharedfiles ntfs-3g defaults 0 2
/dev/sda2 /boot/efi fat32 defaults 0 2
/media/sharedfiles/Users /home none defaults,bind 0 2
(И да, я знаю, что раздел с общими файлами не монтируется напрямую в / home
, это предполагаемый эффект)
Я chrootted в файловую систему с помощью live CD, убедившись, что смонтировать -B
все / dev
, / dev / pts
, / sys
, / proc
и / run
с live CD в chroot.
Я успешно установил grub с помощью grub-install
без каких-либо ошибок.
Однако при попытке создать initramfs для размещения в / boot / efi
с использованием
mkinitramfs -o /boot/efi/initramfs
я получаю следующий результат:
cryptsetup: ERROR: ubunturoot: Source mismatch
cryptsetup: WARNING: target 'ubunturoot_1' not found in /etc/crypttab
cryptsetup: WARNING: target 'ubunturoot_2' not found in /etc/crypttab
W: Possible missing firmware /lib/firmware/amdgpu/navi10_gpu_info.bin for module amdgpu
Еще около 10 строк, касающихся прошивки AMD, о которых я особо не беспокоюсь. , затем
E: /usr/share/initramfs-tools/hooks/cryptkeyctl failed with return 1.
Я поискал в Интернете строку «Несоответствие источника» и не нашел ничего, что могло бы мне помочь.
Я перешел к упомянутому сценарию в последней строке, обнаружил, что для него требуется еще один перехватчик initramfs, затем нашел строку с нарушением и окружающие комментарии в / usr / share / initramfs-tools / hooks / cryptroot
# crypttab_print_entry()
# Print an unmangled crypttab(5) entry to FD nr. 3, using CRYPTTAB_*
# and _CRYPTTAB_* values.
# _CRYPTTAB_SOURCE is replaced with /dev/mapper/$sourcename for mapped
# sources, otherwise by UUID=<uuid> if possible (eg, for LUKS). If
# the entry uses the 'decrypt_derived' keyscript, the other
# crypttab(5) entries it depends on are (recursively) printed before
# hand.
# Various checks are performed on the key and crypttab options, but no
# parsing is done so it's the responsibility of the caller to call
# crypttab_parse_options().
# Return 0 on success, 1 on error.
crypttab_print_entry() {
local DEV MAJ MIN sourcename uuid keyfile
if resolve_device "$CRYPTTAB_SOURCE"; then
if [ "$(dmsetup info -c --noheadings -o devnos_used -- "$CRYPTTAB_NAME" 2>/dev/null)" != "$MAJ:$MIN" ]; then
cryptsetup_message "ERROR: $CRYPTTAB_NAME: Source mismatch"
I пытались понять окружающий сценарий, но потерпели неудачу. Я почти не понимаю, что сценарий initramfs, связанный с монтированием зашифрованного rootfs, не работает, но я не могу понять, почему.
Могу я предпринять какие-либо другие действия по устранению неполадок, чтобы пролить свет на это? Если будут предложены какие-либо команды, я запускаю их и обновляю.
Сценарий выполняет перекрестную проверку между файлами конфигурации - fstab и crypttab. Эта перекрестная проверка предназначена для того, чтобы убедиться, что записи совпадают, в частности, что совпадают основные и второстепенные номера устройств.
Вы можете запустить следующую команду, чтобы увидеть необработанное сообщение об ошибке, где $CRYPTTAB_NAME в данном случае — это «ubunturoot». Это фактическая команда, которую скрипт выполняет в данный момент, но она подавляет ошибки.
dmsetup info -c --noheadings -o devnos_used -- "$CRYPTTAB_NAME"