User:Massimo B./Migration
From Gentoo Wiki
Jump to:navigation
Jump to:search
Gentoo Migration to new drive or machine [DRAFT, not ready)
This guide is my personal cheat sheet on how to migrate my Gentoo installation to a new drive or machine. My Gentoo installation is based on btrfs-on-luks.
Rebuild on source hardware
If the build is incompatible for the new target machine, it might be necessary to rebuild all on the old hardware.
root #
btrfs subvolume snapshot /mnt/btrfs-top-lvl/root /mnt/btrfs-top-lvl/root.rebuild
RootCmd
root #
mkdir /mnt/gentoo
RootCmd
root #
mount --bind /mnt/btrfs-top-lvl/root.rebuild /mnt/gentoo
RootCmd
root #
mount --types proc /proc /mnt/gentoo/proc
RootCmd
root #
mount --rbind /sys /mnt/gentoo/sys
RootCmd
root #
mount --rbind /dev /mnt/gentoo/dev
RootCmd
root #
mount --bind /run /mnt/gentoo/run
RootCmd
root #
chroot /mnt/gentoo /bin/bash
Choose some CFLAGS compatible to both platforms, old and new:
FILE
/etc/portage/make.conf/local
CFLAGS="-march=x86-64-v3"
Re-emerge all:
root #
emerge -e -atv @world
Partitioning
Example:
# Device Start End Sectors Size Type # /dev/nvme1n1p1 2048 26623 24576 12M EFI System # /dev/nvme1n1p2 26624 1075199 1048576 512M Linux filesystem # /dev/nvme1n1p3 1075200 1953523711 1952448512 931G Linux filesystem
Migration
root #
mkfs.vfat -F 12 -n EFI /dev/nvme1n1p1
RootCmd
root #
mkfs.ext4 -L boot /dev/nvme1n1p2
RootCmd
root #
cryptsetup luksFormat --cipher aes-xts-plain64 --key-size 512 --hash sha512 /dev/nvme1n1p3
- TODO: --hw-opal, --iter-time 5000, --pbkdf-memory 2097152, --pbkdf-parallel 4
root #
cryptsetup luksAddKey /dev/nvme1n1p3
RootCmd
root #
cryptsetup luksOpen --allow-discards --persistent /dev/nvme1n1p3 _new_gentoo
RootCmd
root #
mkfs.btrfs -L gentoo /dev/mapper/_new_gentoo
RootCmd
root #
mkdir /mnt/new-btrfs-top-lvl
RootCmd
root #
cryptsetup luksOpen /dev/sdb4 _old_gentoo
RootCmd
root #
mkdir /mnt/old-btrfs-top-lvl
RootCmd
{{
RootCmd|btrfs subvolume list /mnt/old-btrfs-top-lvl | grep -v snapshots | grep -v archive|output=
ID 262 gen 439143 top level 5 path volumes/home ID 264 gen 439143 top level 5 path volumes.nosnap/tmp ID 265 gen 438955 top level 5 path volumes.nosnap/usr.portage ID 266 gen 438737 top level 5 path volumes.nosnap/usr.src ID 267 gen 439144 top level 5 path volumes.nosnap/var.cache ID 268 gen 438955 top level 5 path volumes.nosnap/var.db.repos ID 270 gen 438957 top level 5 path volumes.nosnap/var.tmp ID 271 gen 437369 top level 5 path volumes/vm ID 274 gen 438724 top level 5 path volumes/data ID 275 gen 439144 top level 5 path volumes/root<pre>}} <pre> cd /mnt/new-btrfs-top-lvl mkdir -vp snapshots/root snapshots/home snapshots/data snapshots/vm mkdir -vp volumes volumes.nosnap .beeshome rescue archive for sub in data home root vm ; do btrfs subvolume snapshot -r /mnt/old-btrfs-top-lvl/volumes/$sub /mnt/old-btrfs-top-lvl/volumes/$sub.ro ; done for sub in tmp usr.portage usr.src var.cache var.db.repos var.tmp ; do btrfs subvolume snapshot -r /mnt/old-btrfs-top-lvl/volumes.nosnap/$sub /mnt/old-btrfs-top-lvl/volumes.nosnap/$sub.ro ; done for sub in data home root vm ; do btrfs send /mnt/old-btrfs-top-lvl/volumes/$sub.ro | mbuffer -v 1 -m 5% | btrfs receive /mnt/new-btrfs-top-lvl/volumes ; done for sub in tmp usr.portage usr.src var.cache var.db.repos var.tmp ; do btrfs send /mnt/old-btrfs-top-lvl/volumes.nosnap/$sub.ro | mbuffer -v 1 -m 5% | btrfs receive /mnt/new-btrfs-top-lvl/volumes.nosnap ; done btrfs subvolume delete /mnt/old-btrfs-top-lvl/volumes*/*.ro for sub in data home root vm ; do btrfs subvolume snapshot /mnt/new-btrfs-top-lvl/volumes/$sub.ro /mnt/new-btrfs-top-lvl/volumes/$sub ; done for sub in tmp usr.portage usr.src var.cache var.db.repos var.tmp ; do btrfs subvolume snapshot /mnt/new-btrfs-top-lvl/volumes.nosnap/$sub.ro /mnt/new-btrfs-top-lvl/volumes.nosnap/$sub ; done btrfs subvolume delete /mnt/new-btrfs-top-lvl/volumes*/*.ro mkdir -v /mnt/gentoo mount --bind /mnt/new-btrfs-top-lvl/volumes/root/ /mnt/gentoo mount --types proc /proc /mnt/gentoo/proc mount --rbind /sys /mnt/gentoo/sys mount --make-rslave /mnt/gentoo/sys mount --rbind /dev /mnt/gentoo/dev mount --make-rslave /mnt/gentoo/dev mount --bind /run /mnt/gentoo/run mount --make-slave /mnt/gentoo/run chroot /mnt/gentoo /bin/bash