ทำไมปริมาณ LVM ที่เข้ารหัสของฉัน (อุปกรณ์ LUKS) ไม่ติดในเวลาบูต


15

ฉันกำลังพยายามตั้งค่าโวลุ่มที่เข้ารหัสตามคู่มือนี้

ทุกอย่างถูกตั้งค่า แต่การติดตั้งไดรฟ์ข้อมูลที่เข้ารหัสล้มเหลวขณะบู๊ตด้วยข้อผิดพลาด:

fsck.ext4: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวขณะที่พยายามเปิด / dev / mapper / safe_vault อาจเป็นไปได้ที่อุปกรณ์ไม่มีอยู่จริง?

นี่คือการตั้งค่าของฉัน:

crypttab

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

บันทึก:

uuidมาจาก:

$ 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

ฉันทำอะไรลงไป...

ดังนั้นฉันจึงไปที่เว็บไซต์ของ devoper และในFAQ ปัญหาทั่วไปพวกเขาพูดว่า:

ตรวจสอบว่าคุณมีอุปกรณ์ทำแผนที่และเป้าหมายฝังศพใต้ถุนโบสถ์ในเคอร์เนลของคุณ ผลลัพธ์ของ "เป้าหมาย dmsetup" ควรแสดงรายการเป้าหมาย "crypt" หากไม่มีหรือคำสั่งล้มเหลวให้เพิ่ม mapper อุปกรณ์และ crypt-target เข้ากับเคอร์เนล

ดังนั้นฉันจึงกลายเป็นว่าฉันไม่มีcryptเป้าหมาย:

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

ปัญหาคือฉันไม่รู้วิธีเพิ่มเป้าหมายดังกล่าว

ผมคิดว่านี่ (ไม่ได้มีcryptเป้าหมาย) อาจจะก่อให้เกิดcrypttabการกำหนดค่าที่จะละเลยที่บูตเวลาจึงพยายามที่จะติดเข้าในfstabล้มเหลวเนื่องจากยังไม่ได้แมปไดรฟ์ที่เข้ารหัสลับของฉันไปcryptsetup/dev/mapper/safe_vault

บันทึก:

ไดรฟ์ข้อมูลที่เข้ารหัสสามารถถูกแมปติดตั้งและเขียนด้วยตนเองได้สำเร็จ:

$ 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

นี่คือลักษณะที่เกิดขึ้นหลังจากการทำแผนที่และติดตั้ง:

$ 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  

UPDATE

  • ปรากฎว่าฉันมีcryptเป้าหมาย แต่มันจะปรากฏขึ้นด้วยdmsetup targetsฉันต้องก่อนcryptsetup luksOpen <my-device>
  • ฉันลองใช้UUIDs แทนตามคำตอบของ @Mikhail Morfikov แต่มันก็ล้มเหลวตอนบูท

ฉันยังคิดว่าปัญหาคือว่าปริมาณการเข้ารหัสไม่ได้ถูกแมป (เปิดด้วยcryptsetup luksOpen) ในขณะบูตดังนั้นจึงไม่มี/dev/mapper/<safe_vault or UUID>อยู่แล้วพยายามเมา (fstab) ล้มเหลว

อัพเดท 2

ปรากฎว่าฉันไม่มีสคริปต์ที่จำเป็นในการติดตั้งตอนบูต ดูหมายเหตุในคำตอบของ @ MikhailMorfikov


1
เป้าหมาย crypt ปรากฏขึ้นหลังจากที่คุณทำด้วยตนเองluksOpenหรือไม่? ฉันคาดหวังว่าถ้ามันไม่อยู่ที่นั่นลูก luksOpen ก็จะล้มเหลวเช่นกัน
CVn

ตกลงหลังจากที่sudo cryptsetup luksOpenสองเป้าหมายใหม่ปรากฏสำหรับsudo dmsetup targets: และerror cryptฉันเดาว่าฉันจำเป็นต้องเปลี่ยนคำถามแล้ว ...
pgpb.padilla

มันเป็นพาร์ติชั่นหรือไฟล์คอนเทนเนอร์?
Mikhail Morfikov

/dev/mapper/<my-logical-volume>-safe_vaultเป็นปริมาณตรรกะที่สร้างขึ้นด้วย LVM และเป็นอุปกรณ์ที่เป็นแมปด้วยการทำ/dev/mapper/safe_vault cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vaultคุณรู้หรือไม่ว่าcrypttabทำงานได้กับปริมาณ LVM หรือไม่?
pgpb.padilla

ฉันมี LVM ภายในพาร์ทิชัน luks จริงๆแล้วฉันมีดิสก์เข้ารหัสของฉัน 1.5TB ทั้งหมด (ยกเว้น/boot) ทั้งหมดติดตั้งตอนบูตโดยไม่มีปัญหา คุณแน่ใจหรือไม่ว่าคุณได้รับการอัปเดตinitramfsหลังจากการแก้ไข/etc/crypttab? คุณสามารถแสดงผลลัพธ์ของlsblk -o name,uuid,mountpointเมื่อทุกอย่างติดตั้งและทำงานตามที่ควรหรือไม่
Mikhail Morfikov

คำตอบ:


16

คุณต้องใส่ใจกับ UUIDs ตัวอย่างเช่นนี่คือการกำหนดค่าของฉัน:

# 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   /

ฉันมีพาร์ติชั่นเข้ารหัสหนึ่งรายการ (sda2) ที่มี 4 เล่ม (LVM) สิ่งที่ฉันต้องการคือการตั้ง UUID สองตัวในไฟล์ที่ถูกต้อง UUID sda2 ไป/etc/crypttabและปริมาณ UUID (ตัวอย่างเช่น debian_crypt ราก) /etc/fstabไป

ดังนั้นมันจะเป็น:

# 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

หลังจากเปลี่ยน/etc/crypttabไฟล์คุณต้องสร้าง initramfs ใหม่:

# update-initramfs -u -k all

บันทึก

cryptsetupต้องติดตั้งแพคเกจเนื่องจากมีสคริปต์เริ่มต้นซึ่งให้การสนับสนุนสำหรับการเมานต์ไดรฟ์ข้อมูลที่เข้ารหัสโดยอัตโนมัติเมื่อบูต

ทำไมต้องพูดถึงเรื่องนี้? ดีถ้าคุณติดตั้ง LVM ระหว่างการติดตั้ง Debian ดังเสียงฮืด ๆ ติดตั้งแพคเกจcryptsetup-bin , libcryptsetup4และlvm2แต่ไม่cryptsetupทำให้คุณมีเครื่องมือในการติดตั้งและ LVM LUKS อุปกรณ์ แต่ไม่สคริปต์ที่จำเป็นในการติดตั้งอุปกรณ์ LUKS ในเวลาบูต ผู้ที่มาในแพคเกจcryptsetup


ฉันลองใช้UUIDแต่ได้รับข้อผิดพลาดเดียวกัน ฉันจะอัปเดตคำถามพร้อมรายละเอียด
pgpb.padilla

สวัสดีนี่มันยาวไปหน่อยเราคุยกันได้ไหม
pgpb.padilla

นอกเหนือจากนี้แม้ว่าคุณจะไม่ได้แก้ไข / etc / crypttab ดูเหมือนว่าดิสก์จะแก้ไขให้คุณถ้าคุณเปลี่ยนการตั้งค่าการเข้ารหัสบางอย่าง คำตอบนี้ช่วยฉันแก้ไขข้อผิดพลาดที่เกิดขึ้นกับดิสก์ (และอาจผิดพลาดมากขึ้นเมื่อพยายามเลิกทำดิสก์)
ปราชญ์

0

มันดูเหมือนว่า @Mikhail Morfikov ของคำตอบที่ครอบคลุมการติดตั้งในช่วงinitramfsเวที ทางเลือกอื่น (หากไม่ใช่ระบบไฟล์รูท) คือการถอดรหัสและติดตั้งพาร์ติชันโดยอัตโนมัติผ่านsystemdหลังจากที่โหลดเคอร์เนล linuz หลักสูตรนี้จะเป็นไปได้ถ้าคุณกำลังเรียกsystemd ฉันจะอธิบายวิธีการที่นี่:

/etc/crypttabรายการ:

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

นี่noautoคือการเรียนการสอนไม่ได้พยายามที่จะถอดรหัสดิสก์ในช่วงinitramfsเวที

ข้างต้นe412-blahblahเป็น UUID ของพาร์ทิชันที่มีระบบ luks ในกรณีของฉันพาร์ทิชัน/dev/sdb2:

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

ในช่วง linuz เคอร์เนลเริ่มต้นsystemdจะอ่านไฟล์และสร้างไฟล์บริการรันไทม์/etc/crypttab /run/systemd/generator/systemd-cryptsetup@crypt2.serviceอย่างไรก็ตามบริการดังกล่าวจะไม่ทำงานโดยอัตโนมัติ คุณสามารถเรียกใช้ด้วยตนเอง

systemctl start systemd-cryptsetup@crypt2.service

แต่ในการถอดรหัสมันและจากนั้นติดมันในระหว่างการเริ่มต้น/etc/fstabอาจจำเป็นต้องเป็นดังนี้:

/dev/mapper/crypt2--vg-data /media/crypt-data ext4 defaults,noauto,user,x-systemd.automount,x-systemd.requires=systemd-cryptsetup@crypt2.service 0 2

นี่x-systemd.automountคือคำสั่งสำหรับsystemdเพื่อติดตั้ง/media/crypt-dataและx-systemd.requires=systemd-cryptsetup@crypt2.serviceเป็นคำสั่งสำหรับsystemdที่crypt2จำเป็นต้องถอดรหัสก่อนที่จะเป็นไปได้

ในsystemdจะไม่ติดไดเรกทอรีจนกระทั่งครั้งแรกที่มีการเข้าถึงเช่นแล้วมันจะติดเพียงในเวลาและหลังจากนั้นปรากฏในls /media/crypt-data/proc/mounts


ที่เกี่ยวข้อง

คุณอาจถาม "* เหตุใดจึงมีดิสก์ข้อมูลที่เข้ารหัสด้วยรหัสในระบบไฟล์รูท" เป็นเพราะระบบไฟล์รูทถูกเข้ารหัสเช่นกันดังนั้นกุญแจจึงปลอดภัย รากของระบบแฟ้มถูกถอดรหัสในช่วงinitramfsขั้นตอนของการบูตลาคำตอบของมิคาอิล ฉันมีรายการอื่นใน/etc/crypttabไฟล์สำหรับ:

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

และฉันอธิบายการตั้งค่านั้นและบูทยูเอสบีที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.