Z działającego systemu Ubuntu 16.04 udało mi się poinstalacyjne szyfrowanie partycji root, przy czym partycja root zawiera wszystko oprócz / boot. Umieszczam / bootuję na osobnym wymiennym usb. W szczególności zrobiłem to przed aktualizacją do Ubuntu 18, a aktualizacja działała dobrze na wersji dysku zaszyfrowanego.
Szyfrowanie nie zostało wykonane „na miejscu”, co było dla mnie w porządku, ponieważ i tak nie chciałem nadpisywać działającej wersji, dopóki nowa konfiguracja nie działała.
Wykonanie prawidłowej procedury jest niezwykle proste i szybkie. (Chociaż ustalenie prawidłowej procedury było bardzo czasochłonne, ponieważ podążyłem za fałszywymi wskazówkami).
ZARYS
- Utwórz dysk USB z linuksem na żywo - wygodne jest włączenie trwałości. Uruchom się na tym dysku USB na żywo.
- Utwórz zaszyfrowaną grupę woluminów Luks na pustej partycji. (W moim przypadku znajdował się on na tym samym dysku, co oryginalny Linux, ale może to być inny dysk.) Utwórz / (root) i zamień woluminy logiczne na tej zaszyfrowanej partycji. Będą one działały jako wirtualne partycje, jeśli chodzi o skopiowany Linux.
- Skopiuj pliki ze starego katalogu głównego do nowego katalogu głównego.
- Skonfiguruj i podziel na partycje inny port USB, aby działał jako wymienny dysk rozruchowy.
- Skonfiguruj niektóre pliki w nowym katalogu głównym, zrób trochę magii i chroot w nowym katalogu głównym, a następnie zainstaluj gruba na dysku startowym z nowego środowiska roota.
DETALE
1 - Uruchom z dysku USB z linuksem na żywo - wygodnie jest mieć włączoną trwałość.
Zainstalowano Ubuntu 16 na usb z unetbootin. GUI pozwala na określenie „trwałości”, ale wymagany jest również kolejny krok, aby trwałość działała - zmodyfikuj, /boot/grub/grub.cfg
aby dodać --- persistent
w następujący sposób:
menuentry "Try Ubuntu without installing" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- persistent
initrd /casper/initrd
}
Uruchom komputer za pomocą USB na żywo
2- Utwórz zaszyfrowaną grupę woluminów Luks na pustej partycji. Utwórz / (root) i zamień woluminy logiczne na tej zaszyfrowanej partycji.
Załóżmy, że nieużywana partycja do zaszyfrowania to /dev/nvme0n1p4
.
Opcjonalnie , jeśli masz stare dane na partycji, którą chcesz ukryć przed szyfrowaniem i formatowaniem, możesz przypadkowo wyczyścić partycję. Zobacz dyskusję tutaj .
dd if=/dev/urandom of=/dev/nvme0n1p4 bs=4096 status=progress
Skonfiguruj szyfrowanie.
cryptsetup -y -v luksFormat /dev/nvme0n1p4
Zostaniesz poproszony o ustawienie hasła.
cryptsetup luksOpen /dev/nvme0n1p4 crypt1
Zostaniesz poproszony o podanie hasła. Pamiętaj, że crypt1
jest to dowolna nazwa ustalona przez użytkownika. Teraz utwórz woluminy i format.
pvcreate /dev/mapper/crypt1
vgcreate crypt1-vg /dev/mapper/crypt1
lvcreate -L 8G crypt1-vg -n swap
mkswap /dev/crypt1-vg/swap
lvcreate -l 100%FREE crypt1-vg -n root
mkfs.ext4 /dev/crypt1-vg/root
Użyj tych narzędzi, aby wyświetlić woluminy i zrozumieć hierarchię.
pvscan
vgscan
lvscan
ls -l /dev/mapper
ls -l /dev/crypt1
3- Skopiuj pliki ze starego katalogu głównego do nowego katalogu głównego
mkdir /tmp/old-root
mount /dev/ubuntu-vg/root /tmp/old-root/
mkdir /tmp/new-root
mount /dev/crypt1-vg/root /tmp/new-root/
cp -a /tmp/old-root/. /tmp/new-root/
umount /tmp/old-root
umount /tmp/new-root
cp -a ...
kopiuje w trybie archiwizacji, zachowując wszystkie tryby plików i flagi.
4- Skonfiguruj i podziel na partycje inny port USB, aby działał jako wymienny dysk rozruchowy.
Użyłem do tego gparted. Skonfiguruj dwie partycje. Pierwsza partycja to vfat
druga ext2
. Każdy z nich miał 512 MB, możesz dostać mniej. Załóż urządzenie /dev/sdf
.
# The first partition: (will be /dev/sdf1)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: fat32
Label: (leave)
# The second partition: (will be /dev/sdf2)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: ext4
Label: (leave)
5- Skonfiguruj niektóre pliki w nowym katalogu głównym, zrób trochę magii i chroot w nowym katalogu głównym, a następnie zainstaluj gruba na dysku startowym z nowego środowiska roota.
Znajdź niektóre UUID do późniejszego wykorzystania. Zwróć uwagę na wyniki następujących poleceń:
blkid /dev/sdf1
blkid /dev/sdf2
blkid /dev/nvme0n1p4
Zamontuj partycję root i partycje rozruchowe
sudo mount /dev/mapper/crypt1--vg-root /mnt
sudo mount /dev/sdf2 /mnt/boot
sudo mount /dev/sdf1 /mnt/boot/efi
Skonfiguruj plik /mnt/etc/fstab
/dev/mapper/crypt1--vg-root / ext4 errors=remount-ro 0 1
/dev/mapper/crypt1--vg-swap none swap sw 0 0
UUID=[uuid of /dev/sdf2] /boot ext2 defaults 0 2
UUID=[uuid of /dev/sdf1] /boot/efi vfat umask=0077 0 1
gdzie „[uuid z ...]” to tylko kombinacja litera-liczba-łącznik.
Utwórz plik /mnt/etc/cryptab
# <target name> <source device> <key file> <options>
crypt1 UUID=[uuid of /dev/nvme0n1p4] none luks,discard,lvm=crypt1--vg-root
Do wejścia do środowiska katalogu głównego wymagana jest magia:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
chroot /mnt
Teraz skonfiguruj rozruchowy dysk USB za pomocą grub
:
apt install --reinstall grub-efi-amd64
grub-install --efi-directory=/boot/efi --boot-directory=/boot --removable
update-initramfs -k all -c
update-grub
Teraz powinieneś być w stanie zrestartować się i uruchomić przy użyciu nowo utworzonego dysku rozruchowego USB.
Rozwiązywanie problemów
(a) Sieć musi być podłączona do apt install --reinstall grub-efi-amd64
polecenia. Jeśli sieć jest podłączona, ale DNS nie działa, spróbuj
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
(b) Przed wywołaniem initramfs
bieżący vmlinuz...
plik użyty w oryginalnym systemie Linux musi znajdować się w nowym katalogu głównym. Jeśli nie, znajdź go i umieść tam.
(c)grub-install
polecenie przez domyślną wyszukiwarkę wszystkie inne dyski Linux może znaleźć nawet jeśli nie są one mount
ed, i umieścić je w menu startowym na nowym startowego USB. Zwykle nie jest to pożądane, więc można tego uniknąć, dodając ten wiersz do /boot/default/grub.cfg
:
GRUB_DISABLE_OS_PROBER=true
UWAGA:
Do wymiennego rozruchowego USB można dodać plik tekstowy z kluczem szyfrującym.