Re: dd για Dual Boot δίσκου

Alexius Dionysius Diakogiannis alexius.dionysius at diakogiannis.com
Wed Feb 9 15:42:06 UTC 2011


Respect \m/

Alexius Dionysius Diakogiannis
IT Consultant / Core Banking Eng.




2011/2/9 Konstantinos Togias <ktogias at math.upatras.gr>:
> Η μετακίνηση του ubuntu (ή οποιασδήποτε gnu/linux διανομής) σε νέο
> δίσκο ή νέο/νές διαμέριση/διαμερίσεις μπορεί να γίνει και χωρίς εκ
> νέου εγκατάσταση του λειτουργικού. Στο linux τα πάντα είναι αρχεία που
> καθορίζονται μονοσήμαντα από το απόλυτο path τους που ξεκινά πάντα από
> το ριζικό κατάλογο /. Αν χρησιμοποιούμε περισσότερες κατατμήσεις, τότε
> αυτές προσαρτώνται σε κάποιο κατάλογο που βρίσκεται και αυτός κάτω από
> το /. Έτσι μπορούμε να μεταφέρουμε όλη την εγκατάσταση με τα
> εκτελέσιμα, τον πυρήνα, τους προσωπικούς καταλόγους των χρηστών από
> ενα δίσκο σε ένα άλλο ή να τα αναδιατάξουμε σε διάφορα partitions
> φροντίζοντας απλά να μην αλλάξουν λόγω της μεταφοράς τα απόλυτα paths
> των διαφόρων αρχείων.
>
> Π.χ. Έστω ότι έχουμε μια εγκατάσταση ubuntu στον δίσκο a σε μια ενιαία
> κατάτμηση (την 0). Αυτό σημαίνει ότι το / είναι η κατάτμηση sda1. Όλα
> τα άλλα αρχεία βρίσκονται μέσα στο sda1. Ακόμα στο ubuntu χρειαζόμαστε
> και μια κατάτμηση για swap. Έστω ότι αυτή είναι η sda2. Το σύστημά μας
> για να λειτουργήσει πρέπει λοιπόν να ξέρει ότι το / είναι το sda1 και
> το swap το sda2.
>
> Αυτό το μαθαίνει ο πυρήνας μας από το αρχείο /etc/fstab. Εκεί μέσα
> αναφέρονται οι αντιστοιχίες. Παλιότερα οι αντιστοιχίες δηλώνονταν με
> βάση το αρχείο συσκευής που φτιάχνει ο πυρήνας για κάθε δίσκο και
> κατάτμηση. Στις πιο πρόσφατες εκδόσεις χρησιμοποιείται ως
> αναγνωριστικό το UUID του συστήματος αρχείων της κατάτμησης, το οποίο
> είναι ένα μοναδικό αλφαριθμητικό - ταυτότητα που προκύπτει από το ίδιο
> το σύστημα αρχείων. Έτσι ακόμα και αν αλλάξει για κάποιο λόγο η
> αρίθμηση των συσκευών, ο πυρήνας θα βρει τις σωστές κατατμήσεις που
> πρέπει να προσαρτηθούν από το UUID τους. Για να μάθουμε το uuid μιας
> κατάτμησης μπορούμε να χρησιμοποιήσουμε τις εντολές blkid και vol_id.
> Περισσότερα για το UUID μπορείτε να δείτε στο
> http://www.unixtutorial.org/2008/05/ubuntu-uuid-how-to/ .
>
> Πριν όμως από τον πυρήνα, υπάρχει και κάποιος άλλος που πρέπει να
> ξέρει κάτι για την φυσική τοποθεσία των συστημάτων αρχείων μας. Αυτός
> είναι ο εκκινητής συστήματος GRUB. Μια και τα αρχεία του ίδιου του
> πυρήνα βρίσκονται μέσα σε μια κατάτμηση, ο GRUB πρέπει να ξέρει ποια
> είναι αυτή προκειμένου να σηκώσει τον πυρήνα. Σε παλιότερες εκδόσεις
> αυτό οριζόταν στο /boot/grub/menu.lst . Στις πιο πρόσφατες, ο grub
> ανιχνεύει αυτόματα τις κατατμήσεις όπου κατοικούν πυρήνες λειτουργικών
> συστημάτων και αυτορρυθμίζεται όταν τρέχουμε την εντολή update-grub.
>
> Έστω τώρα ότι θέλουμε να μεταφέρουμε την εγκατάσταση που περιγράψαμε
> πιο πάνω σε ένα νέο δίσκο και να βαλουμε το / σε μια κατάτμηση και το
> /home σε μια άλλη. Η διαδικασία που ακολουθούμε είναι η εξής:
>
> 1. Συνδέουμε το νέο δίσκο.
> 2. Εκκινούμε στο υπάρχον σύστημα και διαμερίζουμε μέσα από αυτό το νέο
> δίσκο σε 3 κατατμήσεις. Μια για το / μια το /home και μια για το swap.
> Αυτό μπορεί να γίνει με fdsik ή gparted.
> 3. Δημιουργούμε τα αντίστοιχα συστήματα αρχείων στις κατατμήσεις που
> φτιάξαμε (π.χ. mkext3fs για / και /home και mkswap για την κατάτμηση
> που θα χρησιμοποιηθεί ως swap.
> 4. Κάνουμε mount την κατάτμηση που θα χρησιμοποιήσουμε ως / στο /mnt μας.
> 5. Δημιουργούμε τους καταλόγους dev και proc μέσα στο /mnt. Δεν
> χρειάζεται να αντιγράψουμε τα αρχεία των τρεχόντων /dev και /proc
> στους νέους φακέλους, μια και αυτά δημιουργούνται αυτόματα από τον
> πυρήνα.
> 6. (Με δικαιώματα root) Αντιγράφουμε όλους τους άλλους καταλόγους του
> τρέχοντος / στο /mnt εκτός από τον /home. Κατά την αντιγραφή
> φροντίζουμε να διατηρούνται οι ιδιότητες ιδιοκτησίας και δικαιωμάτων
> των αρχείων και να μεταφερθούν ως έχουν οι συμβολικοί σύνδεσμοι. Η
> εντολή sudo cp -a /etc /mnt/ π.χ. θα κάνει τη δουλειά.
> 7. (Με δικαιώματα root) Δημιουργούμε το φάκελο /mnt/home και κάνουμε
> mount την κατάτμηση που προορίζουμε για /home στο /mnt/home.
> 8. (Με δικαιώματα root) Αντιγράφουμε τα περιεχόμενα του /home στο
> /mnt/home, με cp -a.
> 9. Βρίσκουμε τα UUIDs των νέων κατατμήσεων με το vol_id.
> 10. Επεξεργαζόμαστε το /mnt/etc/fstab και αλλάζουμε τα uuids ώστε να
> αντιστοιχούν με αυτά των νέων κατατμήσεων.
> 11. Κάνουμε mount --bind τα /dev και /proc στα /mnt/dev και /mnt/proc
> 12. Κάνουμε chroot στο /mnt. Πλέον είναι σαν να έχουμε bootaρει από το
> νέο δίσκο.
> 13. Τρέχουμε το grub-install για να εγκαταστήσουμε το grub στο νέο
> δίσκο (αν ο νέος δίσκος είναι αναγνωρισμένος ως /dev/sdb τρέχουμε
> grub-install /dev/sdb.
> 14. Τρέχουμε και ένα update-grub (δεν ξέρω αν είναι απαραίτητο).
> 15. Πλέον, αν δεν μας έχει ξεφύγει κάτι έχουμε κάνει όλες τις
> ρυθμίσεις για να λειτουργήσει το σύστημά μας από το νέο δίσκο.
> Βγαίνουμε από το chroot και κάνουμε shut down τον υπολογιστή. Βγάζουμε
> τον παλιό δίσκο ή ρυθμίζουμε το bios να bootάρει από το νέο,
> σταυρώνουμε τα δάχτυλα και περιμένουμε. Αν όλα πήγαν καλά θα σηκωθεί
> μια χαρά το γνώριμο ubuntu μας.
>
> Τα παραπάνω βήματα δεν είναι αναλυτικά και κάποιος πρέπει να διαβάσει
> λίγα man για να τα ακολουθήσει (man mount, man fstab, man chroot, man
> fdisk, man cp ...). Μπορεί ακόμα να έχω ξεχάσει κάτι. Πάνε αρκετοί
> μήνες από τότε που έκανα τελευταία φορά τη διαδικασία.
>
>
> Και τέλος, πριν δοκιμάσετε.... ΠΑΡΤΕ BACKUP ΟΤΙ ΘΑ ΣΑΣ ΛΕΙΨΕΙ ΑΝ ΤΟ
> ΧΑΣΕΤΕ ΜΕ ΚΑΠΟΙΟ ΛΑΘΟΣ ΧΕΙΡΙΣΜΟ. (και έχετε και ένα cd εγκατάστασης
> ubuntu πρόχειρο σε περίπτωση που τα κάνετε τόσο μαντάρα που δεν
> παίρνει γιατριά).
>
>
>
>
> ---
> Konstantinos Togias
> Dipl.-Math., M.Sc.
> Hellenic Open University
> and Research Academic Computer Technology Institute
>
> Ubuntu-gr LoCo team member
>


More information about the Ubuntu-gr mailing list