/ sbin / cryptsetup não encontrado na inicialização

2

Eu criei uma partição raiz criptografada usando o LUKS que contém algumas partições do LVM. Não consigo inicializar e obter a seguinte saída na inicialização:

Begin mounting root file system ... Begin: Running /scripts/local-top ... /scripts/local-top/cryptroot: line 1: /sbin/cryptsetup: not found

Ainda me pede a senha:

Unlocking the disk /dev/sda5 (macbookcrypt)
Enter passphrase: *******************************
cryptsetup: cryptesetup failed, bad password or options?
/scripts/local-top/cryptroot: line 1: /sbin/cryptsetup: not found

No entanto, falha sempre.

Minha linha de comando de inicialização é:

vmlinuz-3.13.0-37 generic ro root=/dev/mapper/macbooklvm-root cryptopts=target=macbookcrypt,source=/dev/sda5,lvm=macbooklvm recovery initrd=\initrd.img-3.13.0-37-generic

Adicionei " dm_crypt " a /etc/modules e, em seguida, usei update-initramfs para gerar novamente com dm_crypt incluído. Eu estou no Ubuntu 14.04 pelo caminho.

No shell initramfs, parece que não consigo localizar cryptsetup em qualquer lugar:

(initramfs) cat /proc/modules | grep crypt
dm_crypt 23177 0 - Live 0xffffffffa0006000
(initramfs) find / -iname "cryptsetup"
(initramfs)

Parece que o módulo dm_crypt está carregado ', o que é bom, mas o cryptsetup não está presente aqui. Como faço para instalá-lo na minha inicialização do Linux? Ele precisa ser incluído nos arquivos initrd , vmlinuz ou System de alguma forma? Eu sou novo neste hackery.

    
por Naftuli Kay 12.01.2015 / 06:48

3 respostas

3

Evidentemente, não criei um arquivo /etc/crypttab . Crie um e, em seguida, update-initramfs -u para corrigir o problema.

    
por 12.01.2015 / 08:18
1

No Ubuntu 14.04 eu estava faltando o módulo do kernel xts de

/etc/initramfs-tools/modules

Outros módulos que você pode perder podem ser:

raid1
raid456
aes-x86_64
sha512-ssse3
xts
dm-mod
dm-crypt

Eu encontrei a causa raiz adicionando à linha de comando do grub (linux) esta opção:

break=mount

essa força cai para o busybox. Depois disso consegui copiar por pendrive (de outra máquina) esses arquivos nos ramfs:

mkdir /boot
mount /dev/sdc1 /boot
cp cryptsetup /sbin/cryptsetup
cp libcryptsetup.so.4.0.0 /lib/libcryptsetup.so.4
cp libpopt.so.0.0.0 /lib/libpopt.so.0
cp libgcrypt.so.11.7.0 /lib/libgcrypt.so.11
cp libgpg-error.so.0.8.0 /lib/libgpg-error.so.0
/boot/cryptsetup luksOpen /dev/md10 root

(Eu também tenho root no software raid, no LVM) que deu o erro do módulo ausente.

Uma boa idéia que veio em minha mente depois seria copiar os arquivos cryptsetup acima na partição / boot antecipadamente, para que você não tenha que mexer com um pendrive. Outra maneira é descomprimir a imagem do initramfs uma vez (antecipadamente) em, e. / boot / tmp:

gzip -d < ../initrd.img-3.13.0-62-generic | cpio --extract --verbose --make-directories --no-absolute-filenames

para que você tenha todas as bibliotecas de funcionamento e cryptsetup disponíveis, mesmo se o seu update-initramfs -k all -c falhou após alguma atualização do kernel.

    
por 06.09.2015 / 09:57
1

Outro problema que me deu a mensagem de erro acima, mas após a investigação (conforme especificado acima), recebi esta mensagem de erro mais específica:

 cryptsetup luksOpen /dev/md10 cryptroot

 device-mapper: table: 252:0: crypt: unknown target type
 ioctl: error adding target to table

Solução: Verifique se o nome do dispositivo raiz / etc / crypttab (cryptroot) corresponde às configurações de /etc/initramfs-tools/conf.d/mdadm. Eu tinha "cryptroot" em outro e "root" em outro, depois de sincronizar os nomes dos dispositivos de destino, o boot funcionava como um sonho!

Depois de corrigir as configurações, execute

update-initramfs -c -k all
    
por 06.09.2015 / 19:08