Dari Ubuntu 16.04 yang berfungsi, saya berhasil dalam enkripsi partisi root pasca-instalasi, dengan partisi root yang berisi segalanya kecuali / boot. Saya meletakkan / boot di usb yang terpisah. Khususnya saya melakukan ini sebelum memutakhirkan ke Ubuntu 18, dan upgrade bekerja dengan baik pada versi disk terenkripsi.
Enkripsi tidak dilakukan "di tempat", yang baik-baik saja dengan saya karena saya tidak ingin menimpa versi yang berfungsi sampai pengaturan yang baru berhasil.
Melakukan prosedur yang benar sangat sederhana dan cepat. (Meskipun mencari tahu prosedur yang benar sangat memakan waktu karena saya mengikuti beberapa petunjuk palsu.)
GARIS BESAR
- Buat disk USB linux langsung - nyaman untuk memiliki kegigihan diaktifkan. Boot di disk USB langsung itu.
- Buat grup volume terenkripsi luks pada partisi kosong. (Dalam kasus saya itu pada disk yang sama dengan linux asli, tetapi bisa juga disk lain.) Buat / (root) dan tukar volume logis pada partisi terenkripsi. Ini akan bertindak sebagai partisi virtual sejauh menyangkut linux yang disalin.
- Salin file dari root lama ke root baru.
- Mengatur dan mempartisi USB lain untuk bertindak sebagai disk boot yang dapat dilepas.
- Atur beberapa file di root baru, lakukan sihir, dan chroot ke root baru dan kemudian instal grub ke disk boot dari lingkungan root baru chroot.
RINCIAN
1 - Booting dengan disk USB linux langsung - akan lebih mudah untuk mengaktifkan kegigihan.
Menginstal Ubuntu 16 pada usb dengan unetbootin. GUI memungkinkan "kegigihan" untuk ditentukan, tetapi langkah lain juga diperlukan untuk membuat kegigihan itu bekerja - modifikasi /boot/grub/grub.cfg
untuk menambahkan --- persistent
sebagai berikut:
menuentry "Try Ubuntu without installing" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- persistent
initrd /casper/initrd
}
Boot dengan USB langsung
2- Buat grup volume terenkripsi luks pada partisi kosong. Buat / (root) dan tukar volume logis pada partisi terenkripsi itu.
Asumsikan partisi yang tidak digunakan untuk dienkripsi adalah /dev/nvme0n1p4
.
Secara opsional , jika Anda memiliki data lama pada partisi yang ingin Anda sembunyikan sebelum enkripsi dan pemformatan, Anda dapat menghapus partisi secara acak. Lihat diskusi di sini .
dd if=/dev/urandom of=/dev/nvme0n1p4 bs=4096 status=progress
Siapkan enkripsi.
cryptsetup -y -v luksFormat /dev/nvme0n1p4
Anda akan diminta untuk mengatur kata sandi.
cryptsetup luksOpen /dev/nvme0n1p4 crypt1
Anda akan diminta memasukkan kata sandi. Perhatikan bahwa itu crypt1
adalah nama yang diputuskan pengguna sewenang-wenang. Sekarang buat volume dan 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
Gunakan utilitas ini untuk melihat volume dan memahami hierarki.
pvscan
vgscan
lvscan
ls -l /dev/mapper
ls -l /dev/crypt1
3 - Salin file dari root lama ke root baru
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 ...
salinan dalam mode arsip, mempertahankan semua mode file dan bendera.
4 - Mengatur dan mempartisi USB lain untuk bertindak sebagai disk boot yang dapat dilepas.
Saya menggunakan gparted untuk ini. Siapkan dua partisi. Partisi pertama adalah vfat
, yang kedua ext2
. Masing-masing adalah 512 MB, Anda mungkin bisa mendapatkan lebih sedikit. Asumsikan perangkat /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- Siapkan beberapa file di root baru, lakukan sihir, dan chroot ke root baru dan kemudian instal grub ke disk boot dari lingkungan root baru chroot.
Temukan beberapa UUID untuk digunakan nanti. Perhatikan output dari perintah berikut:
blkid /dev/sdf1
blkid /dev/sdf2
blkid /dev/nvme0n1p4
Pasang partisi root dan partisi boot
sudo mount /dev/mapper/crypt1--vg-root /mnt
sudo mount /dev/sdf2 /mnt/boot
sudo mount /dev/sdf1 /mnt/boot/efi
Siapkan file /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
di mana "[uuid of ...]" hanyalah kombinasi huruf-angka-tanda hubung.
Buat file /mnt/etc/cryptab
# <target name> <source device> <key file> <options>
crypt1 UUID=[uuid of /dev/nvme0n1p4] none luks,discard,lvm=crypt1--vg-root
Beberapa keajaiban diperlukan untuk memasuki lingkungan direktori root:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
chroot /mnt
Sekarang atur disk USB boot dengan grub
:
apt install --reinstall grub-efi-amd64
grub-install --efi-directory=/boot/efi --boot-directory=/boot --removable
update-initramfs -k all -c
update-grub
Sekarang Anda harus dapat reboot dan boot menggunakan disk boot USB yang baru dibuat.
Toubleshooting-
(a) Jaringan harus terhubung untuk apt install --reinstall grub-efi-amd64
perintah. Jika jaringan terhubung tetapi DNS gagal, coba
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
(b) Sebelum memanggil initramfs
, vmlinuz...
file saat ini yang digunakan dalam linux asli harus ada di direktori root baru. Jika tidak, temukan dan letakkan di sana.
(c) The grub-install
perintah akan oleh pencari default semua disk linux lain dapat menemukan bahkan jika mereka tidak mount
ed, dan menempatkan mereka dalam menu boot pada boot USB baru. Biasanya ini tidak diinginkan, sehingga dapat dihindari dengan menambahkan baris ini ke /boot/default/grub.cfg
:
GRUB_DISABLE_OS_PROBER=true
CATATAN:
File teks dengan kunci enkripsi dapat ditambahkan ke USB boot yang dapat dilepas.