एन्क्रिप्टेड LVM को एक नई डिस्क पर कैसे माइग्रेट करें


15

मेरे पास कुछ हद तक अनुकूलित लैपटॉप है जिसे मैं सीधे एसएसडी में ले जाना चाहता हूं, उबंटू को फिर से स्थापित किए बिना, सभी एप्लिकेशन को फिर से इंस्टॉल करना और अन्य सभी परिवर्तनों को फिर से करना। SSD छोटा है, इसलिए मैं बस नहीं कर सकता dd

मूल स्थापित उबंटू वैकल्पिक इंस्टॉलर के साथ किया गया था, LVM विकल्प के साथ पूर्ण डिस्क एन्क्रिप्शन का चयन करता है।

क्या चरणों की आवश्यकता है और मैं उन्हें कैसे करूँ? मुझे उम्मीद है:

  • डिस्क विभाजन, एन्क्रिप्शन आदि को सेट करें
  • डेटा को कॉपी करें
  • ग्रब स्थापित करें और इसे नए यूयूआईडी मूल्यों आदि के साथ काम करें।

जवाबों:


14

विभाजन और फाइल कॉपी - दौड़ते समय

मैंने इसे रनिंग सिस्टम से शुरू किया था। मैंने नए एसएसडी को एक यूएसबी एसएटीए एडाप्टर में प्लग किया और इसे विभाजित किया, एलवीएम स्थापित किया और फाइलों को कॉपी किया।

# confirm disk size is as expected for sdc
sudo fdisk -l /dev/sdc
# now partition - 500 MB partition as boot, the rest as a single (logical) partition
sudo cfdisk /dev/sdc

आपकी डिस्क अब दिखनी चाहिए:

sudo fdisk -l /dev/sdc
Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63      979964      489951   83  Linux
/dev/sda2          979965   234441647   116730841+   5  Extended
/dev/sda5          980028   234441647   116730810   82  Linux swap / Solaris

अगला कदम एन्क्रिप्शन के ऊपर विभाजन और LVM पर एन्क्रिप्शन रखना है।

sudo cryptsetup -y luksFormat /dev/sdc5
sudo cryptsetup luksOpen /dev/sdc5 crypt
sudo vgcreate crypt-lvm /dev/mapper/crypt
sudo lvcreate -L4G -nswap crypt-lvm
sudo lvcreate -l100%FREE -nroot crypt-lvm

अब फाइलसिस्टम बनाएं और उन्हें माउंट करें और अपने सिस्टम को कॉपी करें।

sudo mkfs.ext2 /dev/sdc1
# you do ls /dev/mapper to check the name if different
sudo mkfs.ext4 /dev/mapper/crypt-root
sudo mkdir /mnt/boot
sudo mkdir /mnt/root
sudo mount -t ext2 /dev/sdc1 /mnt/boot
sudo mount -t ext4 /dev/mapper/crypt-root /mnt/root

# rsync files
sudo rsync -a /boot/* /mnt/boot/
sudo rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude run --exclude boot --exclude sys --exclude tmp /* /mnt/root/

इस बिंदु तक आप सिस्टम को चालू रख सकते हैं और इसका उपयोग कर सकते हैं। अब आपको एक लाइव सीडी / यूएसबी में शटडाउन और बूट करने की आवश्यकता है ताकि आप सिस्टम को शटडाउन स्थिति में प्राप्त कर सकें।

विभाजन और फाइल कॉपी - लाइव सीडी / यूएसबी

एक बार बूट करने के बाद, एक टर्मिनल खोलें और:

sudo apt-get install lvm2

# mount old hard drive
sudo cryptsetup luksOpen /dev/sda5 sda5_crypt
sudo mkdir /mnt/sdaroot
# you can do ls /dev/mapper to check the name if it is different
sudo mount -t ext4 /dev/mapper/sda5_crypt--root /mnt/sdaroot

# mount new hard drive (over USB)
sudo cryptsetup luksOpen /dev/sdc5 sdc5_crypt
sudo mkdir /mnt/sdcroot
sudo mount -t ext4 /dev/mapper/sdc5_crypt--root /mnt/sdcroot

# final rsync
sudo rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude run --exclude boot --exclude sys --exclude tmp /mnt/sdaroot/* /mnt/sdcroot/

chroot

# prepare chroot
cd /mnt/sdcroot
sudo mkdir boot

# these directories are set up by the system and we need them inside the chroot
sudo mount -t proc proc /mnt/sdcroot/proc
sudo mount -t sysfs sys /mnt/sdcroot/sys
sudo mount -o bind /dev /mnt/sdcroot/dev

# now enter the chroot
sudo chroot /mnt/root/

यूयूआईडी को बदलना

अब हम चेरोट के अंदर जड़ हैं और निम्नलिखित कमांड चलाते हैं:

# inside chroot, as root
mount -t ext2 /dev/sdc1 /boot
blkid

अब आप सिस्टम में विभिन्न डिस्क के लिए सभी यूयूआईडी देखेंगे । आपको UUIDs को संपादित करना होगा /etc/fstabऔर इसके /etc/crypttabलिए मूल्यों का मिलान करना होगा/dev/sdc?

में /etc/fstabआप बूट डिस्क के लिए UUID उपयोग करने की आवश्यकता - /dev/sdc1अगर आपके डिस्क मुझे के रूप में ही पत्र है।

में /etc/crypttab- यदि आप अन्य (बड़ा) विभाजन के लिए UUID उपयोग करने की आवश्यकता /dev/sdc5है, तो आपके डिस्क मुझे के रूप में ही पत्र है।

initramfs और ग्रब

# now update initramfs for all installed kernels
update-initramfs -u -k all

# install grub and ensure it is up to date
grub-install /dev/sdc      # NOTE sdc NOT sdc1
update-grub

# hit Ctrl-D to exit chroot
sudo umount /mnt/root

अब शटडाउन करें, अपने लैपटॉप के अंदर एसएसडी रखें, अपनी उंगलियों को पार करें और बूट करें।

उपयोगी कड़ियाँ

Http://www.debian-administration.org/articles/577 पर cryptsetup सामान के लिए अच्छा मार्गदर्शक

बाहरी विभाजन पर ग्रब स्थापित करने के लिए: /programming/247030/how-to-set-up-grub-in-a-cloned-hard-disk

https://help.ubuntu.com/community/UsingUUID


बस sys के बाहर rsync की खोज की, कुछ निर्देशिकाओं को शामिल किया जिन्हें मैं शामिल करना चाहता था। मैं अधिक समझदार rsync कमांड के साथ आऊंगा और इस उत्तर को अपडेट करूंगा।
हमीश डाउनर

बस एक अनुस्मारक: आपने इस उत्कृष्ट उत्तर के लिए एक अद्यतन का वादा किया :-)
17

चेरोट अनुभाग में, माउंट करने से पहले, मुझे आरोह बिंदु बनाना था: sudo mount -t proc proc /mnt/sdcroot/proc sudo mount -t sysfs sys /mnt/sdcroot/sys sudo mount -o bind /dev /mnt/sdcroot/devपहले से करना: sudo mkdir /mnt/sdcroot/proc sudo mkdir /mnt/sdcroot/sys--- मेरे मामले में, इनट्रामाफ़्स बनाने का कमांड काम नहीं करता था, क्योंकि कर्नेल संस्करण मेल नहीं खाते थे और इसलिए इनट्रामाफ्स नहीं कर सकते थे / बूट में सही कर्नेल ढूंढें, इसलिए मुझे काम करने के लिए पूरी चीज़ नहीं मिल सकी।
ब्लाइंडफ्रेड्डी

मैंने गाइड को "रनिंग" करते हुए आपका अनुसरण किया है, कुछ समायोजन किए (ext4) और अब तक इसने आश्चर्यजनक रूप से काम किया है। मैं बूट के लिए fstab UUID में बदल गया नया विभाजन मैंने रूट और स्वैप के लिए माउंट पॉइंट भी बदले। क्या बदलाव के अलावा और भी कुछ जरूरी है? मैं अब बूटिंग करने की कोशिश कर रहा हूं: D
Luka

जब आप luksOpen करते हैं, तो उसी लेबल को असाइन करना सुनिश्चित करें जो क्रिप्टैब में उपयोग किया जाता है या ग्रब सेटअप ठीक से काम नहीं करेगा। मुझे पता लगाने के लिए हमेशा के लिए ले लिया। एक अन्य उत्तर में बाध्यकारी / रन / lvm का उल्लेख किया गया है। पता नहीं कि क्या जरूरत है। डिबगिंग के लिए आप एक USB डिस्क पर अभ्यास करके और kvm के साथ बूट करने का प्रयास करके समय बचा सकते हैं।
दान Stahlke

3

मैंने टिप्पणी करने की कोशिश की, लेकिन मुझे प्रतिष्ठा की कमी है :-)

वैसे भी, हमीश द्वारा अपने लिनक्स-आधारित ल्यूक्स-एन्क्रिप्टेड वर्क लैपटॉप पर एक ssd में स्थानांतरित करने के लिए मैंने अद्भुत गाइड का सफलतापूर्वक उपयोग किया। बस कुछ टिप्पणी:
1. स्वैप lv बनाने के बाद भी उपयोग करें

# mkswap /dev/mapper/crypt-swap 

स्वैप आरंभ करने के लिए, अन्यथा यह बूट के दौरान विफल रहता है, जैसा कि ऊपर टिप्पणी में संकेत दिया गया है।
2. rsyncआदेश बहुत प्रतिबंधक है जैसा कि यह है। जब मैंने इसके साथ प्रयोग किया --exclude run, तो मैं इंटरनेट की त्रुटियों के कारण अजीब तरह की सभी प्रकार की अजीबोगरीब घटनाओं में भाग गया। रन को शामिल करना होगा । रखरखाव मोड में बूट करने पर साइज़ वैसे भी खाली है, इसलिए यह रह सकता है। इसके अलावा अगर आप tmp को बाहर करते हैं, तो टारगेट / tmp और / var / tmp पर बनाए गए नए को एक चिपचिपा सा नहीं मिलता है - उन्हें अपने आप से सेट करना याद रखें। मैं जैसे कुछ का उपयोग कर समाप्त हो गया

# rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude boot /mnt/sdaroot/* /mnt/sdcroot/

कुल मिलाकर - एक महान मार्गदर्शक, प्रक्रिया के अवलोकन को सटीक रूप से दिखाता है! आपको मछली कैसे सिखाता है, इसलिए कहना है!


0

[टिप्पणी में नहीं डाला जा सकता है, हालांकि यह पोस्ट एक उत्तर के बजाय एक टिप्पणी में है]

इस पद्धति का उपयोग करते हुए, आप एक मौजूदा ** गैर - ** एन्क्रिप्टेड lvm नई डिस्क पर एक एन्क्रिप्टेड lvm इंस्टॉल में ले जा सकते हैं; http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-enc एन्क्रिप्शन-lm -luks , विशेष रूप से:

apt-get install lvm2 cryptsetup

उपरोक्त कमांड भी लक्ष्य डिस्क पर lvm2 स्थापित करता है, हालांकि यह अनावश्यक है, यह तब उपयोगी होता है जब आप एक लाइव सीडी / डीवीडी का उपयोग करके अपने एसएसडी पर एक lvm सिस्टम में एक गैर lvm सिस्टम को स्थानांतरित कर रहे थे। ध्यान दें कि आपको / chroot.resolve.conf को अपनी चेरोट पर कॉपी करने की आवश्यकता होगी, ताकि आप एप-गेट को सफलतापूर्वक चलाने में सक्षम हो सकें: यह ऊपर उल्लेखित URL पर उल्लिखित है, कोड टुकड़ा:sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf

इसके अलावा, cp करना आसान है (भिन्न संस्थापन का उपयोग करना (स्रोत संस्थापन के भीतर से नहीं), उदाहरण के लिए, / विभाजन के लिए rsync के बजाय एक लाइव सीडी / डीवीडी), जैसा कि उबंटू को SSD में स्थानांतरित करने के लिए वर्णित है।

आपको शायद mkswapअपने /dev/mapper/<swap-name-here>विभाजन का उपयोग करके स्वैप भी बनाना चाहिए ।

उसी समय TRIM समर्थन को भी सक्षम करना चाहिए, जैसा कि http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html पर बताया गया है

चेतावनी: एमबीआर का उपयोग करने वालों के लिए नीचे का पाठ नहीं है, जो इस विषय / सूत्र से संबंधित है। मुझे वैसे भी यह उपयोगी लगा, इसलिए मैं उन लोगों के लाभ के लिए पोस्ट कर रहा हूं जो इस जीपीटी डिस्क में इस थ्रेड / विषय के निर्देशों को अनुकूलित कर सकते हैं।

और MBR के बजाय GPT का उपयोग करने वालों के लिए (fdisk के बजाय parted / gparted और gdisk का उपयोग करके), मैंने यह कठिन तरीका सीखा है कि GPT क्रम में आपके लुक्स डिवाइस के बाद आपके / boot विभाजन (जो अनएन्क्रिप्टेड है) को क्रमांकित नहीं किया जाना चाहिए। चूँकि मैंने gparted का उपयोग करके / boot और luks डिवाइस विभाजन बनाने के बाद ESP विभाजन बनाया था, इसलिए मुझे विभाजन संख्याएँ क्रमबद्ध करनी पड़ीं ताकि / boot अभी भी लुक्स डिवाइस से कम संख्या में हो।

एक तरफ के रूप में और इस पद से संबंधित नहीं है कड़ाई से बोलते हुए, rEFInd के साथ GPT और UEFI का उपयोग करने वाले, rEFInd और rEFInd को शायद आपको बूट करने के लिए विभाजन की एक सूची पेश करने में समस्या है अगर आपके सिस्टम में कई ईएसपी हैं, तो मैं प्रति डिस्क एक हूं, इसलिए इसके बजाय rEFInd का उपयोग करते हुए, मैं ग्रब का उपयोग कर रहा हूं, जो ठीक काम करता है।


0

अनुभाग initramfs और grub से पहले आपको निम्न की आवश्यकता हो सकती है:

vgscan
vgchange -a y

0

थोड़ा देर से, लेकिन आपको स्वैप संशोधन को प्रतिबिंबित करने के लिए /etc/initramfs-tools/conf.d/resume फ़ाइल को अपडेट करना होगा। इस संशोधन के बिना आप हाइबरनेट फ़ंक्शन को तोड़ देंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.