Chroot : Σώστε το σύστημα σας χωρίς format


Στο παρόν άρθρο θα δούμε μια πιο ειδική χρήση του live USB περιβάλλοντος που όμως αποδεικνύεται σωτήρια σε αρκετές περιπτώσεις σπασμένων συστημάτων που δεν ξεκινάνε καθόλου. Ο λόγος για το chroot.

Χαρακτηριστικό των πρώτων ημερών των νεοεισερχόμενων χρηστών στο Linux είναι η διάθεση για γνώση και (επικίνδυνο) πειραματισμό. Πολύ λογικό θα έλεγε κανείς, διότι το ίδιο το Linux με την ελευθερία που δίνει για παραμετροποίηση σε ωθεί να εξερευνήσεις το λειτουργικό σύστημα, να το φέρεις στα μέτρα σου ξεζουμίζοντας το, να δεις τα ενδότερα του και γενικά να του αλλάξεις τα φώτα.

Δεν είναι η επιδιόρθωση του συστήματος που είναι αδύνατη, αλλά η «απειρία» μας που μας κάνει να καταφύγουμε στο format… και ξανά μανά από την αρχή.

Όμως, δεν πάνε όλα πάντοτε όπως τα περιμένουμε και αρκετές φορές καταλήγουμε με σπασμένα συστήματα με Kernel Panic ή χαλασμένους grub κλπ. Πολλές φορές μάλιστα η «ζημιά» που έχουμε δεν μας αφήνει περιθώρια για ανάκτηση του συστήματος και επαναφορά του σε προηγούμενη κατάσταση με κάποιο λογισμικό (π.χ Resetter) ή μέσω του recovery menu του Grub.

Έστω λοιπόν, ότι έχουμε στον υπολογιστή μας μια διανομή Linux (π.χ. Ubuntu) και το πρωί που το ανοίξαμε, αντί να φορτώσει το σύστημα κανονικά και να δούμε επιφάνεια εργασίας βλέπουμε ένα μήνυμα όπως στην παρακάτω εικόνα:

chroot-grub-rescue
Έχετε γεια βρυσούλες…
λόγγοι βουνά ραχούλες…

Ένα liveUSB και το Chroot… και γλυτώνουμε το format

Τα βάφουμε μαύρα και φορτώνουμε το Live USB για να ξανακάνουμε εγκατάσταση το λειτουργικό σύστημα; Όχι φυσικά διότι θα μπουτάρουμε μεν απο το LiveUSB αλλά θα μπούμε με chroot στο «κατεστραμένο» σύστημα για να το επισκευάσουμε.

Τι είναι το Chroot;

Το chroot είναι μια ενέργεια που αλλάζει τον γονικό κατάλογο μιας ομάδας διεργασιών, δημιουργώντας ένα ασφαλές περιβάλλον, ξεχωριστό από το υπόλοιπο σύστημα. Ένα πρόγραμμα που εκτελείται σε ένα τέτοιο τροποποιημένο περιβάλλον δεν μπορεί να έχει πρόσβαση σε αρχεία και εντολές εκτός αυτού του root περιβάλλοντος. Αυτό το τροποποιημένο περιβάλλον ονομάζεται chroot-jail.

chroot jail
chroot jail

Με λίγα λόγια στη δική μας περίπτωση αλλάζουμε το root του live περιβάλλοντος στο root περιβάλλον της προβληματικής εγκατάστασης.

Μπορείτε να το φανταστείτε σαν να κατασκευάζουμε στα γρήγορα μια γέφυρα μεταξύ του LiveUSB με το οποίο έχουμε ξεκινήσει τον υπολογιστή και του λειτουργικού συστήματος που βρίσκεται στον σκληρό δίσκο για να είναι εφικτή η  μετάβαση σε αυτό.

Το καλό σε αυτή την περίπτωση είναι ότι μόλις γίνει η αλλαγή βρισκόμαστε στο root του χαλασμένου συστήματος, κάτι που μας επιτρέπει να κάνουμε ενέργειες όπως:

  • Επανεγκατάσταση του bootloader (αν έχει πρόβλημα το GRUB)
  • Να ξαναχτίσουμε το initramfs image (αν δεν βρίσκει το initramfs)
  • Να αναβαθμίσουμε ή να υποβαθμίσουμε πακέτα σε παλαιότερες εκδόσεις
  • Να κάνουμε reset ένα ξεχασμένο password του χρήστη
  • Να αλλάξουμε δικαιώματα σε αρχεία/φακέλους συστήματος

«Εντάξει το κατάλαβα, πάμε!… έχω ξεκινήσει τον υπολογιστή από LiveUSB»

Προετοιμασία chroot περιβάλλοντος

Μόλις μπούμε στο live περιβάλλον, πρέπει να μάθουμε για τα διαμερίσματα (partitions) που έχει ο δίσκος με το λειτουργικό που θέλουμε να επαναφέρουμε οπότε ανοίγουμε το τερματικό και δίνουμε

lsblk

Και θα έχουμε ένα αποτέλεσμα της ακόλουθης μορφής

lsblk output
output της εντολής lsblk

στη συνέχεια εφόσον γνωρίζουμε την κατάτμηση (partition) της εγκατάστασης που θέλουμε να επιδιορθώσουμε (στη δική μου περίπτωση είναι η /dev/sda1) δίνουμε στο τερματικό

sudo mount /dev/sdXY /mnt

Όπου Χ και Y είναι το γράμμα και ο αριθμός της κατάτμησης που θα γίνει mount (στη δική μου περίπτωση X==a , Y==1). Πήραμε λοιπόν το διαμέρισμα sda1 και το «συνδέσαμε» με έναν φάκελο (/mnt) του liveUSB.

Εν συνεχεία θα κάνουμε mount τους φακέλους /dev, /proc ,/sys

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

Όπως παρατηρούμε προστέθηκε η παράμετρος

--bind

η οποία προσαρτά τους φακέλους σαν μέρος του tree του /mnt, σημαντική λεπτομέρεια για να λειτουργήσουν όλα σωστά.

Χρήση δικτύου στο chroot (προαιρετικό)

Στην περίπτωση που θέλουμε να έχουμε δίκτυο και πρόσβαση στο internet στο chroot περιβάλλον, δίνουμε στο τερματικό

cp /etc/resolv.conf /mnt/etc/resolv.conf

Αυτό προτείνεται σε περιπτώσεις που θέλουμε να κάνουμε ενημερώσεις ή εγκατάσταση πακέτων.

Είσοδος στο chroot περιβάλλον

Έχουμε τελειώσει την προετοιμασία και είμαστε έτοιμοι να μπούμε στο chroot περιβάλλον μας δίνοντας στο τερματικό

sudo chroot /mnt

Όπου μπορούμε να κάνουμε τις όποιες επιδιορθώσεις προκειμένου να αποφύγουμε το format. Πιο πριν αναφερθήκαμε σε μερικές συνήθεις περιπτώσεις που το chroot αποδεικνύεται σωτήριο. Θα δούμε τα fixes μερικών εξ αυτών

Επανεγκατάσταση του grub

Σε ubuntu/debian και παράγωγες διανομές

grub-install /dev/sdX
grub-install --recheck /dev/sdX
update-grub

Σε Arch Linux

grub-install --target=i386-pc --recheck /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

Εγκατάσταση πυρήνων

Σε ubuntu/debian και παράγωγες διανομές

apt install linux-image-generic

Σε Arch Linux

pacman -S linux-lts

Επανεγκατάσταση του initramfs

Σε ubuntu/debian και παράγωγες διανομές

update-initramfs -u

Σε Arch Linux

mkinitcpio -p linux

Reset ξεχασμένου password

passwd όνομαχρήστη

Έξοδος από το chroot

Μόλις τελειώσουμε τις ενέργειες μας εξερχόμαστε από το περιβάλλον του chroot και αποσυνδέουμε τους φακέλους με τους οποίους φτιαξαμε την «γέφυρά» μας.

exit
sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt

Και προχωρούμε σε επανεκκίνηση του συστήματος μας.

Αυτά είναι μερικά μόνο παραδείγματα περιπτώσεων που το chroot είναι αρκετά χρήσιμο οπότε δεν θα επεκταθούμε περισσότερο, μιας και στόχος είναι να μάθουμε να μπαίνουμε σε chroot περιβάλλον. Από εκεί και πέρα το πως θα χειριστούμε την ανάκτηση, ή επαναφορά του Linux συστήματός μας, αλλάζει ανά περίπτωση μιας και η επισκευή του λειτουργικού έχει να κάνει με τα συμπτώματα του προβλήματος και ο εντοπισμός τους μέσω chroot είναι κρίσιμος για να πετύχουμε στις προσπάθειες επιδιόρθωσης.

Επίλογος

Όσο επικίνδυνη και να φαίνεται αυτή η μέθοδος, μας βοηθά να γλιτώσουμε από τα άσκοπα format και το χάσιμο χρόνου. Επιπλέον μας επιτρέπει να μπούμε στα ενδότερα του συστήματος μας και να βγάλουμε χρήσιμα συμπεράσματα π.χ. διαβάζοντας τα τελευταία logs της δραστηριότητάς μας πριν την στιγμή που εμφανίστηκε το πρόβλημα.

Εσείς χρησιμοποιείτε το chroot ή καταφεύγετε σε format;

Advertisements

16 thoughts on “Chroot : Σώστε το σύστημα σας χωρίς format

  1. Φυσικά chroot. Με έχει σώσει άπειρες φορές! Πολύ χρήσιμο και για recovery από h/w error κλπ. Έχω π.χ. πάρει πολύ εύκολα dump από βάση MySQL σε μηχάνημα που άφησε χρόνους, κοτσάροντας το δίσκο του σε άλλο μηχάνημα, κάνοντας chroot σε αυτόν και σηκώνοντας κανονικότατα τη MySQL από εκεί.

    Αν θέλαμε να κάνουμε format θα παίζαμε ακόμα με windows 😛

    1. Εντάξει, για να μην είμαι άδικος, θα πω ότι έχω δει Windows Admin να σώζει πολλές φορές κάποιο πρόβλημα σε windows χωρίς να κάνει format. Μάλιστα δεν μιλάμε για απλά προβλήματα αλλά για περίπλοκα boot errors.

    2. Το ζητούμενο είναι να βγει ο μέσος χρήστης από τη λογική του format, γιατί «έτσι είχε μάθει» στα windows όταν τα πράγματα ζόριζαν. Οι περιπτώσεις που αναφέρει ο @cerebrux είναι σταγόνα στον ωκεανό, υπαρκτές αλλά ελάχιστες.

  2. Μπράβο μπράβο μπράβο! Δεν ήξερα το chroot μέχρι που έκανα ταρζανιές για να κάνω τον υπολογιστή μου πιο γρήγορο με τον kernel 4.12 και το dracut, ενώ το ucaresytem-core αποφάσισε ότι δεν μου χρειάζονταν οι παλαιότεροι πυρήνες, βρε αδερφέ!…οπότε ξαφνικά μην τα πολυλογώ έμεινα χωρίς κανένα πυρήνα χα χα χα χα χα….
    Που πάς ρε καραμήτροοοοο…
    Ευτυχώς μπήκα με chroot, εγκατέστησα κάνα δυο πυρήνες (lts, μή lts, κλπ, να υπάρχουν!) και μπήκε στο σύστημα κανονικά.
    Φυσικά το ucaresystem-core παρέμεινε. Οι ταρζανιές κόπηκαν, γιατί βλάπτουν στην ψυχική ηρεμία…
    Από την άλλη να πω ότι δεν το έγραφε το άρθρο: «Eπίσης, αν έχετε εγκαταστήσει κάποιο custom kernel πολύ πιθανόν να τον αφαιρέσει αν ο δημιουργός του δεν έχει φροντίσει να προσθέσει την εξάρτηση για το dracut» ούτε καν ήξερα αν έχει την εξάρτηση ο 4.12 αλλά λέω ‘ντάααξει μωρέ τι θα γίνει…. !!!
    Χα χα χα χα χα…

    1. Εμ… δεν μπορεί κανείς να ξέρει τι έχει γίνει σε ένα custom kernel 😛 Τελικά την ευθύνη πάντα την έχει ο χρήστης μιας και το GPL το λέει ξεκάθαρα οτι ο developer ποτε δεν φταίει 🙂

  3. Θα ηθελα να κανω μια ερώτηση….

    Εχω dual-boot Arch και Windows 10 και θα ήθελα να κανω αναβαθμιση τα windows με fall creators αλλά είμαι σχεδόν σίγουρος πως η αναβαθμιση αυτή θα δημιουργήσει πρόβλημα (εκ φυσεως τα windows ειναι επιθετικά) με ταο διπλο λειρτουργικο … τι πρεπει να κανω για αποφύγω/διορθώσω to ενδεχομενο αυτο? (chroot μήπως) ?


    https://polldaddy.com/js/rating/rating.js

    1. Στέφανε

      Στην περίπτωση που δημιουργηθεί πρόβλημα (αν και δε νομίζω) θα μπεις μέσω chroot και θα κάνεις επανεγκατάσταση του grub (αν δε δει το partition των windows ως entry, κάνε το mount στο/mnt και ξανακάνε το grub-mkconfig -o /boot/grub/grub.cfg για να το δει σωστά). Πάντως στα dual boot συστήματα που έχω (όλα με windows 10) μέχρι στιγμής δεν είχα το παραμικρό θέμα με τον grub και τα updates των 10 (Μέχρι στιγμής είναι όλα αναβαθμισμένα στη 1703 (Creators update όχι η Fall Creators Update).

      Πιστεύω ότι όλα θα κυλήσουν ομαλά μη φοβάσαι 🙂

  4. Πολύ ωραίος φίλε! Πάρα πολύ ωραίο και αναγκαίο θα έλεγα άρθρο! Ευχαριστούμε πολύ!

  5. Σε σχέση με το Recovery Mode, τι διαφορά έχει;
    Μου φαίνεται πως τις ενέργειες που λες πως μπορεί κάποιος να κάνει, μπορεί να τις κάνει και αν καταφέρει να έχει πρόσβαση στο Recovery Mode. Υποψιάζομαι σωστά ή αναφέρεσε σε ακόμη χειρότερες περιπτώσεις ( που κάποιος δε θα μπορεί να έχει πρόσβαση ούτε στο Recovery Mode ) ;

    1. A! οκ, τώρα γίνεται ακόμη πιο κατανοητό…
      Ευχαριστώ Bill Niakas! 🙂

    2. Ελπίζω να μη φτάσεις ποτέ σε αυτό το σημείο αλλά οι φορές που επιβάλλεται chroot είναι όταν δε δούλευει ο grub για κάποιο λόγο (δεν μπορείς εξ ορισμού να μπεις σε recovery mode) και όταν έχεις kernel panic (που πάλι δε μπορείς να μπεις σε recovery mode).

      Συνήθως με το chroot αυτά τα προβλήματα ξεπερνιούνται.

    3. Αρκεί βέβαια να ξέρεις τι να κάνεις.. 😉
      Αλλά οκ.. ναι είναι μια πολύ καλή μέθοδος προσέγγισης ενός «κατεστραμένου» συστήματος αρχείων ώστε να προσπαθήσεις να το διορθώσεις…

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s