Mengapa volume LVM terenkripsi saya (perangkat LUKS) tidak dapat dipasang pada saat boot?

15

Saya mencoba mengatur volume terenkripsi mengikuti panduan ini

Semuanya sudah diatur tetapi pemasangan volume terenkripsi gagal pada saat boot dengan kesalahan:

fsck.ext4: Tidak ada file atau direktori seperti itu ketika mencoba untuk membuka / dev / mapper / safe_vault Perangkat yang mungkin tidak ada?

Ini adalah pengaturan saya:

crypttab

$ sudo cat /etc/crypttab
safe_vault  /dev/disk/by-uuid/d266ae14-955e-4ee4-9612-326dd09a463b  none    luks

CATATAN:

The uuidberasal dari:

$ sudo blkid /dev/mapper/<my_logical_group>-safe_vault 
/dev/mapper/<my_logical_group>-safe_vault: UUID="d266ae14-955e-4ee4-9612-326dd09a463b" TYPE="crypto_LUKS" 

fstab

$ sudo cat /etc/fstab | grep safe_vault
/dev/mapper/safe_vault      /safe-vault     ext4    defaults    0 2

Apa yang telah kulakukan...

Jadi saya pergi ke situs web devoper dan di FAQ Masalah Umum yang mereka katakan:

Pastikan Anda memiliki mapper perangkat dan target crypt di kernel Anda. Output dari "target dmsetup" harus mencantumkan target "crypt". Jika tidak ada atau perintah gagal, tambahkan device mapper dan crypt-target ke kernel.

Jadi saya lakukan, ternyata saya tidak punya crypttarget:

$ sudo dmsetup targets
striped          v1.4.1
linear           v1.1.1
error            v1.0.1

Masalahnya adalah saya tidak tahu cara menambahkan target seperti itu.

Saya pikir ini (tidak memiliki crypttarget) mungkin menyebabkan crypttabkonfigurasi diabaikan pada saat boot dan dengan demikian mencoba untuk me-mount entri fstabgagal karena cryptsetupbelum memetakan volume terenkripsi saya /dev/mapper/safe_vault.

CATATAN:

Volume terenkripsi berhasil dipetakan, dipasang dan ditulis secara manual:

$ sudo cryptsetup luksOpen /dev/mapper/<my_logical_group>-safe_vault safe_vault
Enter passphrase for /dev/mapper/<my_logical_group>-safe_vault: 

$ sudo mount /dev/mapper/safe_vault /safe_vault

Beginilah tampilannya setelah memetakan dan memasangnya:

$ sudo lsblk -o name,uuid,mountpoint
NAME                                  UUID                                   MOUNTPOINT
sda                                                                          
├─sda1                                28920b00-58d3-4941-889f-6249357c56ee   
├─sda2                                                                       
└─sda5                                uhBLE7-Kcfe-RMi6-wrlX-xgVh-JfAc-PiXmBe 
  ├─<my_logical_group>-root (dm-0)       1bed9027-3cf7-4f8d-abdb-28cf448fb426   /
  ├─<my_logical_group>-swap_1 (dm-1)     a40c16c4-7d0c-46d7-afc8-99ab173c20bb   [SWAP]
  ├─<my_logical_group>-home (dm-2)       e458abb7-b263-452d-8670-814fa737f464   /home
  ├─<my_logical_group>-other (dm-3)      0a1eec42-6534-46e1-8eab-793d6f8e1003   /other
  └─<my_logical_group>-safe_vault (dm-4) d266ae14-955e-4ee4-9612-326dd09a463b   
    └─safe_vault (dm-5)               9bbf9f47-8ad8-43d5-9c4c-dca033ba5925   /safe-vault
sr0  

MEMPERBARUI

  • Ternyata saya memang memiliki crypttarget tetapi untuk itu muncul dengan dmsetup targetssaya harus terlebih dahulucryptsetup luksOpen <my-device>
  • Saya sudah mencoba menggunakan UUIDs menurut jawaban @Mikhail Morfikov tetapi masih gagal saat boot.

Saya masih berpikir masalahnya adalah bahwa entah bagaimana volume terenkripsi tidak dipetakan (dibuka dengan cryptsetup luksOpen) pada saat boot sehingga tidak /dev/mapper/<safe_vault or UUID>ada, kemudian mencoba untuk me-mount (fstab) gagal.

PEMBARUAN 2

Ternyata saya tidak memiliki skrip yang diperlukan untuk dipasang pada saat boot. Lihat catatan dalam jawaban @ MikhailMorfikov.

pgpb.padilla
sumber
1
Apakah target crypt muncul setelah Anda melakukannya secara manual luksOpen? Saya berharap jika itu tidak ada, luksOpen akan gagal juga.
CVn
Oke, setelah sudo cryptsetup luksOpendua target baru muncul untuk sudo dmsetup targets: errordan crypt. Saya kira saya perlu mengubah pertanyaan kemudian ...
pgpb.padilla
Apakah itu partisi atau wadah file?
Mikhail Morfikov
/dev/mapper/<my-logical-volume>-safe_vaultadalah volume logis yang dibuat dengan LVM dan /dev/mapper/safe_vaultmerupakan perangkat yang dipetakan olehnya cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vault. Apakah Anda tahu jika crypttabberfungsi dengan volume LVM?
pgpb.padilla
Saya memiliki lvm di dalam partisi luks, sebenarnya seluruh disk 1.5TB saya terenkripsi (kecuali /boot). Semua terpasang saat boot tanpa masalah. Apakah Anda yakin telah memperbarui initramfssetelah mengedit /etc/crypttab? Bisakah Anda menunjukkan output lsblk -o name,uuid,mountpointketika semuanya sudah terpasang dan berfungsi sebagaimana mestinya?
Mikhail Morfikov

Jawaban:

16

Anda harus memperhatikan UUID. Sebagai contoh, ini adalah konfigurasi saya:

# lsblk -o name,uuid,mountpoint
├─sda2                         727fa348-8804-4773-ae3d-f3e176d12dac
│ └─sda2_crypt (dm-0)          P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi
│   ├─debian_crypt-swap (dm-1) 3f9f24d7-86d1-4e21-93e9-f3c181d05cf0   [SWAP]
│   ├─debian_crypt-tmp (dm-2)  93fc8219-f985-45fb-bd5c-2c7940a7512d   /tmp
│   ├─debian_crypt-home (dm-3) 12e8566c-8f0f-45ec-8524-6d9d9ee91eae   /home
│   └─debian_crypt-root (dm-4) 9685570b-4c9e-43ea-815e-49d10dc7a1bf   /

Saya punya satu partisi terenkripsi (sda2) dengan 4 volume (LVM). Yang saya butuhkan adalah mengatur dua UUID di file yang tepat. Sda2 UUID masuk ke /etc/crypttabdan volume UUID (misalnya debian_crypt-root) masuk ke /etc/fstab.

Jadi, itu akan menjadi:

# cat /etc/crypttab
sda2_crypt              UUID=727fa348-8804-4773-ae3d-f3e176d12dac   none        luks

# cat /etc/fstab
UUID=9685570b-4c9e-43ea-815e-49d10dc7a1bf       /               ext4    defaults,errors=remount-ro              0 1

Setelah mengubah /etc/crypttabfile, Anda harus membangun kembali initramfs:

# update-initramfs -u -k all

CATATAN

Paket cryptsetupharus diinstal karena memiliki skrip startup yang memberikan dukungan untuk volume terenkripsi secara otomatis saat boot.

Kenapa repot-repot menyebutkan ini? Nah, jika Anda mengatur LVM selama instalasi Debian Wheezy menginstal paket cryptsetup-bin , libcryptsetup4dan lvm2tetapi tidak cryptsetup, maka Anda memiliki alat untuk mengatur perangkat LVM & LUKS tetapi bukan skrip yang diperlukan untuk memasang perangkat LUKS pada saat boot. Mereka datang dalam paket cryptsetup .

Mikhail Morfikov
sumber
Saya sudah mencoba menggunakan UUIDtetapi saya mendapatkan kesalahan yang sama. Saya akan memperbarui pertanyaan dengan detail.
pgpb.padilla
Hai, ini agak terlalu lama, bisakah kita mengobrol ?
pgpb.padilla
Sebagai tambahan, bahkan jika Anda tidak mengedit / etc / crypttab, sepertinya disk akan mengeditnya untuk Anda jika Anda mengubah pengaturan enkripsi tertentu. Jawaban ini membantu saya memperbaiki kesalahan yang saya buat dengan disk (dan mungkin lebih banyak kesalahan ketika mencoba membatalkan disk).
bijak
0

Tampaknya jawaban @Mikhail Morfikov mencakup pemasangan selama tahap initramfs . Alternatif (jika bukan sistem file root) adalah mendekripsi dan me-mount partisi secara otomatis melalui systemd , setelah kernel linuz dimuat. Tentu saja ini hanya mungkin jika Anda menjalankan systemd . Saya akan menjelaskan metode di sini:

The /etc/crypttabentri:

crypt2 UUID=e412-blahblah /path/to/crypt2.key luks,noauto

Berikut noautoadalah instruksi untuk tidak mencoba mendekripsi disk selama tahap initramfs .

Di atas, e412-blahblahadalah UUID partisi yang berisi sistem luks, dalam kasus saya partisi /dev/sdb2:

# blkid | grep sdb2
/dev/sdb2: UUID="e41274d8-fd83-4632-b560-ad0ba113ae75" TYPE="crypto_LUKS" PARTUUID="5673a908-02"

Selama startup kernel linuz, systemd akan membaca /etc/crypttabfile dan membuat file layanan runtime /run/systemd/generator/[email protected]. Namun, layanan itu tidak berjalan secara otomatis. Anda dapat menjalankannya secara manual

systemctl start [email protected]

tetapi untuk mendekripsi dan kemudian memasangnya pada saat startup, /etc/fstabmungkin diperlukan sebagai berikut:

/dev/mapper/crypt2--vg-data /media/crypt-data ext4 defaults,noauto,user,x-systemd.automount,[email protected] 0 2

Berikut x-systemd.automountadalah instruksi untuk systemd untuk me-mount /media/crypt-data, dan [email protected]merupakan instruksi untuk systemd bahwa dekripsi crypt2diperlukan sebelum itu mungkin.

Dalam systemd tidak akan benar-benar me-mount direktori sampai pertama kali diakses, misalnya ls /media/crypt-data, maka akan me-mount just-in-time dan muncul setelahnya di /proc/mounts.


Terkait

Anda mungkin bertanya "* mengapa memiliki disk data terenkripsi dengan kunci di sistem file root?". Itu karena sistem file root juga dienkripsi, jadi kuncinya aman. Sistem file root didekripsi selama tahap initramfs boot, jawaban ala Mikhail. Saya punya entri lain di /etc/crypttabfile untuk itu:

crypt1 UUID=8cda-blahbalh none luks,discard,lvm=crypt1--vg-root

dan saya jelaskan pengaturannya dan boot usb di sini

Craig Hicks
sumber