Πως να μεταφέρουμε το /home σε άλλο partition

Αν έχουμε κάνει εγκατάσταση σε ένα μόνο partition δηλαδή όλο το σύστημα βρίσκεται υπό το / σε ένα μόνο partition (εξαίρεση η EFI εγκατάσταση που αναγκάζει χωριστά partition για /boot) και θέλουμε να μετακομίσουμε το /home σε ένα χωριστό partition, πρώτα φτιάχνουμε ένα νέο partition.

Make partition: Υπάρχουν εντολές του fdisk και parted που θα βοηθήσουν να το κάνετε μέσω terminal/console αλλά υπάρχει και το διαδεδομένο gparted που σας βοηθάει να καταλάβετε καλύτερα πως λειτουργεί η κατάτμιση ενός δίσκου. Ας υποθέσουμε ότι έχετε ήδη ένα extended partition στο δίσκο σας, κι ένα τεράστιο τομέα (ας πούμε /dev/sda5) που εμπεριέχει όλο σας το σύστημα. Χρησιμοποιείτε 9GB και τα άλλα 491GB του δίσκου είναι κενά.

Η εντολή # df (# σημαίνει root terminal $ ή % σημαίνει user) σας δίχνει τον ενεργό χάρτη των partition (κατατμίσεις??), το # blkid σας δίχνει όλους τους δίσκους και τα partitions στο σύστημα.

Ας πούμε ότι δεν φανταζόμαστε το κύριο σύστημα να χρησιμοποιήσει ποτέ πάνω από 20GB, και θέλουμε το υπόλοιπο να πάει στο /home. Κάνουμε boot από ένα live disk (γιατί εκτός κι αν χρησιμοποιούμε σύστημα που λειτουργεί από RAM δεν μπορούμε να πειράξουμε το ενεργό partition του συστήματος) που εμπεριέχει το gparted.

Mικραίνουμε το /dev/sda5 σε 20GB, και το υπόλοιπο μένει κενό, χωρίς format. Μέσα στο κενό δημιουργούμε ένα νέο partition πιθανά να πάρει την ονομασία /dev/sda6, διαλέγουμε το filesystem (ext4, btrfs, ntfs, fat32, κλπ) δώστε του κι ένα label home να μην μπερδεύεστε στο μέλλον, και αφού δημιουργηθεί κάνουμε και ένα check στο κάθε partition.

Ξανακάνουμε boot και πάμε terminal/console αλλά σαν root, όχι σαν user.
# blkid
και βλέπουμε το νέο μας δίσκο

/dev/sda5 20GB 45% used

και

/dev/sda6 98% unused.  
# mount /dev/sda6 /mnt
# ls -al /mnt

θα δείτε ένα φάκελο που λέγεται lost&found (αν χρησιμοποιήσατε ext2/3/4 ) όλα καλά! Ας πούμε οι user λέγονται kaka & koko και ανήκουν στο users group

    # cp -R /home/* /mnt/
    # ls -al /mnt  
    drwxr-xr-x 2 root root  60 Oct 22 13:05 kaka/
    drwxr-xr-x 2 root root  60 Oct 22 13:05 koko/ 
    # chown -R kaka:users /mnt/kaka
    # chown -R koko:users /mnt/koko
    # ls -al /mnt  
    drwxr-xr-x 2 kaka users  60 Oct 22 13:05 kaka/
    drwxr-xr-x 2 koko users  60 Oct 22 13:05 koko/ 
    # umount /mnt

Σε κάποια συστήματα debian/ubu/mint/mx/antix/devuan κλπ. πιθανά να μην σας επιτρέψει να κάνετε mount σε mountpoint (/home/.) που δεν είναι άδειο, αλλά σας παρέχει μια παράκαμψη --non-empty … (δεν το θυμάμαι τώρα κι είμαι σε arch/obarun) το οποίο το παρακάμπτει. Αν θέλετε κάνετε ένα backup/rsync -tar -*zip το /home να υπάρχει και το σβήνετε αν θέλετε να αδειάσετε τον χώρο από το root / partition. ΠΡΙΝ το σβήσετε, να είστε σίγουροι ότι έχετε κάνει # umount /dev/sda6 ή #umount /home και μετά # df να το σιγουρέψετε αλλιώς θα σβήσετε αυτό στο οποίο αντιγράψατε. ΠΟΛΥ ΠΡΟΣΟΧΗ ΕΔΩ!! Όταν το /dev/sda6 είναι mounted σαν /home με το filemanager βλέπετε το νέο, δεν μπορείτε να δείτε το παλαιό, σαν να είναι σκεπασμένο.

# mount /dev/sda6 /home
# ls -al /home
drwxr-xr-x 2 kaka users  60 Oct 22 13:05 kaka/
drwxr-xr-x 2 koko users  60 Oct 22 13:05 koko/ 

μη φεύγετε, δεν τελειώσαμε, ας χτύπησε το κουδούνι

# blkid
/dev/sda6: LABEL="home" UUID="5dd6xxxxx-90yy-8dddddd76b6" TYPE="ext4" PARTUUID="5fakkkk-05"

Αντιγράφετε το UUID=5dd…b6 χωρίς τα “”
# nano /etc/fstab
προσθέτετε την γραμμή
UUID=5dd...............b6 /home ext4 defaults,noatime 0 2

ctrl-X y y

# mount -a
# df

μπορείτε να κάνετε reboot και τώρα θα βρεθείτε στο νέο σας /home

Aν τώρα κάνετε ένα άλλο partition μέσα στο sda6 το sda7, και κάνετε μια νέα εγκατάσταση άλλου συστήματος και δημιουργήσετε χρήστες kaka (1000) koko (1001) να ταιριάζουν στο προηγούμενο, και προσθέσετε την γραμμή του uuid=2020202 /home ext4… στο /etc/fstab άλλου συστήματος τοτε θα χρησιμοποιήσει το ίδιο /home
Eδώ μπορούν να προκύψουν κάποιες ιδιαιτερότητες, πχ στο παλαιό είχαμε liberation fonts σε όλα, adwaita icons, τώρα έχουμε ubuntu fonts, teza icons, και … ρωτήστε, εδώ είμαστε.

5 Likes

Αρκετά χρήσιμος οδηγός, μπράβο!!!

Σημεωση1: Το UUID σε κάθε partition είναι μοναδικό, πιο ευκολο να χτυπήσεις το joker παρά να βγάλεις δεύτερο ίδιο Το ένα U σημαίνει unique (μοναδικό).
Σημείωση2: Μπορείτε στο ίδιο δίσκο, σε extended partition, να έχετε πολλά partitions, πολλά συστήματα, και με τον ίδιο τρόπο μπορείτε να δημιουργήσετε πολλά υποσυστήματα, όπως το /etc, swap, /usr/share ότι θέλετε, απλά πρέπει να υπάρχουν σωστά στο /etc/fstab ώστε να τα βρίσκει το σύστημα όταν κάνει boot.
Πολλές μικρές εκγαταστάσεις που έχω είναι λιγότερο από 5GB με openbox και τα περισσότερα εργαλεία που χρησιμοποιώ. Στο /var/cache υπάρχει (debian ./apt void ./xbps arch ./pacman) και μέσα σε αυτά αποθηκεύονται τα πακέτα όταν τα κατεβάζετε. Αν υπάρχουν 2-3 διανομές με βάση το debian τότε μπορούν να μοιραστούν το /var/cache/apt ώστε να μην χρειάζεται να κατεβάζετε τα ίδια πακέτα πολλαπλές φορές για το κάθε σύστημα χωριστά.

2 Likes

Χρησιμότατο!
Συγχαρητήρια για το χρόνο που αφιέρωσες!

1 Like

πολυ ενδιαφερουσα προταση το να εχουμε το ιδιο /home για διαφορετικες εγκαταστασεις στον ιδιο δισκο και καλος ο οδηγος, ευχαριστουμε :+1:
ειδικα αυτο με το /var/cache/apt ώστε να μην χρειάζεται να κατεβάζετε τα ίδια πακέτα πολλαπλές φορές για το κάθε σύστημα χωριστά πολυ μου αρεσε. Κανα δυο φορες που το ειχα ξανακουσει αυτο σκεφτομουν που να μπλεξεις τωρα σε τετοια ιστορια… Όταν ομως εχεις οδηγο ειναι αλλιως…

Ακόμα κι αν έχεις διάφορα debian,ubuntu, mint, antix, devuan μαζί και ακόμα κι αν βασίζονται στο ίδιο επίπεδο (δηλαδή αν είναι όλα βασισμένα στο τωρινό stable της debian/antix19/devuan-beowulf ) τα πακέτα που διαφέρουν έχουν διαφορετικά ονόματα. Αυτά που είναι κοινά και έρχονται από την debian τα μοιράζονται. Μπορούν δηλαδή όλα να είναι σε ένα. Aν τώρα έχεις debian 10, devuan-ascii, και antix-sid, θα μοιράζονται λίγα, γιατί ακόμα κι όταν το ίδιο πακέτο από debian testing κατρακυλάει στο stable, αλλάζει όνομα (ίσως όχι πάντα).
Στο arch τα πράγματα είναι ίσως λίγο πιο πολύπλοκα αλλά και πιο εύκολα. /var/cache/pacman/pkg/ είναι το κοινό όνομα, για όλα τα arch derivatives, ακόμα και το Manjaro. Υπάρχει περίπτωση όμως το Obarun, to artix, to hyperbola, to manjaro, να δώσουν ακριβώς το ίδιο όνομα για το ανάλογο πακέτο ακόμα κι αν το κάνουν rebuild με τις δικές τους επιλογές. Εκεί αν έχεις αποθηκεύσει το τελευταίο polkit /var/cache/pacman/pkg/polkit-0.116-4-x86_64.pkg.tar.xz το pacman ανακαλύπτει στις υπογραφές αν είναι το ίδιο ή από άλλη προέλευση και θέλει να το σβήσει και να το ξανακατεβάσει.
Πρέπει να θέλεις να κάνεις ζημιά για να γίνει. Aν τώρα έχεις κατεβάσει το τελευταίο κέρνελ του arch, ας πούμε το linux-lts, και θέλεις να το χρησιμοποιήσεις και στο manjaro και στο obarun και στο artix και στο hyperbola (εδώ μπορεί να έχεις πρόβλημα γιατί δεν είναι libre) χρησιμοποιείς το
# pacman -U /var/cache/pacman/pkg/linux-lts-4.19.80-1-x86_64.pkg.tar.xz
To -U δεν ψαχνει υπογραφες κάνει ότι του λες.

Στο Void το ανάλογο είναι /var/cache/xbps και ας πούμε υπάρχει το
-rw-r–r-- 1 root root 128K May 27 09:04 /media/var/xbps/polkit-0.116_1.x86_64-musl.xbps
-rw-r–r-- 1 root root 129K May 27 09:08 /media/var/xbps/polkit-0.116_1.x86_64.xbps
το ένα είναι built με glibc το άλλο με musl, δεν μπερδεύονται. Υπάρχουν πολλά πακέτα που είναι κοινά, δεν επηρεάζονται από το c-library. Συνήθως scripts και manuals. Και πάλι δηλαδή μοιράζονται το ίδιο υποφάκελο μεταξύ τους, και ίσως όλα μαζί το κοινό /var/cache. No problem!

Τελικά, μετά από 1-2 χρόνια, καταλήγει η κατάτμιση να μοιάζει σαν mirror από διάφορα linux distributions.

1 Like

Κατ αρχήν είναι ποιο ασφαλές να κάνεις το /var/cache/apt/archives sym/hard link, αν βρίσκω αυτό το setup πολύ μπελαλίδικο για να αξίζει τον κόπο. Επίσης θα λειτουργήσει υπό προϋποθέσεις, θα πρέπει να κάνεις τις αναβαθμίσεις στις διανομές σε μικρά μεταξύ τους διαστήματα, μιας και τα αρχεία δεν θα μείνουν εκεί για πάντα (δες apt-config dump).

Μια καλύτερη λύση είναι να έχεις κάτι σαν το apt-cacher και να το ρυθμίσεις να κρατάει τα δεδομένα του κάπου ανεξάρτητα. Στην περίπτωση ενός μηχανήματος δεν θα έμπαινα στον κόπο, εκτός αν είμαι σε αγροτική περιοχή ή χρησιμοποιώ δίκτυο κινητής τηλεφωνίας.

Αφενός υπάρχει εξοικονόμηση χρόνου/όγκου δικτύου και αφετέρου υπάρχει το θέμα χώρου, να μην κρατάς τα ίδια πακέτα 2-3 φορές σε διαφορετικά μέρη του δίσκου.
Το apt-get χωρίς ρυθμίσεις κρατάει τα πακέτα που κάνει εγκατάσταση, το apt τα σβήνει μετά την εγκατάσταση, και αυτό νομίζω άλλαξε τελευταία. Παλαιότερα και τα δύο τα κρατούσαν αν δεν τα έσβηνες μόνος σου. Βέβαια λίγοι παρακολουθούμε 2-3-10 διαφορετικές διανομές εγκαθιστώντας όλα αυτά τα συστήματα. Μαθαίνουμε όμως από τις διαφορές τους, και των επιλογών τους.

A post was split to a new topic: Αλλαγή μεγέθους root partition