Αυτό το commit περιλαμβάνεται σε:
infl00p 2022-03-23 20:14:33 +02:00
commit 8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές

65
content/articles/26/01_editorial.md Κανονικό αρχείο

@ -0,0 +1,65 @@
+++
title = 'Editorial'
date = '2000-09-01T00:00:00Z'
description = ''
author = 'Παπαδογιαννάκης Βαγγέλης(mailto:papas@hellug.gr)'
issue = ['Magaz 26']
issue_weight = 1
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Καλώς ορίσατε στο **Magaz**\... Επίσιμη ονομασία τεύχους, \`\`τα κεφάλια μέσα\'\'*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Τέρμα το διάλειμα, τα κεφάλια μέσα λοιπόν\... Κρίμα που και αυτό το καλοκαίρι πέρασε τόσο άδοξα, και για άλλη μια χρονιά δεν καταλάβαμε διακοπές. Όσο μακριά και
αν ήταν η Πορτογαλία, σας διαβεβαιώ ότι δεν ήταν αρκετή, για να με κάνει να ξεκουραστώ. Αλλά, ω γέγoνε γέγoνε και back to black και άστα να πάνε\... Ελπίζω
τουλάχιστον εσείς να περάσατε καλύτερα.
Στα θέματά μας τώρα. \`Εχουμε τη [συνέχεια του άρθρου περι XBASIC](02_xbasic3.html) από τον [Κώστα Τσακάλογλου](mailto:tsakf@helug.gr). Αισίως έχουμε φτάσει
στην 3η συνέχεια του άρθρου, με προοπτικές για ακόμα περισσότερα. Αν πρώτη φορά πέσατε στο magaz, σας προτείνω να αρχίσετε από την αρχή της σειράς εδώ και να
συνεχίσετε μέσα από όλη τη σειρά.
Φιλοξενούμε επίσης ένα άρθρο από τον [Θέμη Παπασσιλέκα](mailto:panzer@finecon.gr) που αναφέρεται στο linux που θα πάρει τη θέση του linux, δηλαδή το linux 2.4.
Μια περιεκτική ανάλυση του τι καινούριου μας έρχεται με τον νέο πυρήνα, που θα βοηθήσει να δούμε τις νέες δυνατότητες του αγαπημένου μας λειτουργικού. Το άρθρο
βρίσκεται [εδώ](04_kernel24.html), και θα σας πρότεινα να το διαβάσετε αμέσως!
Από τον [DJ Art](mailto:djart@hellug.gr) φιλοξενούμε ένα [άρθρο που θα βοηθήσει τους νέους μας αρθρογράφους](03_beginners.html) να προσανατολιστούν στον
αστερισμό του linux. Ένα άρθρο που περιέχει πολλές αναφορές σε πηγές που είναι απαραίτητες για τον καθένα που ξεκινά με το linux. Εκεί θα βρείτε ό,τι θέλετε,
από υποστήριξη ελληνικών μέχρι και εξειδικευμένα πράγματα και τεχνικές. Έχουν μαζευτεί οι περισσότερες πηγές για τους Έλληνες χρήστες του linux. Οι νέοι χρήστες
λοιπόν, ας αρχίσουν το διάβασμα :)
Για το τέλος, σας άφησα το καλύτερο :) Ο [Μιχάλης Καμπριάνης](mailto:kabrianis@hellug.gr) μας έγραψε [ένα φοβερό άρθρο](05_lfs.html) για το πώς να στήσουμε ένα
minimum μηχανάκι με **linux**, ώστε να μπορούμε να το προσαρμόσουμε στις ανάγκες μας, χωρίς να είμαστε κρεμασμένοι απο τα \... της κάθε διανομής και του κάθε
προγράμματος διαχείρισης πακέτων. Αρχίζουμε λοιπόν πολύ σωστά με μια minimum εγκατάσταση, και στη συνέχεια προσθέτουμε όσα μας είναι πραγματικά **απαραίτητα**.
Στο άρθρο αυτό ο [Μιχάλης](mailto:kabrianis@hellug.gr) θα μας βοηθήσει να το κάνουμε και θα μας καθοδηγήσει μέσα από απλά βήματα στην ολοκλήρωση και επιτυχή
εγκατάσταση μιας minimum εγκατάστασης.
Μια πολύ ενδιαφέρουσα ιδέα του νέου αρθρογράφου [Βραχνάκη Γιώργου](mailto:gi0rgos@pathfinder.gr) ήταν να κάνουμε μια έρευνα ώστε να δούμε πού \`\`πάει\'\' το
Ελληνικό Internet. Γράψαμε λοιπόν ένα mail σε κάθε support@(ISP).gr, ρωτώντας τους μερικά πράγματα. Αυτά είναι:
Τι λειτουργικό χρησιμοποιούν και με ποιo λογισμικό τα μηχανήματά τους. Ειδικότερα:
- web servers
- mail servers
- news servers
- dns servers
- authentication servers (Τι είναι και τι τρέχουν)
Όπως ήταν αναμενόμενο, δε μας απάντησαν όλοι, τους τρώγαμε βλέπετε τον πολύτιμο χρόνο τους. Και αυτό το σημείο θέλω να σταθώ και να το σχολιάσω: Κακώς δε μας
απάντησαν, γιατί με αυτόν τον τρόπο ουσιαστικά δυσφημίζουν την εταιρία τους και δεν παρέχουν υποστήριξη (υπόψιν ότι δε γύρισε κανένα mail πίσω, άρα το πήραν
όλοι). Αλλά αυτό είναι άλλου παπά ευαγγέλιο (Καμπριάνη με ακούς;)
Τέλος πάντων, τα αποτελέσματα είναι ενδιαφέροντα, και φυσικά αξίζουν περαιτέρω ανάλυσης, πράγμα το οποίο δυστυχώς δεν κάναμε λόγω έλλειψης χρόνου. Εμείς, από τη
μεριά μας, προσπαθήσαμε να βγάλουμε κάποια αποτελέσματα για όσους δε μας έστειλαν απαντήσεις από τη μια με τη βοήθεια του [netcraft](http://www.netcraft.com)
για το web server και το OS του, και από την άλλη με telnet στις πόρτες 25 για το mail και την 119 για τα news, όσα φυσικά μας άφηναν, γιατί είναι γνωστό ότι τα
news είναι ελεύθερα για τους συνδρομητές τους και μόνο.
Μια και το εγχείρημα, όπως είπα και παραπάνω, παρουσίαζει πολύ ενδιαφέρον, το άρθρο αυτό δε θα δημοσιευτεί αυτό το μήνα, αλλα τον επόμενο. Μέχρι τότε, θα
ξαναστείλουμε το mail σε όσους δεν απάντησαν, για μια ακόμα ευκαιρία. Στο επόμενο τεύχος λοιπόν, θα υπάρχει και μια πλήρης στατιστική ανάλυση, με ποσοστά και
αριθμούς.
Θα ήθελα να ευχαριστήσω τους admin που απάντησαν, και να τους ζητήσω συγνώμη που δε δημοσιεύεται σε αυτό το τεύχος ελπίζοντας στην κατανόησή τους.
Καλή ανάγνωση, και περάστε μια βόλτα από τη [σελίδα της ψηφοφορίας](http://magaz.hellug.gr/cgi-bin/poll26.cgi), ώστε να μας βοηθήσετε να εξαγάγουμε συμπεράσματα
για το πώς θέλετε το **magaz** σας! Η ψηφοφορία αυτού του μήνα αναφέρεται στο πόσο και γιατί χρησιμοποιείτε linux

357
content/articles/26/02_xbasic3.md Κανονικό αρχείο

@ -0,0 +1,357 @@
+++
title = 'Xbasic'
date = '0000-09-01T00:00:00Z'
description = ''
author = 'Κώστας Τσακάλογλου(mailto:tsakf@hellug.gr)'
issue = ['Magaz 26']
issue_weight = 2
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Μία γλώσσα προγραμματισμού Basic που έχει αρκετά στοιχεία C. Μέρος ΙΙΙ*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Σε αυτό το τεύχος θα συνεχίσουμε την αναφορά στα δομικά στοιχεία της Xbasic. θα αναφερθούμε στις εντολές, τις πράξεις και τους τελεστές. θα αναλύσουμε και ένα
παράδειγμα για να κατανοήσουμε καλύτερα την χρήση των πράξεων και των τελεστών.
**1. Εντολές**
----------------------------------------
**2. Γραμμές κώδικα**
-----------------------------------------------
**3. Τελεστές**
-----------------------------------------
- [3.1 Ο τελεστής εκχώρησης (=)](#ss3.1)
- [3.2 Τελεστές μιας παραμέτρου](#ss3.2)
- [3.3 Τελεστές δύο παραμέτρων](#ss3.3)
- [3.4 Προτεραιότητα τελεστών](#ss3.4)
- [3.5 Είδη τελεστών](#ss3.5)
- [3.6 Ομάδες τελεστών](#ss3.6)
- [3.7 Προτεραιότητα τελεστών](#ss3.7)
**4. Παράδείγμα χρήσης αριθμητικών τελεστών.**
------------------------------------------------------------------------
**5. Επίλογος 3ου μέρους:**
-----------------------------------------------------
### [1. Εντολές]{#s1}
Οι εντολές είναι λέξεις που προσδιορίζουν την εκτέλεση μιας πράξης, ακολουθούμενες από στοιχεία της γλώσσας που ταιριάζουν στην κάθε εντολή. Γενικά προτιμάται
να χρησιμοποιούμε συναρτήσεις της γλώσσας αντί για εντολές. Οι εντολές όμως έχουν δύο πλεονεκτήματα.
Το πρώτο είναι ότι δεν εκτελούνται επιπλέον εντολές που απαιτούνται για την αποθήκευση και επαναφορά των παραμέτρων, ώστε μόλις τελειώσει η εκτέλεση της
συνάρτησής τους να επιστρέψουμε στην προηγούμενη κατάσταση. Αυτό δίνει μεγαλύτερη ταχύτητα στο πρόγραμμά μας. Το δεύτερο είναι ότι δεν περιοριζόμαστε από
ορισμούς συναρτήσεων και έτσι κάθε εντολή έχει την σύνταξή της που είναι καθαρή και πιο κατανοητή από μία λίστα παραμέτρων.
**Χρήση κενών και TABS**\
Γενικά μπορούμε να χρησιμοποιούμε τα κενά ή τα TABS για να μορφοποιούμε το πρόγραμμά μας εκτός από μια εξαίρεση. Ότι βρίσκεται ανάμεσα σε εισαγωγικά και
ορίζεται σαν περιεχόμενο αλφαριθμητικής μεταβλητής. Εκεί τα κενά παίζουν ρόλο και, αν υπάρχουν θα εμφανίζονται στα περιεχόμενα της μεταβλητής ενώ οπουδήποτε
αλλού αγνοούνται.
Παρακάτω θα δούμε δυο παραδείγματα όπου φαίνεται πόσο ευανάγνωστο γίνεται ένα πρόγραμμα όταν χρησιμοποιήσουμε κενά και TABS. Στην πρώτη περίπτωση δυσκολευόμαστε
να βρούμε πού αρχίζει και πού τελειώνει η επανάληψη των εντολών.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
FOR i1=1 to 1000
PRINT i1
IF i1>500 THEN PRINT "i1>500"
NEXT i1
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Ενώ μόλις γίνει η διαμόρφωση με τα κενά είναι εύκολο να δούμε τις εντολές που επαναλαμβάνονται εύκολα.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
FOR i1=1 to 1000
PRINT i1
IF i1>500 THEN PRINT "i1>500"
NEXT i1
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Τα πράγματα δυσκολεύουν, όταν οι εντολές που επαναλαμβάνονται είναι πάρα πολλές και δε χωράνε σε μια οθόνη. Τότε η μορφοποίηση είναι απαραίτητη, για να
μπορέσουμε να βγάλουμε κάποια άκρη, όταν εκ των υστέρων ξανακοιτάξουμε το πρόγραμμα μετά από καιρό.
### [2. Γραμμές κώδικα]{#s2}
Οι γραμμές του κώδικα ξεχωρίζουν με το ENTER που υπάρχει στο τέλος κάθε γραμμής. Στην ίδια γραμμή κώδικα μπορούν να υπάρχουν περισσότερες από μία εντολές με
διαχωριστικό το \':\'. Έτσι, για παράδειγμα, μπορούμε να έχουμε τις εντολές, a=a+1:PRINT a στην ίδια γραμμή εφ\' όσον τις ξεχωρίσουμε με το διαχωριστικό \':\'.
Οι γραμμές του κώδικα μπορούν να έχουν ονόματα ώστε να είναι δυνατή μετάβαση της εκτέλεσης του προγράμματος στην συγκεκριμένη γραμμή.
### [3. Τελεστές]{#s3}
Οι τελεστές είναι σύμβολα που με την χρήση τους γίνονται πράξεις και ενέργειες όπου συμμετέχουν μία ή και περισσότερες παράμετροι. όπως στην άλγεβρα. Στην
Xbasic υπάρχουν τελεστές αριθμητικοί, λογικοί, σε επίπεδο bit και τελεστές διευθύνσεων. Ο κάθε ένας έχει την προτεραιότητά του και ανήκει σε μια τάξη που
ορίζει:
- τους δεκτούς τύπους παραμέτρων
- τον τύπο του αποτελέσματος και,
- τους κανόνες μετατροπής των τύπων για την εκτέλεση μιας πράξης
### [3.1 Ο τελεστής εκχώρησης (=)]{#ss3.1}
Αυτόν τον τελεστή τον χρησιμοποιούμε για να εκχωρήσουμε μια τιμή σε μια μεταβλητή Π.Χ. a1=10
### [3.2 Τελεστές μιας παραμέτρου]{#ss3.2}
Οι τελεστές μιας παραμέτρου έχουν μόνο μια παράμετρο δεξιά από τον τελεστή. Τέτοιο παράδειγμα είναι ο τελεστής - δηλώνει το αρνητικό αριθμητικό πρόσημο Π.Χ.
-10, -a1 -(a+b). Στην τελευταία περίπτωση το άθροισμα (a+b) επειδή περικλείεται από παρενθέσεις θεωρείται μία παράμετρος.
### [3.3 Τελεστές δύο παραμέτρων]{#ss3.3}
Οι τελεστές αυτοί υπολογίζουν τις δύο τιμές που τους δίνονται σαν παράμετροι και δίνουν ένα αποτέλεσμα. Όταν οι παράμετροι είναι διαφορετικού τύπου πρώτα
μετατρέπεται η μια στο είδος της άλλης και μετά εκτελείται η πράξη.
### [3.4 Προτεραιότητα τελεστών]{#ss3.4}
Όπως και στην άλγεβρα έτσι και εδώ οι τελεστές έχουν προτεραιότητα. Οι τελεστές με την μεγαλύτερη προτεραιότητα εκτελούνται πρώτα και τελευταίοι εκτελούνται
αυτοί που έχουν την μικρότερη προτεραιότητα. Αν για παράδειγμα γράψουμε x1=a+b\*c τότε, πρώτα θα υπολογιστεί το b\*c και μετά το αποτέλεσμα θα προστεθεί στο a.
Με την προτεραιότητα μειώνονται οι ανάγκες χρήσης παρενθέσεων για τον καθορισμό του τρόπου υπολογισμού των πράξεων. Οι παρενθέσεις χρειάζονται όταν θέλουμε να
ορίσουμε εμείς την σειρά εκτέλεσης. Δηλ.
- x1=a+b\*c όπου είναι το ίδιο με το να γράφαμε x1=a+(b\*c) ή
- x1=(a+b)\*c όπου εξαναγκάζουμε να γίνει πρώτα το άθροισμα και μετά ο πολλαπλασιασμός.
### [3.5 Είδη τελεστών]{#ss3.5}
Οι αριθμητικοί τελεστές έχουν την ίδια χρήση που έχουν και στην άλγεβρα. Κάνουν πράξεις μεταξύ αριθμητικών παραμέτρων και παράγουν ένα αριθμητικό αποτέλεσμα.
Οι τελεστές επιπέδου bit κάνουν πράξεις σε ακέραιους αριθμούς και παράγουν ακέραιους αριθμούς σαν αποτέλεσμα, αλλά λειτουργούν σε επίπεδο bit χωρίς τα
κρατούμενα Carry και Borrow. Οι πράξεις με bit έχουν να κάνουν περισσότερο με την εσωτερική αρχιτεκτονική του επεξεργαστή (processor) και είναι γνωστές στους
προγραμματιστές που έχουν δουλέψει C και Assembly. Για τον μέσο χρήστη / προγραμματιστή συνήθως οι τελεστές επιπέδου bit δεν χρειάζονται αλλά τους αναφέρω εδώ
για να δείξω την δύναμη που έχει η Xbasic να φτάνει σε τόσο χαμηλό επίπεδο. Έτσι κάποιος που θέλει να κάνει μερικά πράγματα που οι γνωστές Basic δεν έχουν, και
χρειαζόταν να χρησιμοποιήσει την C ή την Assembly τώρα με την Xbasic μπορεί να παραμείνει στην Basic και να κάνει αυτά που θέλει.
Οι λογικοί τελεστές κάνουν πράξη σε αριθμητικές ή και αλφαριθμητικές μεταβλητές και δίνουν ένα λογικό αποτέλεσμα τύπου Αληθές. \[\$\$TRUE(-1)\] ή Ψευδές
\[\$\$FALSE(0)\].
### [3.6 Ομάδες τελεστών]{#ss3.6}
#### Ομάδα 1
Η ομάδα 1 των τελεστών περιλαμβάνει τους λογικούς τελεστές && (AND), \|\| (OR) και \^\^ (XOR).
#### Ομάδα 2
Η ομάδα 2 των τελεστών περιλαμβάνει τους τελεστές = (ίσο),\<\> (διάφορο),\< (μικρότερο), \<=(μικρότερο ή ίσο), \>= (μεγαλύτερο ή ίσο), \> (μεγαλύτερο) και τα
αντίστοιχά τους ==, !=, !\>=, !\>, !\<, !\<=. Οι παράμετροί τους μπορεί να είναι Ακέραιοι, δεκαδικοί ή αλφαριθμητικές μεταβλητές. Οι αλφαριθμητικές μεταβλητές
συγκρίνονται χαρακτήρα, χαρακτήρα από την αρχή μέχρι το τον πρώτο διαφορετικό χαρακτήρα. Έτσι βγαίνει το αποτέλεσμα της σύγκρισης. Το αποτέλεσμα είναι πάντα
XLONG ή \$\$TRUE ή \$\$FALSE.
#### Ομάδα 3
Η ομάδα 3 περιλαμβάνει τους τελεστές επιπέδου Bit AND, XOR και OR με τα αντίστοιχα σύμβολά τους &,\^,\|. Οι παράμετροί τους μπορεί να είναι ακέραιοι ή άλλες
πράξεις. Το αποτέλεσμά τους είναι πάντα του ίδιου τύπου με τον τύπο των παραμέτρων τους.
#### Ομάδα 4
Η ομάδα 4 περιλαμβάνει τους αριθμητικούς τελεστές +, -, \*, /, \*\*. Οι παράμετροι μπορεί να είναι ακέραιοι ή δεκαδικοί. Το αποτέλεσμα είναι πάντα τύπος
μεταβλητής της υψηλότερης ακρίβειας από τις μεταβλητές των παραμέτρων.
#### Ομάδα 5
Στην ομάδα 5 ανήκει ο τελεστής + που ανάλογα με τις παραμέτρους του είναι είτε αριθμητικός τελεστής είτε τελεστής συγχώνευσης δύο αλφαριθμητικών μεταβλητών. Οι
παράμετροί του μπορεί να είναι, ή υποχρεωτικά και οι δύο αριθμοί, ή υποχρεωτικά και οι δύο αλφαριθμητικές μεταβλητές. Το αποτέλεσμα είναι, είτε αριθμός, είτε
αλφαριθμητικά μεταβλητή ανάλογα με τις παραμέτρους που έχουν δοθεί.
#### Ομάδα 6
Σε αυτή την ομάδα έχουμε τους τελεστές MOD και \\. O MOD δίνει το υπόλοιπο της ακέραιας διαίρεσης των παραμέτρων του. Ο \\ δίνει το πηλίκο της ακέραιας
διαίρεσης των παραμέτρων του. Το αποτέλεσμα των τελεστών αυτής της ομάδας είναι πάντα ακέραιο.
#### Ομάδα 7
Εδώ έχουμε του τελεστές \<\<, \>\>, \<\<\<.\>\>\>. Αυτοί οι τελεστές έχουν την ιδιότητα να μεταφέρουν τα bits των παραμέτρων τους ορισμένες θέσεις αριστερά ή
δεξιά. Οι παράμετροι τους μπορεί να είναι ακέραιοι ή πράξεις. Το αποτέλεσμά τους είναι το ίδιο με τον τύπο της αριστερής παραμέτρου.
#### Ομάδα 8
Η ομάδα αυτή περιλαμβάνει τους τελεστές μιας παραμέτρου + και -.Η παράμετρος μπορεί να είναι ακέραιος αριθμός ή δεκαδικός. Το αποτέλεσμα είναι του ίδιου τύπου
με την παράμετρο.
#### Ομάδα 9
Εδώ έχουμε τους τελεστές ! και !!. Στον τελεστή ! το αποτέλεσμα είναι λογικό \$\$TRUE αν η παράμετρος έχει τιμή 0 και \$\$FALSE όταν έχουμε οποιαδήποτε άλλη
τιμή. Στον τελεστή !! το αποτέλεσμα είναι λογικό \$\$FALSE αν η παράμετρος έχει τιμή 0 και \$\$TRUE όταν έχουμε οποιαδήποτε άλλη τιμή.
#### Ομάδα 10
Ένας μόνο τελεστής ανήκει στην ομάδα αυτή και είναι ο   (ΝΟΤ) σε επίπεδο bit.Η παράμετρος μπορεί να είναι ή ακέραιος αριθμός ή το όνομα μιας συνάρτησης. Το
αποτέλεσμα είναι πάντα XLONG.
#### Ομάδα 11
Η ομάδα αυτή περιλαμβάνει τους τελεστές μιας παραμέτρου & και && πού δίνουν σαν αποτέλεσμα μια XLONG διεύθυνση. Η παράμετρος του τελεστή & μπορεί να είναι
αριθμητική ή αλφαριθμητική μεταβλητή, πίνακας ή και στοιχείο πίνακα. Η παράμετρος του τελεστή && μπορεί να είναι αλφαριθμητική μεταβλητή, πίνακας αλφαριθμητικών
μεταβλητών.
### [3.7 Προτεραιότητα τελεστών]{#ss3.7}
**Προτεραιότητα 12**\
&, && της ομάδας 11\
NOT της ομάδας 10\
!, !! της ομάδας 9\
+, - της ομάδας 8
**Προτεραιότητα 11**\
\<\<\<, \>\>\>, \<\<, \>\> της ομάδας 7
**Προτεραιότητα 10**\
\*\* της ομάδας 4
**Προτεραιότητα 9**\
\*, / της ομάδας 4 MOD, \\ της ομάδας 6
**Προτεραιότητα 8**\
+ της ομάδας 5 - της ομάδας 4
**Προτεραιότητα 7**\
& ή AND της ομάδας 3
**Προτεραιότητα 6**\
XOR \^ και OR \| της ομάδας 3
**Προτεραιότητα 5**\
\>, \>=, \<, \<= της ομάδας 2
**Προτεραιότητα 4**\
\<\>, = ή !=, == της ομάδας 2
**Προτεραιότητα 3**\
& Λογικό AND της ομάδας 1
**Προτεραιότητα 2**\
\^\^ Λογικό XOR και \|\| Λογικό OR της ομάδας 1
**Προτεραιότητα 1**\
= τελεστής εκχώρησης.
### [4. Παράδείγμα χρήσης αριθμητικών τελεστών.]{#s4}
Στο παρακάτω παράδειγμα θα χρησιμοποιήσουμε τους τελεστές \\ και MOD εφ\' όσον οι τελεστές + - \* και / μας είναι γνωστοί από την αριθμητική και νομίζω ότι δεν
έχει έννοια να επεκταθούμε σε αυτούς. Επαναλαμβάνω ότι δεν χρείαζεται να γράψουμε τους αριθμούς γραμμής απλά τους έχω βάλει για να ξέρουμε σε ποιες γραμμές
αναφερόμαστε κάθε φορά.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
1.'
2.' ####################
3.' ##### PROLOG #####
4.' ####################
5.'
6.PROGRAM "progname" ' 1-8 char program/file name without .x or any .extent
7.VERSION "0.0000" ' version number - increment before saving altered program
8.'
9.' You can stop the PDE from inserting the following PROLOG comment lines
10.' by removing them from the prolog.xxx file in your \xb\xxx directory.
11.'
12.' Programs contain: 1: PROLOG - no executable code - see below
13.' 2: Entry function - start execution at 1st declared func
14.' * = optional 3: Other functions - everything else - all other functions
15.'
16.' The PROLOG contains (in this order):
17.' * 1. Program name statement PROGRAM "progname"
18.' * 2. Version number statement VERSION "0.0000"
19.' * 3. Import library statements IMPORT "libName"
20.' * 4. Composite type definitions TYPE <typename> ... END TYPE
21.' * 5. Internal function declarations DECLARE/INTERNAL FUNCTION Func (args)
22.' * 6. External function declarations EXTERNAL FUNCTION FuncName (args)
23.' * 7. Shared constant definitions $$ConstantName = literal or constant
24.
25.$$secspermin = 60
26.$$secsperhr = 3600
27.
28.' * 8. Shared variable declarations SHARED variable
29.'
30.' ****** Comment libraries in/out as needed *****
31.'
32.' IMPORT "xma" ' Math library : SIN/ASIN/SINH/ASINH/LOG/EXP/SQRT...
33.' IMPORT "xcm" ' Complex library : complex number library (trig, etc)
34. IMPORT "xst" ' Standard library : required by most programs
35.' IMPORT "xgr" ' GraphicsDesigner : required by GuiDesigner programs
36.' IMPORT "xui" ' GuiDesigner : required by GuiDesigner programs
37.'
38.
39.
40.DECLARE FUNCTION Entry ()
41.'
42.'
43.' ######################
44.' ##### Entry () #####
45.' ######################
46.
47.Programs contain:
48.' 1. A PROLOG with type/function/constant declarations.
49.' 2. This Entry() function where execution begins.
50.' 3. Zero or more additional functions.
51.'
52.FUNCTION Entry ()
53. USHORT seconds,minutes,hours,secleft,minleft,nofsec
54. STRING ans
55.
56. ans=INLINE$("Enter number of seconds :")
57. nofsec=USHORT(ans)
58.
59. hours = nofsec \ $$secsperhr
60. minutes = nofsec \ $$secspermin
61. minleft = minutes MOD $$secspermin
62. secleft = nofsec MOD $$secspermin
63.
64. PRINT nofsec;" Seconds are..."
65. PRINT hours;" Hours ";minleft;" min ";secleft;" seconds"
66.
67.
68.END FUNCTION
69.END PROGRAM
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Οι γραμμές 1-37 αποτελούν το κομμάτι **PROLOG** του προγράμματός μας όπου εκεί ορίζονται οι σταθερές, οι κοινές μεταβλητές για όλο το πρόγραμμα οι τυχόν τύποι
μεταβλητών και οι βιβλιοθήκες που χρειάζονται, στο τέλος μπαίνουν οι ορισμοί των συναρτήσεων. Στο συγκεκριμένο παράδειγμα στις γραμμές 25 και 26 ορίζουμε τις
σταθερές \$\$secspermin και \$\$secsperhr. Στην γραμμή 34 έχουμε δώσει εντολή να περιλιφθεί η βιβλιοθήκη xst και στην γραμμή 40 έχει μπεί ο ορισμός της
συνάρτησης ENTRY.
Οι γραμμές 53 και 54
\
Σε αυτές τις γραμμές ορίζουμε το είδος των μεταβλητών που θα χρησιμοποιήσουμε στην συνάρτηση.
Η γραμμή 56
\
Σε αυτή την γραμμή καλούμε την συνάρτηση INLINE\$ που την γνωρίσαμε από το προηγούμενο παράδειγμα.
Η γραμμή 57\
Εδώ γίνεται μετατροπή της μεταβλητής ans που είναι αλφαριθμητική σε αριθμητική για να μπορούν να γίνουν οι πράξεις παρακάτω.
Οι γραμμές 59 και 60
Βλέπουμε την χρήση του τελεστή \\ (ακέραια διαίρεση) έστι σαν αποτέλεσμα παίρνουμε το ακέραιο πηλίκο της διαίρεσης.
Οι γραμμές 61 και 62\
Η χρήση του τελεστή MOD για να βρούμε τα υπόλοιπα των διαιρέσεων.
Οι γραμμές 64 και 65
Με την χρήση της εντολής PRINT δίνουμε εντολή στην Xbasic να εμφανίσει τα αποτελέσματα στην κονσόλα.
### [5. Επίλογος 3ου μέρους:]{#s5}
Με τα παραδείγματα που είδαμε μέχρι τώρα έχουμε δεί τα βασικά μέρη που αποτελείται ένα πρόγραμμα Xbasic. Κάναμε μια σύντομη περιγραφή για τις μεταβλητές, τις
σταθερές και κάποιους τελεστές. Στο επόμενο θα συνεχίσουμε με παράδειγμα χρήσης των λογικών τελεστών και την εντολή IF. Γι αυτούς που έχουν κάποια εμπειρία από
άλλες Basic, να προσέξουν τους επιπλέον τελεστές που διατίθενται και προσοχή στο σημαντικότερο. Ο τελεστής \^ που σε άλλες Basic σημαίνει ύψωση σε δύναμη εδώ
αντικαθίσταται από τον \*\*. Ο τελεστής \^ εδώ είναι ο τελεστής επιπέδου bit OR.

117
content/articles/26/03_beginners.md Κανονικό αρχείο

@ -0,0 +1,117 @@
+++
title = 'A Beginners\ Guide \-- The linux.gr collection'
date = '2000-09-01T00:00:00Z'
description = ''
author = 'DJ Art(mailto:djart@hellug.gr)'
issue = ['Magaz 26']
issue_weight = 3
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Βλέποντας κανείς τον τίτλο αυτού του άρθρου θα πεί: \"ααα\... άλλος ένας οδηγός για τους αρχάριους\". Υπάρχει, όμως, μία διαφορά: η τοποθεσία του οδηγού αυτού.
Η αλήθεια είναι πως όσο περισσότερα άτομα ασχολούνται με το linux (και ιδίως αρχάριοι) παρατηρείται συνέχεια μιά \"γκρίνια\" (ας το πούμε έτσι χαριτολογώντας ;)
ότι οι gurus τους γυρνάνε την πλάτη και όλα αυτά τα σχετικά. Ο οδηγός λοιπόν είναι επίτηδες σύντομος και σε μορφή links για να παρέχει την σωστή
\"κατεύθυνση\"/πορεία που θα πρέπει να ακολουθήσουν οι αρχάριοι, αλλά και για να τους μεταδώσει την νοοτροπία του \"ψάχνω καλά να βρώ αυτά που χρειάζομαι\".*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
**Τί είναι το Linux ?**\
Το Linux είναι ένα δωρεάν τύπου-Unix λειτουργικό σύστημα που αρχικά δημιουργήθηκε από τον Linus Torvalds και στη συνέχεια αναπτύχθηκε με τη βοήθεια
προγραμματιστών από όλον τον κόσμο. To Linux είναι μιά ανεξάρτητη POSIX υλοποίηση και στα χαρακτηριστικά του συμπεριλαμβάνει πραγματικό multitasking, πραγματικό
πολυχρηστικό περιβάλλον, virtual memory, shared libraries, demand loading, TCP/IP networking και πολλά άλλα χαρακτηριστικά που δικαιολογούν τον τίτλο
\"τύπου-Unix\". Είναι κατασκευασμένο υπό την GPL άδεια, δηλαδή ο πηγαίος κώδικάς του είναι διαθέσιμος στον καθένα.
Ο Linus, ως φοιτητής στο Πανεπιστήμιο της Φιλανδίας, αρχικά δημιούργησε το Linux ως hobby. Είχε επικεντρωμένο το ενδιαφέρον του στο Minix, ένα μικρό UNIX
σύστημα, και έτσι αποφάσισε να δημιουργήσει ένα σύστημα που θα είχε περισσότερες δυνατότητες από το Minix. Ξεκίνησε την δημιουργία του Linux το 1991,
ανακοινώνοντας την έκδοση 0.02 και δουλεύοντας σταθερά έφτασε το 1994 στην έκδοση 1.0 του Linux Kernel. Το Linux μπορεί να χρησιμοποιηθεί για πολλούς σκοπούς,
όπως το networking, η ανάπτυξη προγραμμάτων, ακόμα και για πλατφόρμα για απλούς χρήστες. Λόγω της φύσης και της ευελιξίας του, το Linux έχει γίνει πολύ διάσημο
παγκοσμίως και ένας μεγάλος αριθμός προγραμματιστών έχει επικεντρώσει το ενδιαφέρον του πάνω σε αυτό. Η μασκότ του Linux είναι ένας συμπαθέστατος χαμογελαστός
πινγκουίνος, ο οποίος επιλέχτηκε από τον ίδιον τον δημιουργό του. Πρόλογος Το κείμενο που ακολουθεί έχει στόχο να καθοδηγήσει τους αρχάριους του Linux στα πρώτα
βασικά βήματα, να τους παρέχει τα σωστά links για τις πληροφορίες/πηγές που χρειάζονται. Επίσης, θα είναι μικρό, εύκολο και γρήγορο, ακριβώς όσο χρειάζεται για
να είναι κατανοητό και εύχρηστο.
**Εγκατάσταση**\
Μην ρωτάτε ποιά διανομή να εγκαταστήσετε. Να συνηθίσετε στην ιδέα ότι το Linux είναι ΕΝΑ. Οι διανομές διαφέρουν κυρίως στα προγράμματα εγκατάστασης. Αφού
εγκαταστήσετε το Linux θα μάθετε να δουλεύετε το λειτουργικό ακριβώς με τον ίδιο τρόπο ανεξάρτητα από το ποιά διανομή εγκαταστήσατε. Λοιπόν, ειδικά για τους
αρχάριους, είναι προτιμότερο να μην τσιγκουνευτείτε το σκληρό δίσκο, αφιερώστε αρκετό χώρο και κάντε μιά μεγάλη εγκατάσταση (δεν λέω full-install γιατί κάποιες
διανομές το παρακάνουν) κι αυτό για να έχετε πολλά πράγματα στη διάθεσή σας (προγράμματα/Documentation) και να μην ψάχνεστε. Όταν αποκτήσετε κάποια πείρα με το
λειτουργικό μετά από αρκετή χρήση θα είναι σίγουρο ότι θα είστε σε θέση να ασκήσετε την αφαιρετική ιδιότητα και να μην εγκαταστήσετε αυτά που δεν σας
χρειάζονται. Τώρα, όσον αφορά για οδηγίες εγκατάστασης, καλύτερα να συμβουλευτείτε τις οδηγίες που συνοδεύουν την κάθε διανομή, οι οποίες είναι αναλυτικές και
περιγράφουν βήμα προς βήμα το τί πρέπει να κάνετε. Πρόσθετες πληροφορίες θα βρείτε στα:
[Installation HowTo](http://www.linuxdoc.org/HOWTO/Installation-HOWTO.html)\
[Linux Installation and Getting Started](http://www.linuxdoc.org/LDP/gs/gs.html)
**Ωραία, και τώρα που το εγκατέστησα, τί να κάνω;**\
Τώρα τί; !! Μα, έχετε εγκατεστημένο ένα πολυ-χρηστικό, multitasking, ευέλικτο και παντοδύναμο λειτουργικό σύστημα. Αυτό που μένει είναι να αρχίσετε να το
χρησιμοποιείτε. Και για να το κάνετε αυτό, θα πρέπει πρώτα: α) να σιγουρευτείτε ότι εκμεταλλευτήκατε όλες τις συσκευές (hardware) που έχετε, β) να μπορείτε να
διαβάζετε και να γράφετε ελληνικά, γ) να συνδεθείτε στο Internet και δ) να βρείτε μιά πληθώρα προγραμμάτων για να ικανοποιήσουν την ανάγκη σας και τη θέλησή σας
να εντάξετε τον Η/Υ στη ζωή σας. Αρχίζουμε:
**Ελληνικά**
- <http://graphis.hellug.gr>\
Αυτό είναι το πρώτο site που πρέπει να επισκεφθείτε, περιέχει τα πακέτα με τις γραμματοσειρές.
- [Hellenic HowTo](http://howto.hellug.gr/howto/pub/html/Hellenic-HOWTO.html)
- [Magaz Τεύχος 16](http://magaz.hellug.gr/16/02_grlinux.html)
- [Staroffice HowTo](http://howto.hellug.gr/howto/pub/html/StarOffice-and-Greek.html)\
Τί; Δεν ξέρετε τί είναι το Staroffice; Αμέσως τρέξτε στο [site του](http://www.sun.com/staroffice).
- <http://members.hellug.gr/djart/greek.html>
**Hardware**
- [Hardware HowTo](http://www.linuxdoc.org/HOWTO/Hardware-HOWTO.html)
- [Printing HowTo](http://www.linuxdoc.org/HOWTO/Printing-HOWTO/index.html)
- [USB Υποστήριξη](http://www.linux-usb.org)
- Modems
- [Modem HowTo](http://www.linuxdoc.org/HOWTO/Modem-HOWTO.html)
- [Win-Modems](http://www.linmodems.org)
- [Winmodems HowTo](http://www.linuxdoc.org/HOWTO/Winmodems-and-Linux-HOWTO.html)
- Soundcards
- [Sound-HowTo](http://www.linuxdoc.org/HOWTO/Sound-HOWTO.html)
- [Drivers για SBLive! κ.α.](http://opensource.creative.com)
- Κοιτάξτε και στον κατάλογο /usr/src/linux/Documentation/sound
- [Υποστήριξη Scanners](http://panda.mostang.com/sane/)
- [Plug and Play HowTo](http://www.linuxdoc.org/HOWTO/Plug-and-Play-HOWTO.html)
**Πώς θα συνδεθώ στο Internet;**
- [Magaz Τεύχος 6](http://magaz.hellug.gr/06/05_xisp2.html)
- [X-ISP](http://xisp.hellug.gr)
- [Ρυθμίσεις για OTEnet](http://www.otenet.gr/hd/html/linux_settings.htm)
- [Ρυθμίσεις για Forthnet](http://www.forthnet.gr/support/gr/linux/index.html)
- [Οδηγίες σύνδεσης χρησιμοποιώντας το X-ISP](http://members.hellug.gr/djart/guide/guide-6.html)
**Πού θα βρώ προγράμματα;**
- [Linuxberg](http://linuxberg.duth.gr) Το αντίστοιχο του Tucows για το Linux
- [Freshmeat](http://freshmeat.net)
- [Sourceforge](http://www.sourceforge.net)
- [Επιστημονικές εφαρμογές](http://SAL.KachinaTech.com)
- [Εφαρμογές στο LGU-FAQ](http://homepages.pathfinder.gr/lgu_faq/index-12.html)
- [Εμπορικά προγράμματα](http://www.linuxdoc.org/HOWTO/Commercial-HOWTO.html)
**Παιχνίδια**
- <http://www.linuxgames.com>
- [Loki Entertainment](http://www.lokigames.com)
**Θέλω να είμαι \"μέσα στα πράγματα\"**
- [Hellug](http://www.hellug.gr) Οι αρχάριοι πρέπει να επισκεφτούν αυτό το site οπωσδήποτε και να πατήσουν σε όλες τις πατούσες-links
- [Magaz](http://magaz.hellug.gr) Το online δωρεάν περιοδικό της ελληνικής κοινότητας του Linux
- [D.i.li.ma. \-- Το πρώτο έντυπο περιοδικό στην Ελλάδα για το Linux](http://dilima.eeea.gr)
- [Όλα τα HowTo (στα Αγγλικά)](http://www.linuxdoc.org)
- [Όλα τα μεταφρασμένα στα Ελληνικά HowTo](http://howto.hellug.gr)
- [Οι ελληνικές mailing lists](http://lists.hellug.gr)
- [Linux-Greek-Users-FAQ](http://homepages.pathfinder.gr/lgu_faq)
- Μην παραλέιψετε να επισκεφτείτε όλο το site του linux.gr
- [Tsakf\'s Links](http://links.hellug.gr)
**Θέλω να βοηθήσω και εγώ εθελοντικά την ελληνική κοινότητα του Linux**
- [Οι ελληνικές mailing lists](http://lists.hellug.gr) Μην ξεχάσετε την linux-howto λίστα
- [Τα ενεργά Projects](http://server.hellug.gr/LUGistics/el/pub/PRJ_main.php3)
- [Σημαντικά ελληνικά projects-προγράμματα](http://hq.hellug.gr)
- [NLS-HowTo για τις μεταφράσεις](http://nls.hellug.gr)
- [Το project ελληνικοποίησης των προγραμμάτων](http://hlp.sourceforge.net)

388
content/articles/26/04_kernel24.md Κανονικό αρχείο

@ -0,0 +1,388 @@
+++
title = 'O ΥΠΕΡΟΧΟΣ ΚΟΣΜΟΣ ΤΟΥ LINUX 2.4'
date = '0000-09-01T00:00:00Z'
description = ''
author = 'Θέμης Παπασσιλέκας(mailto:panzer@finecon.gr)'
issue = ['Magaz 26']
issue_weight = 4
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Μια εισαγωγή στον μαγικό κόσμο του καινούριου μας πυρήνα*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Εν αρχή ήταν ο Linus και ο 386 του. Για λόγους πολύ περίπλοκους για να αναλυθούν εδώ, αποφάσισε να μη χρησιμοποιήσει το κοινώς διαθέσιμο λειτουργικό σύστημα της
εποχής και αποφάσισε να γράψει το δικό του. Κάμποσα χρόνια και πολλές χιλιάδες γραμμές κώδικα αργότερα, κυκλοφόρησε το Linux 2.2 το οποίο ήταν ένα ορόσημο από
μόνο του. Ευτυχώς για τον κόσμο, ο Linus (και η παρέα του) συνέχισαν να πειράζουν το Linux και η έκδοση 2.4 του πυρήνα του είναι σχεδόν έτοιμη. Αυτό το κείμενο
περιγράφει κάποια από τα νέα χαρακτηριστικά στον 2.4, βασιζόμενο στον 2.3.99-pre3.
Αντίθετα με τις ανακοινώσεις προ της εκδόσεως καποιων άλλων λειτουργικών συστημάτων, τα χαρακτηριστικά που περιγράφονται εδώ υπάρχουν ήδη στον πυρήνα 2.3
(developers), αν και πιθανόν να μην είναι όλα τελείως σταθερά και κάποια μπορεί να χαρακτηρίζονται \"πειραματικά\" στην έκδοση 2.4. Καθώς το Linux είναι πιστό
στην φιλοσοφία του Open Source, τα χαρακτηριστικά προστίθενται από ανεξάρτητους προγραμματιστές καθώς ανακαλύπτουν μία συγκεκριμένη ανάγκη ή ένα λάθος στον
υπάρχοντα κώδικα. Αυτές οι αλλαγές ελέγχονται από τον Linux και τους βοηθούς του, και αυτή η διαδικασία φιλτραρίσματος είναι που κρατάει το Linux συνεκτικό
ακόμα και με αυτή την τεράστια βάση ανάπτυξής του.
Ακόμα, στο πνεύμα του κινήματος **Open Source**, τα προϊόντα εκδίδονται \"όταν είναι έτοιμα\" και γενικά δεν έχουν προανακοινωμένες ημερομηνίες διάθεσης. Προς
το παρόν το Linux 2.3 βρίσκεται στην τελικά φάση προ-έκδοσης και δεν θα αλλάξει πολύ εκτός από κάποιες διορθώσεις. Περιμένουμε το Linux 2.4 σε έναν-δύο μήνες
και σε μερικούς μήνες από τότε οι διανομές θα το ενσωματώσουν στα πακέτα τους. Μένει να ειδωθεί πόσα από τα νέα χαρακτηριστικά θα διαλέξουν να υποστηρίξουν
οιδιανομές εξ\' αρχής. Η υποστήριξη για DevFS και LVM, ειδικά, θα είναι ένα μείζον θέμα για τις μελλοντικές διανομές.
Σε αυτό το κείμενο γίνεται προσπάθεια επικέντρωσης στις περιοχές που το Linux 2.4 δεν είναι συμβατό με το Linux 2.2. Να θυμάστε ότι τα binary modules σίγουρα
δεν θα δουλεύουν, καθώς πολλές εσωτερικές δομές έχουν αλλάξει. Η μορφή κάποιων αρχείων στο /proc επίσης έχουν αλλάξει. Τα ονόματα σχεδόν όλων των αρχείων στο
/dev έχουν αλλαχθεί, αλλά παρέχονται συμβατά ονόματα. Οι περισσότερες εφαρμογές ούτε που θα καταλάβουν τις αλλαγές. (Οι low-level εφαρμογές , όπως ο δαίμονας
ppp, ή άλλα προγράμματα που βασίζονται σε στενή επαφή με τον πυρήνα πιθανότατα δεν θα είναι 100% συμβατά μεταξύ μεγάλων αλλαγών του πυρήνα). Αν σας αρέσει να
ενημερώνετε τη διανομή σας με το χέρι, να διαβάσετε οπωσδήποτε το αρχείο CHANGES και να ενημερώσετε όποια πακέτα χρειάζεται πριν να υποβάλετε αναφορά για λάθη.
**1. ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥ LINUX 2.4**
--------------------------------------------------------------
- [1.1 LINUX 2.4 KAI ia64](#ss1.1)
- [1.2 LINUX 2.4 KAI CRUSOE](#ss1.2)
- [1.3 LINUX 2.4 KAI ΠΡΟ-386](#ss1.3)
- [1.4 TA ΕΣΩΤΕΡΑ ΤΟΥ LINUX](#ss1.4)
- [1.5 ΥΠΟΣΤΗΡΙΞΗ ΥΛΙΚΟΥ - /dev/\*](#ss1.5)
- [1.6 ΔΙΑΥΛΟΙ - ISA, PCI, USB, MCA κτλ](#ss1.6)
- [1.7 Block Devices - LVM, Disk Drives, κλπ.](#ss1.7)
- [1.8 Συστήματα αρχείων και πίνακες κατατμήσεων](#ss1.8)
- [1.9 Συσκευές Χαρακτήρων - Πληκτρολόγια, Ποντίκια, Κονσόλες και Θύρες](#ss1.9)
- [1.10 Πολυμέσα: Ήχος, Τηεόραση, Ραδιόφωνο κλπ](#ss1.10)
- [1.11 Κάρτες Video και συσκευές Framebuffer](#ss1.11)
- [1.12 Προσιτότητα - accessibility](#ss1.12)
- [1.13 Δικτύωση και πρωτόκολλα](#ss1.13)
- [1.14 Binary Types](#ss1.14)
- [1.15 O Kernel Web Daemon](#ss1.15)
- [1.16 Κρυπτογραφία στον Πυρήνα](#ss1.16)
### [1. ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΟΥ LINUX 2.4]{#s1}
Σε όρους γραμμών κώδικα, ο πυρήνας του Linux είναι κυρίως οδηγοί. Πραγματικά, το μέγεθος της καρδιάς του Linux δεν έχει μεγαλώσει πολύ κατά τις τελευταίες
ανανεώσεις. Κάποιοι από αυτούς τους οδηγούς είναι ανεξάρτητοι αρχιτεκτονικής, όπως ο οδηγός ΙDE. Αυτό σημαίνει πως αυτοί έχουν γραφτεί για να δουλεύουν σε
διάφορες πλατφόρμες. 'λλοι οδηγοί εξαρτώνται από μία συγκεκριμένη αρχιτεκτονική. Για παράδειγμα, ο οδηγός ποντικιού **ADB** (Apple Desktop Bus) δεν μπορεί να
δουλέψει στην πλατφόρμα i386 και έτσι δεν υποστηρίζεται. Οι προγραμματιστές του πυρήνα του Linux πασχίζουν για να φτιάξουν οδηγούς όσο γενικούς γίνεται, έτσι
ώστε να είναι δυνατόν να ξαναχρησιμοποιηθούν με μικρή προσπάθεια σε άλλες πλατφόρμες αν κάποιο εξάρτημα είναι διαθέσιμο. Το Linux είναι ένα πολυκέφαλο θηρίο με
πρόσωπα παρόμοια αλλά διαφορετικά το ένα από το άλλο, ανάλογα με την πλατφόρμα που χρησιμοποιούμε.
Αυτό το κείμενο θα ασχοληθεί με υλικό Ιntel. Παρ\' ότι δεν θα μπει σε λεπτομέρειες για κάθε μεταφορά του Linux, θα πρέπει να αναφερθεί πως το Linux 2.4 θα
υποστηρίζει κάποιες νέες πλατφόρμες: i64 (Itanium), S/390 και SuperH. H υποστήριξη αυτή θα ωριμάσει με το χρόνο, όπως έγινε και με το Linux για άλλες
πλατφόρμες. Τα ακριβή χαρακτηριστικά διαφέρουν από πλατφόρμα σε πλατφόρμα και κάποιοι περιορισμοί του υλικού, μνήμης κλπ θα διαφέρουν ανάλογα με την
αρχιτεκτονική.
Σε ό,τι αφορά στο Linux 2.4 για Intel, αυτό είναι πολύ παρόμοιο σε υποστήριξη με το Linux2.2. Όλα τα chips της Intel από τον 386 υποστηρίζονται ακόμα, μέχρι τον
Pentium III. Συμβατά chips όπως αυτά της AMD ή της Cyrix επίσης υποστηρίζονται. Επιπλέον, το Linux 2.4 θα περιλαμβάνει υποστήριξη για άλλο υλικό συχνά παρόν σε
πιο καινούργια chips συμπεριλαμβανομένων ποικιλιών **MTRRs (Memory Type Range Registers, επίσης MCRs)** μή-Intel που θα βελτιώσουν την απόδοση σε κάποιες
συσκευές μεγάλου εύρους. Ενώ το Linux 2.2 είχε υποστήριξη για **IO-APIC (Advanced Programmable Interrupt Controller)** σε συστήματα πολλαπλών επεξεργαστών, το
Linux 2.4 θα παρέχει την ίδια υποστήριξη και σε συστήματα ενός επεξεργαστή κι επίσης θα υποστηρίζει μηχανήματα με πολλαπλούς ΙΟ-ΑPICs. Η υποστήριξη για
πολλαπλούς IO-APICs θα επιτρέψει στο Linux 2.4 να προσαρμόζεται (scale) πολύ καλύτερα σε μηχανήματα υψηλών αποδόσεων απ΄ότι πριν.
### [1.1 LINUX 2.4 KAI ia64]{#ss1.1}
Αν και δεν έχει ακόμα παραδοθεί στις ανυπομονούσες μάζες, ο 64μπιτος αντικαταστάτης της Intel για τη σειρά των x86 έρχεται. Αν και δεν υπάρχει πραγματικό υλικό
ακόμα, στην έκδοση του πυρήνα έχει συμπεριληφθεί υποστήριξη (με patches) γι αυτό το chip και τους διαδόχους του. Η διαδικασία της μεταφοράς απλουστεύτηκε
σίγουρα με την υπάρχουσα υποστήριξη του Linux για 64μπιτους επεξεργαστές (συμπεριλαμβανομένων του **Alpha** της Compaq και του **Sparc64**).
### [1.2 LINUX 2.4 KAI CRUSOE]{#ss1.2}
Καθώς ο Linus δουλεύει στην **Transmetta**, ο Crusoe θα υποστηρίζει οπωσδήποτε το Linux όταν βγουν τα πρώτα προϊόντα Crusoe στην αγορά. Στην πραγματικότητα, το
Linux στον Crusoe έχει ήδη επιδειχθεί και μάλιστα πειστικά χρησιμοποιώντας το τεστ του Quake (πιθανώς το πιο σημαντικό τεστ για κάθε νέο επεξεργαστή). Καθώς ο
Crusoe προσομοιώνει τους i386 δεν θα υπάρξει ειδική μεταφορά γι αυτή την οικογένεια επεξεργαστών αλλά χαρακτηριστικά (ειδικά διαχείριση ενέργειας και πιθανώς
ένα νέο \"virtual keyboard layer\") τα οποία αναμένονται να υπάρχουν στην έκδοση 2.4 του πυρήνα.
### [1.3 LINUX 2.4 KAI ΠΡΟ-386]{#ss1.3}
Περιέργως, πολλοί ενδιαφέρονται ακόμα για το Linux για προ-386 επεξεργαστές. Η απάντηση, τουλάχιστον αυτή τη στιγμή, είναι πως δεν υπάρχει τέτοιο πράγμα Υπάρχει
ένα αδερφό πρόγραμμα, το **ΕLKS (Embedable Linux Kernel Subset)** το οποίο δουλεύει πάνω σε μία παραλλαγή του Linux για τέτοια μηχανήματα, με υποστήριξη για
protected mode για όσα την υποστηρίζουν. Το πρόγραμμα αυτό είναι ανεξάρτητο από το κυρίως Linux και δεν αφορά αυτό το κείμενο.
Υπάρχει επίσης μία διαφορετική μεταφορά του πυρήνα του Linux, το uLinux, που προσφέρει Linux σε ενσωματωμένους και παλιότερους επεξεργαστές, συμπεριλαμβανομένων
αυτών χωρίς MMUs. Αυτή η δουλειά προς το παρόν βασίζεται πάνω στον πυρήνα 2.0 και δεν έχει ενσωματωθεί στο master tree.
### [1.4 TA ΕΣΩΤΕΡΑ ΤΟΥ LINUX]{#ss1.4}
To Linux 2.2 ήταν μία μεγάλη βελτίωση του Linux 2.0 και τη σειρά Linux 1.x. Υποστήριζε πολλά καινούργια συστήματα αρχείων, ένα νέο σύστημα **file caching** και
ήταν πολύ καλύτερα κλιμακούμενο. Το Linux 2.4 χτίζει πάνω σε αυτές και άλλες βάσεις για να είναι το καλύτερο Linux μέχρι τώρα για πολλά πράγματα.
Ο πυρήνας του Linux είναι μία συλλογή αρθρωμάτων που περιλαμβάνουν οδηγούς υλικού, πρωτόκολλα και άλλα στοιχεία. Αυτά είναι \'κολλημένα\' στην καρδιά του πυρήνα
με **APIs, Programming Interfaces**, που παρέχουν μία στάνταρντ μέθοδο με την οποία ο πυρήνας του Linux μπορεί να επεκταθεί, και με αυτά θα ασχοληθεί αυτό το
κείμενο. Αυτά είναι τα στοιχεία που οδηγούν τους δίσκους σας, διαβάζουν τα αρχεία σας και κάνουν όλα τα προφανή πράγματα. Το Linux 2.4 είναι κάτι παραπάνω από
αυτά, όμως. Αυτοί οι οδηγοί και τα APIs περιστρέφονται γύρω από ένα κοινό κέντρο του πυρήνα του Linux. Αυτό το κέντρο περιλαμβάνει πολύ σημαντικά χαρακτηριστικά
όπως τον scheduler, τον διαχειριστή μνήμης, το εικονικό σύστημα αρχείων και το **resource allocator**.
Το Linux 2.4 είναι η πρώτη έκδοση του πυρήνα του Linux που θα περιλαμβάνει ένα πλήρη υποσύστημα resource allocator management. Οι προηγούμενες εκδόσεις
περιείχαν μία κάποια υποστήριξη αλλά ήταν μάλλον αναξιόπιστη και δεν παρείχε τη λειτουργικότητα που χρειάζεται στον κόσμο \"Plug and Play\". Σε αντίθεση με τις
περισσότερες εσωτερικές αλλαγές, οι χρήστες θα νοιώσουν άμεσα αυτή την αλλαγή μια που επηρεάζει τον τρόπο που τα resources κατανέμονται και αναφέρονται στον
πυρήνα. Σαν μέρος αυτής της αλλαγής, η βάση δεδομένων PCI card που ήταν \'ριγμένη\' στο Linux 2.2 τώρα αναβαθμίζεται ούτως ώστε όλα τα resources να έχουν ένα
αντίστοιχο όνομα συσκευής παρά απλά έναν αντίστοιχο οδηγό.
Η νέα έκδοση του πυρήνα του Linux επίσης διορθώνει κάποια προβλήματα με τον τρόπο που γινόταν η διαχείριση του layer του **VFS (Virtual FileSystem)** και των
file caches. Σε παλαιότερες εκδόσεις του Linux το caching εξαρτάτο από ένα σύστημα dual-buffer το οποίο απλοποιούσε κάποια πράγματα, αλλά προκαλούσε
πονοκεφάλους στους προγραμματιστές του πυρήνα που έπρεπε να διασφαλίσουν ότι δεν ήταν δυνατό για αυτούς τους buffer να είναι ασυγχρόνιστοι. Επιπροσθέτως, η
παρουσία του buffer αύξανε τη χρήση της μνήμης και καθυστερούσε το σύστημα καθώς ο πυρήνας έπρεπε να κάνει επιπλέον δουλειά για να κρατάει τα πράγματα
συγχρονισμένα. Το Linux 2.4 λύνει αυτά τα προβλήματα χρησιμοποιώντας ένα απλούστερο σύστημα με μονό buffer.
Ένας αριθμος αλλαγών στο Linux 2.4 μπορεί να περιγραφεί ώς \"enterprise level\". Αυτό σημαίνει πως δεν θα γίνουν αντιληπτές και χρήσιμες στους χρήστες desktop
άμεσα. Στο μεγαλύτερο μέρος τους αυτά τα χαρακτηριστικά δεν υποβιβάζουν το Linux σε πιο \"νορμάλ\" περιβάλλοντα. Πρώτα απ\' όλα, το Linux 2.4 μπορεί να
χειρίζεται περισσότερες ταυτόχρονες διεργασίες καθώς είναι πιο κλιμακούμενο σε πολυεπεξεργαστικά μηχανήματα και επίσης προσφέροντας ένα ρυθμιζόμενο όριο
διεργασιών. Δεύτερον, ο scheduler έχει ξαναφραφεί κάπως για να είναι πιο αποτελεσματικός σε συστήματα με πολλές ταυτόχρονες διεργασίες. Τρίτον, ο καινούργιος
πυρήνας του Linux μπορεί πλέον να χειρίζεται ένα απίθανο νούμερο χρηστών και groups -κάπου 4.2 εκατομμύρια (και αυτό είναι \*πολλοί\* χρήστες!). Επιπροσθέτως,
παρέχεται υποστήριξη για πιο ισχυρό υλικό με υποστήριξη RAM 4GB σε Intel, μέχρι 16 Ethernet κάρτες, 10 ελεγκτές IDE, πολλαπλά IO-APICs και άλλες καταχρήσεις
καλού υλικού. Το όριο των 2GB για τα αρχεία έχει επίσης αυξηθεί. Με αυτές και άλλες αλλαγές, οι προγραμματιστές του πυρήνα του Linux αποδεικνύουν πως το Linux
μπορεί να είναι μία επιλογή σε πολλά νέα περιβάλλοντα.
Ο τρόπος που το Linux χειρίζεται την μοιραζόμενη (shared) μνήμη έχει επίσης αλλάξει στο 2.4 για να συμμορφωθεί περισσότερο με τα στανταρντ. Μία παρενέργεια
αυτών των αλλαγών είναι ότι το Linux 2.4 θα απαιτεί να γίνεται mount ένα ειδικό σύστημα αρχείων μοιραζόμενης μνήμης για να δουλεύουν τα τμήματά της. Αυτό θα
γίνεται από τη διανομή όταν γίνουν διαθέσιμες για το Linux 2.4.
Το Linux 2.4 επίσης περιέχει μία πολύ μεγαλύτερη συλλογή οδηγών και υποστηριζόμενου υλικού από οποιαδήποτε άλλη έκδοση και κάθε κομμάτι υλικού που μπορείτε να
ονομάσετε έχει μία καλή πιθανότητα να δουλεύει κάτω από Linux (βεβαίως, θα πρέπει να συμβουλευτείτε τα κείμενα πριν να αγοράσετε καινούργιο υλικό, για κάθε
περίπτωση. Ειδικά καινούργιο υλικό μπορεί να μη δουλεύει ακόμα.)
Μία συχνή ερώτηση για το Linux 2.4 είναι το πόση μνήμη θα απαιτεί. Πολλά λειτουργικά συστήμτα απαιτούν ολοένα και περισσότερη μνήμη και πόρους καθώς ωριμάζουν,
αλλά το Linux 2.4 δεν ακολουθεί αυτήν την τάση καθώς απαιτεί λειγότερη μνήμη σε κάποιες περιπτώσεις. Βεβαίως, το Linux 2.4 περιέχει πολύ περισσότερη
λειτουργικότητα από το 2.2 και πολλά από αυτά τα χαρακτηριστικά χρειάζονται χώρο, οπότε η περίπτωσή σας μπορεί να διαφέρει (να θυμάστε ότι τα περισσότερα
στοιχεία του πυρήνα μπορούν να απενεργοποιηθούν κατά το compling, σε αντίθεση με άλλα λειτουργικά).
### [1.5 ΥΠΟΣΤΗΡΙΞΗ ΥΛΙΚΟΥ - /dev/\*]{#ss1.5}
Πριν να μιλήσουμε για την υποστήριξη υλικού στο Linux 2.4, πρέπει να μιλήσουμε για ένα από τα πιο καιρνούρια και αμφιλεγόμενα χαρακτηριστικά του: το **DevFS
(Device FileSystem)**. Αυτό είναι ένα (προς το παρόν προαιρετικό) χαρακτηριστικό το οποίο βασικά ξαναγράφει τον τρόπο με τον οποίο το Linux χειρίζεται τις
διάφορες συσκευές. Αυτό θα πρωτοπαρουσιαστεί στο χρήστη με δυο προφανείς τρόπους. Πρώτον, σχεδόν όλα τα ονόματα των συσκευών έχουν αλλάξει. Για παράδειγμα, το
\"/dev/had\" μπορεί να ήταν ο σκληρός σας δίσκος, αλλά τώρα θα ήταν τοποθετημένο στο \"/dev/ide0/\...\" (η ονοματολογία δεν είναι ακόμη βέβαιη). Αυτό το
αλλαγμένο σχήμα αυξάνει τον διαθέσιμο για ονόματα συσκευών χώρο κι επιτρέπει να ενσωματωθούν πιο εύκολα συστήματα USB και άλλα \"συγχρονα\" πράγματα. Δεύτερον,
τα ονόματα των συσκευών τώρα θα προστίθενται στο /dev/ ώς οδηγοί φορτωμένοι στον πυρήνα παρά θα έχουμε όλα τα πιθανά ονόματα να προϋπάρχουν σε αυτό το
directory. Τα παλιά ονόματα θα είναι ακόμη διαθέσιμα χάριν συμβατότητας χρησιμοποιώντας ένα πρόγραμμα userspace, το \"devfsd\".
Αν και αυτό μπορεί να επηρεάσει τις εταιρίες διανομών που θέλουν να εχουν σίγουρο πως όλες οι εφαρμογές θα έχουν μεταβληθεί κατα τρόπο ώστε να χρησιμοποιούν τα
νέα ονόματα, οι χρήστες δεν θα πρέπει να επηρεασθούν ιδιαίτερα. Αυτή η αλλαγή θα είναι μία έκπληξη, αν μή τι άλλο, για πολλούς χρήστες. Αν και σε μερικούς
μπορεί να μην αρέσει η νέα μακριά ονοματολογία, είναι εύκολο να δούμε πόσο περιοριστική ήταν η παλιά (τί θα γινόταν, για παράδειγμα, αν είχατε περισσότερους από
26 δίσκους;)
### [1.6 ΔΙΑΥΛΟΙ - ISA, PCI, USB, MCA κτλ]{#ss1.6}
Οι επεξεργαστές είναι μόνο ένα μικρό κομμάτι του κόσμου του υπολογιστή. Εξίσου σημαντικά είναι η αρχιτεκτονική του διαύλου, το στοιχείο του συστήματος που είναι
συχνά υπεύθυνο για τις εσωτερικές κι εξωτερικές συσκευές. Κάποιες αρχιτεκτονικές, όπως η αρχική ISA, είναι περισσότερο ανεύθυνες απέναντι στο υλικό απ\'
ότιδήποτε άλλο -δεν παρέχουν καμμία διαχείριση πόρων, παρά μόνο ένα μέρος για να βάλουμε κάρτες. 'λλες, όπως η PCI, υποστηρίζουν πολύ περισσότερο προχωρμένα
επίπεδα παραμετροποίησης και επιτρέπουν την αλλαγή παραμέτρων συσκευών και άλλα πράγματα. Καθώς όλοι οι αρχικοί εσωτερικοί δίαυλοι Intel υποστηρίζονταν από το
Linux 2.2 ((Ε)ISA, VLB, PCI, MCA), δεν υπήρχαν εντυπωσιακές ανακοινώσεις σε αυτόν τον τομέα. Το Linux 2.4, παρ\' όλα αυτά, βελτιώνει κάποιους από αυτούς τους
διάυλους με το να τους προσδένει στο νέο υποσύστημα πόρων του Linux
Υπάρχουν τώρα δύο μεγάλες βελτιώσεις σε αυτόν τον τομέα. Το Linux 2.4 περιέχει, για πρώτη φορά στον πυρήνα, υποστήριξη για ISA Plug \'n\' Play συσκευές.
Προγηγουμένως, το Linux μπορούσε να υποστηρίξει τις συσκευές αυτές μόνο μέσω ενός προγράμματος που έτρεχε ο χρήστης και με πολύ ιδρώτα. Το Linux 2.4 θα
επιτρέπει τη χρησιμοποίηση αυτών των συσκευών κατά την εκκίνηση (π.χ., την εκκίνηση από ένα ΙSAPnP IDE ελεγκτή) και την αυτόματη παραμετροποίηση αυτών. Ακομα το
Linux 2.4 θα παρέχει υποστήριξη για I2O μέσα στον πυρήνα. Το **Ι2Ο (Intelligent Input/Output)** είναι ένα υποσύνολο του PCI που επιχειρεί να επιτρέψει να
γραφούν οδηγοί ανεξαρτήτως λειτουργικού για πολλές συσκευές. Μεταξύ αυτών των δύο αλλαγών, πολλοί χρήστες θα βρουν ότι το Linux 2.4 υποστηρίζει πολύ περισσότερα
κομμάτια υλικου PC.
Παρ\' όλα αυτά, το Linux 2.4 δεν θα αυξήσει την υποστήριξη για εξωτερικές συσκευές. Έχει προστεθεί υποστήριξη για PCMCIA (ή PC Card). Αυτή η υποστήριξη ήταν
διαθέσιμη σε πολλές διανομές από μία εξωτερική πηγή και οι περισσότερες διανομές την περιείχαν εξ\' ορισμού. Το Linux 2.4 υποστηρίζει καλύτερη ολοκλήρωση με το
σύνολο οδηγών PCMCIA και θα κάνει ευκολότερη την εγκατάσταση και τη ρύθμιση για τέτοιες συσκευές, για πολλούς χρήστες. Όπως προηγούμενες εκδόσεις αυτού του
οδηγού, πάντως, το Linux 2.4 θα απαιτεί ακόμα έναν εξωτερικό δαίμονα και στοιχεία (components) για να χρησιμοποιήσει τις συσκευές στο έπακρο. Ίσως τα πιο
ενδιαφέροντα νέα σε αυτό το μέτωπο έχουν να κάνουν με το Universal Serial Bus (USB), έναν εξωτερικό δίαυλο που κυριαρχεί σιγά-σιγά σε συσκευές όπως
πληκτρολόγια, ποντίκια, συστήματα ήχου, σαρωτές και εκτυπωτές. Το USB είναι μία δημοφιλής επιλογή για πολλές καινούργιες συσκευές, ακόμη και για υλικό μή-Intel.
Η υποστήριξη του Linux γι αυτές τις συσκευές είναια κόμη σε πρώιμα στάδια αλλά ένα μεγάλο ποσοστό κοινού υλικού USB (πληκτρολόγια, ποντίκια, ηχεία κλπ) ήδη
υποστηρίζεται από τον πυρήνα.
Πιο πρόσφατα, προστέθηκε υποστήριξη **Firewire** στον πυρήνα. Το **Firewire** είναι μία δημοφιλής επιλογή για πολλές συσκευές μεγάλου εύρους διαύλου. Δεν
υπάρχουν πολλοί οδηγοί γι αυτήν την αρχιτεκτονική ακόμη, αλλά αυτή η υποστήριξη σίγουρα θα βελτιωθεί με τον καιρό, καθώς αυτή ωριμάζει.
### [1.7 Block Devices - LVM, Disk Drives, κλπ.]{#ss1.7}
Στην πιο απλή του μορφή, ένα block device είναι μία συσκευή που μπορεί να εκφραστεί ώς μία σειρά bytes που τα οποία μπορούν να προσπελασθούν σε οποιαδήποτε
σειρά. Αυτό περιλαμβάνει συσκευές όπως οι δίσκοι (μπορούμε να διαβάσουμε όποιο τομέα θέλουμε) αλλά όχι σειριακές θύρες (μπορούμε να διαβάσουμε μόνο ότι υπάρχει
στην άκρη του καλωδίου). Επεκτάσεις αυτής της ιδέας (όπως η έξοδος ενός δίσκου κλπ) χειρίζονται από το Linux μέσω των ioctls (I/O Controls). Η ιδέα των block
devices δεν έχει αλλάξει εδώ και καιρό και υποστήριξη για συσκευές όπως δίσκοι **IDE/SCSI** υπάρχει από τις πρώτες εκδόσεις του πυρήνα του Linux. Στο Linux 2.4
έχουν ξαναγραφεί κάπως όλοι οι οδηγοί block devices καθώς το ΑΡΙ των block devices έχει αλλάξει για να ξεφορτωθεί διάφορα σκουπίδια και να διαχωρίσει το block
ΑΡΙ από το ΑΡΙ αρχείων σε επίπεδο πυρήνα. Οι αλλαγές που χρειάστηκαν γι αυτό το ξαναγράψιμο του ΑΡΙ δεν ήταν μεγάλες. Όμως, οι προγραμματιστές αρθρωμάτων που
διατηρούν αρθρώματα έξω από το main tree μπορεί να χρειαστεί να ανανεώσουν τον κώδικά τους (δεν θα πρέπει ποτέ να υποθέτουμε πλήρη συμβατότητα ΑΡΙ για αρθρώματα
του πυρήνα μεταξύ μεγάλων αλλαγών του πυρήνα)
Τουλάχιστον στην επιφάνεια εργασίας, οι συσκευές δίσκων που χρησιμοποιούν το δίαυλο IDE είναι οι κυρίαρχες. Το Linux υποστηρίζει το IDE από τους πρώτους πυρήνες
αλλά το Linux 2.4 βελτιώνει αυτή την υποστήριξη με διάφορους τρόπους. Πρώτα απ\' όλα, τα μηχανήματα υψηλής απόδοσης με πολλαπλούς ελεγκτές IDE θα ωφεληθούν
καθώς ο αριθμός των υποστηριζόμενων ελεγκτών έχει ανέλθει στους 10, ενώ πριν ήταν 4. Καθώς οι περισσότερες μητρικές έρχονται μόνο με δύο, αυτό δεν θα επηρρεάσει
τους περισσότερους χρήστες. Δεύτερον, υπήρξαν αλλαγές που ια βελτιώσουν την υποστήριξη για ελεγκτές PCI και PnP IDE, δισκέττες ΙDE και tapes, DVDs και CDROM
changers. Και τέλος, το Linux 2.4 περιέχει ανανεώσεις οδηγών που θα διορθώνουν λάθη κάποιοων chipsets IDE και θα παρέχουν βελτιωμένη υποστήριξη για κάποια
χαρακτηριστικά άλλων, όπως το **ΑΤΑ66**.
Αν και φαίνεται πως το υποσύστημα **SCSI** δεν έχει αλλάξει τόσο όσο το ΙDE, έχει ξαναγραφεί σε μεγάλο βαθμό. Επιπροσθέτως, υποστηρίζονται πολλοί νέοι ελεγκτές,
ενώ αναμένεται ακόμα ένα ξεκαθάρισμα στον κύκλο ανάπτυξης του 2.5.
Ένα ολοκαίνουργιο χαρακτηριστικό του 2.4 είναι η εφαρμογή του **\"raw\" Ι/Ο device**. Μία συσκευή \"raw\" είναι εκείνη η προσπέλαση της οποίας δεν χειρίζεται
από το **caching layer**, αντί να πηγαίνει κατευθείαν στη low-level συσκευή καθεαυτή. Μία τέτοια συσκευή μπορεί να χρησιμοποιηθεί σε περιπτώσεις που μία
απαιτητική εφαρμογή θέλει πλήρη έλεγχο πάνω στο πως αποθηκεύει δεδομένα και τα μειονεκτήματα του συνηθισμένου caching δεν είναι επιθυμητά. Εναλλακτικά, μία
τέτοια συσκευή θα μπορούσε να χρησιμοποιηθεί σε κρίσιμες περιπτώσεις όπου θέλουμε να βεβαιωθούμε ότι τα δεδομένα θα γράφονται αμέσως στο δίσκο ώστε να μη χαθούν
σε καμμία περίπτωση. Η προηγούμενη υποστήριξη δεν ήταν επαρκής και γι αυτό δεν συμπεριλαμβανόταν, μια που έπρεπε να διπλασιαστεί ο αριθμός των nodes ώστε κάθε
block device να έχει ένα **raw device node** (και αυτή είναι η υποστήριξη που παρέχουν πολλά εμπορικά Unix). Η παρούσα υποστήριξη χρησιμοποιεί μία δεξαμενή
**device nodes** που μπορεί να συσχετισθεί με οποιαδήποτε συσκευή.
Μία μεγάλη περιοχή αλλαγών στο Linux 2.4 υπήρξε η εισαγωγή του υποσυστήματος **LVM (Logical Volume Manager)** μέσα στον πυρήνα. Αυτό είναι ένα σύστημα ανάλογο
των **Unix HP-UX** και **Tru64 UNIX** που επανακαθορίζει πλήρως τον τρόπο που διαχειρίζονται τα συστήματα αρχείων και volumes. Το LVM επιτρέπει στα συστήματα
αρχείων να εκτείνονται σε πολλούς δίσκους, να αλλάζουν μέγεθος και να διαχειρίζονται με ένα πιο ευέλικτο τρόπο απ\'ότι με τις παρούσες μεθόδους partition table.
Κάποια από τα νέα χαρακτηριστικά του LVM αναπαράγονται με τον οδηγό md (multiple device) ή κάποια εργαλεία userspace. Πάντως, το υποσύστημα LVM προσφέρει αυτήν
την υποστήριξη με ένα εκ των πραγμάτων συμβατό με στάνταρντ τρόπο που θα είναι οικείος σε χρήστες εμπορικών UNIX.
Επιπρόσθετα των αλλαγών στα άλλα block devices, το Linux 2.4 ακόμα υποστηρίζει ανανεωμένο loopback και οδηγούς ramdisk που διορθώνουν ορισμένα λάθη.
### [1.8 Συστήματα αρχείων και πίνακες κατατμήσεων]{#ss1.8}
Τα Block devices μπορούν να χρησιμοποιηθούν με διάφορους τρόπους. Ο ποιος συνήθης είναι να ενεργοποιήσουμε (mount) ένα σύστημα αρχείων πάνω τους (εσωτερικά, ο
κώδικας των συστημάτων αρχείων είναι σαν ένα \'επίστρωμα\' του οδηγού του block device). 'λλοι τρόποι περιλαμβάνουν τη διαδικασία κατατμήσεων (partitioning) (το
οποίο μοιάζει πολύ με ένα σύστημα αρχείωμ, μόνο που διαχειρίζεται με τε΄λείως διαφορετικό τρόπο), και η χρησιμοποίησή του ώς έχει (raw).
To Linux 2.4 περιλαμβάνει όλα τα συστήματα αρχείων του 2.2. Αυτά συμπεριλαμβάνουν το **FAT (για τα διάφορα DOS), το ΝΤFS (Windows NT), VFAT και FAT32 (Windows
9x), HFS (MacOS), HPFS (OS/2)** και άλλα. Έχουν προστεθεί καινούργια συστήματα αρχείων, κυρίως το σύστημα **UDF** που χρησιμοποιείται στα **DVD** και το **XFS
(ή EFS)** που χρησιμοποιείται από το **ΙRIX**. Όλα τα συστήματα έχουν ξαναγραφεί σε ένα βαθμό προκειμένου να υποστηρίζουν το καινούργιο σύστημα page caching και
θα είναι πιο αποδοτικά εξαιτίτας αυτής της αλλαγής. Η μόνη εξαίρεση είναι αυτή του **ΝΤFS** που δεν συντηρείται ιδιαίτερα και δεν είναι σταθερό.
Υπάρχει ένας αριθμός αλλαγών που θα βελτιώσουν τη συμβατότητα με άλλα συστήματα. Οι χρήστες OS/2 θα μπορούν επιτέλους να γράψουν στα συστήματα αρχείων τους μέσα
από το Linux. Οι χρήστες ΝΤ δεν έχουν αυτήν την πολυτέλεια ακόμη μια που ο οδηγός είναι ακόμα σε πειραματικό στάδιο. Οι χρήστες **NextStep** θα μπορούν να
ενεργοποιούν (mount) τα CD-ROM τους κάτω από Linux, μια και αυτό υποστηρίζει μία επέκταση του UFS που χρησιμοποιεί το ΝextStep. Ας σημειωθεί ότι το **HFS+**, το
νέο σύστημα αρχείων του Macintosh δεν υποστηρίζεται ακόμη από το Linux.
To Linux 2.4 δεν υποστηρίζει ακόμη ένα **journaling** σύστημα αρχείων, αν και διάφορα σχέδια είναι κοντά στο να παρέχουν αυτή τη λειτουργία με σταθερό τρόπο. Αν
και είναι σχεδόν σίγουρο ότι ένα τέτοιο σύστημα δεν θα υποστηρίζεται από το Linux 2.4, αναμένεται ότι τουλάχιστον ένα τέτοιο θα προστεθεί στον κύκλο 2.4.
Επιπροσθέτως, ο κώδικας διαχείρισης του πίνακα κατατμήσεων έχει ξαναγραφεί και τώρα επιτρέπει να χρησιμοποιηθεί μία πολύ μεγαλύτερη επιλογή ξένων τύπων πινάκων.
Αυτό θα ήταν χρήσιμο αν έχετε, για παράδειγμα, ένα εξωτερικό οδηγό **SCSI** από ένα Macintosh και θέλετε να τον χρησιμοποιήσετε στο PC σας. Έχει προστεθεί ένας
αριθμός νέων τύπων πινάκων κατατμήσεων, συμπεριλαμβανομένου του format για μηχανήματα **ΙRIX**.
Δεν ενεργοποιούνται όλα τα συστήματα αρχείων πάνω από **block devices**. Μερικά, όπως το proc και το devfs είναι τελείως εικονικά. 'λλα ενεργοποιούνται στο
δίκτυο. Υπάρχει ένας αριθμός τρόπων για να πραγματοποιηθεί αυτό και πολλά λειτουργικά προσφέρουν τις δικές τους μεθόδους.
Ο κόσμος των Windows χρησιμοποιεί το **Server Message Block (SMB)** για τα δικτυακά συστήματα αρχείων. Ο νέος πυρήνας Linux αφαιρεί την επιλογή του εάν θα
ενεργοποιηθούν δίσκοι από Windows 9x ή NT κατά το compile. Θα μπορεί να ανιχνεύει αυτόματα τον τύπο του απομακρυσμένου συστήματος και να ενεργοποιεί διορθώσεις
όταν χρειάζεται. Αυτό θα βελτιώσει σημαντικά την ικανότητα του Linux να λειτουργεί σε δίκτυα με διάφορες εκδόσεις Windows.
Στον κόσμο του UNIX, το πρωτόκολλο NFS είναι το προτιμητέο για διαμοίρασμα (share) αρχείων. Το Linux 2.4 περιλαμβάνει τη δυνατότητα πρόσβασης σε κοινά αρχεία με
την τελευταία έκδοση του ΝFS, NFSv3. Αυτή έχει πολλά πλεονεκτήματα σε σχέση με προηγούμενες εκδόσεις και είναι από τα πλέον σητημένα χαρακτηριστικά . Θα πρέπει
να σημειωθεί, πάντως, ότι ο δαίμονας του ΝFS θα εξάγει ακόμη μόνο NFSv2 από Linux (έχει ανακοινωθεί εξέλιξη υποστήριξης για NFSv4).
### [1.9 Συσκευές Χαρακτήρων - Πληκτρολόγια, Ποντίκια, Κονσόλες και Θύρες]{#ss1.9}
Οι συσκευές που μπορούν να προσπελασθούν σε σειρά είναι οι συσκευές χαρακτήρων. Αυτές είναι συσκευές, όπως οι σειριακές, που επιτρέπουν την ανάγνωσημίας
αλληλουχίας δεδομένων ή την εισαγωγή δεδομένων σε αυτή, αλλά όχι και το \'τρέξιμο\' μπροστά ή πίσω. Αυτές περιλαμβάνουν τις σειριακές και παράλληλες θύρες, τα
πληκτρολόγια, τα ποντίκια και τις τερματικές συσκευές (terminal devices). Υπάρχουν σημαντικές βελτιώσεις σε αυτόν τον τομέα στον τελευταίο πυρήνα.
Μία από τις μεγαλύτερες βελτιώσεις είναι στην υποστήριξη για πληκτρολόγια και ποντίκα. Προηγουμένως υπήρχε υποστήριξη για σειριακά και PS/2 πληκτρολόγια και
ποντίκια (και ADB, για παράδειγμα, σε Macintosh). Το Linux 2.4 υποστηρίζει ποντίκια και πληκτρολόγια USB. Επιπροσθέτως, υποστηρίζει πληκτρολόγια σε συστήματα
όπου το πληκτρολόγιο δεν αρχικοποιείται από το BIOS και συστήματα με προβλήματα στην ανίχνευση πληκτρολογίου. Και τέλως, το Linux 2.4 περιλαμβάνει εκτενή
υποστήριξη για digitizer pads και υποστηρίζει προσωμοίωση για να χρησιμοποιηθούν ώς κανονικά ποντίκια, ακόμη και αν αυτό δεν υποστηρίζεται ευθέως από το υλικό.
Η υποστήριξη του Linux για σειριακές θύρες δεν έχει αλλάξει ιδιαίτερα από τις ημέρες του 2.2. Το Linux 2.4 υποστηρίζει διαμοιρασμένα ΙRQ σε PCI. Προηγουμένως,
αυτό το χαρακτηριστικό περιοριζόταν σε ΙSA και on-board σειριακές πλακέτες. Επιπροσθέτως, το Linux 2.4 προσθέτει έναν αριθμό νέων οδηγών για σειριακές κάρτες
πολλαπλών θυρών. Ελπίζεται ότι αυτές οι αλλαγές και άλλες θα κάνουν τη χρήση των σειριακών θυρών ευκολότερη από ποτέ.
Σε ένα ξεχωριστό τομέα, έχει γίνει δουλειά στην υποστήριξη των αποκαλούμενων **WinModems (ή Soft Modems)**. Aυτά είναι modem που υλοποιούνται ευρέως μέσω
λογισμικού (συχνά το DSP και άλλα μέρη του υλικού πρέπει να προσομοιωθούν από λογισμικό). Αν και δεν έχει επιδοθεί κώδικας στον Linus για την υποστήριξη αυτή,
διάφορα σχέδια είναι στα σκαριά για την υποστήριξη των modem αυτών και τα πρώτα δείγματα έχουν αρχίσει να φαίνονται έξω από το main tree. Αν και θα πάρει αρκετό
καιρό πριν να υποστηριχθούν οι περισσότερες από αυτές τις συσκευές, φαίνεται πως για πρώτη φορά η χιονόμπαλλα του Οpen Source αρχίζει να κυλάει προς αυτή την
κατεύθυνση.
Το Linux 2.4 ακόμη έχει ένα ευρέως ξαναγραμμένο υποσύστημα παράλληλης θύρας. Μία από τις μεγαλύτερες αλλαγές σε αυτόν τον τομέα είναι η υποστήριξη για
\`\`generic\'\' παράλληλες συσκευές. Η λειτουργικότητα αυτή μπορεί να χρησιμοποιηθεί από προγράμματα που έχουν πρόσβαση στη θύρα με ασυνήθιστους τρόπους,
περιλαμβανομένης της χρήσης UDMA για γρηγορότερο Ι/Ο αν αυτό υποστηρίζεται από το υλικό. Με τον νέο πηρήνα, είναι επίσης δυνατό το να κατευθύνονται όλα τα
μηνύματα της κονσόλας σε μία παράλληλη συσκευή όπως ένας εκτυπωτής. Αυτό επιτρέπει στο Linux να έχει τη λειτουργικότητα πολλών εμπορικών UNIX βγάζοντας τα
μηνύματα του πυρήνα και του debugging σε εκτυπωτές.
Η υποστήριξη για υπέρυθρες έχει βελτιωθεί από το 2.2 και έχουν γίνει πολλές αλλαγές, συμπεριλαμβανομένης καλύτερης δικτυακής υποστήριξης.
### [1.10 Πολυμέσα: Ήχος, Τηεόραση, Ραδιόφωνο κλπ]{#ss1.10}
Στην πλευρά των συσκευών χαρακτήρα έχουμε κάποιες από τις λιγότερο αναγκαίες για υποστήριξη συσκευές. Το Linux, ως αναδυόμενη λύση για πλατφόρμα desktop
προσπαθεί πολύ σκληρά να υποστηρίξει κάρτες ήχου, τηλεόρασης και ραδιοφώνου και άλλες συσκευές εισόδου/εξόδου ήχου και εικόνας. Για να είμαστε ειλικρινείς, το
2.4 δεν έχει τραγικές αλλαγές από τον 2.2. Όμως περιλαμβάνει ανανεώσεις και καινούργιους οδηγούς για διάφορες κάρτες ήχου και εικόνας καθώς και υποστήριξη για
full duplex. Το 2.4 ακόμη περιλαμβάνει κώδικα που επιτρέπει σε κάποιες συσκευές ήχου να διαχειρίζονται ευκολότερα μνήμη στις αναγκαίες περιοχές. Αυτό θα
διευκολύνει πολύ τη ρύθμιση και τη χρήση των καρτών
Ένα τελείως καινούργιο υποσύστημα ήχου είναι στα σκαριά και θα χρησιμοποιεί πολλά από τα πιο προχωρημένα χαρακτηριστικά των σημερινών καρτών ήχου. Αυτή η
υποστήριξη θα ενσωματωθεί στον 2.6.
### [1.11 Κάρτες Video και συσκευές Framebuffer]{#ss1.11}
Μία άλλη, πιο περίπλοκη ποικιλία συσκευών είναι οι framebuffer. Μία τέτοια συσκευή είναι απλά μία περιοχή της μνήμης που αντιπροσωπεύει (ή είναι) μνήμη video σε
τέτοιο βαθμό που η εγγραφή σε αυτή τη μνήμη επηρρεάζει τα χρώματα και τα pixel σε μία ιθόνη. Αυτό είναι πιο πολύπλοκο από άλλες συσκευές γιατή υποστηρίζει
ioctls για την αλλαγή παλέττας και άλλες λειτουργίες σχετιζόμενες με το video. Το Linux 2.4 περιλαμβάνει νέους οδηγούς και βελτιώσεις στους παλιούς. Ιδιαίτερα
σημαντηκή είναι η υποστήριξη για πολύ περισσότερες \'στάνταρντ\' κάρτες και διαρυθμίσεις VGA,τουλάχιστον σε ορισμένα modes (ακόμη και αν αυτόε ίναι μόνο 16
χρωμάτων). Να θυμάστε ότι αυτό το χαρακτηριστικό μπορεί να προσπερασθεί και (σε i386) είναι χρήσιμό μόνο σε συστήματα που δεν μπορούν να υποστηριχθούν κατ\'
άλλο τρόπο. Αυτή τη στιγμή, το Χfree προσφέρει υποστήριξη για πολύ περισσότερες κάρτες απ\' ό,τι ο πυρήνας και έτσι δεν είναι αναγκαία η χρήση αυτής της
λειτουργίας για υποστήριξη για το σύστημα X Window (η **SVGALib** και άλλες libraries επιτρέπουν την άμεση διαχείριση εικόνας σε υποστηριζόμενο υλικό, αν και η
χρήση αυτών πρέπει να γίνεται μετα προσοχής για λόγους ασφάλειας).
Μία από τις μεγαλύτερες αλλαγές εδώ είναι η προσθήκη του **Direct Rendering Manager** στον πυρήνα. Ο **DRM** ξεκαθαρίζει την πρόσβαση στο υλικό και δεν
επιτρέπει καταστάσεις όπου πολλές διεργασίες που γράφουν στην κάρτα εικόνας προκαλλούν κρασάρισμα του συστήματος. Αυτό θα βελτιώσει την σταθερότητα σε πολλές
περιπτώσεις. Ο DRM επίσης λειτουργεί σαν σημείο εισόδου για την πρόσβαση DMA καρτών video. Συνολικά, αυτές οι αλλαγές μαζί με τα Xfree4.x και άλλα συμβατά
προγράμματα θα επιτρέψουν στο Linux να είναι πιο σταθερό και ασφαλές όταν διενεργεί δουλειά εντατικών γραφικών, όπως και την καλύτερη υποστήριξη καρτών
τηλεόρασης.
### [1.12 Προσιτότητα - accessibility]{#ss1.12}
Όταν σκεφτόμαστε το Linux οι λέξεις \"user friendly\" γενικά δεν έρχονται αμέσως στο μυαλό. Έτσι, κάποιος μπορεί να εκπλαγεί μαθαίνοντας ότι το Linux 2.4
υποστηρίζει κάρτες σύνθεσης ομιλίας. Αυτός ο οδηγός και το ανάλογο υλικό θα επιτρέψει σε χρήστες με μειωμένη ικανότητα όρασης να ακούνε όλα τα μηνύματα του
Linux , ακόμη και αυτά πολύ νωρίς στη διαδικασία εκκίνησης. Πολύ λίγα συστήματα μπορούν να περηφανευθούν για τέτοια υποστήριξη σε τόσο βσαικό επίπεδο (θα
υπάρξουν και άλλα προγράμματα και patches για τη πλήρη χρησιμοποίηση αυτών των συσκευών, μια που ο οδηγός του πυρήνα είναι μόνο ένα κομμάτι του συστήματος.)
### [1.13 Δικτύωση και πρωτόκολλα]{#ss1.13}
Η δικτύωση και το υλικό δικτύου είναι ένας από τους τομείς που το Linux πάντοτε τα πήγαινε περίφημα. Αυτές οι συσκευές δεν είναι ούτε \"character\" ούτε
\"block\" αλλά καταλαμβάνουν έναν ειδικό χώρο που δεν χρειάζεται κόμβους (nodes)συσκευών. Το Linux 2.4 θα περιλαμβάνει πολλές βελτιώσεις σε αυτόν τον τομέα,
όπως νέους οδηγούς, διορθώσεις και νέα λειτουργικότητα στους υπάρχοντες οδηγούς.
Το μοντέλο Linux για sockects δικτύου είναι ένα στανταρντ στις περισσότερες παραλλαγές Unix. Δυστυχώς όμως, έχει κάποια διορθώσιμα ελλατώματα. Στο Linux 2.2 και
πριν, αν έχετε έναν αριθμό διεργασιών που περιμένουν για ένα γεγονός από το δίκτυο (web server, για παράδειγμα) θα \`\`ξυπνήσουν\'\' όλες όταν ανιχνευθεί
δραστηριότητα. Έτσι, για κάθε αίτηση για σελίδα web το Linux θα \`\`ξύπναγε\'\' έναν αριθμό διεργασιών για την ίδια αίτηση. Μια που δεν έχει νόημα πολλαπλές
διεργασίες να εξυπηρετούν την ίδια αίτηση, μόνο μία θα φτάσει στα δεδομένα, ενώ οι υπόλοιπες δεν θα βρουν τίποτα να επεξεργαστούν και θα ξανακοιμηθούν. Το Linux
είναι αρκετά αποτελεσματικό και γρήγορο σε αυτό, αλλά θα μπορούσε να γίνει καλύτερο αν δεν γινόντουσαν τα μή απαραίτητα \`\`ξυπνήματα\'\'. Το Linux 2.4
περιλαμβάνει αλλαγές που επιτρέπουν ακριβώς αυτό, δηλαδή μέσω του χαρακτηριστικού \`\`wake one\'\' να ξυπνάει μόνο μία διεργασία στην περίπτωση δραστηριότητας.
Αυτό θα επιτρέψει σε εφαρμογές όπως ο Apache να είναι ακόμη πιο αποδοτικές και να γίνει το Linux ακόμα καλύτερη επιλογή ώς web server.
To Linux 2.4 ακόμη περιλαμβάνει ένα τελείως ξαναγραμμένο layer δικτύωσης. Έχει γίνει όσο πιο μή-σειριακό γίνεται για να προσαρμόζεται (scale) το δυνατόν
καλύτερα από οποιαδήποτε προηγούμενη έκδοση. Επιπροσθέτωςμ ολόκληρο το υποσύστημα έχει ξανασχεδιασθεί για να είναι όσο πιο σταθερό γίνεται σε συστήματα
πολλαπλών επεξεργαστών. Ακόμα, περιλαμβάνει πολλές βελτιώσεις που του επιτρέπουν να λειτουργεί με δικτυακές ιδιομορφίες πολλών λειτουργικών, όπως τα Windows. Θα
πρέπει επίσης να υπενθυμισθεί εδώ ότι το Linux είναι ακόμα το μόνο λειτουργικό πλήρως συμβατό με το γράμμα των προδαγραφών ΙPv4 και το Linux 2.4 έχει να
επιδείξει μία εφαρμογή αυτού πολύ πιο προσαρμόσιμή από αυτή του προκατόχου του.
Ώς μέρος αυτού του ξαναγραψίματος, η λειτουργικότητα του πυρήνα σε ό,τι αφορά σε **firewall** και **IP masquerading** έχει ξαναγραφτεί, όπως και στον 2.2. Το
νέο υποσύστημα έχει χωριστεί σε δύο μέρη: ένα στρώμα φιλτραρίσματος πακέτων και ένα στρώμα μετάφρασης δικτυακών διευθύνσεων (**network address translation -
NAT**). Αυτά τα νέα υποσυστήματα είναι σημαντικά πιο γενικά από τους προκατόχους τους, και τώρα είναι δυνατό να γίνεται και η πιο απαιτητική εργασία routing
μέσω Linux. Προηγουμένως, αυτή η λειτουργικότητα ήταν διαθέσιμη με ειδικό υλικό. Δυστυχώς αυτό το ξαναγράψιμο περιλαμβάνει ένα νέο εργαλείο userspace για τη
διαχείριση της υπάρχουσας λειτουργικότητας. Για συμβατότητα, υπάρχουν αρθρώματα που επιτρέπουν τη χρήση των εργαλείων είτε του **Linux 2.0 (ipfwadm)** είτε του
Linux 2.2 (ipchains). Αυτό θα κάνει την αναβάθμιση πιο εύκολη.
Για τους χρήστες σε επιχειρήσεις, υπάρχει ένας αριθμός χαρακτηριστικών που θα επιτρέψουν στο Linux την καλύτερη ενσωμάτωση σε παλαιότερα και νεότερα στοιχεία
υπαρχουσών δομών δικτύων. Μία σημαντική πρόσθεση εδώ είναι η νέα υποστήριξη για τα πρωτόκολλα και το υλικό **DECnet** και **ARCnet**. Αυτό επθιτρέπει την
καλύτερη συνεργασίαμε εξειδικευμένα συστήματα, περιλαμβανομένων παλαιότερων συστημάτων **Digital/Compaq**. Επίσης ιδιαίτερα ενδιαφέρουσα θα είναι η υποστήριξη
για **ATM network adapters** για δικτύωση υψηλών ταχυτήτων.
Για το μέσο χρήστη, το ΡΡΡ είναι σημαντικό μέρος της καθημερινής χρήσης. Το Linux 2.4 περιλαμβάνει μεγάλες βελτιώσεις και αρθρωματοποίηση μεγάλου ποσοστού του
κώδικα, περιλαμβάνοντας ένα από καιρό αναμενόμενο συνδιασμό των στρωμάτων ΡΡΡ από το στρώμα ISDN kai PPP, όπως για τηλεφωνικές συνδέσεις με μόντεμ. Ακόμα, το
ΙSDN έχει ανανεωθεί για να υποστηρίξει πολλές νέες κάρτες. Το **PLIP (ΡΡΡ σε παράλληλες θύρες)** έχει επίσης βελτιωθεί και χρησιμοποιεί το νέο **abstraction
layer** της παράλληλης θύρας. Και τέλος, έχει προστεθεί υποστήριξη για **PPP μέσω Ethernet (PPPoE)** που χρησιμοποιείται από κάποιους παροχείς DSL.
### [1.14 Binary Types]{#ss1.14}
Ενα συνήθως παραμελημένο μέρος του πυρήνα είναι ο loader του προγράμματος: το κομμάτι που παίρνει τα προγράμματα, τα φορτώνει σωστά και τα τρέχει. Πολλοί δεν
γνωρίζουν ότι στο Linux 2.2 προστέθηκε υποστήριξη για ένα δυαδικό φορτωτή \"διαφόρων\", ένα εύκαμπτο άρθρωμα σχεδιασμένο να επιτρέπει στο χρήστη να συσχετίζει
τύπους δυαδικών αρχείων (βασιζόμενο στην κατάληξη ή σε πληροφορίες του header) με εφαρμογές \"helper\" περίπου όπως τα Windows. Αυτό θα μπορούσε να συσχετίσει,
για παράδειγμα, όλες τις εφαρμογές Windows με τον WINE έτσι ώστε όταν γράψετε \"./notepad.exe\" να συμβεί το σωστό πράγμα. Αυτό θεωρήθηκε μεγάλη νίκη από
πολλούς γιατί επιτρέπει σε πολλές ομάδες, όπως την ομάδα του **Wine (Windows non-Emulator)** και **Dosemu** να δημοσιεύσουν πληροφορίες για να τρέχουν τα
προγράμματά τους \'native\' από τον πυρήνα.
Το Linux 2.2 και 2.0 περιλάμβαναν ενσωματωμένη υποστήριξη για την εκκίνηση ενός Java interpreter όταν εκτελούταν μία εφαρμογή Java (και ήταν από τα πρώτα
λειτουργικά που το έκαναν αυτό σε επίπεδο πυρήνα). Το Linux 2.4 ακόμα περιλαμβάνει αυτή την υποστήριξη, αλλά ο ειδικός οδηγός έχει αφαιρεθεί και οι χρήστες θα
πρέπει να ανανεώσουν τα συστήματά τους για να χρησιμοποιήσουν τον οδηγό \"Misc.\".
### [1.15 O Kernel Web Daemon]{#ss1.15}
Ένα από τα πιο χτυπητά χαρακτηριστικά στον πυρήνα 2.4 είναι ο the kernel web daemon, ή khttpd. Είναι αλήθεια, το Linux πραγματικά υποστηρίζει ένα άρθρωμα πυρήνα
που μπορεί να επεξεργαστεί αιτήσεις HTTP χωρίς να χρειαστεί να επικοινωνήσει με κανέναν user space server (όπως ο Αpache). Αυτό το χαακτηριστικό συχνά
παρερμηνεύεται - δεν έχει σχεδιαστεί για να αντικαταστήσει τον Apache ή οποιονδήποτε άλλο εξυπηρέτη και μπορεί να χρησιμοποιηθεί μόνο για raw αρχεία (όχι CGI).
Αν λάβει μία αίτηση για κάτι που δεν μπορεί να χειρισθεί, θα την περάσει στον εξυπηρέτη χωρίς αυτός να καταλάβει τη διαφορά. Αυτό το χαρακτηριστικό θα κάνει το
Linux μία ακόμη καλύτερη επιλογή για γρήγορη εξυπηρέτηση web στατικού περιεχομένου όπως οι **dedicated image servers**.
### [1.16 Κρυπτογραφία στον Πυρήνα]{#ss1.16}
Αν και οι νόμοι εξαγωγής στην Αμερική έχουν αλλάξει από τον 2.2, το Linux 2.4 μάλλον δεν θα περιλαμβάνει υποστήριξη για κρυπρογράφηση στην κύρια διανομή. Οι
περιορισμοί στην εισαγωγή/εξαγωγή κρυπρογραφίας είναι διαφορετικοί σε όλο τον κόσμο. Ήδη όμως, είναι διαθέσιμα patches για την κρυπτογράφηση σε πολλά
υποσυστήματα του πυρήνα. Μένει να ειδωθεί πόσο επίσημα θα είναι αυτά στο μέλλον.

194
content/articles/26/05_lfs.md Κανονικό αρχείο

@ -0,0 +1,194 @@
+++
title = 'To \...δικό μας Linux. Γιατί και πως'
date = '2000-10-01T00:00:00Z'
description = ''
author = 'Μιχάλης Καμπριάνης(mailto:kabrianis@hellug.gr)'
issue = ['Magaz 26']
issue_weight = 5
+++
----------------------------------------------------------------------------------------------------------------------------------------------------------------
*Αναρωτηθήκατε ποτέ πόσα \"άχρηστα\" προγράμματα βρίσκονται στον υπολογιστή σας; Εκνευριστήκατε ποτέ για τα αυτόματα scripts που τρέχουν χωρίς να τα βάλατε
εσείς; Εγώ ναι. Και αποφάσισα να το ξεπεράσω με τον πιο δραστικό (!!!) τρόπο. Φτιάχνοντας το δικό μου Linux.*
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Κάθε φορά που στήνω ένα νέο μηχάνημα έχω το ίδιο πρόβλημα. Ποιο distribution να βάλω που:
- Να μην θέλει πάνω από μισή ώρα για την εγκατάσταση
- Να μην μου γεμίσει το δίσκο με άχρηστα προγράμματα
- Να μην μου εγκαταστήσει τα προγράμματα που ούτως ή άλλως θα ξαναβάλω εγώ για να τα ρυθμίσω στα paths που θέλω, και ίσως και με κάποιες έξτρα παραμέτρους
(πειραγμένα).
- Να ακολουθεί ένα όσο το δυνατόν πιο ορθολογικό και standard τρόπο ρύθμισης αρχείων του συστήματος, τα οποία θέλω να βρίσκονται\... εκεί που θα τα βρω (ίσως
εκεί που πρέπει να είναι καλύτερη έκφραση αλλά δεν ξέρω αν ισχύει :-)
- Να μην περιμένει να κάνω όλες τις δουλειές μου στο σύστημα με το δικό του super-extra-duper πρόγραμμα διαχείρησης / εγκατάστασης πακέτων.
- Να μην περιμένει να κάνω όλες τις ρυθμίσεις στο σύστημα από το δικό του super-extra-duper πρόγραμμα ρυθμίσεων που τροποποιεί το ειδικό αρχείο τρέχα-γύρευε
το οποίο με τη σειρά του ρυθμίζει τα πάντα.
Ζόρικα τα πράγματα. Ειδικά το πρώτο είναι σχεδόν αδύνατο (σε συνδυασμό βέβαια με τα υπόλοιπα). Για να δούμε κάποιες προτάσεις για το πως θα προσεγγίσουμε όσο το
δυνατόν περισσότερα από τα παραπάνω.
**1. Εναλλακτικές προτάσεις**
---------------------------------------------------
**2. Τι είναι το Linux (πάααααλι;)**
----------------------------------------------------------
**3. Τι ακριβώς θα κάνουμε είπαμε;**
----------------------------------------------------------
**4. Βήμα 1ο: Προετοιμασία του συστήματος.**
------------------------------------------------------------------
**5. Βήμα 2ο: Δημιουργώντας το βασικό μας σύστημα**
-------------------------------------------------------------------------
**6. Βήμα 3ο: Διορθώνοντας τον Gerard**
-------------------------------------------------------------
**7. Επίλογος**
-------------------------------------
### [1. Εναλλακτικές προτάσεις]{#s1}
Οι λύσεις που ξέρω (και μπορεί να υπάρχουν κι άλλες που να μην τις ξέρω) είναι οι εξής:
**Πρώτη λύση**\
Χρησιμοποιούμε ένα RPM-based distribution (Caldera, Mandrake, TurboLinux, RedHat, SuSE ίσως και άλλα), κάνουμε την ελάχιστη δυνατή εγκατάσταση σε όσα από αυτά
γίνεται.\
Εγκαθιστούμε τα προγράμματα που ενημερώνουν την rpm database για όσα προγράμματα βάζουμε με το χέρι, κατεβάζουμε και κάνουμε compile όσα προγράμματα θέλουμε να
βάλουμε εμείς μετά, κάνοντας ταυτόχρονα και ένα upgrade στα προγράμματα που έχουμε ήδη εγκαταστήσει (και δεν γινόταν αλλιώς) και θέλουμε νεώτερες εκδόσεις.\
Ελέγχουμε **όλα** τα αρχεία στο /etc directory για να τα προσαρμόσουμε στις ανάγκες μας (και όχι αυτές που νομίζει ο εγκαταστάτης ότι είναι οι ανάγκες μας).\
Διαμορφώνουμε **σωστά** αυτή τη φορά τα runlevels τα οποία αν δεν μπορούν να ακολουθήσουν το Linuxbase, τουλάχιστον ας μοιάζουν με κάποιο από τα άλλα Unices που
δουλεύουμε.
**Δεύτερη λύση**\
Χρησιμοποιούμε το Slackware ή κάποιο άλλο tgz - based distribution (υπάρχει;) και ακολουθούμε την ίδια διαδικασία, απλά \"πηδώντας\" τα κομμάτια για το RPM που
είπαμε παραπάνω.\
Ή εναλλακτικά χρησιμοποιούμε κάποιο debian-based distribution (Corel, Debian, Storm κλπ) για τα οποία δεν ξέρω, αλλά φαντάζομαι ότι υπάρχει ένας τρόπος να
\"παρακάμψεις\" τον package manager και να ακολουθήσεις όλα τα βήματα που είπαμε παραπάνω για τις rpm-based distributions.
**Τρίτη λύση**\
Κατεβάζουμε ένα minimum distribution (Leetnux, Laonux, RockLinux, Trinux κλπ) ελπίζοντας ότι ο εγκαταστάτης έκανε καλή δουλειά και θα μας γλιτώσει από κάποιο
κόπο. Με βάση αυτό το distribution χτίζουμε το σύστημά μας, βγάζοντας και βάζοντας πακέτα, αλλάζοντας και τροποποιώντας scripts κ.ο.κ.
**Τέταρτη λύση**\
Πηγαίνουμε στο [Linux From the Scratch](http://www.linuxfromscratch.org), κατεβάζουμε τις οδηγίες, 70 Mb σε προγράμματα, οπλιζόμαστε με υπομονή και αρχίζουμε να
χτίζουμε το δικό μας Linux.
Όπως προείπα, όλες οι παραπάνω λύσεις θέλουν όχι λιγότερο από μισή ώρα που είπα στην αρχή, αλλά πολύ περισσότερο. Ίσως και να μιλάμε για καμιά-δυο μέρες ίσως
και πολύ περισσότερο (όπου μέρα == το τρίωρο που μας μένει ελεύθερο να ασχοληθούμε με το PC μας). Αλλά υπάρχουν κάποια κόλπα στην όλη υπόθεση\... Και θα δείτε
στη συνέχεια ότι το πράγμα γίνεται πολύ όμορφο.
### [2. Τι είναι το Linux (πάααααλι;)]{#s2}
Όχι, δεν θα πω πάλι τα βαρετά και ίδια πράγματα, απλά κάποιες ελάχιστες λεπτομέρειες.\
Πολλές φορές έχετε ακούσει ότι Linux τεχνικά είναι μόνο ο πυρήνας, και ότι όλα τα άλλα είναι GNU και OpenSource προγράμματα. Αυτό δεν είναι απόλυτα ακριβές
βέβαια. Linux, δεν είναι μόνο ο πυρήνας αλλά και πραγματάκια άλλα που καθορίζουν consortiums κλπ όπως το FHS (Filesystem Hierarchy Standard) το τι είναι τα
Runlevels σε ένα σύστημα που θέλει να λέγεται Linux, και διάφορα άλλα τέτοια.\
Όχι, δεν θέλω να πω ότι τα XFree86 είναι Linux, ούτε ότι το gcc είναι Linux, αλλά το ότι το runlevel 1 σημαίνει single user και το runlevel 6 σημαίνει reboot
κάποιος τα έχει πει, και αυτός ο κάποιος λέγεται Linuxbase. Και αν κάποιος θέλει να κάνει ένα distribution το οποίο θα λέγεται Linux, ε, καλά θα κάνει να τα
σεβαστεί αυτά. Όπως επίσης καλά θα κάνει να σεβαστεί και το ποια αρχεία θα βρίσκονται που (και όχι να πετάμε τα init scripts όπου και όπως μας βολεύει).\
Αν βέβαια έχουμε συνηθίσει κάποιο distribution και τις (τυχόν) παραξενιές του κανείς δεν μας απαγορεύει, στο δικό μας Linux, να ακολουθήσουμε τα γνωστά σε μας
από αυτό. Εγώ όμως, στην συγκεκριμένη περίπτωση, αποφάσισα να κάνω αυτό που θεωρώ σωστό. Όλα (ή μάλλον όσα μπορώ), να είναι by the book. Τα αρχεία θα βρίσκονται
εκεί που πρέπει, και τα runlevels θα είναι αυτά που πρέπει. Το μηχάνημα θα ανεβάζει μόνο τα services που πρέπει και θα έχει εγκατεστημένα μόνο τα πακέτα που
πρέπει\...
Ας ξεκαθαρίσω από την αρχή τα δεδομένα: Καμμία ευθύνη δεν φέρω σε περίπτωση που κάποιος καταστρέψει το σύστημά του διαβάζοντας αυτό το άρθρο. Σε καμία περίπτωση
δεν θα πρότεινα στους απλούς χρήστες μία τέτοια διαδικασία (κάτι ξέρουν που υπάρχουν οι Suse, Debian, κλπ κλπ κλπ). Τα όσα θα ακολουθήσουν είναι για ανθρώπους
αρκετά έμπειρους να κάνουν ένα custom compile κάνοντας override κάποια system-wide defaults και που ξέρουν κάποια πράγματα από την έννοια του multiuser
λειτουργικού συστήματος. Τα ίδια (περίπου) θα διαβάσετε και στις οδηγίες του Linux from the scratch. Πιστέψτε μας. Αν δεν ξέρετε που μπλέκετε, ΜΗΝ το κάνετε.
### [3. Τι ακριβώς θα κάνουμε είπαμε;]{#s3}
Η όλη ιδέα είναι να \"χτίσουμε\" ένα Linux σύστημα από την αρχή. Αφού ούτως ή άλλως, αν ξεκινήσουμε να χτίζουμε από κάποιο distribution θα φάμε και κανένα 4ωρο
να φέρουμε το σύστημα στα μέτρα μας, ας φάμε κανένα 10ωρο μιας εξαρχής να το απολαύσουμε κιόλας.
Το να χτίσουμε ένα Linux σύστημα βέβαια σημαίνει ότι δεν υπάρχει τίποτα. Ούτε πυρήνας, ούτε libc, ούτε compiler, ούτε boot manager, ούτε shell\... τίποτα. Το
λέω και το ξαναλέω για να μην ξεκινήσετε κάτι που δεν πρόκειται να τελειώσετε ποτέ και να χάσετε τόσο χρόνο. Όταν αυτή η διαδικασία τελειώσει, δεν θα δουλεύει
τίποτα. Ούτε services θα σηκώνονται, ούτε init scripts θα υπάρχουν, ούτε το bash θα είναι ρυθμισμένο (εκείνα τα χρωματάκια στο ls και εκείνα τα παράξενα aliases
του τύπου \"rm=\'rm -i\'\" ξεχάστε τα). Αλλά θα είναι το δικό σας linux σύστημα, και θα μάθετε τόσα πολλά για το linux (και πολλά άλλα προγράμματα) κάνοντας
αυτή τη διαδικασία που δεν θα τα μάθετε σχεδόν με κανέναν άλλο τρόπο.
Θα ακολουθήσουμε τη διαδικασία που περιγράφει στο πολύ καλό βιβλίο του ο Gerard Beekmans και το έχει για όλους εμάς τους υπόλοιπους στο [site
του](http://www.linuxfromscratch.org). Σε μερικά σημεία, η δικιά μου διαδικασία διαφοροποιήθηκε λίγο. Θα δείτε γιατί και είστε ελεύθεροι ή να την ακολουθήσετε,
ή όχι.
Εγώ ας πούμε έχω τελικά κρατήσει τρία snapshots του συστήματος, για να μπορώ ανά πάσα στιγμή να ξεκινήσω ξανά την διαδικασία από όπου θέλω (πρέπει) ούτως ώστε
να ξαναφτιάξω ακριβώς το ίδιο σύστημα.
Ας ξεκινήσουμε.
### [4. Βήμα 1ο: Προετοιμασία του συστήματος.]{#s4}
Η διαδικασία του Gerard Beekmans είναι απλή (στη σύλληψη) αλλά και ταυτόχρονα δύσκολη (στην εφαρμογή). Ο Gerard μας έκανε τη χάρη να μας το κάνει λίγο πολύ
τυφλοσούρτη. Να πως έχει:\
Πρέπει στο μηχάνημα που θα χτίσουμε το Linux, να υπάρχει ήδη ένα Linux προεγκατεστημένο (θυμάστε; χρειαζόμαστε έναν compiler). Αφού φτιάξουμε λοιπόν ένα
partition (το οποίο τελικά θα είναι το root partition του τελικού μας συστήματος) ξεκινάμε να κάνουμε compile εκεί μέσα κάποια προγράμματα. Όλα statically
linked (γιατί κάποια στιγμή θα αποκοπούν από το παλιό σύστημα) εκτός από ένα. Ναι σωστά μαντέψατε, τη glibc.\
Εγώ προετοίμαζα (αρχικά) το linux μου για ένα μηχανάκι K6-200. Επειδή φαντάστηκα (και δεν είχα άδικο :-) ότι η διαδικασία σε αυτό το μηχάνημα θα ήταν αρκετά
αργή, αποφάσισα να την κάνω σε ένα άλλο μηχάνημα που έχω, έναν Athlon-500.\
Δημιουργούμε ένα ψευτο-σύστημα στο οποίο δεν μπορούμε να κάνουμε boot (γιατί θα λείπουν κάποια βασικά πράγματα όπως η εντολή mount και το lilo) μπορούμε όμως να
κάνουμε chroot σε αυτό και να δουλέψουμε σαν να είναι πραγματικό σύστημα. Εδώ, σε περίπτωση που κάνετε κάτι παρόμοιο με μένα, θα πρέπει να προσέξετε το εξής: Αν
και ο Gerard δεν το αναφέρει πουθενά, καλό είναι να χρησιμοποιηθούν compiler directives για compilation το οποίο να μπορεί να μεταφερθεί σε χαμηλότερο σύστημα.
Αν άφηνα το compile να ακολουθήσει την πορεία του, θα έπαιρνα ένα σύστημα optimized για i686, το οποίο βέβαια σε έναν K6 θα \"έσκαγε\" με invalid instruction.
Χρησιμοποίησα λοιπόν την παράμετρο -mcpu=i486 στον gcc και έδωσα και την παράμετρο \--host=i486-pc-linux στο configure οποιουδήποτε προγράμματος εγκαθιστούσα
(όχι ότι έχει σημασία σε αυτό το στάδιο, μια που όλα θα αντικατασταθούν εκτός από την glibc. Για αυτήν **πρέπει υποχρεωτικά** να χρησιμοποιηθεί η παράμετρος
αυτή).\
Το αποτέλεσμα (ναι, ακολουθήστε τα βήματα του Gerard, τα λέει πολύ αναλυτικά, δεν θα ξαναμπω στην ίδια διαδικασία) είναι ένα mini-σύστημα το οποίο μπορεί να
κάνει μόνο compile. Και μπορεί να τρέξει σε οποιοδήποτε μηχάνημα κλάσης 486 και πάνω (άρα και στον ταπεινό μου Κ6). Άφησα κάποια πακέτα του Gerard έξω από την
διαδικασία (όπως ας πούμε το bzip2) αν και αυτό δεν είναι απαραίτητο. Θα έλεγα μάλλον ότι είναι μη-προτεινόμενο :-)\
Στο σημείο αυτό, παίρνω ένα backup του συστήματος. Τι είναι; ένα 200 Mb (περίπου) tar file το οποίο άν συμπιεστεί (bzip2) πέφτει στα 40 Mb. Ας το κρατήσουμε σε
μία άκρη λοιπόν. Αν αύριο θελήσουμε να φτιάξουμε ένα σύστημα optimized για 686 μπορούμε να ξεκινήσουμε από αυτό, και συγκεκριμένα από το σημείο που εγκαθίσταται
η glibc και κάτω. Αν και, να παρατηρήσουμε, ότι το README της glibc λέει ότι κανένα optimization δεν θα κάνει διαφορά στην απόδοση, άρα μπορούμε να
αποσυμπιέσουμε απλά αυτό το tar και να συνεχίσουμε από το επόμενο στάδιο, χωρίς να χάσουμε τίποτα.
Μόλις έχουμε γλιτώσει 2 με 3 ώρες από την επόμενη εγκατάστασή μας (ανάλογα με το μηχάνημα στο οποίο κάνουμε το compile). Επειδή λοιπόν κρατάω αυτό το αρχείο ως
\"βάση\", κάνω στον εαυτό μου μία χάρη και κάνω strip όλα τα debugging symbols από τα static binaries (τα οποία ούτως ή άλλως θα αντικατασταθούν) για να μικρύνω
ακόμα περισσότερο το αρχείο που θα κρατήσω. Επίσης, κάνω compile με -O3 (εκτός από την glibc που την προτιμώ unoptimised εφόσον την κάνω compile σε άλλη CPU).
### [5. Βήμα 2ο: Δημιουργώντας το βασικό μας σύστημα]{#s5}
Ακολουθώντας για άλλη μία φορά τις οδηγίες του Gerard, αρχίζουμε να χτίζουμε το σύστημά μας. Όλα τα πακέτα εκτός από την glibc θα αντικατασταθούν όπως είπαμε
από άλλα, dynamically linked αυτή τη φορά. Εδώ έχουν μεγάλη σημασία και τα optimizations του compiler όπως λέει και ο Gerard, αλλά και το directive
\--host=\.... στην περίπτωση που κάνουμε το compile σε άλλο μηχάνημα από το τελικό. Εγώ για να γλιτώσω χρόνο (πάλι) συνέχισα και αυτό το στάδιο στον Αthlon,
αλλά έδωσα παραμέτρους για τον k6 μου και με υψηλό optimization, χωρίς debugging information (μια που δεν υπάρχει περίπτωση να κάτσω να κάνω debugging). Δηλαδή
-mcpu=k6 -march-k6 -O3 όπως προτείνει και ο Gerard (προσοχή, είναι το ίδιο που κάναμε και στο 1ο βήμα, αλλά για άλλο λόγο). Από τις παραμέτρους -mcpu και -march
η μία από τις δύο είναι άχρηστη, αλλά επειδή δεν ξέρουμε ποιο πρόγραμμα θα σεβαστεί ποια παράμετρο, τις βάζουμε και τις δύο να είμαστε σίγουροι. Βέβαια το
\--host μου στο configure ήταν i586-pc-linux (ναι, ο k6 είναι σαν 586).
Στο συγκεκριμένο σημείο ξαναπαίρνω ένα backup του συστήματος. Το σύστημα αυτή τη στιγμή είναι έτοιμο να κάνει boot και μπορεί να ξεκινήσει τον k6 μου κανονικά.
τώρα το σύστημα είναι 200 Mb σε tar (και 55 Mb συμπιεσμένα με bzip2) και ανά πάσα στιγμή θέλω, το \"πετάω\" σε έναν δίσκο, κάνω ένα chroot σε αυτό το δίσκο,
τρέχω το lilo και είμαι έτοιμος. Γιατί έκανα αυτά τα δύο backup; Γιατί το μεν πρώτο θα το χρησιμοποιήσω για να \"χτίσω\" οποιοδήποτε άλλο μηχάνημα (όπου να\'ναι
ξεκινάω και τον Athlon) ενώ το δεύτερο είναι ένα αρχικό working snapshot του K6.
### [6. Βήμα 3ο: Διορθώνοντας τον Gerard]{#s6}
Όπως προείπα, εγώ σε κάποια σημεία διαφοροποιήθηκα από τον Gerard είτε κατ\' επιλογή, είτε από ανάγκη.\
Κατ\' επιλογή λοιπόν κατέβασα από το <http://www.iro.umontreal.ca/contrib/po/trans/el> όλες τις νεώτερες ελληνικές μεταφράσεις και αντικατέστησα αυτές που είχαν
μέσα τα πακέτα (όχι όλα τα πακέτα, αλλά αρκετά).\
Κατ\' επιλογή πρόσθεσα και τις συμβουλές του Σίμου Ξενιτέλλη από την Linux-greek-users για ελληνικά στην κονσόλα.\
Κατ\' επιλογή αποφάσισα αντί να εγκαταστήσω το netkit-base που προτείνει ο Gerard να εγκαταστήσω κομμάτια του netkit-combo (ένα υπερσύνολο των διαφόρων netkit
utilities) μια που ούτως ή άλλως θα τα εγκαταστούσα.\
Κατ\' επιλογή αποφάσισα να εγκαταστήσω τα νεώτερα shadow tools από εκείνα που προτείνει ο Gerard και κατ\' ανάγκη άλλαξα το format του αρχείου /etc/consoles που
περιμένουν τα shadow tools να βρουν (έχω την εντύπωση ότι έχουν αλλάξει format μεταξύ των δύο εκδόσεων της shadow αλλά δεν το έχω ψάξει πολύ για να το πω με
σιγουριά). Έπρεπε πάντως αντί για το device name που έγραφα μέχρι τώρα να γράψω το full path για το device file (αντί για tty1 δηλαδή, /dev/tty1). Κατ\' επιλογή
αποφάσισα να \"πειράξω\" το αρχείο src/feature.h για το vim ούτως ώστε να ενεργοποιήσω την επιλογή για το langmap (χωρίς όλες τις άλλες που έρχονται μαζί της).
Κατ\' ανάγκη άλλαξα την εντολή του για το defkeymap και αποσυμπίεσα το συγκεκριμένο αρχείο, γιατί μόνο έτσι το δεχόταν.\
Κατ\' ανάγκη έκανα αυτό που δεν ανέφερε ο Gerard, να εκτελέσω δηλαδή την εντολή mkswap στο swap partition που είχα στο δίσκο μου, μια που αυτό το βήμα είναι
### [7. Επίλογος]{#s7}
Τι κατάφερα; Έχω ένα μηχάνημα το οποίο κάνει boot και έχει δίκτυο, telnet, ftp, compiler (και όλα τα απαιτούμενα tools για compile) και τα sources του πυρήνα.
Το σύστημα τρέχει σε οποιοδήποτε μηχάνημα από 486 και πάνω και μπορεί να χρησιμοποιηθεί σαν βάση για ένα νέο σύστημα από το μηδέν.\
Είπα προηγουμένως ότι πήρα τρία backup. Στο τρίτο backup δεν φτάσαμε ακόμα (το τρίτο backup έγινε στο live σύστημα με όλα τα προγράμματα επάνω χωρίς δεδομένα).
Στο τρίτο backup θα φτάσουμε στο επόμενο τεύχος, όταν θα αναλυσουμε όλες τις δικτυακές ρυθμίσεις που κάνουμε, και τα νέα αρχεία ρυθμίσεων που δημιουργούμε για
να φτάσουμε να έχουμε ένα μηχάνημα που θα έχει την ίδια λειτουργικότητα με οποιοδήποτε distribution, προσαρμοσμένη όμως στις ανάγκες μας και τις απαιτήσεις μας.