Создание разделов и копирование файлов - во время работы
Я сделал это, начав с работающей системы. Я подключил новый 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, чтобы вы могли перевести систему в состояние выключения.
Разметка и копирование файлов - live 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/
Изменение UUID
Теперь мы 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
если ваши диски имеют ту же букву , как и я.
initramfs и 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
Теперь выключите, поместите SSD в свой ноутбук, скрестите пальцы и загрузитесь.
Полезные ссылки
Хорошее руководство для вещей cryptsetup в http://www.debian-administration.org/articles/577
Для установки grub на внешний раздел: /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
beforefor do:sudo mkdir /mnt/sdcroot/proc
sudo mkdir /mnt/sdcroot/sys
--- В моем случае команда для создания initramfs не работала, потому что версии ядра не совпадали и поэтому initramfs не мог найти правильное ядро в / boot, так что я не смог заставить все это работать.Я пытался комментировать, но мне не хватает репутации :-)
В любом случае, я успешно использовал удивительное руководство Хэмиша для перехода на ssd на моем рабочем ноутбуке с шифрованием на основе Linux. Несколько замечаний:
1. После создания swap lv также используйте
инициализировать своп, в противном случае он завершится неудачно во время загрузки, как указано в комментарии выше.
2. Команда
rsync
слишком ограничительная, как есть. Когда я использовал его--exclude run
, я столкнулся со всевозможными странными, обычно невидимыми интернет-ошибками. Пробег должен быть включен . Система в любом случае пуста при загрузке в режиме обслуживания, поэтому она может оставаться. Также, если вы исключите tmp, вновь созданные в target / tmp и / var / tmp не получат залипания - не забудьте установить их самостоятельно. Я закончил тем, что использовал что-то вродеВ целом - отличное руководство, показывает обзор процесса точно! Научит, как ловить рыбу, так сказать!
источник
[Не могу добавить комментарий, хотя это сообщение относится не к ответу, а к комментарию]
Используя этот метод, вы также можете переместить существующую ** не - ** зашифрованную установку lvm в зашифрованную установку lvm на новом диске; вам просто нужны дополнительные шаги (чтобы установить cryptsetup, в то время как chroot'ed на целевой диск), как упомянуто по адресу http://blog.andreas-haerter.com/2011/06/18/ubuntu-full-disk-encryption-lvm -люкс , а именно:
Приведенная выше команда также устанавливает lvm2 на целевой диск, хотя это не является необходимым, было бы полезно, если бы вы перемещали систему не lvm в систему lvm на вашем SSD, используя Live CD / DVD. Обратите внимание, что вам также нужно скопировать /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>
раздела.Также следует включить поддержку TRIM одновременно, как указано на http://www.webupd8.org/2013/01/enable-trim-on-ssd-solid-state-drives.html.
ВНИМАНИЕ: Дальнейший текст ниже не предназначен для тех, кто использует MBR, к которой, похоже, относится эта тема / тема. В любом случае я нашел это полезным, поэтому публикую сообщения для тех, кто может адаптировать инструкции в этой теме / теме к своему GPT-диску.
А для тех, кто использует GPT вместо MBR (используя parted / gparted и gdisk вместо fdisk), я усвоил трудный путь, что ваш раздел / boot (который не зашифрован) не должен быть пронумерован после вашего luks-устройства в порядке GPT. Поскольку я создал раздел ESP после создания разделов устройства / boot и luks с помощью gparted, мне пришлось отсортировать номера разделов так, чтобы / boot по-прежнему был пронумерован меньше, чем устройство luks.
Кроме того, если говорить строго об этом посте, у тех, кто использует GPT и UEFI с rEFInd, rEFInd, возможно, возникли проблемы с представлением вам списка разделов для загрузки, если в вашей системе несколько ESP, у меня по одному на диск, поэтому вместо использования REFInd, я использую Grub, который работает нормально.
источник
Перед разделом initramfs и grub вам может понадобиться:
источник
Немного поздно, но вы должны обновить файл /etc/initramfs-tools/conf.d/resume, чтобы отразить изменение подкачки. Без этой модификации вы нарушите функцию гибернации.
источник