Partycjonowanie i kopiowanie plików - podczas działania
Zrobiłem to, zaczynając od działającego systemu. Podłączyłem nowy dysk SSD do adaptera USB SATA i podzieliłem go na partycje, skonfigurowałem LVM i skopiowałem pliki.
# 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
Twój dysk powinien teraz wyglądać następująco:
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
Następnym krokiem jest umieszczenie szyfrowania na partycji i LVM na wierzchu szyfrowania.
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
Teraz utwórz systemy plików i zamontuj je, a następnie skopiuj swój system.
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/
Do tego momentu możesz utrzymać działanie systemu i korzystać z niego. Teraz musisz zamknąć i uruchomić z dysku CD / USB na żywo, aby system mógł zostać zamknięty.
Partycjonowanie i kopiowanie plików - CD na żywo / USB
Po uruchomieniu otwórz terminal i:
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/
Zmiana UUID
Teraz jesteśmy rootem w chroot i uruchamiamy następujące polecenia:
# inside chroot, as root
mount -t ext2 /dev/sdc1 /boot
blkid
Teraz zobaczysz wszystkie UUID dla różnych dysków w systemie. Musisz edytować UUID /etc/fstab
i /etc/crypttab
dopasować wartości dla/dev/sdc?
W /etc/fstab
musisz użyć UUID dla dysku rozruchowego - /dev/sdc1
jeśli twoje dyski mają taką samą literę jak ja.
W /etc/crypttab
musisz użyć UUID dla drugiej (dużej) partycji - /dev/sdc5
jeśli twoje dyski mają taką samą literę jak ja.
initramfs i 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
Teraz wyłącz, włóż dysk SSD do laptopa, trzymaj kciuki i uruchom komputer.
Przydatne linki
Dobry przewodnik po cryptsetup na stronie http://www.debian-administration.org/articles/577
Aby zainstalować GRUB na zewnętrznej partycji: /programming/247030/how-to-set-up-grub-in-a-cloned-hard-disk
https://help.ubuntu.com/community/UsingUUID
sudo mount -t proc proc /mnt/sdcroot/proc
sudo mount -t sysfs sys /mnt/sdcroot/sys
sudo mount -o bind /dev /mnt/sdcroot/dev
wcześniej wykonaj:sudo mkdir /mnt/sdcroot/proc
sudo mkdir /mnt/sdcroot/sys
--- W moim przypadku polecenie utworzenia initramfs nie działało, ponieważ wersje jądra nie pasowały i dlatego initramfs nie mógł znajdź odpowiednie jądro w katalogu / boot, więc nie mogłem sprawić, żeby wszystko działało.Próbowałem skomentować, ale brakuje mi reputacji :-)
W każdym razie z powodzeniem wykorzystałem niesamowity przewodnik Hamisha do migracji do SSD na moim laptopie roboczym z szyfrowaniem Luks. Kilka uwag:
1. Po utworzeniu zamiany lv również użyj
aby zainicjować zamianę, w przeciwnym razie nie powiedzie się podczas rozruchu, jak wskazano w komentarzu powyżej.
2.
rsync
Polecenie jest zbyt restrykcyjne. Kiedy go użyłem--exclude run
, natknąłem się na różnego rodzaju dziwne rzeczy, na ogół niewidoczne przez błędy internetowe. Przebieg musi zostać uwzględniony . System jest zresztą pusty podczas uruchamiania w trybie konserwacji, więc może pozostać. Ponadto, jeśli wykluczysz tmp, nowo utworzone na docelowym / tmp i / var / tmp nie dostaną lepkiej warstwy - pamiętaj, aby ustawić je samodzielnie. Skończyło się na czymś takimOgólnie rzecz biorąc - świetny przewodnik, dokładnie pokazuje przegląd procesu! Nauczy cię, jak to powiedzieć, łowić ryby!
źródło
[Nie można wstawić komentarza, chociaż ten post należy raczej do komentarza niż do odpowiedzi]
Korzystając z tej metody, możesz również przenieść istniejącą ** niezaszyfrowaną instalację lvm do zaszyfrowanej instalacji lvm na nowym dysku; potrzebujesz tylko dodatkowych kroków (aby zainstalować cryptsetup podczas chroot'owania na dysku docelowym), jak wspomniano na http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-encryption-lvm -luks , w szczególności:
Powyższe polecenie instaluje również lvm2 na dysku docelowym, chociaż nie jest to konieczne, byłoby przydatne, gdybyś przeniósł system inny niż lvm do systemu lvm na dysku SSD, używając Live CD / DVD. Zauważ, że musisz również skopiować plik /etc/resolve.conf do swojego chroota, aby móc pomyślnie uruchomić instalację apt-get: jest on wymieniony pod adresem URL, o którym mowa powyżej, fragment kodu:
sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf
Ponadto łatwiej jest zrobić cp (używając innej instalacji (nie z instalacji źródłowej, to znaczy), np. Live CD / DVD) zamiast rsync dla partycji /, jak opisano w Jak przenieść Ubuntu na dysk SSD
Być może powinieneś także utworzyć swap za pomocą
mkswap
na/dev/mapper/<swap-name-here>
partycji.Powinien także włączyć obsługę TRIM w tym samym czasie, jak wspomniano na stronie http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html
OSTRZEŻENIE: Dalszy tekst poniżej nie jest przeznaczony dla osób używających MBR, do których ten temat / wątek wydaje się odnosić. I tak mi się to przydało, więc piszę dla tych, którzy mogą dostosować instrukcje w tym wątku / temacie do swojego dysku GPT.
A dla tych, którzy używają GPT zamiast MBR (używając parted / gparted i gdisk zamiast fdisk), nauczyłem się, w jaki sposób twoja partycja / boot (która nie jest zaszyfrowana) nie powinna być numerowana po twoim urządzeniu Luks w kolejności GPT. Ponieważ utworzyłem partycję ESP po utworzeniu partycji urządzenia / boot i luks za pomocą gparted, musiałem następnie posortować numery partycji, aby / boot wciąż był ponumerowany mniej niż urządzenie luks.
Na marginesie i nie odnosząc się ściśle do tego postu, ci, którzy używają GPT i UEFI z rEFInd, rEFInd może mieć problemy z wyświetleniem listy partycji do rozruchu, jeśli masz wiele ESP w twoim systemie, mam jedną na dysk, więc zamiast tego używając rEFInd, używam gruba, który działa dobrze.
źródło
Przed sekcją initramfs i grub może być konieczne:
źródło
Trochę za późno, ale musisz zaktualizować plik /etc/initramfs-tools/conf.d/resume, aby odzwierciedlić modyfikację wymiany. Bez tej modyfikacji przerwiesz funkcję hibernacji.
źródło