Sunday, October 23, 2011

Αναβάθμιση σε FreeBSD 9.0-RC1

Σήμερα το πρωί, το 9.0-RC1 έγινε διαθέσιμο μέσω του freebsd-update. Υπάρχουν όμως συγκεκριμένες οδηγίες, καθώς το ίδιο το πρόγραμμα freebsd-update χρειάζεται αλλαγές για να λειτουργήσει με το νέο packaging του FreeBSD 9.0. Μπορείτε να διαβάσετε την πλήρη ανακοίνωση εδώ. Ξεκίνησα λοιπόν την αναβάθμιση του pegasus, ενός από τα βασικά μου desktop μηχανήματα με (ευτυχώς) επαρκή επεξεργαστική ισχύ.

Προετοιμασία


Ο pegasus χρησιμοποιούσε 8.2-RELEASE-p4 64bit. Πριν την εκκίνηση του upgrade αποφάσισα να σβήσω όλα τα πακέτα - μετά από μια αναβάθμιση σε major έκδοση συνήθως απαιτείται να γίνουν rebuild τα πάντα (το γνωστό portupgrade -af το οποίο αλλάζει το κλίμα του πλανήτη). Αντί για αυτό - και καθώς τα πακέτα ήταν ήδη παλιά - αποφάσισα να τα σβήσω όλα και να βάλω νέα μετά την αναβάθμιση.

Το σβήσιμο των πακέτων μπορεί να γίνει με pkg_delete -a αλλά αυτό αργεί. Τη στιγμή που θέλουμε να τα σβήσουμε όλα, είναι προτιμότερο να διαγράψουμε όλο το /usr/local (αφού κρατήσουμε backup το /usr/local/etc) και να διαγράψουμε επίσης τα περιεχόμενα του /var/db/pkg. Όλα (σχεδόν) τα ports εγκαθιστούνται στο /usr/local και τους υποκαταλόγους του, οπότε αυτή είναι μια γρήγορη μέθοδος να τα... ξεφορτωθούμε. Μια εξαίρεση είναι το linux_base το οποίο αν το έχετε εγκατεστημένο, καλό θα είναι να το βγάλετε με τον παραδοσιακό τρόπο (pkg_delete) πριν συνεχίσετε.

Αν χρησιμοποιείται σαν default shell το bash, μη ξεχάσετε να το αλλάξετε σε ένα από τα shell που ανήκουν στο βασικό σύστημα (π.χ. csh):

chsh -s csh
Password:


Κάντε logout - login για να ενεργοποιηθεί. Έπειτα σβήστε τα πάντα αφού κρατήσετε backup το /usr/local/etc. Εννοείται φυσικά ότι θα κλείσετε το γραφικό περιβάλλον και τα προγράμματα που χρησιμοποιείτε πριν αρχίσετε το σβήσιμο!

# cd /usr/
# mv local/etc .
# rm -rf local
# mkdir local
# mv etc local
# cd /var/db
# rm -rf pkg
# mkdir pkg


Αυτό ήταν! Εκτελώντας pkg_info θα διαπιστώσετε ότι δεν έχετε κανένα εγκατεστημένο πακέτο. Μπορείτε τώρα να συνεχίσετε με το upgrade.

Το upgrade


Κάνουμε πρώτα την ενημέρωση του freebsd-update όπως αναγράφεται στο announcement:

# sed -i '' -e 's/=_/=%@_/' /usr/sbin/freebsd-update

και έπειτα εκτελούμε:

# freebsd-update -r 9.0-RC1 upgrade

Διαβάζουμε τα μηνύματα, εκτελούμε το merge των αρχείων όπου ζητείται και εκτελούμε:

# freebsd-update install

Κάνουμε επανεκκίνηση με το νέο πυρήνα (αν χρησιμοποιούσατε custom πυρήνα, βεβαιωθείτε ότι έχετε βάλει κατάλληλα αρθρώματα στο /boot/loader.conf για να λειτουργήσετε με το GENERIC), και εκτελούμε ξανά:

# freebsd-update install

Με αυτό το δεύτερο install γίνεται η εγκατάσταση του userland. Αν σας ζητήσει να κάνετε rebuild όλα τα ports και να το ξανατρέξετε, μπορείτε να το κάνετε απευθείας. Μη ξεχνάτε, δεν έχετε ports εγκατεστημένα!

# freebsd-update install

Εγκατάσταση του Source


Λόγω της αλλαγής packaging στο FreeBSD 9.0, το freebsd-update δεν αναβαθμίζει τον πηγαίο κώδικα στο /usr/src αν τον έχετε εγκατεστημένο (και φυσικά τον έχετε, γιατί δεν νοείται FreeBSD χωρίς source). Αντίθετα, τον σβήνει! Ελέγξτε αν έχει μείνει κάτι μέσα στο /usr/src που χρειάζεστε ή έχετε αλλάξει (κάποιο ξεχασμένο kernel configuration file ίσως; Είναι κακή ιδέα να τα αποθηκεύετε εκεί). Διαγράψτε τυχόν υπολείμματα και πάμε να εγκαταστήσουμε το νέο source:

# cd /usr
# rm -rf src
# mkdir src
# cd src
# fetch ftp://ftp.otenet.gr/pub/FreeBSD/releases/amd64/amd64/9.0-RC1/src.txz
# cd /
# tar xvpzf /usr/src/src.txz
# rm /usr/src/src.txz


Αυτό ήταν. Μπορείτε τώρα να δημιουργήσετε ξανά προσαρμοσμένο πυρήνα και να αρχίσετε να εγκαθιστάτε ξανά τις εφαρμογές σας. Καλό απόγευμα (και ξενύχτι) :)

Friday, October 21, 2011

Ελληνικά στην Κονσόλα του FreeBSD 9.X

Αν δεν το καταλάβατε από το προηγούμενο post μας, θα το καταλάβετε μόλις δοκιμάσετε μια εγκατάσταση του FreeBSD 9 (RC1 αυτή τη στιγμή). Το νέο bsdinstall παραλείπει κάποια βήματα ρυθμίσεων που υπήρχαν στο sysinstall. Μια "παρενέργεια" που δημιουργείται είναι να μην μπορούμε να γράψουμε Ελληνικά στην κονσόλα μας. Να θιυμίσουμε εδώ ότι για να γράψετε Ελληνικά στην κονσόλα θα πρέπει να ρυθμίσετε την κωδικοποίηση σε ISO8859-7. Αν σκοπεύετε να χρησιμοποιήσετε το σύστημα σας μόνο μέσα από X (ή έστω μέσω ssh από xterm) δεν χρειάζεστε τίποτα από τα παρακάτω και είναι καλύτερα να ρυθμίσετε την κωδικοποίηση σε UTF-8.

Αρχικές Ρυθμίσεις


Αν κατά τη διάρκεια της εγκατάστασης επιλέξατε το Ελληνικό πληκτρολόγιο των 101 πλήκτρων, θα έχετε την παρακάτω γραμμή στο /etc/rc.conf:

keymap="gr.us101.acc"

Καθώς καταλαβαίνετε το παραπάνω από μόνο του δεν επαρκεί για να έχετε Ελληνικά. Χρειάζεστε ακόμα τα παρακάτω:
  • Fonts που να μπορούν να δείξουν Ελληνικά στην κονσόλα. Το sysinstall είχε την αντίστοιχη ερώτηση, το bsdinstall όχι.
  • Terminal type στο /etc/ttys κατάλληλο για Ελληνικά. Είναι το cons25l7. Προσέξτε, είναι το Αγγλικό γράμμα "l" και όχι ο αριθμός "1". Και εδώ, το sysinstall είχε την αντίστοιχη ερώτηση και έκανε τη ρύθμιση, το bsdinstall όχι.
  • Να θέσετε τη μεταβλητή περιβάλλοντος LANG σε el_GR.ISO8859-7. Αυτή είναι μια ρύθμιση που πρέπει να κάνετε στα αρχεία ρυθμίσεων του κελύφους σας. Το σημείο αυτό δεν αλλάζει από πριν.

Ρυθμίσεις Fonts


Το sysinstall υπάρχει ακόμα στο βασικό σύστημα! Αν θέλετε μπορείτε να το εκτελέσετε ως root και να επιλέξετε configure - console - font και ISO8859-7. Αλλά δεν χρειάζεται να το κάνετε στα αλήθεια. Απλά προσθέστε τις παρακάτω γραμμές στο /etc/rc.conf:

font8x8="iso07-8x8"
font8x14="iso07-8x14"
font8x16="iso07-8x16"


Terminal Type


Ίσως σκεφτείτε να εκτελέσετε το sysinstall και να επιλέξετε το terminal type. Μην το κάνετε, γιατί αν και το sysinstall δεν θα διαμαρτυρηθεί, δεν πρόκειται να αλλάξει το /etc/ttys. Θα πρέπει να το επεξεργαστείτε χειροκίνητα και να αλλάξετε το xterm με cons25l7. Θα πρέπει να κάνετε την αλλαγή στο ttyv0 και σε οποιαδήποτε άλλο virtual terminal θέλετε. Παρακάτω βλέπετε ένα παράδειγμα για ttyv0:

ttyv0 "/usr/libexec/getty Pc" cons25l7 on secure


Ρύθμιση Environment Variable


Αυτό είναι εύκολο και είναι το ίδιο με τις προηγούμενες εκδόσεις του FreeBSD. Ανάλογα με το κέλυφος σας, θα χρειαστεί να προσθέσετε την γραμμή:

export LANG=el_GR.ISO8859-7

για κελύφη όπως το bash ή

setenv LANG el_GR.ISO8859-7

για κελύφη όπως το csh. Η γραμμή θα πρέπει να μπει στο κατάλληλο αρχείο ρυθμίσεων του κελύφους σας (π.χ. το .profile).

Έλεγχος Λειτουργίας


Αφού κάνετε τα παραπάνω, μπορείτε να δοκιμάσετε τα Ελληνικά στην κονσόλα. Είτε επανεκκνίνηστε το μηχάνημα σας, είτε την υπηρεσία syscons:

# service syscons restart

Μη ξεχάσετε να κάνετε logout-login (η ενδεχομένως source το .profile) για να ενεργοποιηθεί η μεταβλητή περιβάλλοντος. Τα Ελληνικά στην κονσόλα αλλάζουν με ALT+SPACE. Καλή τύχη!

Sunday, October 16, 2011

bsdinstall: τα καλά, τα κακά, τα άσχημα

Όχι το FreeBSD 9.0 δεν έχει κυκλοφορήσει ακόμα. Γι'αυτό και δεν γράφει 9.0-RELEASE o τίτλος. Ωστόσο είμαστε στο BETA3 (και σύντομα στο RC1) και νομίζω είναι ευκαιρία να δούμε λίγο το νέο installer που αντικαθιστά το "αγαπημένο μας" sysinstall και μερικές ακόμα διαφορές που υπάρχουν στην εγκατάσταση. Στο FreeBSD 9, το νέο πρόγραμμα εγκατάστασης λέγεται bsdinstall. Στην πραγματικότητα το bsdinstall είναι μια σειρά από scripts και δεν έχει εξαρτήσεις πέρα από το βασικό σύστημα. Μπορείτε να διαβάσετε το πλήρες κεφάλαιο εγκατάστασης του FreeBSD 9 στο Ελληνικό Εγχειρίδιο του FreeBSD. Δεν θα μιλήσουμε εδώ για τη διαδικασία της εγκατάστασης - αφού το Εγχειρίδιο την περιγράφει μια χαρά. Θα δούμε όμως τι μας αρέσει (και τι όχι) στο νέο installer.

Tα Kαλά

Όχι δεν είναι κάποιος fancy installer, μη φαντάζεστε. Το bsdinstall εξακολουθεί να είναι text mode με τους γνωστούς διαλόγους από το libdialog. Τι καλό όμως έχει σε σχέση με το sysinstall;

  • Η διαδικασία προχωράει σειριακά: Δεν υπάρχει το γνωστό πρόβλημα του αρχάριου χρήστη που εγκλωβίστηκε να κάνει κύκλους στο sysinstall.
  • Υπάρχει η δυνατότητα χρήσης του μέσου εγκατάστασης ως Live CD. Μη φανταστείτε γραφικό περιβάλλον βέβαια αλλά Live console με πλήρεις δυνατότητες (full multiuser σύστημα με πλήρες base).
  • Το bsdinstall μπορεί να δημιουργήσει και να χρησιμοποιήσει κατατμήσεις gpart και όχι μόνο το παλιό κακό MBR. Επίσης το προεπιλεγμένο σύστημα αρχείων είναι το UFS2 με SoftUpdates Journaling. (SU-J). To SU-J είναι ένα νέο χαρακτηριστικό στο FreeBSD 9. Να θυμίσουμε ότι το journaling υπάρχει ήδη στο FreeBSD, αλλά μέχρι και τη σειρά 8 που έχουμε τώρα, δεν περιορίζεται στα SoftUpdates αλλά ενεργεί σε όλα τα δεδομένα. Αυτό το κάνει αισθητά πιο αργό από το νέο SU+J - και χρειάζονταν και αρκετά βήματα για τη χρήση του. Φαίνεται επίσης ότι το bsdinstall θα μπορεί να κάνει εγκατάσταση και σε ZFS (yes!)
  • Το bsdinstall δίνει δυνατότητα ρύθμισης και ασύρματου δικτύου με τη βοήθεια απλών διαλόγων.
  • Το bsdinstall είναι modular και scriptable.

Tα κακά

Καθώς το bsdinstall είναι ακόμα στην αρχή του, αναμένεται να έχει διάφορα bugs. Το βασικότερο πρόβλημα που βλέπω αυτή τη στιγμή είναι η έλλειψη βοήθειας και προεπιλογών στους διαλόγους. Για παράδειγμα στην επιλογή συστήματος αρχείων, φαίνεται ο παρακάτω διάλογος:

Τώρα, αν θέλαμε να είμαστε φιλικοί προς το χρήστη θα έπρεπε για παράδειγμα να υπάρχει drop-down επιλογή για τα filesystems. Πως μπορώ εγώ να μαντέψω τι filesystems είναι δεκτά σε αυτό το ωραίο πεδίο "Type:"; Βέβαια υπάρχει μια γραμμή βοήθειας με την προτροπή e.g freebsd-ufs, freebsd-swap. Αλλά αυτό υπονοεί ότι μάλλον υπάρχουν και άλλα δεκτά filesystems. Π.χ. freebsd-zfs. Η μόνη λύση είναι το trial and error.

Κάποιοι άλλοι διάλογοι, είναι λιγότερο φιλικοί και από το αρχικό sysinstall. Για παράδειγμα, αν απαντήσετε yes στο παρακάτω:

θα βρεθείτε να εκτελείτε το adduser script από την κονσόλα. Όχι ότι δεν μας αρέσει το adduser αλλά θα φαίνεται σαν κινέζικα στον αρχάριο εγκαταστάτη (αν και εξηγείται μια χαρά στο FreeBSD Handbook). Επίσης δεν παρέχεται πλέον η δυνατότητα να προσθέσουμε ομάδες (groups) αν και αυτό μάλλον δεν είναι πολύ σημαντικό.

Τη δεδομένη στιγμή δεν γνωρίζω αν το bsdinstall θα αποκτήσει και κάποια διαχείριση πακέτων όπως το sysinstall. Καθώς ξέρετε τα BETA μέσα εγκατάστασης δεν έχουν έτσι και αλλιώς έτοιμα πακέτα. Δεν φαίνεται πάντως να υπάρχει κάποια τέτοια δυνατότητα στο παρόν bsdinstall.

Τα Άσχημα


Το να βλέπω διαλόγους φτιαγμένους με συν (+) πλην (-) και κάθετες μπάρες (|) το 2011, μου φαίνεται κάπως. Maybe it's just me :)