Saturday, May 12, 2012

Εγκαταστήστε το FreeBSD 9.0 χωρίς το bsdinstall

Έχει περάσει κάποιο διάστημα από το FreeBSD 9.0-RELEASE και μάλλον ήρθε η
ώρα να δούμε πως μπορούμε να το εγκαταστήσουμε χωρίς την βοήθεια του
installer. Για όποιον έχει χάσει επεισόδια, το FreeBSD 9.0 έρχεται με τον
νέο installer, bsdinstall. Η αλήθεια είναι ότι δεν μας ξετρέλανε κιόλας όταν
τον είδαμε, αλλά δεν πειράζει: η λογική του ευχάριστου απογεύματος είναι να
δούμε πως θα τον παρακάμψουμε για να κάνουμε μια χειροκίνητη εγκατάσταση.


Η γενική ιδέα είναι εύκολη, θέλουμε όμως να εκμεταλλευτούμε και το νέο
σύστημα partitioning, το GPT. Βλέπετε, το bsdinstall το υποστηρίζει και δεν
θέλουμε η δική μας λύση να είναι κατώτερη. Αν μάθουμε να κάνουμε GPT
partitioning χειροκίνητα, θα μπορούμε επίσης να χρησιμοποιήσουμε την
λειτουργία LiveCD του FreeBSD 9.0 και με άλλους τρόπους (π.χ. να κάνουμε
partitioning και να ρίξουμε κάποιο έτοιμο dump που έχουμε χωρίς να κάνουμε
νέα εγκατάσταση).


Ο Warren Block, FreeBSD Doc committer, έχει γράψει ένα μικρό αλλά πολύ
κατατοπιστικό οδηγό για το GPT που ουσιαστικά περιγράφει ότι θέλουμε να
κάνουμε όσο αφορά το partitioning. Για να ξεκινήσουμε, χρησιμοποιήστε το
FreeBSD 9.0-RELEASE CD (ή DVD) για να εκκινήσετε το μηχάνημα σας.
Στο παράθυρο Welcome επιλέξτε LiveCD και κάντε login ως root.


Βήμα 1ο - Διαγράψτε τα πάντα και δημιουργήστε GPT Scheme


Προσοχή: Σε αυτό το σημείο θα διαγράψουμε όλα τα περιεχόμενα του δίσκου!
Υποθέτουμε ότι ο δίσκος μας είναι ο ada0 αλλά μπορείτε να διαπιστώσετε στο
δικό σας μηχάνημα με ένα ls /dev/ad*


# gpart destroy -F ada0

ada0 destroyed

# gpart create -s gpt ada0

ada0 created


Βήμα 2ο: Δημιουργία freebsd-boot partition και εγκατάσταση GPT bootcode


Το boot partition θα κρατήσει το loader. Το φτιάχνουμε σε μέγεθος 128Κ το
οποίο μάλιστα περισσεύει - αλλά αν αργότερα κάνουμε ZFS boot θα μας
χρειαστεί.


# gpart add -t freebsd-boot -l gpboot -s 128K ada0

ada0p1 added

# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0

bootcode written to ada0


Βήμα 3ο: Δημιουργία UFS filesystem για το root partition


Δημιουργούμε το partition για το /. Ξεκινάει στο 1Μ boundary για να έχουμε
σωστή ευθυγράμμιση τομέων σε δίσκους με μέγεθος τομέα 4Κ. Εφ'όσον όλα τα
μεγέθη partition που θα ακολουθήσουν θα είναι σε ζυγό μέγεθος, η ευθυγράμμιση
θα παραμείνει σωστή. Στο παράδειγμα μας, θα βάλουμε 8Gb root filesystem.
Παρατηρήστε ότι δίνουμε και ετικέτες (labels) στα partitions. Οι ετικέτες
αυτές θα εμφανίζονται στο /dev/gpt και μας επιτρέπουν να προσαρτήσουμε το
σύστημα αρχείων χωρίς να αναφερθούμε στη συσκευή δίσκου.


# gpart add -t freebsd-ufs -l gproot -b 1M -s 8G ada0

ada0p2 added


Μπορούμε να το διαμορφώσουμε και άμεσα, χρησιμοποιώντας μάλιστα και το νέο
soft updates journaling:


# newfs -j /dev/gpt/gproot

...αριθμοί sectors που μόνο ο McKusick καταλαβαίνει...
newfs: soft updates journaling set


Βήμα 4ο: Δημιουργία filesystem για το home partition


Είναι προφανώς καλή ιδέα να φτιάξουμε ένα χωριστό partition για τα δεδομένα
των χρηστών. Θα βάλουμε εδώ άλλα 8G σαν παράδειγμα.


# gpart add -t freebsd-ufs -l gphome -s 8G ada0

ada0p3 added

# newfs -j /dev/gpt/gphome
...
newfs: soft updates journaling set


Βήμα 5ο: Δημιουργία swap partition


Το τελευταίο μας partition και εδώ θα χρησιμοποιήσουμε απλώς ότι χώρο έχει
απομείνει (υποτίθεται είχαμε υπολογίσει από πριν με βάση τα υπόλοιπα
partitions το χώρο που μένει για το swap). Όταν δεν δώσουμε συγκεκριμένο
χώρο στην εντολή, χρησιμοποιείται όλος ο υπόλοιπος διαθέσιμος χώρος.


# gpart add -t freebsd-swap -l gpswap ada0

ada0p4 added


Βήμα 6ο: Προσάρτηση του νέου root filesystem και αποσυμπίεση αρχείων


Μπορούμε τώρα να προσαρτήσουμε το νέο σύστημα αρχείων root σε ένα προσωρινό
χώρο και να αποσυμπιέσουμε τα αρχεία εγκατάστασης από το CD. Τα ελάχιστα που
χρειαζόμαστε είναι τα kernel.txz και base.txz:


# mount /dev/gpt/gproot /media
# cd /media
# xz -dc /usr/freebsd-dist/kernel.txz | tar xvpf -
# xz -dc /usr/freebsd-dist/base.txz | tar xvpf -


Προαιρετικά, μπορείτε να κάνετε το ίδιο και για τα games.txz, doc.txz, src.txz και ports.txz.


Βήμα 7ο: Δημιουργία του fstab


Θα χρειαστεί να φτιάξουμε ενα fstab για το νέο σύστημα ώστε να γίνει δυνατή
η εκκίνηση του. Αυτό όμως είναι αρκετά εύκολο γιατί έχουμε τα labels:


# cd /media/etc
# vi fstab


Γράψτε τα παρακάτω:


#Device         Mountpoint      FStype   Options  Dump Pass#
/dev/gpt/gproot /               ufs      rw       1    1
/dev/gpt/gphome /usr/home       ufs      rw       1    2
/dev/gpt/gpswap none            swap     sw       0    0

Θα προσαρτήσουμε το home στο παραδοσιακό /usr/home του FreeBSD, οπότε μην
παραλείψετε να δημιουργήσετε τον κατάλογο:


# mkdir -p /media/usr/home

Βήμα 8ο: Επανεκκίνηση και ολοκλήρωση


Αποπροσαρτήστε το σύστημα αρχείων και επανεκκινήστε:


# cd /
# umount /media
# shutdown -r now


Βγάλτε το CD και αφήστε το σύστημα σας να εκκινήσει κανονικά. Μετά την
επανεκκίνηση, κάντε login ως root και:


  • Δημιουργήστε root password γιατί είναι κενό!
  • Εκτελέστε ln -s /usr/home /home
  • Φτιάξτε κατάλληλο rc.conf (Εντάξει, αντιγράψτε το από την άλλη σας εγκατάσταση)
  • Προσθέστε χρήστες, λογισμικό και οτιδήποτε άλλο θα γεμίσει ευχάριστα το μουντό σας απόγευμα
  • Χορέψτε το χορό της νίκης που απαλλαγήκατε μια για πάντα από το bsdinstall!