Şifreli bir LVM yüklemesini yeni bir diske taşıma


15

Biraz özelleştirilmiş bir dizüstü bilgisayar yüklemem var Ubuntu'yu yeniden yüklemek, tüm uygulamaları yeniden yüklemek ve diğer tüm değişiklikleri tekrar yapmak zorunda kalmadan doğrudan bir SSD'ye geçmek istiyorum. SSD daha küçük, bu yüzden yapamam dd.

Orijinal yükleme, Ubuntu alternatif yükleyicisi ile yapıldı ve LVM seçeneğiyle tam disk şifrelemesini seçti.

Hangi adımlar gereklidir ve bunları nasıl yaparım? Aşağıdakileri yapmayı bekliyorum:

  • disk bölümlerini, şifrelemeyi vb.
  • verileri karşıya kopyala
  • grub'u kurun ve yeni UUID değerleri vb. ile çalışmasını sağlayın.

Yanıtlar:


14

Bölümleme ve dosya kopyalama - çalışırken

Bunu çalışan sistemden başlayarak yaptım. Yeni SSD'yi bir USB SATA adaptörüne taktım ve bölümledim, LVM'yi kurdum ve dosyaları kopyaladım.

# 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

Diskiniz şimdi şöyle görünmelidir:

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

Bir sonraki adım şifrelemeyi bölüme ve LVM'yi şifrelemenin üstüne koymaktır.

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

Şimdi dosya sistemlerini oluşturun ve bağlayın ve sisteminizi kopyalayın.

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/

Bu noktaya kadar sistemi çalışır durumda tutabilir ve kullanabilirsiniz. Şimdi sistemi kapatıp açabilmeniz için kapatıp canlı bir CD / USB'ye önyükleme yapmanız gerekiyor.

Bölümleme ve dosya kopyalama - canlı CD / USB

Önyükleme yaptıktan sonra bir terminal açın ve:

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/

UUID'leri değiştirme

Şimdi chroot'un içindeyiz ve aşağıdaki komutları çalıştırıyoruz:

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

Şimdi sistemdeki çeşitli diskler için tüm UUID'leri göreceksiniz . İçeri UUIDs düzenlemek gerekir /etc/fstabve /etc/crypttabdeğerlerini maç için/dev/sdc?

Gelen /etc/fstabönyükleme diskini için UUID kullanmak gerekir - /dev/sdc1sizin diskler benimle aynı harfi varsa.

In /etc/crypttab- diğer (büyük) bölümü için UUID kullanmak gerekir /dev/sdc5sizin diskler benimle aynı harfi varsa.

initramfs ve grub

# 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

Şimdi kapatın, SSD'yi dizüstü bilgisayarınızın içine koyun, parmaklarınızı çaprazlayın ve önyükleme yapın.

Kullanışlı bağlantılar

Http://www.debian-administration.org/articles/577 adresindeki kripto kurulum öğeleri için iyi bir rehber

Grubu harici bir bölüme kurmak için: /programming/247030/how-to-set-up-grub-in-a-cloned-hard-disk

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


Sadece sys rsync hariç dahil etmek istediğim bazı dizinler hariç keşfetti. Daha seçici bir rsync komutu ile geleceğim ve bu cevabı güncelleyeceğim.
Hamish Downer

Sadece bir hatırlatma: Bu mükemmel cevap için bir güncelleme sözü
verdiniz

Chroot bölümünde, montajdan önce, bağlama noktalarını oluşturmak zorunda kaldım: sudo mount -t proc proc /mnt/sdcroot/proc sudo mount -t sysfs sys /mnt/sdcroot/sys sudo mount -o bind /dev /mnt/sdcroot/devönceden yaptım: sudo mkdir /mnt/sdcroot/proc sudo mkdir /mnt/sdcroot/sys--- Benim durumumda, initramfs oluşturma komutu işe yaramadı, çünkü çekirdek sürümleri eşleşmedi ve böylece initramfs olamazdı / boot içinde doğru çekirdeği bulmak, böylece her şeyi işe alamadım.
Blindfreddy

Ben "çalışırken" rehberinizi takip ettik, birkaç ayar (ext4) yaptı ve şimdiye kadar harika çalıştı. Yeni bölüme önyükleme için fstab UUID olarak değiştirdim Ayrıca kök ve takas için bağlanma noktalarını değiştirdim. Fstab dışında değiştirmek için başka bir şey var mı? Şimdi önyüklemeyi deneyeceğim: D
Luka

LuksOpen yaptığınızda, crypttab'da kullanılan etiketin aynısını atadığınızdan emin olun yoksa grub kurulumu düzgün çalışmaz. Bunu çözmem için sonsuza dek sürdü. Başka bir cevap, bağlama / çalıştırma / lvm'den bahseder. Bunun gerekli olup olmadığını bilmiyorum. Hata ayıklama için bir USB disk üzerinde pratik yaparak ve kvm ile önyüklemeye çalışarak zaman kazanabilirsiniz.
Dan Stahlke

3

Yorum yapmaya çalıştım, ama itibarım yok :-)

Her neyse, Linux tabanlı luks şifreli iş dizüstü bilgisayarımda bir SSD'ye geçmek için Hamish'in inanılmaz rehberini başarıyla kullandım. Sadece birkaç açıklama:
1. takas lv oluşturduktan sonra da kullanın

# mkswap /dev/mapper/crypt-swap 

takas işlemini başlatmak için, aksi takdirde yukarıdaki açıklamada belirtildiği gibi önyükleme sırasında başarısız olur.
2. rsyncKomut olduğu gibi çok kısıtlayıcı. Birlikte kullandığımda --exclude run, genellikle internet hataları tarafından görülmeyen garip veeeeeeery her türlü karşılaştım. Çalışma dahil edilmelidir . Sistem, bakım moduna geçerken zaten boştur, böylece kalabilir. Ayrıca tmp'yi hariç tutarsanız, target / tmp ve / var / tmp üzerinde yeni oluşturulan bir yapışkan bit alamaz - bunları kendiniz ayarlamayı unutmayın. Sonunda şöyle bir şey kullandım

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

Genel olarak - harika bir rehber, sürecin genel görünümünü doğru bir şekilde gösterir! Diyelim ki balık tutmayı öğretir!


0

[Bu yayın bir yanıttan ziyade bir yorumda yer almasına rağmen bir yorum yapılamadı]

Bu yöntemi kullanarak, varolan ** olmayan ** şifreli bir lvm yüklemesini yeni diskteki şifreli bir lvm yüklemesine taşıyabilirsiniz; http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-encryption-lvm adresinde belirtildiği gibi ek adımlara (hedef diske chroot'tayken kripto kurulumunu yüklemek için) ihtiyacınız vardır. -luks , özellikle:

apt-get install lvm2 cryptsetup

Yukarıdaki komut ayrıca lvm2'yi hedef diske yükler, ancak bu gereksizdir, lvm olmayan bir sistemi bir Canlı CD / DVD kullanarak SSD'nizdeki bir lvm sistemine taşıyorsanız yararlı olurdu. Apt-get kurulumunu başarılı bir şekilde çalıştırabilmeniz için /etc/resolve.conf dosyasını da kökünüze kopyalamanız gerektiğini unutmayın: yukarıda belirtilen URL'de kod parçasından bahsedilmiştir:sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf

Ayrıca, Ubuntu'nun SSD'ye taşınması konusunda açıklandığı gibi, / bölümü için rsync yerine cp (farklı bir kurulum kullanarak (kaynak kurulum içinden değil), örneğin canlı bir CD / DVD kullanarak) yapmak daha kolaydır.

Ayrıca belki kullanarak takas oluşturmalıdır mkswapsenin üzerinde /dev/mapper/<swap-name-here>bölüm.

TRIM desteğini http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html adresinde belirtildiği gibi aynı zamanda etkinleştirmelidir.

UYARI: Aşağıdaki diğer metin, bu konunun / iş parçacığının ilgili olduğu MBR kullanan kişiler için değildir. Zaten bu yararlı buldum, bu yüzden GPT disk için bu konu / konu talimatları adapte olanlar yararına gönderiyorum.

MBR yerine GPT kullananlar için (fdisk yerine ayrıştırılmış / gparted ve gdisk kullanarak), / boot bölümünüzün (şifrelenmemiş) GPT sırayla luks cihazınızdan sonra numaralandırılmaması gerektiğini öğrendim. / Boot ve luks aygıt bölümlerini gparted kullanarak oluşturduktan sonra bir ESP bölümü oluşturduğum için, bölüm numaralarını sıralamak zorunda kaldım, böylece / boot hala luks aygıtından daha az numaralandırıldı.

Bir kenara ve bu yazı ile ilgili olmayan, kesinlikle GPT ve UEFI kullanan rEFInd, rEFInd, belki de sisteminizde birden fazla ESP varsa, önyüklemek için bir bölümler listesi sunmakta sorun yaşıyorlar, bunun yerine disk başına bir tane var rEFInd kullanarak, ben iyi çalışır grub, kullanıyorum.


0

İnitramfs ve grub bölümünden önce şunları yapmanız gerekebilir:

vgscan
vgchange -a y

0

Biraz geç, ancak takas değişikliğini yansıtacak şekilde /etc/initramfs-tools/conf.d/resume dosyasını güncellemelisiniz. Bu değişiklik olmadan hazırda bekletme işlevini kıracaksınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.