Στο παρόν άρθρο θα δούμε το σύστημα αρχείων του Pop OS. Επειδή χρησιμοποιεί κόλπα όπως LVM και κρυπτογραφημένους δίσκους (αν το επιλέξουμε) διαφέρει αρκετά από μια τυπική εγκατάσταση. Έχουμε πολλά να δούμε, αλλά δεν θα μείνουμε εκεί. Θα φτιάξουμε και μια ξεχωριστή κρυπτογραφημένη κατάτμηση για το /home
.
1. Προεργασία
Στο παράδειγμα χρησημοποιώ μια εικονική μηχανή, αλλά τα ίδια μπορούν να γίνουν και σε μια κανονική εγκατάσταση. Στον προηγούμενο οδηγό δεν είχα χρησιμοποιήσει κρυπτογράφηση.
https://linux-user.gr/t/egkatastash-pop-os-se-btrfs-kai-timeshift/3646
Καιρός να αλλάξει αυτό. Θα εγκαταστήσουμε το λειτουργικό κανονικά με κρυπτογράφηση αυτή την φορά. Θα κάνω κάτι που ίσως ξενήσει κάποιους. Αντί να φτιάξω τις κατατμήσεις με το χέρι θα αφήσω το Pop OS να κάνει την δύσκολη δουλεία. Αρχικά θα κάνω μια απλή εγκατάσταση μόνο για να φτιάξει τις βασικές κατατμήσεις. Στην εγκατάσταση θα επιλέξω χρήση όλου του δίκου και κρυπτογράφηση.
Στη συνέχεια μπήκα στην εγκατάσταση και έδωσα την εντολή:
echo "timeout 3" >> /boot/efi/loader/loader.conf
με τον τρόπο αυτό μπορώ εύκολα να μπω σε περιβάλλον Recovery ή στο BIOS.
https://linux-user.gr/t/h-zwh-me-to-systemd-boot/3246
Με μια επανεκίνση μπήκα σε περιβάλλον Recovery και μπορώ να δω πως είναι οι δίσκοι.
2. Εξερεύνηση της εγκατάστασης
Ας δούμε την εικόνα των δίσκων σε μια τυπική εγκατάσταση με το εργαλείο Disks
.
Υπάρχουν 4 κατατμήσεις
- ❶ Ειδική κατάτμηση για το UEFI. Εδώ μπαίνει ο πυρήνας και το systemd-boot. Στο τελευταίο Pop OS είναι 1.1 GB, αλλά σε παλαιότερες εκδόσεις είχε το μισό μέγεθος.
- ❷ Το σύστημα για recovery. Έτσι μπορείς να μπεις στο σύστημα και να δεις αυτήν την εικόνα.
- ❸ Η κύρια κατάτμηση. Κρυπτογραφημένη
- ❹ Μια κατάτμηση για swap. Κρυπτογραφημένη.
Εναλλακτικά από το τερματικό:
sudo parted /dev/sda unit MiB print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 128000MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 2.00MiB 1024MiB 1022MiB fat32 boot, esp
2 1024MiB 5120MiB 4096MiB fat32 recovery msftdata
3 5120MiB 123902MiB 118782MiB
4 123902MiB 127998MiB 4096MiB linux-swap(v1) swap
2.1 Εξερεύνηση του κρυπτογραφημένου δίσκου
Θα δούμε πρώτα κάποιες πληροφορίες για τον κρυπτογραφημένο δίσκο. Σε ένα τερματικό
sudo cryptsetup luksDump /dev/sda3
και θα δούμε τις πληροφορίες κρυπτογράφησης.
Κλικ για την έξοδο
LUKS header information
Version: 2
Epoch: 3
Metadata area: 16384 [bytes]
Keyslots area: 16744448 [bytes]
UUID: 93c8b224-1900-4ff8-b6ce-6fe4eb4a3857
Label: (no label)
Subsystem: (no subsystem)
Flags: (no flags)
Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 512 [bytes]
Keyslots:
0: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2id
Time cost: 7
Memory: 1048576
Threads: 3
Salt: 14 93 ef 6d f6 91 ce 28 db 30 e2 8b 12 4c b4 d0
8c 03 ef e8 11 df b9 88 f3 db ce f3 01 e2 39 fa
AF stripes: 4000
AF hash: sha256
Area offset:32768 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Tokens:
Digests:
0: pbkdf2
Hash: sha256
Iterations: 174066
Salt: c3 e4 59 57 cf 1b de 07 3d 02 f8 a8 cd 38 53 91
14 5f fa 9c 82 77 c3 3c 45 e7 ef a0 9a cf 4c 9e
Digest: 52 c9 f3 8b ef a5 3e b3 67 98 27 9f c2 99 40 3f
70 d7 21 f8 20 73 b8 25 a3 5e 08 52 b5 b9 0f ba
To σημαντικό είναι πως υπάρχει ένα κλειδί αποκρυπτογράφησης. Μπορούμε να προσθέσουμε ένα δεύτερο. Κάτι που θα μας φανεί χρήσιμο κάποια στιγμή. Αυτό μπορεί να είναι και κάποιο αρχείο. Σε ένα τερματικό:
sudo cryptsetup luksAddKey /dev/sda3
και αν ξανατρέξουμε την εντολή θα δούμε πως πλέον υπάρχουν 2 διαφορετικά κλειδιά αποκρυπτογράφησης.
Ήρθε η ώρα να ξεκλειδώσουμε τον δίσκο. Αυτό μπορούμε να είτε πατώντας πάνω στο λουκέτο στο εργαλείο DIsks
είτε από το τερματικό με την εντολή:
sudo cryptsetup luksOpen /dev/sda3 cryptdata
και θα δώσουμε έναν από τους δυο κωδικούς. Το όνομα cryptdata
είναι ένα tag που καλό είναι να το αφήσουμε ως έχει.
Στο εργαλείο Disks
θα δούμε τώρα ένα νέο δίσκο, που όμως δεν είναι δίσκος και δείχνει στο /dev/data/root
Ας ρίξουμε τώρα μια ματιά στον κατάλογο /dev/mapper
.
Θα δούμε εκεί 2 καινούργια αρχεία τα cryptdata
και data-root
.
Τι είναι αυτά; Θα εξετάσουμε παρακάτω αυτά τα μυστήρια.
2.2 Εξερεύνηση του LVM
To LVM (Logical Volume Manager) είναι ο τρόπος του Linux να συνδέουμε πολλούς δίσκους και να τους κάνουμε ένα μεγάλο. Μπορείτε να μάθετε περισσότερα για το LVM εδώ. Έχει πολλές δυνατότητες αλλά ας μείνουμε στα βασικά. Αρκεί να ξέρουμε ότι ένα σύστημα LVM αποτελείται κυρίως από:
- ❶ physical volume (PV) Ένας οι περισσότεροι φυσικοί δίσκοι, ή κάτι που μοιάζει με φυσικό δίσκο. Μια κρυπτογραφημένη κατάτμηση για παράδειγμα …
- ❷ logical volume (LV) Λογικοί τόμοι: Το αντίστοιχο μιας κατάτμησης.
- ❸ volume group (VG) Συνδέει μαζί Logical Volumes και Physical Volumes σε μια μονάδα διαχείρησης
Δυστυχώς, δεν υπάρχουν γραφικά εργαλεία να εγκαταστήσουμε να τα δούμε, τουλάχιστον στα αποθετήρια. Οπότε θα εξερευνήσουμε τα παραπάνω απο το τερματικό.
Θα δούμε πρώτα τα physical volume.
sudo pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/cryptdata data lvm2 a-- 115.98g 0
Έχουμε μόνο μια κατάτμηση τη /dev/mapper/cryptdata
μορφοποιημένη με σύστημα αρχείων lvm2
. Αυτή είναι η αποκρυπτογραφημένη κατάτμηση /dev/sda3
(θυμάστε που την είδαμε στον κατάλογο;) . Θα μπορούσαμε να προσθέταμε και άλλους δίσκους ή κατατμήσεις, αλλά αυτό είναι μια άλλη ιστορία.
Στη συνέχεια θα δούμε πως αυτή η κατάτμηση μοιράζεται σε volume groups. Έχουμε πάλι ένα με όνομα data
sudo vgs
VG #PV #LV #SN Attr VSize VFree
data 1 1 0 wz--n- 115.98g 0
Τέλος, οι κατατμήσεις
sudo lvs
LV VG Attr LSize ...
root data -wi-a----- 115.98g
To Volume group data
έχει μία κατάτμηση (volume group) με όνομα root
. Θα το βρούμε στο αρχείο συσκευής /dev/mapper/data-root
.
Τώρα επιτέλους μπορούμε να δούμε τα στοιχεία της κατάτμησης. Είμαστε σε γνώριμα νερά:
sudo lsblk /dev/mapper/data-root -f
NAME FSTYPE FSVER ...
data-root ext4 1.0 345993e2-a3c3-4ce8-a54e-c03130ad8e2a
Ανακεφαλαίωση:
Η κρυπτογραφημένη κατάτμηση /dev/sda3
υπάρχει αποκρυπτογραφημένη σαν cryptdata
. Αυτή περιέχει ένα physical volume με όνομα data
. Ο φυσικός τόμος περιέχει ένα logical volume group με όνομα data
. Μέσα σε αυτόν θα βρούμε την κατάτμηση root
. Αυτή έχει όνομα data-root
και περιέχει το σύστημα αρχείων σε μορφή ‘ext4’. Απλούστατον
2.3 Κλείσιμο των κατατμήσεων
Τώρα που καταλάβαμε τι συμβαίνει ας κλειδώσουμε πάλι την κατάτμηση (αλλά μην το κάνετε ακόμα)
sudo cryptsetup luksClose /dev/mapper/data-root
sudo cryptsetup luksClose /dev/mapper/cryptdata
ls /dev/mapper
Με τη γνώση που αποκτήσαμε μπορούμε να κάνουμε μια εγκατάσταση που να καλύπτει καλύτερα τις ανάγκες μας. Θα μπορούσαμε βέβαια να στήσουμε τις κατατμήσεις αυτές με το χέρι, αλλά είναι δυσκολότερο. Γιατί να πάρουμε τον δύσκολο δρόμο και να μην αφήσουμε το Pop OS να κάνει τη δύσκολη δουλεία;
3. Δημιουργία κρυπτογραφημένης κατάτμησης /home
Σαν ένα παράδειγμα θα φτιάξουμε μια κρυπτογραφημένη χωριστή κατάτμηση για το /home
. Με ξεκλείδωτη την κατάτμηση το πρώτο βήμα είναι να μικρύνουμε το logical volume. Αφού πρώτα ελέγξουμε το σύστημα αρχείων πως είναι εντάξει και πάρουμε τα backup μας.
sudo e2fsck -f /dev/mapper/data-root
Θα την περιορίσουμε σε ας πούμε 40GB. Είναι μια διαδικασία δυο βημάτων. Πρώτα θα μειώσουμε την κατάτμηση και στη συνέχεια τον λογικό τόμο.
sudo resize2fs /dev/mapper/data-root 40G
sudo lvreduce -L 40G /dev/mapper/data-root
Ας κάνουμε ένα έλεγχο πως τα πάντα πήγαν καλά και ας δούμε επιπλέον πληροφορίες για το LVM
sudo e2fsck /dev/mapper/data-root
sudo lvdisplay
sudo vgdisplay
H τελευταία εντολή μας λέει πως υπάρχουν 75.98GB
διαθέσιμα. Θα φτιάξουμε ένα καινούργιο volume group (αλλιώς κατάτμηση).
sudo lvcreate -L 75.98GB -n home data
sudo lvdisplay
Ο καινούργιος τόμος είναι διαθέσιμος σαν /dev/data/home
που είναι το ίδιο με το /dev/mapper/data-home
, αν μπερδευτήκατε. Ώρα να φτιάξουμε εκεί ένα σύστημα αρχείων. Αυτό τουλάχιστον μπορούμε να το κάνουμε με γραφικό τρόπο.
Δείτε ξανά τις εντολές του LVM. Τα πρώτα δυο γράμματα μας λένε σε τι επίπεδο του LVM αφορούν. Αν ξεκινάν με lv για παράδειγμα θα έχουν να κάνουν με volume groups.
4. Επανεγκατάσταση του συστήματος
Μου αρέσει να πηγαίνω με τον εύκολο τρόπο. Θα κάνω επανεγκατάστασή το λειτουργικό με χωριστή κατάτμηση /home
σε btrfs
. Σε ένα επόμενο άρθρο θα δούμε ένα ποιο πολύπλοκο setup με περισσότερα κόλπα. Μετά την εγκατάσταση θα δούμε πως βλέπεις το όλο σύστημα μέσα από το εγκατεστημένο λειτουργικό. Πριν προχωρήσω έκανα μια επανεκκίνηση με το μέσο εγκατάστασης.
Δεν μπορούμε να κάνουμε προσαρμοσμένη εγκατάσταση από το Recovery Partition. Γιατί η κατάτμηση για το recovery είναι ήδη προσαρτημένη. Αν το κάνεις αυτό η εγκατάσταση θα προχωρήσει για λίγο και θα πρέπει να ξ αναστήσεις τα πάντα από την αρχή. Ναι, την πάτησα και έμαθα.
Και ήρθε η ώρα να προσδιορίσουμε τις κατατμήσεις:
Where | filesystem | Notes | |
---|---|---|---|
❶ | /boot/efi | fat32 | Boot efi partition |
❷ | /recovery | ext4 | Recovery partition, use custom |
❸ | Root(/) | btrfs | Root filesystem (encrypted) |
❹ | Home(/home) | btrfs | Home filesystem (encrypted) |
❺ | Swap | Swap (encrypted) |
Βολικό είναι να δώσουμε ένα κωδικό χρήστη που να μπορεί να ξεκλειδώνει και τον δίσκο.
5. Εξερεύνηση του εγκατεστημένου συστήματος
Επιτέλους τα καταφέραμε. Έχουμε ένα λειτουργικό με κρυπτογραφημένο δίσκο και swap με χωριστή κρυπτογραφημένη κατάτμηση για το /home
.
Ας δούμε 2 σημαντικά αρχεία. Το /etc/fstab
δεν έχει τίποτα περίεργο:
PARTUUID=88390bec... /boot/efi vfat umask=0077 0 0
UUID=28a38... /recovery ext4 noatime,errors=remount-ro 0 0
/dev/mapper/cryptswap none swap defaults 0 0
UUID=d6ee8c8... / btrfs defaults 0 0
UUID=7b34496... /home btrfs defaults 0 0
Που είναι το αρχείο που ελέγχει την κρυπτογράφηση; Θα το βρούμε στο /etc/crypttab
:
cryptdata UUID=c7bfe... none luks
cryptswap UUID=982.. /dev/urandom swap,plain,offset=1024,cipher=aes-xts-plain64,size=512
Και με το LVM δεν θα ανυσυχούμε πλέον εάν γεμίσει κάποιος δίσκος. Αλλά πως τα κάνεις αυτά καθώς και μια προχωρημένη χρήση του LVM (που το είδαμε μόνο πολύ επιαφανειακά) είναι μια άλλη ιστορία.
Μείνετε συνονισμένοι για τη συναρπαστική συνέχεια της εγκατάστασης…