Answers:
我是从运行系统开始的。我将新的SSD插入USB SATA适配器并对其进行了分区,设置了LVM并复制了文件。
# 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/
至此,您可以保持系统运行并使用它。现在,您需要关闭并引导到实时CD / USB中,以便使系统处于关闭状态。
启动后,打开一个终端,然后:
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/
# 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/
现在,我们位于chroot内部,并运行以下命令:
# inside chroot, as root
mount -t ext2 /dev/sdc1 /boot
blkid
现在,您将看到系统中各个磁盘的所有UUID。您将需要在中编辑UUID /etc/fstab
并/etc/crypttab
与的值匹配/dev/sdc?
在其中,/etc/fstab
您需要使用UUID作为启动磁盘- /dev/sdc1
如果您的磁盘与我的字母相同。
在/etc/crypttab
你需要使用的UUID为其他(大)分区- /dev/sdc5
如果你的磁盘有相同字母如我。
# 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
现在关闭,将SSD放入笔记本电脑中,用手指交叉并启动。
有关cryptsetup内容的良好指南,请访问http://www.debian-administration.org/articles/577
要在外部分区上安装grub:https : //stackoverflow.com/questions/247030/how-to-set-up-grub-in-a-cloned-hard-disk
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
---在我的情况下,创建initramfs的命令不起作用,因为内核版本不匹配,因此initramfs不能在/ boot中找到合适的内核,所以我无法使整个工作正常进行。
我试图发表评论,但我缺乏声誉:-)
无论如何,我成功地使用了Hamish出色的指南,将其迁移到基于Linux的luks加密工作笔记本电脑上的ssd中。仅作几点说明:
1.创建交换lv后还使用
# mkswap /dev/mapper/crypt-swap
初始化交换,否则将在启动期间失败,如上面的注释所示。
2.该rsync
命令的限制过于严格。当我将其与一起使用时--exclude run
,我遇到了各种各样的veeeeeeery,这些奇怪的现象通常是互联网错误所看不到的。运行必须包括在内。引导进入维护模式时,sys始终为空,因此可以保留。另外,如果您排除了tmp,则在目标/ tmp和/ var / tmp上新创建的内容也不会令人发指-请记住自己进行设置。我最终使用了类似的东西
# rsync -aHAX --devices --specials --delete --one-file-system --exclude proc --exclude boot /mnt/sdaroot/* /mnt/sdcroot/
总体而言-出色的指南,可准确显示过程概述!可以教您如何钓鱼!
[无法发表评论,尽管此帖子属于评论而不是答案]
使用这种方法,您还可以将现有的**未**加密的lvm安装移动到新磁盘上的加密的lvm安装;您只需要执行其他步骤(将chroot插入目标磁盘时安装cryptsetup),如http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-encryption-lvm所述-luks,特别是:
apt-get install lvm2 cryptsetup
上面的命令还会在目标磁盘上安装lvm2,尽管这是不必要的,但是如果您要使用Live CD / DVD将非lvm系统移动到SSD上的lvm系统,这将很有用。请注意,您还需要将/etc/resolve.conf复制到chroot才能成功运行apt-get install:在上面提到的URL(代码片段)中有提到:sudo cp /etc/resolv.conf /mnt/sdcroot/etc/resolv.conf
另外,执行cp(使用不同的安装(不是从源安装中的),例如,实时CD / DVD)来代替/分区的rsync更为容易,如如何将Ubuntu移至SSD所述
您也许还应该mkswap
在/dev/mapper/<swap-name-here>
分区上使用创建交换。
如http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html所述,还应同时启用TRIM支持。
警告:以下更多文字不适用于使用MBR的用户,而本主题/主题似乎与之相关。无论如何,我都觉得这很有用,因此发布帖子是为了使那些可以将此线程/主题中的指令适应其GPT磁盘的用户受益。
对于那些使用GPT而不是MBR的用户(使用parted / gparted和gdisk而不是fdisk),我学到了很难的方法,即/ boot分区(未加密)不应按lupt设备的GPT顺序编号。因为我是在使用gparted创建/ boot和luks设备分区之后创建了ESP分区的,所以我不得不对分区号进行排序,以使/ boot的编号仍小于luks设备的编号。
顺便说一句,从严格意义上来说,与本帖子无关,那些将gPT和UEFI与rEFInd,rEFInd结合使用的人,如果您的系统中有多个ESP,则每个磁盘都有一个,可能无法向您显示要启动的分区列表。使用rEFInd的过程中,我使用的是grub,效果很好。