Phân vùng và sao chép tệp - trong khi chạy
Tôi đã làm điều này bằng cách bắt đầu với hệ thống đang chạy. Tôi đã cắm SSD mới vào bộ điều hợp USB SATA và phân vùng nó, thiết lập LVM và sao chép các tập tin qua.
# 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
Đĩa của bạn bây giờ trông giống như:
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
Bước tiếp theo là đặt mã hóa trên phân vùng và LVM lên trên mã hóa.
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
Bây giờ làm cho các hệ thống tập tin và gắn kết chúng và sao chép hệ thống của bạn trê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/
Cho đến thời điểm này, bạn có thể giữ cho hệ thống chạy và sử dụng nó. Bây giờ bạn cần tắt máy và khởi động vào đĩa CD / USB trực tiếp để bạn có thể đưa hệ thống về trạng thái tắt máy.
Phân vùng và sao chép tệp - CD / USB trực tiếp
Khi bạn đã khởi động, hãy mở một thiết bị đầu cuối và:
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/
Thay đổi UUID
Bây giờ chúng tôi đã root bên trong chroot và chạy các lệnh sau:
# inside chroot, as root
mount -t ext2 /dev/sdc1 /boot
blkid
Bây giờ bạn sẽ thấy tất cả các UUID cho các đĩa khác nhau trong hệ thống. Bạn sẽ cần chỉnh sửa các UUID trong /etc/fstab
và /etc/crypttab
để khớp với các giá trị cho/dev/sdc?
Trong /etc/fstab
bạn cần sử dụng UUID cho đĩa khởi động - /dev/sdc1
nếu đĩa của bạn có cùng chữ cái với tôi.
Trong /etc/crypttab
bạn cần sử dụng UUID cho phân vùng (lớn) khác - /dev/sdc5
nếu các đĩa của bạn có cùng chữ cái với tôi.
initramfs và 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
Bây giờ tắt máy, đặt SSD vào máy tính xách tay của bạn, bắt chéo ngón tay của bạn và khởi động.
Liên kết hữu ích
Hướng dẫn tốt cho công cụ cryptsetup tại http: //www.debian-adftime.org/articles/577
Để cài đặt grub trên một phân vùng bên ngoài: /programming/247030/how-to-set-up-grub-in-a-clenced-hard-disk
https://help.ubfox.com/community/UsingUUID