एक काम कर रहे Ubuntu 16.04 से, मैं पोस्ट-इंस्टॉलेशन रूट विभाजन एन्क्रिप्शन में सफल रहा, जिसमें रूट विभाजन / बूट को छोड़कर सब कुछ शामिल था। मैंने एक अलग हटाने योग्य USB पर बूट / बूट किया। विशेष रूप से मैंने उबंटू 18 में अपग्रेड करने से पहले ऐसा किया था, और अपग्रेड डिस्क एन्क्रिप्टेड संस्करण पर ठीक काम किया।
एन्क्रिप्शन "जगह" में नहीं किया गया था, जो मेरे साथ ठीक था क्योंकि मैं नए संस्करण को तब तक काम नहीं करना चाहता था जब तक कि नया सेटअप काम नहीं कर रहा था।
सही प्रक्रिया करना बेहद सरल और तेज है। (हालांकि सही प्रक्रिया का पता लगाने में बहुत समय लगता था क्योंकि मैंने कुछ गलत तरीके अपनाए थे।)
रूपरेखा
- एक लाइव लिनक्स यूएसबी डिस्क बनाएं - दृढ़ता को सक्षम करने के लिए यह सुविधाजनक है। उस लाइव USB डिस्क पर बूट करें।
- एक खाली विभाजन पर एक ल्यूक एन्क्रिप्टेड वॉल्यूम समूह बनाएँ। (मेरे मामले में यह मूल लिनक्स के समान डिस्क पर था, लेकिन यह एक और डिस्क हो सकता है।) उस एन्क्रिप्ट किए गए विभाजन पर तार्किक / वॉल्यूम बनाएँ और स्वैप करें। ये आभासी विभाजन के रूप में कार्य करेंगे जहाँ तक कॉपी किए गए लिनक्स का संबंध है।
- पुरानी रूट से नई रूट पर फाइल कॉपी करें।
- हटाने योग्य बूट डिस्क के रूप में कार्य करने के लिए अन्य USB सेट अप और विभाजन करें।
- नई रूट में कुछ फ़ाइलों को सेट करें, कुछ जादू करें, और नई रूट में चिरोट करें और फिर क्रोटॉट नए रूट वातावरण से बूट डिस्क पर ग्रब स्थापित करें।
विवरण
1 - लाइव लिनक्स यूएसबी डिस्क के साथ बूट - यह दृढ़ता सक्षम होने के लिए सुविधाजनक है।
Unetbootin के साथ एक USB पर Ubuntu 16 स्थापित किया। GUI "दृढ़ता" को निर्दिष्ट करने की अनुमति देता है, लेकिन काम करने के लिए दृढ़ता प्राप्त करने के लिए एक और कदम भी आवश्यक है - इस प्रकार /boot/grub/grub.cfg
जोड़ने के लिए संशोधित करें --- persistent
:
menuentry "Try Ubuntu without installing" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- persistent
initrd /casper/initrd
}
लाइव यूएसबी के साथ बूट करें
2- एक खाली विभाजन पर एक ल्यूक एन्क्रिप्टेड वॉल्यूम समूह बनाएं। उस एन्क्रिप्टेड पार्टीशन पर / (रूट) बनाएं और लॉजिकल वॉल्यूम स्वैप करें।
मान लें कि अप्रयुक्त विभाजन को एन्क्रिप्ट किया जाना है /dev/nvme0n1p4
।
वैकल्पिक रूप से , यदि आपके पास विभाजन पर पुराना डेटा है जिसे आप एन्क्रिप्शन और स्वरूपण से पहले छिपाना चाहते हैं, तो आप विभाजन को यादृच्छिक रूप से मिटा सकते हैं। चर्चा यहाँ देखें ।
dd if=/dev/urandom of=/dev/nvme0n1p4 bs=4096 status=progress
एन्क्रिप्शन सेट अप करें।
cryptsetup -y -v luksFormat /dev/nvme0n1p4
आपसे पासवर्ड सेट करने के लिए कहा जाएगा।
cryptsetup luksOpen /dev/nvme0n1p4 crypt1
आपसे पासवर्ड दर्ज करने के लिए कहा जाएगा। ध्यान दें कि crypt1
एक मनमाना उपयोगकर्ता तय नाम है। अब वॉल्यूम और फॉर्मेट बनाएं।
pvcreate /dev/mapper/crypt1
vgcreate crypt1-vg /dev/mapper/crypt1
lvcreate -L 8G crypt1-vg -n swap
mkswap /dev/crypt1-vg/swap
lvcreate -l 100%FREE crypt1-vg -n root
mkfs.ext4 /dev/crypt1-vg/root
वॉल्यूम को देखने और पदानुक्रम को समझने के लिए इन उपयोगिताओं का उपयोग करें।
pvscan
vgscan
lvscan
ls -l /dev/mapper
ls -l /dev/crypt1
3- पुरानी रूट से नई रूट की फाइल कॉपी करें
mkdir /tmp/old-root
mount /dev/ubuntu-vg/root /tmp/old-root/
mkdir /tmp/new-root
mount /dev/crypt1-vg/root /tmp/new-root/
cp -a /tmp/old-root/. /tmp/new-root/
umount /tmp/old-root
umount /tmp/new-root
cp -a ...
संग्रह मोड में प्रतियां, सभी फ़ाइल मोड और झंडे को संरक्षित करना।
4- रिमूवेबल बूट डिस्क के रूप में कार्य करने के लिए एक और USB सेट अप करें और विभाजन करें।
मैंने इसके लिए gparted का उपयोग किया। दो विभाजन सेट करें। पहला विभाजन है vfat
, दूसरा विभाजन ext2
। प्रत्येक 512 एमबी था, आप कम से दूर हो सकते हैं। डिवाइस मान लें /dev/sdf
।
# The first partition: (will be /dev/sdf1)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: fat32
Label: (leave)
# The second partition: (will be /dev/sdf2)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: ext4
Label: (leave)
5- नई रूट में कुछ फाइलें सेट करें, कुछ मैजिक करें, और नई रूट में चिरोट करें और फिर चेरोट से नए रूट वातावरण में बूट डिस्क पर ग्रब स्थापित करें।
बाद में उपयोग के लिए कुछ यूयूआईडी खोजें। निम्नलिखित कमांड से आउटपुट पर ध्यान दें:
blkid /dev/sdf1
blkid /dev/sdf2
blkid /dev/nvme0n1p4
रूट विभाजन और बूट विभाजन माउंट करें
sudo mount /dev/mapper/crypt1--vg-root /mnt
sudo mount /dev/sdf2 /mnt/boot
sudo mount /dev/sdf1 /mnt/boot/efi
फ़ाइल सेट करें /mnt/etc/fstab
/dev/mapper/crypt1--vg-root / ext4 errors=remount-ro 0 1
/dev/mapper/crypt1--vg-swap none swap sw 0 0
UUID=[uuid of /dev/sdf2] /boot ext2 defaults 0 2
UUID=[uuid of /dev/sdf1] /boot/efi vfat umask=0077 0 1
जहाँ "[की uuid ...]" केवल एक अक्षर-संख्या-हाइफ़न संयोजन है।
फ़ाइल बनाएँ /mnt/etc/cryptab
# <target name> <source device> <key file> <options>
crypt1 UUID=[uuid of /dev/nvme0n1p4] none luks,discard,lvm=crypt1--vg-root
रूट डायरेक्टरी वातावरण में प्रवेश करने के लिए आवश्यक कुछ जादू:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
chroot /mnt
अब बूट USB डिस्क को इसके साथ सेट करें grub
:
apt install --reinstall grub-efi-amd64
grub-install --efi-directory=/boot/efi --boot-directory=/boot --removable
update-initramfs -k all -c
update-grub
अब आपको नए बनाए गए USB बूट डिस्क का उपयोग करके रीबूट और बूटअप करने में सक्षम होना चाहिए।
Toubleshooting-
(ए)apt install --reinstall grub-efi-amd64
कमांड के लिए नेटवर्क जुड़ा होना चाहिए । यदि नेटवर्क जुड़ा हुआ है, लेकिन DNS विफल हो रहा है, तो प्रयास करें
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
(b) कॉल करने से पहले initramfs
, vmlinuz...
मूल लिनक्स में उपयोग की जाने वाली वर्तमान फाइल नई रूट डायरेक्टरी में मौजूद होनी चाहिए। यदि यह नहीं है, तो इसे ढूंढें और इसे वहां रखें।
(ग)grub-install
आदेश डिफ़ॉल्ट खोज से अन्य सभी linux डिस्क यह भले ही वे नहीं कर रहे हैं पा सकते हैं जाएगा mount
एड, और बूट मेनू में नई बूट यूएसबी जोड़ देते हैं। आमतौर पर यह वांछित नहीं है, इसलिए इस रेखा को जोड़कर इससे बचा जा सकता है /boot/default/grub.cfg
:
GRUB_DISABLE_OS_PROBER=true
नोट:
एन्क्रिप्शन कुंजी के साथ एक पाठ फ़ाइल को हटाने योग्य बूट USB में जोड़ा जा सकता है।