Περιεχόμενα

Πρόλογος 8

Κεφάλαιο 1 - Εισαγωγή 12

1.Σχετικά με το Debian 12

2.Το λειτουργικό σύστημα GNU/Linux 13

3.Διανομές GNU/Linux 14

4.Η διανομή Debian GNU/Linux 14

5.Εκδόσεις του Debian GNU/Linux 15

Κεφάλαιο 2 - Πριν την εγκατάσταση 17

1.Αναγνωρίστε το σύστημά σας 17

2.Απαραίτητες πληροφορίες 18

3.Περιφερειακά και συμβατότητα 21

4.Ελάχιστες απαιτήσεις 22

5.Υλικό και Linux, διαφορές με Windows 23

6.Το Linux σε άλλες αρχιτεκτονικές 25

Κεφάλαιο 3 - Οργάνωση της Εγκατάστασης 29

1.Απόκτηση των μέσων εγκατάστασης 29

2.Αρχεία προς εγκατάσταση 30

3.Υποστήριξη συσκευών στην εγκατάσταση 31

απλός 'vanilla' 31

συμπαγής ('compact') 31

Ο τύπος 'idepci' 31

Ο νέος τύπος 'bf2.4' 31

4.Σημεία εύρεσης των αρχείων εγκατάστασης 32

5.Δημιουργία δισκετών εγκατάστασης 33

Σε σύστημα Linux/UNIX 34

Στα Windows 34

Κεφάλαιο 4 - Εκκίνηση της εγκατάστασης 35

1.Εκκίνηση από CD-ROM 35

2.Εκκίνηση από δισκέτες 36

3.Εκκίνηση της εγκατάστασης από σκληρό δίσκο σε περιβάλλον DOS 37

4.Τα πρώτα στάδια της εγκατάστασης 38

5.Κεντρικό Μενού Εγκατάστασης του Debian GNU/Linux 40

6.Ρύθμιση του πληκτρολογίου 40

Κεφάλαιο 5 - Προχωρώντας την εγκατάσταση 42

1.Κατάτμηση του δίσκου 42

2.Το δέντρο αρχείων του Debian GNU/Linux 43

3.Συνιστώμενη κατάτμηση δίσκου 44

4.Προετοιμασία δίσκου 45

5.Εγκαινίαση και ενεργοποίηση διαμερίσματος εναλλαγής μνήμης 45

6.Αρχικοποίηση διαμερίσματος για το Linux 46

7.Συναρμογή προ-αρχικοποιημένου διαμερίσματος 49

8.Εγκατάσταση Πυρήνα και Οδηγών συσκευών 50

NFS 52

Network 52

9.Ρύθμιση συσκευών PCMCIA 52

10.Ρύθμιση οδηγών συσκευών 53

11.Ρύθμιση Δικτύου 56

12.Εγκατάσταση Βασικού συστήματος 59

13.Ετοιμάζοντας το σύστημα για εκκίνηση 61

Κεφάλαιο 6 - Μετά την εγκατάσταση 63

1.Ρυθμίζοντας το σύστημα για πρώτη φορά 63

2.Ρύθμιση Ζώνης Ώρας 64

3.Ρύθμιση κωδικών MD5 64

4.Σκίαση Κωδικών (shadow passwords) 65

5.Κωδικός χρήστη Root 65

6.Δημιουργία ενός απλού χρήστη 67

7.Ρύθμιση σύνδεσης μέσω PPP 67

Βοήθημα για χρήστες netmod ISDN του OTE 70

8.Απενεργοποίηση PCMCIA 72

9.Ρύθμιση APT 72

10.Εγκατάσταση Πακέτων 74

Απλή 75

Για προχωρημένους: dselect 76

Εναλλακτικές προτάσεις: kpackage, stormpkg 76

11.Ρύθμιση του συστήματος παραθύρων X 77

Κεφάλαιο 7 - Εκκίνηση του συστήματος 83

1.Σύνδεση στο σύστημα 83

Σύνδεση από γραφικό περιβάλλον Χ 83

Σύνδεση από κονσόλα 85

2.Αποσύνδεση 86

3.Τερματισμός του υπολογιστή 86

Τερματισμός από γραφικό περιβάλλον Χ 87

Τερματισμός από κονσόλα 87

Επανεκκίνηση από πληκτρολόγιο 88

4.Μετάβαση από Χ σε κονσόλα 88

5.Εκκίνηση του γραφικού περιβάλλοντος Χ 89

6.Απενεργοποίηση του γραφικού περιβάλλοντος Χ 89

Κεφάλαιο 8 - Η επιφάνεια εργασίας και το σύστημα παραθύρων Χ 91

1.Το σύστημα παραθύρων X 91

2.Διαχειριστές Παραθύρων 91

3.Προσομοιωτές Τερματικού 93

4.Περιβάλλοντα Εργασίας 93

KDE 95

GNOME 96

5.Αντιγραφή/επικόλληση κειμένου στα X 96

Κεφάλαιο 9 - Η δύναμη του UNIX,το Κέλυφος 98

1.Γιατί Κέλυφος; 98

2.Ποιά κελύφη υπάρχουν; 99

Το κέλυφος Bourne (sh) 99

Το κέλυφος της γλώσσας C (csh) 99

Το κέλυφος TENEX C (tcsh) 100

Το κέλυφος Korn (ksh) 100

3.Το κέλυφος Bourne Again (bash) 100

4.Εκκίνηση 100

5.Προτροπές (prompts) 101

6.Γραμμή Εντολών 101

7.Δομή εντολών 102

8.Απόλυτες και Σχετικές Διαδρομές, Τρέχων Κατάλογος 104

9.Αλλαγή τρέχοντος καταλόγου 105

10.Περιεχόμενα καταλόγου 105

11.Η Μεταβλητή PATH 107

12.Κανονικές παραστάσεις (regular expressions) 108

13.Ανακατεύθυνση Εισόδου/Εξόδου 109

14.Σωληνώσεις 111

Η εντολή tee 112

15.Εργασίες στο προσκήνιο, παρασκήνιο 112

16.Σύνδεση εντολών με τελεστές 114

17.Συντομεύσεις 114

Ιστορικό του κελύφους 114

Αυτόματη ολοκλήρωση με TAB 116

Ψευδώνυμα (Aliases) 116

Υποκατάσταση Εντολών 117

18.Μεταβλητές Περιβάλλοντος 117

19.Εργαλεία βοηθείας 118

Εντολή man 118

Κείμενα τεκμηρίωσης (info documents) 119

Η εντολή whatis 119

Κεφάλαιο 10 - Linux και αρχεία 121

1.Τύποι αρχείων 121

Κοινά αρχεία 121

Κατάλογοι 121

Ειδικά αρχεία 121

Άλλοι τύποι 122

Σύνδεσμοι 122

Συμβολικοί σύνδεσμοι 123

2.Ονοματολογία στο Linux 124

Καταλήξεις αρχείων στο Linux 124

3.Χρήστες και αρχεία 126

Ιδιοκτήτης και ομάδες 126

Άδειες προσπέλασης 127

Άδειες προσπέλασης καταλόγου 128

Ειδικές άδειες προσπέλασης 128

Bit Ταυτότητας Χρήστη 128

Bit Ταυτότητας Ομάδος 129

Bit Παραμονής 129

Η εντολή chmod 129

Συμβολικός τρόπος εκτέλεσης chmod 129

Απόλυτος τρόπος εκτέλεσης chmod 131

Κεφάλαιο 11 - Συνηθισμένες λειτουργίες σε αρχεία και καταλόγους 133

1.Αντιγραφή αρχείων 133

2.Μετακίνηση Αρχείων 134

3.Δημιουργία καταλόγων 135

4.Διαγραφή αρχείων/καταλόγων 136

5.Αναγνώριση Αρχείων 137

6.Αναζήτηση αρχείων 138

Η εντολή find 138

Η εντολή locate 141

Η εντολή which 141

7.Αρχεία κειμένου 142

less is more” 142

Εντολές cat και tac 143

Εντολές head και tail 144

Καταμέτρηση αρχείων με τη wc 145

8.Αναζήτηση κειμένου σε αρχείο 146

Οι εντολές grep, fgrep, egrep, rgrep 146

9.Ταξινόμηση αρχείων κειμένου 148

Η εντολή sort 148

10.Σύγκριση αρχείων 149

Η εντολή cmp 149

Η εντολή comm 150

Η εντολή diff 150

11.Συμπίεση αρχείων 153

Η εντολή GNU zip (gzip) 154

Η εντολή bzip2 156

Άλλες εντολές συμπίεσης 156

12.Αρχειοθέτηση αρχείων 157

13.Ο κειμενογράφος vim 161

Κεφάλαιο 12 - Συστήματα αρχείων του Linux 164

1.Γενικά 164

2.Συστήματα αρχείων δίσκων 165

Το συστήμα αρχείων ext2 165

Journalling 165

Journalling και ext3 166

Η εντολή mkfs και παραλλαγές 166

Τα συστήματα αρχείων reiserfs, xfs, jfs 168

3.Άλλα συστήματα αρχείων 168

Το σύστημα αρχείων ISO 9660 168

Τα σύστηματα αρχείων VFAT, MSDOS και NTFS 169

4.Δικτυακά συστήματα αρχείων 169

Το σύστημα αρχείων NFS (επικοινωνία με UNIX) 170

Το σύστημα αρχείων smbfs (επικοινωνία με Windows) 170

5.Ειδικά συστήματα αρχείων 170

Το εικονικό σύστημα αρχείων devfs 171

Το εικονικό σύστημα αρχείων procfs 172

6.Οι Εντολές mount & umount 173

Η εντολή mount 173

Η εντολή umount 176

Το αρχείο fstab 177

Το αρχείο εναλλαγής μνήμης (swap) 177

7.Επιδιόρθωση συστημάτων αρχείων 178

Η εντολή fsck 179

Κεφάλαιο 13 - Εγκατάσταση λογισμικού στο Debian 182

1.Ιστορικό 182

2.Το σύστημα πακέτων λογισμικού του Debian 182

Εξαρτήσεις & Εκδόσεις 185

3.Το εργαλείο dpkg 185

Βασικές λειτουργίες 186

4.Το σύστημα APT 189

Το αρχείο sources.list 190

Αναζήτηση με την apt-cache 191

Εγκατάσταση με την apt-get 192

Άλλες λειτουργίες 193

5.Το εργαλείο dselect 197

Επιλογή “Access” 197

Επιλογή “Update” 198

Επιλογή “Select” 198

Επιλογή “Install” 200

Επιλογή “Configure” 200

Επιλογή “Remove” 200

Επιλογή “Quit” 201

6.Το εργαλείο kpackage 201

7.Το εργαλείο stormpkg 202

8.Μετά την εγκατάσταση 202

Κεφάλαιο 14 - Διαχείριση συστήματος 204

1.Διαχείριση πόρων συστήματος 204

2.Κεντρικοί επεξεργαστές 204

Αρχιτεκτονική του επεξεργαστή 204

Φόρτο του επεξεργαστή και χρόνος λειτουργίας 206

3.Μνήμη συστήματος 207

4.Συστήματα αρχείων 208

5.Διαχείριση Δίσκων 211

6.Δίκτυο 213

Διαχείριση ονομάτων και τομέων δικτύου 217

Ασφάλεια και παρακολούθηση δικτύου 220

7.Περιφερειακά PCI, ISA, USB, PCMCIA, IEEE 1394 224

8.Διαχείριση διεργασιών 230

Περί διεργασιών 230

Είδη διεργασιών 232

Η εντολή ps 232

Το σύστημα αρχείων /proc και οι διεργασίες 235

Η εντολή top 235

Τερματισμός εργασίας 237

Σήματα (Signals) 238

Πόροι που ανήκουν σε διεργασίες 239

Κωδικοί τερματισμού διεργασιών 240

Λογιστική διεργασιών (process accounting) 241

9.Διαχείριση χρηστών 243

Πρόσθεση, διαγραφή και μεταβολή χρηστών 245

Λογιστική χρηστών (user accounting) 249

10.Ώρα συστήματος 251

Μεταφορά στο ρολόι του υπολογιστή 252

11.Διαχείριση εκτυπωτών 252

Το σύστημα CUPS 253

Άλλα συστήματα διαχείρισης εκτυπωτών 255

12.Βασικές υπηρεσίες 255

Η υπηρεσία FTP (File Transfer Protocol) 255

Επικοινωνία με Windows μέσω Samba 256

Επικοινωνία μέσω SSH ή TELNET 257

Παράρτημα I – Ρύθμισεις του BIOS 260

Παράρτημα II - Προβλήματα κατά την εγκατάσταση 262

1.Προβλήματα με τον οδηγό δισκέτας 262

2.Μη υποστηριζόμενη κάρτα οθόνης 263

3.Προβλήματα με τα περιφερειακά PCMCIA 263

4.Προβλήματα με συσκευές USB 263

5.Μηνύματα του πυρήνα κατά την εκκίνηση 264

6.Άλλα προβλήματα - Βοήθεια στο Internet 264

Παράρτημα III – Το πρόγραμμα cfdisk 265

Εντολές 267

Παράρτημα IV – Το πρόγραμμα LILO 269

Η εντολή liloconfig 272

Παράρτημα V - Εκκίνηση σε κατάσταση single user 274

Παράρτημα VI – Ρύθμιση του πυρήνα 275

1.Δημιουργία πυρήνα από την επίσημη αρχειοθήκη 276

2.Ρύθμιση του πυρήνα 276

3.Μεταγλώττιση του πυρήνα 278

4.Εγκατάσταση του πυρήνα 279

5.Δημιουργία πυρήνα με τη χρήση των πακέτων του Debian 280

Παράρτημα VII - Ρύθμιση ελληνικών στο Debian 282

1.Ρύθμιση γραμματοσειρών 282

2.Τοπικές ρυθμίσεις 283

3.Εναλλαγή πληκτρολογίου 284

Παράρτημα VIII - Αναφορά προβλημάτων στο Debian 286

Παράρτημα IX - Η άδεια χρήσης (FDL) 291

GNU Free Documentation License 291



Πρόλογος

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

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

Η ελληνική ορολογία έχει χρησιμοποιηθεί όπου ήταν αυτό δυνατόν, σε κάθε περίπτωση όμως αναφέρεται και ο κοινός ξενικός όρος σε παρένθεση. Στο συγκεκριμένο ζήτημα οι απόψεις δίστανται. Υπάρχει καταρχάς η άποψη ότι πρέπει να υιοθετηθούν οι ξενικοί όροι, αφού είναι αυτοί που χρησιμοποιούνται παγκοσμίως και η διαφοροποίηση δεν ωφελεί σε κάτι, πέρα από το να προσφέρει μια καθυστέρηση στην επικοινωνία. Από την άλλη πλευρά, η χρήση των ξενικών όρων πολλές φορές δε συνάγει με την κατανόησή τους και αυτό οδηγεί στην παρεξήγηση των όρων και σε δημιουργία ασαφειών και τραγικών λαθών σε τεχνικά ή ακόμη και επιστημονικά κείμενα. Φυσικά, υπάρχει και η άποψη ότι η ελληνική γλώσσα είναι αρκετά ικανή να απεικονίσει τεχνικούς όρους και δεν υπάρχει λόγος να μην τη χρησιμοποιήσουμε. Η δική μας άποψη είναι ότι θα πρέπει να ακολουθηθεί μια μέση οδός. Η χρήση των ξενικών όρων πολλές φορές είναι πιο εύκολη καθώς διατυπώνονται πιο άμεσα, όμως θα πρέπει πάντοτε να γίνεται με την ταυτόχρονη κατανόησή τους και την γνώση των αντίστοιχων ελληνικών όρων. Άλλωστε, η εμφάνιση των μισών όρων στα ελληνικά και των υπολοίπων σε κάποια ξένη γλώσσα, αφαιρεί από την επαγγελματική και συνεπή εμφάνιση ενός τεχνικού κειμένου.

Το ίδιο το βιβλίο αποτελείται από δύο κύρια μέρη, την εγκατάσταση του Debian και τη χρήση του. Όσον αφορά την εγκατάσταση, αυτή περιγράφεται αναλυτικά στα κεφάλαια 2 έως 8. Η καθημερινή χρήση του Debian καλύπτει τα υπόλοιπα κεφάλαια (9 έως 14). Αναλυτικά για το πρώτο μέρος:

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

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

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

Με όποιον τρόπο αποφασίσετε να χρησιμοποιήσετε αυτόν τον οδηγό, ελπίζουμε να σας φανεί χρήσιμος και να αποκομίσετε κάποιο όφελος!

Για τη δημιουργία του οδηγού χρησιμοποιήθηκε μόνο λογισμικό ανοιχτού κώδικα. Το κείμενο γράφτηκε κατά ένα μέρος σε ένα απλό κειμενογράφο και στη συνέχεια μεταφέρθηκε στο OpenOffice 1.1. Όλα τα snapshots ληφθήκαν με το πρόγραμμα ksnapshot που υπάρχει ως ομώνυμο πακέτο στο Debian. Για τις εικόνες της εγκατάστασης, πραγματοποιήθηκε μια εκ νέου εγκατάσταση σε ένα εικονικό σύστημα, μέσω του προσομοιωτή Bochs, που επίσης παρέχεται ως πακέτο στο Debian. Οι γραμματοσειρές που χρησιμοποιήθηκαν είναι οι FreeFonts για τους τύπους Serif και SansSerif (πακέτο ttf-freefont), με τις αλλαγές και διορθώσεις του Παναγιώτη Κατσαλούλη, ενώ για τις monospaced γραμματοσειρές χρησιμοποιήθηκε η Bitstream Vera Mono (πακέτο ttf-bitstream-vera). Για τη μετατροπή του PDF αρχείου χρησιμοποιήθηκε το εργαλείο pdftops (πακέτο xpdf-utils). Φυσικά το λειτουργικό που χρησιμοποιήθηκε είναι το Debian!

Για τον οδηγό αυτό χρησιμοποιήθηκε βιβλιογραφία που αναγράφεται στο τέλος του βιβλίου. Γενικά, βασιστήκαμε στη δομή των οδηγών εγκατάστασης του Debian [Deb01], της διανομής Progeny Debian [Prog01], ενώ χρησιμοποιήθηκαν και βιβλία αναφοράς UNIX [UNIX01], καθώς και οι οδηγοί ορισμένων προγραμμάτων όπως το dselect [Dsel01].

Ο οδηγός αυτός διανέμεται υπό την άδεια χρήσης GNU Free Documentation License (FDL). Το πλήρες κείμενο της FDL παρατίθεται στο Παράρτημα IX (σελ. 291).

Όπως συμβαίνει κατά τη συγγραφή οποιουδήποτε βιβλίου, υπάρχουν πολλά άτομα που συνεισφέρουν στην ολοκλήρωσή του, σε διαφορετικό επίπεδο και βαθμό το καθένα. Το παρόν βιβλίο δεν αποτελεί εξαίρεση σε αυτόν τον κανόνα.

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

Κατά τη διάρκεια της συγγραφής, πολύ σημαντική ήταν η συνεισφορά ορισμένων ανθρώπων σε θέματα μεταφράσεων τεχνικών όρων στα ελληνικά καθώς και σε γενικές παρατηρήσεις σχετικά με το κείμενο. Αναφέρω τους: Τάσος Βογιατζόγλου, Λευτέρης Δημητρουλάκης, Αλέξανδρος Διαμαντίδης, Αλέξιος Ζάβρας, Σίμος Ξενιτέλης, Θεόδωρος Σολδάτος, ζητώντας συγγνώμη από όσους άθελά μου έχω παραλείψει.

Όσον αφορά την ρύθμιση της ελληνικής υποστήριξης, πιστεύω ότι είναι αρκετά πλήρης χάρη στις οδηγίες του Σεραφείμ Ζανικόλα και στα σχόλια του Βασίλη Βασαΐτη, ενώ στο θέμα των ελληνικών γραμματοσειρών οι γνώσεις του Παναγιώτη Κατσαλούλη στο θέμα αποδείχτηκαν ιδιαίτερα χρήσιμες.

Επίσης, θα ήθελα να σημειώσω ότι το OpenOffice είναι ένα καταπληκτικό εργαλείο με απεριόριστες δυνατότητες και ευκολίες στη συγγραφή ενός μεγάλου κειμένου, τις οποίες όμως δε θα ήταν δυνατό να εκμεταλλευτώ χωρίς τη βοήθεια του Μιχάλη Καμπριάνη της Interzone, ο οποίος έγραψε και τον αντίστοιχο οδηγό.

Τέλος, αυτός ο οδηγός δεν θα είχε τη μορφή που έχει τώρα, χωρίς τις σημαντικές διορθώσεις και αλλαγές από τον αδερφό μου Δρ. Νικόλαο Μαργαρίτη και το Σεραφείμ Ζανικόλα, τους οποίους θέλω να ευχαριστήσω.

Κεφάλαιο 1 - Εισαγωγή

  1. Σχετικά με το Debian

Το Debian είναι ένας οργανισμός αποτελούμενος από εθελοντές προγραμματιστές. Στόχος του Debian είναι η ανάπτυξη Ελεύθερου Λογισμικού και η προώθηση των ιδανικών του Free Software Foundation (FSF). Το Debian Project, όπως ονομάζεται, ξεκίνησε το 1993 από τον Ian Murdock με χρηματοδότηση από το FSF με σκοπό την δημιουργία ενός εντελώς Ελεύθερου Λειτουργικού Συστήματος, βασισμένο στον τότε ακόμα νέο πυρήνα του Linux. Στην αρχή υπήρξε μια μικρή ομάδα από ενθουσιώδεις εθελοντές προγραμματιστές, η οποία με τον καιρό αναπτύχθηκε, εξελίχθηκε και εξαπλώθηκε σε ολόκληρο τον κόσμο ώστε τώρα να αριθμεί περισσότερους από χίλιους εθελοντές Debian Developers, όπως αποκαλούνται.

Το Debian είναι ίσως το μόνο πραγματικά Ελεύθερο Λειτουργικό Σύστημα Linux. Ως φιλοσοφία, είναι στενά συνδεδεμένο με την έννοια του Ελεύθερου Λογισμικού GNU, όπως ορίζεται αυτό από το FSF, ενώ έχει αναπτύξει δικούς του κανόνες δεοντολογίας για το λογισμικό και τους ανθρώπους που το απαρτίζουν.

Όσον αφορά τους Debian Developers, υπάρχει καταρχάς το Κοινωνικό Συμβόλαιο του Debian (Debian Social Contract, http://www.debian.org/social_contract) στο οποίο αναγράφονται οι δεσμεύσεις του Debian στην Κοινότητα του Ελεύθερου Λογισμικού (Free Software Community). Κάθε Debian Developer με τη σειρά του, δέχεται να τηρεί και να ακολουθεί τις επιταγές του Κοινωνικού Συμβολαίου, κάτι που αποτελεί και το πιο σημαντικό κριτήριο για να γίνει κάποιος Debian Developer (http://www.debian.org/doc/maint-guide/).

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

Κάθε πακέτο λογισμικού πρέπει να τηρεί ορισμένες προδιαγραφές για να θεωρηθεί κατάλληλο για την ενσωμάττωση στο Debian και οι κανόνες αυτοί εκτείνονται σε πολλαπλά επίπεδα. Το πρωταρχικό επίπεδο αφορά την άδεια χρήσης και διανομής του ίδιου του πακέτου και η συμβατότητά της με τις Προδιαγραφές Ελεύθερου Λογισμικού του Debian (Debian Free Software Guidelines ή πιο συχνά DFSG, (http://www.debian.org/social_contract#guidelines). Οι Προδιαγραφές DFSG υπήρξαν πολύ σημαντικές στο Κίνημα Ελεύθερου Λογισμικού (Free Software Movement) και αποτέλεσαν την βάση του Ορισμού του Ελεύθερου Κώδικα (Open Source Definition, http://opensource.org/docs/definition_plain.html).

Στη συνέχεια το κάθε πακέτο θα πρέπει να ακολουθεί κάποιους κανόνες ποιότητας που αφορούν τις θέσεις των αρχείων, τους τύπους των αρχείων, την τεκμηρίωση, την υποστήριξή του από τον αντίστοιχο συντηρητή, κλπ. Αυτοί οι κανόνες περιγράφονται στο κείμενο Πολιτικής του Debian (Debian Policy, http://www.debian.org/doc/debian-policy/).

Για περισσότερες πληροφορίες τα κείμενα αυτά περιέχονται στα εξής πακέτα στην διανομή: maint-guide, debian-policy, debian-reference-en, debian-history, developers-reference, doc-debian.

  1. Το λειτουργικό σύστημα GNU/Linux

Ακόμη και αν δεν έχετε κάποια άμεση σχέση με υπολογιστές, είναι σχεδόν σίγουρο ότι θα έχετε ακούσει έστω και αναφορικά για το σύστημα Linux. Πρόκειται ίσως για την δεύτερη σύγχρονη επανάσταση στο χώρο της Πληροφορικής μετά την εφεύρεση του Internet. Ισχυρό εργαλείο για πολλούς, θρησκεία για άλλους, είναι δύσκολο να αμφισβητήσει κανείς το γεγονός ότι κάτι που ξεκίνησε το 1991 ως απλό παιχνίδι από ένα νεαρό Φινλανδό φοιτητή Πληροφορικής, το Linus Torvalds, έχει πλέον εξελιχθεί στο λάβαρο των υποστηρικτών του Ελεύθερου Λογισμικού σε όλο τον κόσμο. Με περισσότερους από 5000 ενεργούς προγραμματιστές που εργάζονται μόνο στον πυρήνα, σε ένα μοντέλο συνεργασίας που πολλές μεγάλες εταιρείες θα ζήλευαν για την ταχύτητα και την αποτελεσματικότητά του, το Linux έχει φτάσει στο σημείο να θεωρείται ένας πολύ δυνατός ανταγωνιστής σε κάθε επίπεδο τεχνολογίας.

Οι χρήσεις του καλύπτουν το καθαρά ερευνητικό επίπεδο, από συστήματα παράλληλης επεξεργασίας Clusters σε Πανεπιστήμια και ερευνητικά ιδρύματα, έως βάσεις δεδομένων σε τράπεζες και διακομιστές ιστοσελίδων σε μεγάλες εταιρείες και μηχανές αναζήτησης (Google). Αλλά οι εφαρμογές του Linux δεν περιορίζονται μόνο σε μεγάλα συστήματα και εφαρμογές υψηλών απαιτήσεων. Μια από τις πιο αναπτυσσόμενες αγορές παγκοσμίως είναι αυτή των ενσωματωμένων εφαρμογών (embedded applications) και της κινητής τηλεφωνίας και σε αυτές τις αγορές το Linux είναι από τους πιο ισχυρούς παίχτες κατέχοντας ένα σημαντικό ποσοστό.

Για να ακριβολογούμε, το λειτουργικό σύστημα είναι το GNU/Linux, αφού αποτελείται από το συνδυασμό του πυρήνα του Linux, και ενός πλήρους συνόλου εργαλείων, που περιλαμβάνουν την βιβλιοθήκη C (GNU C Library, libc), τους μεταγλωττιστές GNU, και πληθώρας εντολών για την διαχείριση συστήματος. Τα εργαλεία αυτά δημιουργήθηκαν καταρχάς για την υλοποίηση ενός ελεύθερου λειτουργικού τύπου UNIX από το Free Software Foundation και υπό την επίβλεψη του Richard M. Stallman, το οποίο θα ονομαζόταν GNU (από το αναδρομικό ακρωνύμιο GNU is Not UNIX). Τα εργαλεία αναπτύχθηκαν πριν από τον αντίστοιχο πυρήνα του GNU. Την εποχή εκείνη, ο πυρήνας του Linux ήταν ο ιδανικός υποψήφιος για την δημιουργία ενός πλήρως Ελεύθερου Λειτουργικού Συστήματος, που θα ακολουθούσε τη φιλοσοφία GNU του FSF (ας μη ξεχνάμε ότι υπήρχε ήδη το BSD UNIX). Έτσι δημιουργήθηκε τελικά το GNU/Linux, αν και συχνά ανεφερόμαστε απλώς στο Linux εννοώντας το λειτουργικό σύστημα στο σύνολό του και όχι μόνο τον πυρήνα του.

Όσον αφορά τον πυρήνα του Linux, αυτός είναι διαθέσιμος στην διεύθυνση http://www.kernel.org όπου διατηρούνται όλες οί εκδόσεις που έχουν κυκλοφορήσει από την αρχή. Για περισσότερες πληροφορίες για το ιστορικό του Linux, μπορείτε να ανατρέξετε στην διεύθυνση της Ιστορίας του Linux της Linux International (http://www.li.org/linuxhistory.php).

  1. Διανομές GNU/Linux

Η εγκατάσταση του λειτουργικού στην αρχή υπήρξε πηγή αρκετών προβλημάτων, καθώς ο χρήστης έπρεπε να μεταφορτώσει (download) όλα τα απαραίτητα αρχεία του πυρήνα και των συνοδευτικών εργαλείων, να τα μεταγλωττίσει και να τα εγκαταστήσει. Αυτή η διαδικασία ήταν χρονοβόρα και αρκετά επιρρεπής σε λάθη και υπήρξε το έναυσμα της δημιουργίας των διανομών του Linux. Αρκετές εταιρείες εμφανίστηκαν οι οποίες προσπάθησαν να δώσουν μια ικανοποιητική λύση στο πρόβλημα. Υιοθετήθηκε έτσι η έννοια του πακέτου λογισμικού (software package), το οποίο περιέχει μεταγλωττισμένα και έτοιμα προς εγκατάσταση τα απαραίτητα αρχεία στις σωστές τους θέσεις, και αναπτύχθηκαν εργαλεία που αυτοματοποιούν αυτήν την διαδικασία. Η κάθε εταιρεία και το αντίστοιχο σύστημα που χρησιμοποιούσε προσέφερε διαφορετικά πλεονεκτήματα έναντι των άλλων ανταγωνιστικών.

Από τις σημαντικότερες διανομές που εμφανίστηκαν και επικράτησαν στο χώρο αναφέρουμε τις Slackware, RedHat, SuSe, Caldera. Υπάρχουν αρκετές περισσότερες διανομές και πολλές από αυτές είναι αρκετά εξειδικευμένες. Για μια πλήρη λίστα των διανομών, μπορείτε να ανατρέξετε στην διεύθυνση http://www.lwn.net/.

  1. Η διανομή Debian GNU/Linux

Μία από όλες αυτές τις διανομές ήταν και αυτή που δημιουργήθηκε από το Debian Project, η διανομή Debian GNU/Linux. Σε αντίθεση με όλες τις υπόλοιπες, η διανομή του Debian, ή το Debian όπως συχνά θα το αναφέρουμε δεν είναι το αντικείμενο κέρδους κάποιας εταιρείας και ως εκ τούτου, δεν περιορίζεται από προθεσμίες ή εμπορικούς στόχους ούτε επηρεάζεται από τον ανταγωνισμό όπως μια εταιρεία. Ως αφιλοκερδής οργανισμός, δεν κινδυνεύει να κλείσει λόγω χαμηλών κερδών ούτε να αγοραστεί από κάποια μεγαλύτερη εταιρεία και να εκφυλιστεί χάριν κάποιων άλλων οικονομικών στόχων.

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

Κάθε πακέτο λογισμικού έχει τον αντίστοιχο συντηρητή του (package maintainer), οποίος είναι ένας από τους Debian Developers. Αν πρόκειται για περίπλοκο πακέτο όπως το σύστημα παραθύρων X ή ο μεταγλωττιστής GNU της γλώσσας C (gcc), υπάρχουν περισσότεροι από ένας συντηρητές. Ο κάθε συντηρητής αναλαμβάνει την διατήρηση του ή των πακέτων για τα οποία είναι υπεύθυνος , έτσι ώστε να μην παρουσιάζουν προβλήματα συνεργασίας με άλλα πακέτα, να απεικονίζουν πάντα νέες ανανεωμένες εκδόσεις του λογισμικού, καθώς και να προσθέτουν λειτουργείες όταν αυτές είναι απαραίτητες για το Debian.

Η ασφάλεια στο Debian είναι πολύ σημαντική. Ειδικά με την αύξηση των παραβιάσεων υπολογιστικών συστημάτων τα τελευταία χρόνια, το Debian δίνει ιδιαίτερη σημασία στην διατήρηση ενός υψηλού επιπέδου ασφαλείας, κυκλοφορόντας άμεσα νέες ενημερωμένες εκδόσεις πακέτων που ανακαλύφθηκε ότι είναι ευάλωτα σε θέματα ασφαλείας. Ακόμη και αυτό γίνεται με τη μέγιστη δυνατή ασφάλεια, πιστοποιώντας με ψηφιακές υπογραφές (GPG) κάθε πακέτο ώστε να είναι βέβαιο ότι προέρχεται από τον πραγματικό συντηρητή του και δεν πρόκειται για κάποιον ιό ή Δούρειο Ίππο (trojan horse).

Όλες αυτές οι προσπάθειες επιβραβεύονται από τους ίδιους τους χρήστες, οι οποίοι έχουν καταστήσει την διανομή του Debian, μια από τις πιο δημοφιλείς διανομές Linux παγκοσμίως. Το 2000 το Debian βραβεύτηκε στην έκθεση LinuxWorld της Νέας Υόρκης από το Linus Torvalds Community Foundation ως η καλύτερη διανομή του Linux. Κάτι τέτοιο είναι αρκετά σημαντικό αν αναλογιστούμε ότι πρόκειται για συλλογική προσπάθεια εθελοντών.

Πέρα από το Linux, το Debian πειραματίζεται στην δημιουργία διανομών και άλλων λειτουργικών συστημάτων, βασισμένων όμως στη δομή και φιλοσοφία του Debian, όπως το Debian GNU/Hurd (http://www.debian.org/ports/hurd), το Debian/NetBSD και το Debian/FreeBSD.

  1. Εκδόσεις του Debian GNU/Linux

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

Το Debian παρέχει ανά πάσα στιγμή τρεις ενεργές εκδόσεις της διανομής: τη σταθερή έκδοση (stable release), την πειραματική (testing) και την ασταθή (unstable). Αναφέρουμε τις πιο σημαντικές διαφορές τους.

Για την κάθε έκδοση υπάρχει και ένα κωδικό όνομα, για παράδειγμα η σταθερή έκδοση τη στιγμή της συγγραφής του παρόντος είναι η 3.0rc1 “woody”, ενώ η πειραματική λέγεται αλλιώς και “sarge”. Η ασταθής χρησιμοποιεί πάντα την κωδική ονομασία “sid”. Αυτά τα ονόματα προέρχονται από την ταινία της Disney/Pixar “Toy Story” (Woody ήταν ο cowboy, ενώ Sid το παιδί του διπλανού σπιτιού που έσπαζε τα παιχνίδια του)!

Στον οδηγό αυτό περιγράφεται κυρίως η σταθερή έκδοση “woody”, και σε ορισμένα σημεία αναφέρεται και η πειραματική έκδοση.

Κεφάλαιο 2 - Πριν την εγκατάσταση

Πριν προχωρήσουμε στην εγκατάσταση, είναι απαραίτητο να γνωρίζουμε εκ των προτέρων κάποιες πληροφορίες σχετικά με τον υπολογιστή στον οποίο θα εγκατασταθεί το Debian, καθώς και τις απαιτήσεις του ίδιου του Debian.

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

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

Η σημασία που δίνει η κάθε διανομή στην εγκατάσταση είναι διαφορετική. Για παράδειγμα, οι εμπορικές διανομές, όπως η RedHat, SuSe, Mandrake, έχουν επενδύσει πολύ χρόνο και χρήμα για να κάνουν την διαδικασία της εγκατάστασης όσον το δυνατόν πιο φιλική και εύκολη, ειδικά για τους αρχάριους χρήστες. Και πρέπει να σημειωθεί ότι σε πολλές περιπτώσεις η εγκατάσταση αυτών των διανομών έχει γίνει πιο εύκολη και γρήγορη ακόμη και από αυτήν των Windows.

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

  1. Αναγνωρίστε το σύστημά σας

Υπάρχουν ορισμένα βασικές απαιτήσεις που πρέπει να ικανοποιούνται από κάθε σύστημα στο οποίο πρόκειται να εγκαταστήσουμε Linux και φυσικά οι ίδιες απαιτήσεις ισχύουν και στο Debian.

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

Για να ικανοποιούνται αυτές οι απαιτήσεις, πρέπει να έχετε κάποιες πληροφορίες για το σύστημα και για το σκοπό της εγκατάστασης, δηλαδή για το αν πρόκειται το σύστημα να χρησιμοποιηθεί ως server, ή ως απλός σταθμός εργασίας, για γραφικά, προγραμματισμό ή απλώς για να ασχοληθείτε με το Debian!

  1. Απαραίτητες πληροφορίες

Οι πληροφορίες που χρειάζεται να συλλέξετε εξαρτώνται και από την αρχιτεκτονική του υπολογιστή στον οποίο πρόκειται να εγκαταστήσετε το Debian. Στο παρόν κείμενο θα δώσουμε περισσότερη έμφαση στην αρχιτεκτονική IA32, τα γνωστά μας PC. Τα αρχικά IA32 σημαίνουν Intel Architecture 32, και αναφέρονται στο ότι το σύστημα στηρίζεται σε επεξεργαστή τύπου Intel (ακόμη και οι επεξεργαστές AMD είναι συμβατοί με αυτήν την αρχιτεκτονική) που λειτουργεί στα 32 bits. Εδώ πρέπει να σημειώσουμε ότι αυτή η αρχιτεκτονική είναι διαφορετική από τη νέα αρχιτεκτονική IA64 των επεξεργαστών Itanium και Itanium 2 της Intel (που στηρίζονται σε 64 bit) καθώς και από την αρχιτεκτονική x86-64 των νέων επεξεργαστών Opteron της AMD. Στην πλειοψηφία τους οι υπολογιστές που χρησιμοποιούνται σήμερα και βασίζονται σε επεξεργαστές Pentium ή Athlon είναι IA32 και δεν υπάρχει πρόβλημα σύγχυσης.

Υπάρχουν και άλλες αρχιτεκτονικές πέρα από τις IA32, IA64 και x86-64 στις οποίες θα αναφερθούμε σε επόμενη παράγραφο.

Οι πληροφορίες είναι λίγο διαφορετικές αν πρόκειται να εγκαταστήσουμε την διανομή σε desktop ή server, από την περίπτωση ενός φορητού υπολογιστή (notebook ή laptop) και αυτό γιατί στους φορητούς υπολογιστές το υλικό είναι συνήθως προκαθόρισμένο και δεν υπάρχει δυνατότητα επέκτασης. Επίσης οι φορητοί υπολογιστές συνήθως συνοδεύονται και από μια θύρα σύνδεσης περιφερειακών συσκευών PCMCIA, η οποία χρήζει ιδιαίτερης μεταχείρισης.

Καλό θα ήταν πριν ξεκινήσετε την εγκατάσταση του Linux στον υπολογιστή σας, να κάνετε μια λίστα με το υλικό του υπολογιστή σας και τα περιφερειακά που πρόκειται να συνδέσετε.

Υλικό (hardware)

Σχετικές πληροφορίες

Βασικά

Τύπος επεξεργαστή (Intel/AMD/Cyrix/άλλος)

Συχνότητα επεξεργαστή

Πλήθος επεξεργαστών (Single/Dual/άλλο)

Τύπος chipset (Intel/VIA/άλλο)

Μνήμη

Συσκευές προεγκατεστημένες στη motherboard (κάρτα οθόνης/ήχου/SCSI controller/κάρτα δικτύου/firewire controller)

Σκληροί δίσκοι

Αριθμός δίσκων

Σειρά σύνδεσης/ Jumpers

Τύπος (IDE/SCSI/Serial ATA/Firewire/USB)

Χωρητικότητα

Διαμέριση (partitions)

Κατά πόσο φιλοξενούν άλλα λειτουργικά συστήματα και ποιά

Κάρτα οθόνης

Κατασκευαστής/Μοντέλο

Τύπος chipset

Μνήμη

Πρωτόκολλο (AGP/PCI/ISA)

Αναλύσεις που υποστηρίζει

Οθόνη

Κατασκευαστής/Μοντέλο

Τύπος (CRT/LCD)

Μέγεθος (14"/15"/17"/19"/21"/άλλο)

Αναλύσεις που υποστηρίζει

Οριζόντια συχνότητα σάρωσης

Κατακόρυφη συχνότητα σάρωσης

Κάρτα ήχου

Κατασκευαστής/Μοντέλο

Τύπος (PCI/ISA/PCMCIA/USB)

Αν πρόκειται για ISA: IRQ, DMA, IO

Ποντίκι

Κατασκευαστής

Τύπος (σειριακό/ PS/2 /USB)

Θύρα

Αριθμός πλήκτρων

Έχει scroll wheel;

Modem

Κατασκευαστής/Μοντέλο

Εσωτερικό/Εξωτερικό

Τύπος σύνδεσης (PCI/ISA/σειριακό/USB)

Είναι Winmodem;

Είναι Netmod ISDN (σειριακό/USB);

Αν πρόκειται για ISA: IRQ, DMA, IO

Κάρτα δικτύου

Κατασκευαστής/Μοντέλο

Τύπος (BNC/Ethernet/Fast Ethernet/Gigabit)

Τύπος κάρτας (PCI/ISA/PCMCIA/USB)

Συμβατότητα με chipset (realtek, intel, tulip, κλπ)

Αν πρόκειται για ISA: IRQ, DMA, IO

Εκτυπωτής

Κατασκευαστής/Μοντέλο

Τύπος σύνδεσης (σειριακά/παράλληλα/USB)

Άλλα περιφερειακά

Κατασκευαστής/Μοντέλο



Πληροφορίες για όλα τα περιφερειακά και τα χαρακτηριστικά τους μπορείτε να βρείτε στις εξής πηγές:

  1. Περιφερειακά και συμβατότητα

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

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

Αν και, αρκετές φορές, είναι δυνατή η χρήση τέτοιων περιφερειακών, η δυσκολία εύρεσης και εγκατάστασης των απαραίτητων οδηγών (drivers) καθιστά την επιλογή τους κάθε άλλο παρά ιδανική.

Τέτοιου είδους περιφερειακά είναι τα WinModems, τα οποία βρίσκονται στους περισσότερους φορητούς υπολογιστές. Καλό θα ήταν, αν σκέφτεστε να αγοράσετε φορητό υπολογιστή και σκοπεύετε να εγκαταστήσετε Linux σε αυτόν, να κοιτάξετε αν υποστηρίζεται το ενσωματωμένο modem του από το Linux. Έτσι θα αποφύγετε την αγορά ενός δεύτερου εξωτερικού modem και αρκετές ώρες απόγνωσης!

Περισσότερες πληροφορίες για τα WinModems και την υποστήριξή τους στο Linux μπορείτε να βρείτε στην διεύθυνση

http://www.linmodems.org

Επίσης πολλοί εκτυπωτές είναι σχεδιασμένοι – και πάλι για λόγους κόστους – να λειτουργούν βέλτιστα μόνο σε περιβάλλον Windows (ή έστω και MacOS) χρησιμοποιώντας ειδικό λογισμικό. Ορισμένοι από αυτούς μπορούν να χρησιμοποιηθούν εξίσου ή σχεδόν το ίδιο καλά και στο Linux. Η εξακρίβωση της λειτουργίας ή όχι κάποιου εκτυπωτή στο Linux ξεπερνάει τους σκοπούς του παρόντος βιβλίου, για περισσότερες πληροφορίες μπορείτε να ανατρέξετε στην διεύθυνση

http://www.linuxprinting.org

Τέλος, για άλλου είδους περιφερειακά όπως scanners, ελεγκτές SCSI, συσκευές USB ακόμη και άλλα πιο "εξωτικά" περιφερειακά όπως Bluetooth, touch screens, βιντεοκάμερες και άλλα, μπορείτε να βρείτε πληροφορίες και οδηγίες για την υποστήριξή τους στο Linux στην διεύθυνση

http://www.tldp.org/HOWTO/Hardware-HOWTO/index.html

  1. Ελάχιστες απαιτήσεις

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

Ένας πολύ απλός πίνακας με τις προτεινόμενες ελάχιστες απαιτήσεις είναι ο ακόλουθος:

Είδος εγκατάστασης

Επεξεργαστής

Μνήμη

Σκληρός Δίσκος

Σταθμός εργασίας χωρίς γραφικό περιβάλλον Χ

Pentium 100 Mhz

16 MB

450 MB

Σταθμός εργασίας με γραφικό περιβάλλον Χ

Pentium 200 Mhz

128 MB

2 GB

Σταθμός εργασίας με γραφικό περιβάλλον Χ και KDE/GNOME

Pentium ΙΙ 400 Mhz

256 MB

2 GB

Server

Pentium ΙΙ 300 Mhz

256 MB

4 GB



Αν και ο πίνακας είναι ενδεικτικός, εντούτοις μας δείχνει ότι το σύστημα παραθύρων X είναι αρκετά ελαφρύ, ώστε να τρέξει σε ένα αργό σύστημα με ένα ελαφρύ διαχειριστή παραθύρων (π.χ. Fvwm). Αντίθετα, στην περίπτωση που εγκαταστήσουμε ένα περιβάλλον εργασίας όπως το KDE ή το GNOME, τα οποία έχουν υψηλότερες απαιτήσεις, θα χρειαστούμε ένα σαφώς καλύτερο σύστημα με περισσότερη μνήμη. Τα ίδια ισχύουν στην περίπτωση server, ο οποίος θα φιλοξενήσει ίσως μια βάση δεδομένων ή ιστοσελίδες για το Internet.

Με τα σημερινά δεδομένα, βέβαια, ένα ελάχιστο σύστημα έχει επεξεργαστή Pentium IV στα 1,8 GHz και 256 MB RAM και τουλάχιστον 20 GB σκληρό δίσκο. Οι επιδόσεις του ξεπερνούν κατά πολύ τις ελάχιστες απαιτήσεις της εγκατάστασης του Debian, οπότε ίσως κάποιος να αναρωτηθεί για ποιό λόγο δίνεται αυτός ο πίνακας. Με μια μινιμαλιστική εγκατάσταση σε ένα παλιό ξεχασμένο μηχάνημα, μπορεί κάποιος να στήσει σε Debian ένα mail server, ένα firewall ή ένα proxy server και να γλυτώσει έτσι το κόστος της αγοράς καινούριου εξοπλισμού και μάλιστα με πολύ ικανοποιητικά αποτελέσματα.

  1. Υλικό και Linux, διαφορές με Windows

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

Υπάρχουν όμως ορισμένα χαρακτηριστικά που, αν και όχι κοινά, η μετατροπή τους είναι εύκολη και πολλές φορές προφανής.

Οι πιο συνηθισμένες συσκευές με τις οποίες θα χρειαστεί να ασχοληθείτε, είναι οι συσκευές αποθήκευσης, οι σειριακές και παράλληλες θύρες και οι συσκευές USB. Στις αποθηκευτικές συσκευές που μπορείτε να χρησιμοποιήσετε είναι οι μονάδες δισκέτας (floppy drives), οι σκληροί δίσκοι (hard disks), οι οδηγοί CD-ROM και DVD-ROM, οι εγγραφείς CD και DVD, και πιο σπάνια οι μονάδες οδηγών κασέτας (tape drives).

Όσον αφορά το πρωτόκολλο USB, αν και νεώτερο από τα υπόλοιπα, εντούτοις υποστηρίζεται από μια μεγάλη ποικιλία στον τύπο και στον αριθμό των συσκεύων που μπορούν να συνδεθούν βάση αυτό. Οι συσκευές που μπορείτε να συνδέσετε σε μια θύρα USB περιλαμβάνουν από ποντίκια και πληκτρολόγια, εκτυπωτές, σαρωτές (scanners), modems, αποθηκευτικές μονάδες (memory sticks, usb drives), κάμερες και φωτογραφικές μηχανές, χειριστήρια παιχνιδιών (joysticks) και πολλές άλλες.

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

Το όνομα μιας συσκευής στο Linux έχει τη μορφή

<κωδικός τύπος συσκευής><αριθμός σειράς σύνδεσης><αριθμός λογικής μονάδας/partition>

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

<κωδικός τύπου συσκευής><αριθμός σειράς σύνδεσης>

Για παράδειγμα, αν θέλουμε να μάθουμε πως ονομάζεται στο Linux ο δεύτερος σκληρός δίσκο IDE, ο κωδικός τύπος για τους σκληρούς δίσκους είναι hd (hard drive) και ο αριθμός σειράς σύνδεσης είναι 'b', οπότε το όνομα του σκληρού δίσκου είναι hdb. Στην περίπτωση που θέλουμε να αναφερθούμε σε άνα διαμέρισμα του δίσκου (partition), τότε προσθέτουμε τον αριθμό που αντιστοιχεί στο διαμέρισμα αυτό, με τη σειρά που βρίσκεται αυτό στον δίσκο. Για το τέταρτο διαμέρισμα, λοιπόν, το όνομα του στο Linux θα είναι hdb4.

Σε αντιστοιχία με τους δίσκους IDE, παραθέτουμε πίνακα με την ονοματολογία ορισμένων από τις πιο συνηθισμένες συσκευές.

Είδος συσκευής

Όνομα

Πληροφορίες

Σκληρός δίσκος/ CD-ROM/ CD-RW IDE

hd

Τα CD-RW χρησιμοποιούν αυτό το όνομα μόνο για ανάγνωση

Σκληρός δίσκος SCSI

sd

Ο αριθμός σειράς σύνδεσης αναφέρεται στη σειρά του σκληρού δίσκου ως προς το SCSI ID. Έτσι ο πρώτος σκληρός π.χ. Με SCSI ID 3, θα φαίνεται ως sda, ο δεύτερος με SCSI ID 6, θα φαίνεται ως sdb. Αν υπάρχει άλλη συσκευή διαφορετικού τύπου π.χ CD-ROM αλλά με SCSI ID 5, αυτό δεν θα αλλάξει την ονοματολογία των σκληρών δίσκων. Τα διαμερίσματα γράφονται με αριθμούς.

SCSI CD-ROM/CD-RW

scd

Το πρώτο CD-ROM χρησιμοποιεί το όνομα scd0, το δεύτερο scd1, κλπ. Τα CD-RW χρησιμοποιούν αυτό το όνομα μόνο για ανάγνωση.

SCSI generic

sg

Ισχύουν τα ίδια με τα SCSI CD-ROM. Αυτός ο τύπος χρησιμοποιείται για επικοινωνία με άλλες συσκευές SCSI και για τη χρήση των οδηγών CD-RW για εγγραφή.

SCSI Tape

st

Ισχύουν τα ίδια με τα SCSI CD-ROM.

Οδηγός Δισκέτας

fd

Ο πρώτος οδηγός δισκέτας ονομάζεται fd0, ο δεύτερος fd1, κ.ο.κ.

Σειριακή Θύρα

ttyS

Η πρώτη σειριακή θύρα (COM1 στα Windows), ονομάζεται ttyS0, η δεύτερη ttyS1, κ.ο.κ.

Παράλληλη Θύρα

lp

Η πρώτη παράλληλη θύρα (LPT1 στα Windows), ονομάζεται lp0, η δεύτερη lp1, κ.ο.κ.



Σε αντιπαράθεση, τα Windows χρησιμοποιούν την εξής ονοματολογία:

Το πρόβλημα με την ονοματολογία των Windows εμφανίζεται με την πρόσθεση ή αφαίρεση μιας συσκευής. Για παράδειγμα, αν χωρίσουμε για κάποιο λόγο το πρώτο διαμέρισμα C: σε δύο, αλλάζει η ονομασία όλων των υπολοίπων συσκευών. Βέβαια, στα Windows 2000/XP το πρόβλημα έχει ελαχιστοποιηθεί. Στο Linux, δεν υπάρχει αυτό το πρόβλημα, όπως θα δούμε και στο κεφάλαιο με τα συστήματα αρχείων.

  1. Το Linux σε άλλες αρχιτεκτονικές

To Linux, εκτός από τα γνωστά μας PC, τρέχει και σε άλλες αρχιτεκτονικές. Στην πραγματικότητα, μπορούμε να εγκαταστήσουμε Linux σε σχεδόν ό,τι υπολογιστή (και όχι μόνο) θέλουμε! Το Linux ως λειτουργικό σύστημα είναι σχεδιασμένο έτσι ώστε στον τελικό χρήστη να μην έχει σημασία η αρχιτεκτονική στην οποία τρέχει. Οπωσδήποτε, υπάρχουν σημαντικές διαφορές σε κάθε αρχιτεκτονική, από το είδος του επεξεργαστή, τον δίαυλο του συστήματος, τους τρόπους προσπέλασης της μνήμης, τα περιφερειακά, κλπ. Παρ' όλ' αυτά, έχουν γίνει μεγάλες προσπάθειες ώστε να μην είναι διαφορετική η χρήση του λειτουργικού, είτε αυτό τρέχει σε PC, σε Macintosh, σε SEGA Dreamcast (!) ή σε Mainframe της IBM.

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



Αρχιτεκτονική

Περιγραφή

Links

Motorola 68k (m68k)

Περιλαμβάνει υπολογιστές Macintosh (όχι PowerMac), Amiga, Atari ST, HP Apollo 9000/300, Sun3, VMEBus.

http://www.linux-m68k.org/

http://www.debian.org/ports/m68k/

Sun SPARC (sparc)

Περιλαμβάνει τα παλιά SPARCstation και sun4u (UltraSPARC 64-bit).

http://www.debian.org/ports/sparc/

http://www.ultralinux.org/

http://ultra.penguin.cz/

Alpha (alpha)

Υποστηρίζει όλους τους υπολογιστές βασισμένους σε αρχιτεκτονική Alpha

http://www.debian.org/ports/alpha/

http://www.alphalinux.org/

Motorola/IBM PowerPC (powerpc)

Περιλαμβάνει PowerMac υπολογιστές (βασισμένους σε επεξεργαστές PowerPC 601, 603, 604, G3, G4) καθώς και σταθμούς εργασίας ή servers της IBM βασισμένους σε POWER αρχιτεκτονική (CHRP/PREP). Υπάρχει επίσης κάποια υποστήριξη για υπολογιστές Amiga αναβαθμισμένους με PowerPC επεξεργαστές.

http://penguinppc.org/

http://www.debian.org/ports/powerpc/

ARM (arm)

Υποστηρίζει τα NetWinder συστήματα.

http://www.netwinder.org/

http://www.debian.org/ports/arm/

MIPS CPUs

(mips and mipsel)

Υποστηρίζει με δύο διαφορετικά ports τα συστήματα SGI και τα DECstation, τα οποία χρησιμοποιούν τον ίδιο επεξεργαστή αλλά σε διαφορετικό mode (big-endian για τα SGI και little-endian για τα DECstation).

http://www.debian.org/ports/mips/

http://decstation.unix-ag.org/

HP PA-RISC (hppa)

Υποστηρίζει τα workstations και servers της HP, βασισμένα σε αρχιτεκτονική HP PA-RISC.

http://www.debian.org/ports/hppa/

http://parisc-linux.org/

IA-64 (ia64)

Για τους 64-bit επεξεργαστές της Intel, Itanium και Itanium 2.

http://www.debian.org/ports/ia64/

AMD-64 (x86-64)

Για τον επερχόμενο 64-bit επεξεργαστή της AMD, Opteron.


S/390 (s390)

Για την αρχιτεκτονική mainframe S/390 της IBM.

http://www.debian.org/ports/s390/

http://www10.software.ibm.com/developerworks/opensource/linux390/index.shtml

SuperH (sh)

Για τους επεξεργαστές SuperH της Hitachi που χρησιμοποιούνται στο SEGA Dreamcast.

http://www.m17n.org/linux-sh/debian/



Σημειωτέον ότι το μόνο λειτουργικό που έχει μεταφερθεί (port) σε περισσότερες αρχιτεκτονικές από το Linux είναι το NetBSD.



Περί Διαμερισμάτων

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

  1. Είναι πιο εύκολη η ανάκτηση δεδομένων σε περίπτωση βλάβης. Χάνονται τα δεδομένα μόνο στον αποθηκευτικό χώρο που έπαθε τη βλάβη.

  2. Είναι πιο εύκολο να αλλάξουμε τη δομή του συστήματος. π.χ. αν χρειαζόμαστε περισσότερο χώρο για τα προσωπικά μας αρχεία, δε χρειάζεται να ξαναστήσουμε το σύστημα από την αρχή, αλλά προσθέτουμε περισσότερη χωρητικότητα στο χώρο που χρησιμοποιούμε για τα προσωπικά μας αρχεία.

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

Αν αντιμετωπίζαμε το σκληρό δίσκο ως μια ενιαία μονάδα αποθήκευσης, δε θα μπορούσαμε να έχουμε αυτά τα οφέλη. Για το σκοπό αυτό, υπάρχει η δυνατότητα, και πλέον η χρήση της θεωρείται ως κάτι δεδομένο, να χωρίζεται ο σκληρός δίσκος σε διαμερίσματα (partitions). Ο τρόπος με τον οποίο γίνεται αυτό είναι απλός: δεσμεύεται ένας χώρος στην αρχή του δίσκου, ο πίνακας διαμερισμάτων (partition table) που κρατάει πληροφορίες για το πως διαχωρίζεται ο σκληρός δίσκος. Σε αυτόν το χώρο κρατείται πληροφορία για μέχρι τέσσερα (4) πρωτεύοντα διαμερίσματα (primary partitions) τα οποία μπορούν να καλύψουν όλη την επιφάνεια του σκληρού δίσκου. Στο Linux αυτά καταλαμβάνουν τους πρώτους τέσσερις αριθμούς στην ονοματολογία των σκληρών δίσκων. Δηλάδή, για τον δίσκο hdb, τα πρωτέυοντα διαμερίσματα ονομάζονται hdb1, hdb2, hdb3 και hdb4.

Δυστυχώς, την εποχή που εφαρμόστηκε για πρώτη φορά ο διαχωρισμός αυτός, 4 διαμερίσματα ήταν αρκετά. Δεν ισχύει όμως το ίδιο και σήμερα, που μπορούμε αν θέλουμε να διαχωρίσουμε ένα σκληρό των 200 GB σε πολλά διαμερίσματα για καλύτερη ομαδοποίηση των δεδομένων μας. Για το σκοπό αυτό επινοήθηκαν τα επεκτεταμμένα και λογικά διαμερίσματα (extended και logical partitions) τα οποία επιτρέπουν να χωρίσουμε ένα σκληρό δίσκο σε όσα διαμερίσματα θέλουμε. Και για τα επεκτεταμμένα διαμερίσματα ισχύει ο περιορισμός των τεσσάρων διαμερισμάτων. Το πρόβλημα όμως λύνεται με τα λογικά διαμερίσματα. Εντός των επεκτεταμμένων διαμερισμάτων, δημιουργούμε τα λογικά διαμερίσματα, τα οποία και χρησιμοποιούμε. Η διαφορά τους με τα πρωτεύοντα διαμερίσματα είναι ότι η αρίθμησή τους αρχίζει από το 5, ανεξάρτητα αν έχουμε 4 πρωτεύοντα διαμερίσμτα στο σκληρό μας δίσκο. Δηλαδή, αν έχουμε ένα πρωτεύον, ένα επεκτεταμμένο και 3 λογικά διαμερίσματα, αυτά θα ονομάζονται hdb1, hdb2, hdb5, hdb6 και hdb7 αντίστοιχα. Το σημαντικό είναι ότι πλέον δεν υπάρχει όριο στο μέγιστο αριθμό των διαμερισμάτων στο σκληρό δίσκο.

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





Κεφάλαιο 3 - Οργάνωση της Εγκατάστασης



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

  1. Απόκτηση των μέσων εγκατάστασης

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

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

Είτε προτιμήσετε την εγκατάσταση από CD είτε με άλλο τρόπο (από σκληρό δίσκο/δίκτυο), σε κάθε περίπτωση θα χρειαστεί να έχετε στη διάθεσή σας το μέσο της εγκατάστασης.

Αν πρόκειται για CD, θα πρέπει να τα προμηθευτείτε είτε αγοράζοντας ή μεταφορτώνοντας (download) τα αντίστοιχα CD images από το Internet (αυτό δε συνιστάται εκτός κι αν έχετε πολύ γρήγορη σύνδεση με το internet). μπορείτε να προμηθευτείτε τα CD από τους επισήμους αντιπροσώπους Debian (η επίσημη λίστα βρίσκεται στην διεύθυνση http://www.debian.org/CD/vendors) ή από οποιονδήποτε προτίθεται να σας τα αντιγράψει. Αν αποφασίσετε να μεταφορτώσετε τα CD images και να τα γράψετε, τότε δίνονται επιπλέον οδηγίες στην διεύθυνση http://www.debian.org/CD και μπορείτε έτσι να παραλείψετε την ανάγνωση των επομένων ενοτήτων και να μεταβείτε κατευθείαν στην ενότητα "Εγκατάσταση από CD".

Στις άλλες περιπτώσεις θα χρειαστεί να μεταφορτώσετε τουλάχιστον τα βασικά αρχεία που χρειάζονται για την εγκατάσταση. Η μεταφόρτωση συνιστάται να γίνει είτε με ένα πρόγραμμα FTP ή μέσω ενός browser. Στην πρώτη περίπτωση θα πρέπει το πρόγραμμα FTP να είναι ρυθμισμένο να μεταφορτώνει τα αρχεία ως binary και όχι ως αρχεία κειμένου (ASCII). Στην περίπτωση του browser, θα πρέπει να έχει απενεργοποιηθεί σε αυτόν η αυτόματη αποσυμπίεση αρχείων (χαρακτηριστικό που συναντάται συχνά ειδικά στους browsers του λειτουργικού MacOS, και ειδικά Netscape) καθώς κάτι τέτοιο θα καθιστούσε αδύνατη την εύρεσή τους από το πρόγραμμα εγκατάστασης.

Όταν μεταφορτώνετε τα αρχεία, είναι καλό να διατηρήσετε την δομή καταλόγου όπως είναι αυτή στο δικτυακό τόπο του Debian. Αυτό είναι καλό μεν από άποψη οργάνωσης, αλλά είναι και αναγκαίο σε ορισμένους τρόπους εγκατάστασης, όπως, για παράδειγμα, στην εγκατάσταση από σκληρό δίσκο.

Για την αρχιτεκτονική που μας ενδιαφέρει (i386) και για την έκδοση woody του Debian, η δομή αυτή ακολουθεί την δομή των αρχείων του δικτυακό τόπου από όπου θα μεταφορτωθούν και έχει ως εξής (ξεκινώντας από τον κατάλογο debian/dists/woody/main/disks-i386):

current/i386/images-1.44/

Αυτή τη δομή πρέπει να αντιγράψετε. Για παράδειγμα, αν υποθέσουμε ότι μεταφορτώνετε τα αρχεία στον κατάλογο C:\Download ενός συστήματος Windows, θα πρέπει να έχετε μια δομή όπως C:\Download\current\i386\images-1.44. Δε χρειάζεστε όλα τα αρχεία που βρίσκονται εκεί, μόνο αυτά που αντιστοιχούν στις ανάγκες σας (περισσότερες πληροφορίες σε επόμενη παράγραφο).

  1. Αρχεία προς εγκατάσταση

Τα αρχεία που θα χρειαστεί να μεταφορτώσετε υποπίπτουν σε τρεις κατηγορίες:

Αν έχετε μια λειτουργική σύνδεση δικτύου (δηλαδή το σύστημά σας είναι ήδη μέρος ενός δικτύου LAN με πρόσβαση στο Internet και έχετε τις απαραίτητες πληροφορίες για να συνδεθείτε σε αυτό το δίκτυο, μπορείτε να κάνετε την εγκατάσταση του Debian GNU/Linux μέσω δικτύου.

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

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

  1. Υποστήριξη συσκευών στην εγκατάσταση

Αναλόγα με την υποστήριξη των συσκευών του συστήματός μας από το Linux μπορούμε να επιλέξουμε ανάμεσα στους εξής τύπους αρχείων εγκατάστασης:

απλός 'vanilla'

Ο κύριος τύπος αρχείων, περιλαμβάνει όλους σχεδόν τους οδηγούς που υποστηρίζονται από το Linux, ως αυτοτελείς λογισμικές μονάδες (modules). Υποστηρίζονται σχεδόν όλες οι κάρτες δικτύου, ελεγκτές SCSI, κάρτες ήχου, συσκευές Video4Linux, κλπ. Ο τύπος 'vanilla' περιλαμβάνεται σε μία δισκέτα εκκίνησης/διάσωσης (rescue disk), μια δισκέτα βασικού καταλόγου (root disk) και τέσσερις δισκέτες οδηγών συσκευών.

συμπαγής ('compact')

Όπως και ο απλός τύπος αρχείων, αλλά για πολλές από τις σπανιότερα χρησιμοποιούμενες συσκευές να έχουν αφαιρεθεί οι αντίστοιχοι οδηγοί. Επιπροσθέτως, έχει ενσωματωμένη υποστήριξη για μερικές από τις πιο δημοφιλείς κάρτες δικτύου (βασισμένες σε ελεγκτές NE2000, 3com 3c905, Tulip, ViaRhine και Intel EtherExpress Pro100) και ορισμένους ελεγκτές RAID (DAC960, Compaq SMART2). Με αυτόν τον τρόπο θα μπορείτε να εγκαταστήσετε όλο το σύστημα μέσω δικτύου χρησιμοποιώντας μόνο τις δισκέτες εκκίνησης (rescue floppy) και την δισκέτα βασικού καταλόγου root. Περιλαμβάνεται σε μία δισκέτα εκκίνησης, μία δισκέτα βασικού καταλόγου και δύο δισκέτες οδηγών συσκευών.

Ο τύπος 'idepci'

Αυτός ο τύπος αρχείων εγκατάστασης υποστηρίζει μόνο συσκευές IDE και κάρτες PCI (και πολύ περιορισμένο αριθμό καρτών ISA). Απευθύνεται σε χρήστες που αντιμετωπίζουν πρόβλημα στην εγκατάσταση εξαιτίας των οδηγών SCSI που βρίσκονται σε άλλους τύπους αρχείων με αποτέλεσμα το σύστημα να σταματήσει να αποκρίνεται (system hang). Στον τύπο αυτόν είναι ενσωματωμένος και ο οδηγός ide-floppy ώστε να είναι δυνατή η εγκατάσταση από συσκευές LS120 ή ZIP.

Ο νέος τύπος 'bf2.4'

Αυτός είναι ένας πειραματικός τύπος αρχείων εγκατάστασης που χρησιμοποιεί μια ειδική έκδοση του πυρήνα του Linux που βρίσκεται στο πακέτο kernel-image-2.4. Περιλαμβάνει υποστήριξη για νεότερες συσκευές που δεν βρίσκονται στους παλιότερους τύπους. Ανάμεσα στις νέες συσκευές είναι: συσκευές USB, πληκτρολόγια/ποντίκια USB, σύγχρονους ελεγκτές IDE, κάποιες νέες κάρτες δικτύου και τα συστήματα αρχείων Ext3 και Reiser. Συγκριτικά με τους άλλους τύπους, έχουν αφαιρεθεί ορισμένοι μη ζωτικής σημασίας οδηγοί συσκευών για να κρατηθεί ο αριθμός των δισκετών σε ένα λογικό αριθμό. Επειδή είναι ακόμη πειραματικός, πιθανόν να συναντήσετε προβλήματα στην εγκατάσταση. Σε αυτήν την περίπτωση θα πρέπει να χρησιμοποιήσετε κάποιον άλλο τύπο. Περιλαμβάνεται σε μία δισκέτα εκκίνησης, μια δισκέτα βασικού καταλόγου και τέσσερις δισκέτες οδηγών συσκευών.

Στην περίπτωση που έχετε οδηγό δισκέτας με σύνδεση USB (αρκετοί φορητοί υπολογιστές χρησιμοποιούν τετοιους οδηγούς) τότε θα πρέπει να προμηθευτείτε άλλα αρχεία εγκατάστασης από την διεύθυνση:

http://www-user.rhrk.uni-kl.de/~blochedu/usb-install/

Σημειώνουμε ότι οι δισκέτες αυτές διατίθενται σε τρείς τύπους, 1.2 ΜΒ, 1.44 ΜΒ, και 2.88 ΜΒ. Οι περισσότεροι χρήστες θα χρειαστούν μόνο τις δισκέτες 1.44ΜΒ.

  1. Σημεία εύρεσης των αρχείων εγκατάστασης

Μπορείτε να βρείτε τα αρχεία εγκατάστασης του Debian στους εξής δικτυακούς τόπους:

rescue.bin:

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/rescue.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/compact/rescue.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/idepci/rescue.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/bf2.4/rescue.bin

root.bin:

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/root.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/compact/root.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/idepci/root.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/bf2.4/root.bin

drivers.tgz:

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/drivers.tgz

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/compact/drivers.tgz

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/idepci/drivers.tgz

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/bf2.4/drivers.tgz

ή ως μεμονομένα αρχεία drivers-n.bin (όπου n ο αριθμός της δισκέτας):

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/drivers-n.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/compact/drivers-n.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/idepci/drivers-n.bin

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/images1.44/bf2.4/drivers-n.bin

Το αρχείο rescue.bin περιέχει τον πυρήνα του Linux συμπιεσμένο και χρησιμοποιείται κατά την εκκίνηση του προγράμματος εγκατάστασης, αλλά και κατά την εγκατάσταση του ίδιου του πυρήνα στο σύστημα σας.

Το αρχείο linux.bin περιέχει τον ίδιο πυρήνα αλλά ασυμπίεστο και χρησιμοποιείται για την εγκατάσταση του συστήματος από σκληρό δίσκο σε DOS (βλ. επόμενη ενότητα).

Το αρχείο root.bin περιέχει ένα σύστημα αρχείων (filesystem) σε μικρογραφία με τα βασικά εργαλεία, το οποίο μεταφορτώνεται σε δίσκο μνήμης (RAM disk) μετά την εκκίνηση.

Το αρχείο των οδηγών συσκευών διατίθεται είτε τμηματικά με τη μορφή αντιγράφων δισκετών (drivers-1.bin, drivers-2.bin, κλπ) είτε ως ενιαίο αρχείο drivers.tgz. Το πρόγραμμα εγκατάστασης θα χρειαστεί πρόσβαση στο αρχείο των οδηγών κατά τη διάρκεια της εγκατάστασης. Αν έχετε κάποιο διαμέρισμα στο σκληρό δίσκο (partition) που μπορεί να χρησιμοποιηθεί για την εγκατάσταση, ή κάποιον άλλο υπολογιστή που είναι συνδεδεμένος δικτυακά με το σύστημα στο οποίο θα γίνει η εγκατάσταση, είναι προτιμότερη η μεταφόρτωση του ενιαίου αρχείου drivers.tgz.

Όπως θα δούμε και σε επόμενη ενότητα, είναι δυνατή η χρήση ενός υπάρχοντος διαμερίσματος του σκληρού για αποθήκευση των αρχείων και μετέπειτα χρήση τους κατά την εγκατάσταση. Ο τύπος του διαμερίσματος μπορεί να ποικίλει καθώς το Linux υποστηρίζει αρκετά είδη συστημάτων αρχείων. Προς το παρόν, το πρόγραμμα της εγκατάστασης μπορεί να προσπελάσει αρχεία από συστήματα αρχείων FAT, HFS, ext2, Minix, αλλά όχι NTFS, δηλαδή δε μπορείτε να τοποθετήσετε τα αρχεία σε ένα τυπικό διαμέρισμα των Windows NT/2000/XP (εκτός φυσικά αν είναι σε FAT16/FAT32).

Πέρα από τα προανεφερθέντα αρχεία, θα χρειαστείτε και το εργαλείο loadlin, το οποίο όμως λειτουργεί μόνο σε περιβάλλον DOS και μπορείτε να βρείτε στη διεύθυνση

http://ftp.debian.org/debian/dists/woody/main/disks-i386/current/dosutils/loadlin.exe

  1. Δημιουργία δισκετών εγκατάστασης

Αφού μεταφορτώσετε τα απαραίτητα αρχεία θα πρέπει να τα γράψετε σε δισκέτες για να προχωρήσετε στην εγκατάσταση. Δεν αρκεί όμως μια απλή αντιγραφή. Τα αρχεία αυτά είναι ακριβή αντίγραφα ολόκληρης της δομής μιας δισκέτας, μπλοκ προς μπλοκ (disk image files όπως λέγονται). Η δημιουργία μιας δισκέτας χρησιμοποιώντας τα αρχεία αυτά γίνεται με την αντιγραφή πίσω στη δισκέτα κάθε μπλοκ ξεχωριστά. Για το σκοπό αυτό χρησιμοποιούνται ειδικά προγράμματα, ξεχωριστά σε κάθε λειτουργικό σύστημα. Τα προγράμματα αυτά κάνουν μια αντιγραφή raw δεδομένων στη δισκέτα.

Σε σύστημα Linux/UNIX

Αν έχετε μεταφορτώσει τα αρχεία εγκατάστασης σε άλλο λειτουργικό σύστημα Linux ή σε τύπου UNIX (π.χ. Solaris), μπορείτε πολύ εύκολα να αντιγράψετε τα αρχεία στις δισκέτες χρησιμοποιώντας την εντολή

dd if=<image file> of=/dev/fd0 bs=1024 conv=sync; sync

όπου <image file> είναι ένα από τα αρχεία .bin που έχετε μεταφορτώσει, /dev/fd0 είναι το όνομα της συσκευής της μονάδας της δισκέτας στο Linux (στο Solaris είναι /dev/fd/0). Συχνά συμβαίνει το πρόγραμμα να επιστρέψει στην προτροπή (prompt) πριν τελειώσει η αντιγραφή. Για το λόγο αυτό, θα πρέπει να βεβαιωθείτε ότι η αντιγραφή έχει ολοκληρωθεί πριν βγάλετε τη δισκέτα.

Στα Windows

Αν τα αρχεία εγκατάστασης τα έχετε μεταφορτώσει σε περιβάλλον DOS/Windows μπορείτε να χρησιμοποιήσετε κάποια αντίστοιχα εργαλεία για να τα αντιγράψετε σε δισκέτες. Σε περιβάλλον DOS μπορείτε να χρησιμοποιήσετε τα εργαλεία FDVOL, WrtDsk και RaWrite3:

http://www.minix-vmd.org/pub/Minix-vmd/dosutil/

Τα εργαλεία αυτά τρέχουν στη γραμμή εντολών του DOS και δεν έχουν παραθυρικό χειρισμό.

Σε περιβάλλον Windows NT/2000/XP μπορείτε να χρησιμοποιήσετε την παραθυρική εφαρμογή NTRawrite, που βρίσκεται στη διεύθυνση:

http://sourceforge.net/projects/ntrawrite/



Κεφάλαιο 4 - Εκκίνηση της εγκατάστασης

Αν πραγματοποιείτε την εγκατάσταση χρησιμοποιώντας δισκέτες ή CD-ROM θα δείτε ως πρώτη ένδειξη την προτροπή (prompt) boot:. Στο σημείο αυτό είναι δυνατή η επέμβαση στον τρόπο που θα γίνει η εγκατάσταση, αν θέλετε ή αν υπάρχει πρόβλημα. Γενικά, μπορείτε να μην δώσετε τίποτε στην προτροπή αυτή και απλώς να πατήσετε [ENTER].


Εικόνα 1 Εκκίνηση της εγκατάστασης του Debian




Ανάμεσα στις περιπτώσεις που χρειάζεται να επέμβει κάποιος στην διαδικασία εκκίνησης είναι η εγκατάσταση συστήματος εξ αποστάσεως μέσω καλωδίου σειριακής θύρας (null modem cable). Στην περίπτωση αυτή αρκεί να δοθεί η παράμετρος console=<device>, όπου <device> το όνομα της συσκευής που αντιστοιχεί στη σειριακή θύρα που θα χρησιμοποιηθεί, π.χ. ttyS0 για την COM1.

  1. Εκκίνηση από CD-ROM

Το Debian για αρχιτεκτονική i386 (IA32 όπως έχουμε προαναφέρει) διατίθεται σε 5 CD. Κάθε ένα από αυτά τα CD μπορεί να χρησιμοποιηθεί για εκκίνηση της εγκατάστασης για διαφορετικό σκοπό όμως το καθένα. Ειδικά το πρώτο CD μπορεί να χρησιμοποιηθεί για να εκκινήσει οποιονδήποτε από τους τέσσερις τύπους αρχείων εγκατάστασης (vanilla, compact, idepci, bf2.4). Απλώς δώστε το όνομα του

επιθυμητού τύπου στην προτροπή boot:. Αυτή η μέθοδος επιλογής βασίζεται στο σύστημα isolinux, το οποίο μπορεί να μην το υποστηρίζει ο υπολογιστής σας. Φαίνεται ότι σε αυτήν την κατηγορία εμπίπτουν και πολλά από τα SCSI CD-ROM. Για το σκοπό αυτό έχει ενεργοποιηθεί και η δυνατότητα εκκίνησης και στα υπόλοιπα CD, έτσι ώστε το καθένα να χρησιμοποιεί διαφορετικό τύπο αρχείων εκκίνησης. Συγκεκριμένα:

Έτσι, αν είστε κάτοχος SCSI CD-ROM και αντιμετωπίζετε πρόβλημα με το πρώτο CD και το σύστημα δε σας επιτρέπει να εκμεταλλευτείτε την δυνατότητα επιλογής στο πρώτο CD, μπορείτε να χρησιμοποιείτε ένα από τα CD 2, CD 3, ή CD 5. Το CD 4, δεν ενδείκνυται καθώς δεν έχει οδηγούς για συσκευές SCSI.

Ειδικά σε παλιά συστήματα, δεν είναι δυνατή η εκκίνηση του υπολογιστή από CD-ROM. Σε αυτήν την περίπτωση μπορείτε να φορτώσετε DOS και να εκτελέσετε το αρχείο E:\install\boot.bat. Το γράμμα E:, θα πρέπει φυσικά να αντικατασταθεί από το αντίστοιχο γράμμα που χρησιμοποιεί η συσκευή CD-ROM του συστήματός σας.

Αντίθετα, οι νεότεροι υπολογιστές, ειδικά οι φορητοί, πιθανόν να χρησιμοποιούν USB ή FireWire (IEEE 1394 ή i.Link) CD-ROM. Για να εκκινήσει το σύστημα από αυτά τα συστήματα θα πρέπει να χρησιμοποιηθεί αναγκαστικά ο τύπος bf2.4, καθώς στους παλιότερους τύπους δεν υπάρχει επαρκής υποστήριξη για αυτά τα πρωτόκολλα.

Ακόμη όμως και αν δεν είναι δυνατή η εκκίνηση από CD-ROM, μπορείτε να χρησιμοποιήσετε τα CDs του Debian για την εγκατάσταση του κυρίως συστήματος και των πακέτων.

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

  1. Εκκίνηση από δισκέτες

Αν για κάποιο λόγο δε είναι δυνατή η εκκίνηση της εγκατάστασης από CD-ROM, ή αν δεν έχετε τα CD-ROM και θέλετε να κάνετε εγκατάσταση μέσω δικτύου, τότε μπορείτε να χρησιμοποιήσετε τις δισκέτες εγκατάστασης, επιλέγοντας τον κατάλληλο τύπο για τον υπολογιστή σας (vanilla, compact, idepci, bf2.4, ή τις δισκέτες για USB).

Η διαδικασία της εκκίνησης είναι αρκετά απλή, απλώς τοποθετήστε την δισκέτα εκκίνησης (rescue) στον οδηγό δισκέτας και επανεκκινήστε τον υπολογιστή. Θα εμφανιστεί και πάλι μια προτροπή boot:.

Αν πρόκειται να κάνετε εγκατάσταση από οδηγό δισκέτας LS120 (έκδοση ATAPI), τότε θα πρέπει να δώσετε στην προτροπή boot: την εντολή root=<όνομα συσκευής LS120>. Εφόσον πρόκειται για συσκευή IDE, το όνομα θα είναι της μορφής /dev/hdx, όπου x το γράμμα που αντιστοιχεί στη σειρά σύνδεσης της συσκευής. Αν είναι δηλαδή η πρώτη συσκευή στο δεύτερο δίαυλο (bus), το γράμμα που αντιστοιχεί στον οδηγό LS120 είναι το c, και η σωστή εντολή είναι "root=/dev/hdc". Σημειώνουμε ότι η εγκατάσταση από τέτοιου τύπου οδηγούς υποστηρίζεται μόνο από τα αρχεία bf2.4.

Στην προτροπή boot: πατώντας τα πλήκτρα [F1]-[F10] (Function keys) θα εμφανιστούν κάποιες σελίδες βοηθείας που σας δίνουν κάποιες χρήσιμες πληροφορίες για παραμετροποίηση της διαδικασίας εκκίνησης.

Όταν θεωρήσετε ότι είστε έτοιμοι να προχωρήσετε πατήστε [ENTER].


Εικόνα 2 Η φόρτωση του πυρήνα του Linux




Θα δείτε το μηνύμα "Loading..." ακολουθούμενο από το "Uncompressing Linux...". Στην ουσία ο φορτωτής εκκίνησης (boot loader), φορτώνει τον πυρήνα του Linux και στη συνέχεια τον εκτελεί.

Αναλόγως τον τύπο αρχείων που έχετε επιλέξει πιθανόν να σας ζητηθεί να τοποθετήσετε και την δισκέτα root. Τοποθετήστε την αντίστοιχη δισκέτα και πατήστε [ENTER]. Σε αυτή περιέχονται τα κυρίως αρχεία της εγκατάστασης.

  1. Εκκίνηση της εγκατάστασης από σκληρό δίσκο σε περιβάλλον DOS

Όπως έχει σημειωθεί παραπάνω, η εγκατάσταση πέρα από CD-ROM και δισκέτες, μπορεί να γίνει και από σκληρό δίσκο, χρησιμοποιώντας διαμέρισμα του δίσκου σε FAT32 (το σύστημα αρχείων των Windows 95/98). Είναι δυνατή και η χρήση διαμέρισματος σε σύστημα αρχείων ext2/NTFS αλλά πρόκειται για κάπως πιο προχωρημένο θέμα που ξεφεύγει από τους σκοπούς αυτού του οδηγού.

Θα πρέπει αφού έχετε μεταφορτώσει τα αρχεία της εγκατάστασης με την απαραίτητη δομή (σελ. 30), να εκκινήσετε σε περιβάλλον DOS (συνήθως πατώντας [F8] στην εκκίνηση των Windows).

Σημείωση: ΔΕΝ υποστηρίζεται η εγκατάσταση από περιβάλλον Windows NT/2000/XP, καθώς αυτά δεν έχουν παρέχουν υποστήριξη για περιβάλλον DOS. Στην περίπτωση που δεν έχετε ή δε θέλετε να εγκαταστήσετε Windows 95/98, μπορείτε να χρησιμοποιήσετε το ελεύθερο λογισμικό FreeDOS http://www.freedos.org που προσφέρει ένα υποκατάστατο του MS-DOS.

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

cd C:\current\compact

και εκτελέστε το αρχείο install.bat. Θα εκκινήσει τον πυρήνα του Linux και στη συνέχεια το πρόγραμμα εγκατάστασης.

  1. Τα πρώτα στάδια της εγκατάστασης

Αν δεν υπάρξουν προβλήματα κατά την εκκίνηση θα πρέπει να δείτε το κυρίως πρόγραμμα της εγκατάστασης, το dbootstrap. Αυτό είναι ένα αρκετά απλό στη χρήση πρόγραμμα, που θα σας οδηγήσει σε όλα τα στάδια τα στάδια της εγκατάστασης με συνεχή και συνεπή τρόπο.

Το dbootstrap είναι υπεύθυνο για όλα τα στάδια της εγκατάστασης του Debian εκτός από την επιλογή και εγκατάσταση των πακέτων. Στο dbootstrap, θα επιλέξετε οδηγούς συσκευών για περιφερειακά που έχετε συνδεδεμένα στον υπολογιστή σας, θα ορίσετε τις αρχικές ρυθμίσεις δικτύου, θα διαμορφώσετε το σκληρό σας δίσκο και τα αντίστοιχα διαμερίσματα.

Ο χειρισμός του είναι αρκετά απλός και μπορείτε να χρησιμοποιήσετε τα εξής πλήκτρα:

Για τους πιο προχωρημένους χρήστες δίνονται μερικές επιπλέον δυνατότητες. Με τη χρήση των πλήκτρων [Αριστερό ALT]-[F1] έως και [F4], μπορεί κάποιος χρήστης να χειριστεί το κυρίως πρόγραμμα εγκατάστασης (dbootstrap, [Αριστερό ALT]-[F1]), να έχει πρόσβαση σε ένα κέλυφος περιορισμένων δυνατοτήτων (κέλυφος ash, [Αριστερό ALT]-[F2]), να δει τα μηνύματα του πυρήνα και τυχόν λάθη σε αναγνώριση συσκευών (dmesg, [Αριστερό ALT]-[F3]) και τέλος να δει τα μηνύματα της εγκατάστασης των βασικών πακέτων ([Αριστερό ALT]-[F4]).

Όσον αφορά το κέλυφος ash, δε συνίσταται η χρήση του εκτός αν είστε έμπειρος χρήστης Linux/UΝΙX και αντιμετωπίζετε κάποιο πρόβλημα στην εγκατάσταση ή υπάρχει κάποια συγκεκριμένη διαδικασία που πρέπει να προηγηθεί στην εγκατάσταση και δεν την προσφέρει το πρόγραμμα dbootstrap. Για τις υπόλοιπες περιπτώσεις θα πρέπει να ακολουθήσετε τα στάδια του dboostrap.


Εικόνα 3 Επιλογή της γλώσσας κατά την εγκατάσταση


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

Στην περίπτωση βέβαια που αντιμετωπίσετε προβλήματα κατά την εγκατάσταση και δε δείτε την οθόνη επιλογής γλώσσας, μπορείτε να ανατρέξετε στο Παράρτημα II (σελ. 262).


Εικόνα 4 Λεπτομέρειες για την έκδοση του Debian


Θα ακολουθήσει η οθόνη "Release Notes" στην οποία θα μπορέσετε να μάθετε περισσότερες πληροφορίες για τη συγκεκριμένη έκδοση του προγράμματος εγκατάστασης του Debian και για τους Debian Developers.

  1. Κεντρικό Μενού Εγκατάστασης του Debian GNU/Linux

Σε κάθε στάδιο πιθανόν να δείτε το μήνυμα "The installation program is determining the current state of your system and the next installation step that should be performed". Αυτό συμβαίνει γιατί το πρόγραμμα εγκατάστασης κάθε φορά ελέγχει την κατάσταση του συστήματός σας και προσπαθεί να εκτιμήσει ποιο θα πρέπει να είναι το επόμενο βήμα της εγκατάστασης. Αυτό είναι πολύ χρήσιμο σε περίπτωση που κάποιο πρόβλημα συμβεί κατά την εγκατάσταση και τερματιστεί πρόωρα (π.χ. ένα crash του υπολογιστή, μια πτώση τάσης, κλπ). Έτσι μπορείτε να επανεκκινήσετε την εγκατάσταση και να βρεθείτε στο ίδιο σημείο που είχατε σταματήσει την εγκατάσταση. Το μόνο που θα χρειαστεί να κάνετε είναι να ρυθμίσετε το πληκτρολόγιό σας και να ενεργοποιήσετε πάλι το διαμέρισμα εικονικής μνήμης (swap) και τους δίσκους που είχατε διαμορφώσει πρίν.

Στο πάνω μέρος της οθόνης του προγράμματος εγκατάστασης, θα είναι εμφανείς τρεις επιλογές: "Next", "Alternate" και "Alternate1", με αντίστοιχες επεξηγήσεις για το κάθε βήμα. Συνήθως αρκεί να επιλέξετε την πρώτη, εκτός φυσικά αν οι ανάγκες σας είναι τέτοιες που πρέπει να επιλέξετε μια από τις εναλλακτικές "Alternate" ή “Alternate1”.

  1. Ρύθμιση του πληκτρολογίου

Το πρώτο στάδιο που θα εμφανιστεί στη λίστα επιλογών, είναι η ρύθμιση του πληκτρολογίου. Για τα ελληνικά δεδομένα αρκεί να επιλέξετε QWERTY/US.


Εικόνα 5 Επιλογή πληκτρολογίου


Στο σημείο αυτό ξεκινάει και η κυρίως εγκατάσταση.




Εικόνα 6 Το κεντρικό μενού της εγκατάστασης




Κεφάλαιο 5 - Προχωρώντας την εγκατάσταση

  1. Κατάτμηση του δίσκου

Η επόμενη επιλογή που εμφανίζεται είναι η "Partition a Hard Disk", δηλαδή η κατάτμηση ενός σκληρού δίσκου σε διαμερίσματα (partitions).

Το Linux ως λειτουργικό σύστημα – και κατ' επέκταση και το Debian – δεν έχει ιδιαίτερες απαιτήσεις όσον αφορά τον τρόπο της κατάτμησης του σκληρού δίσκου. Είναι δυνατή η εγκατάστασή του σε ένα μόνο διαμέρισμα, το οποίο θα περιέχει όλα τα αρχεία του συστήματος, τις εφαρμογές και τα προσωπικά σας αρχεία. Συνήθως προτείνεται και η προσθήκη ενός δεύτερου διαμερίσματος το οποίο θα χρησιμοποιηθεί ως εικονική μνήμη (virtual memory ή swap όπως πιο συχνά καλείται). Η χρήση του διαμερίσματος εναλλαγής δεδομένων δεν είναι απαραίτητη, μάλιστα είναι δυνατή η χρήση ενός μόνο αρχείου για εναλλαγή δεδομένων, αλλά η απόδοση του συστήματος διαχείρισης μνήμης είναι σαφώς καλύτερη με αποκλειστικά δεσμευμένο διαμέρισμα για χρήση εναλλαγής.

Γενικά προτείνεται η δημιουργία πολλών διαμερισμάτων για τη χρήση του Linux. Ένας από τους κύριους λόγους που συντρέχουν σε αυτό είναι το θέμα ακεραιότητας των δεδομένων. Σε περίπτωση που παρουσιαστεί κάποιο πρόβλημα στο δίσκο αυτό συνήθως εμφανίζεται μόνο σε ένα διαμέρισμα. Αν έχετε όλα τα αρχεία σας (συστήματος, εφαρμογές, προσωπικά δεδομένα) στο ίδιο διαμέρισμα, τότε είναι αυξημένη η πιθανότητα να χάσετε τα προσωπικά σας αρχεία εξαιτίας κάποιου προβλήματος που πιθανόν να παρουσιαστεί σε αρχείο του συστήματος. Ενώ αν αυτά βρίσκονται σε διαφορετικό διαμέρισμα, θα μπορείτε να αντικαταστήσετε τα ελαττωματικά αρχεία συστήματος χωρίς να χρειαστεί να πειράξετε το διαμέρισμα που περιέχει τα προσωπικά σας αρχεία. Το λιγότερο που μπορείτε να κάνετε είναι να ορίσετε ένα μικρό διαμέρισμα για το βασικό κατάλογο του συστήματος (root partition). Σε αυτό θα περιέχονται χρήσιμες εφαρμογές και εργαλεία και αν τα άλλα διαμερίσματα παρουσιάσουν κάποιο πρόβλημα, τότε θα είναι δυνατή η εκκίνηση από το διαμέρισμα root και η διόρθωση του συστήματος, γλυτώνοντας έτσι τον κόπο της επανεγκατάστασης.

Ένας δεύτερος λόγος που καθιστά την χρήση πολλών διαμερισμάτων προτιμητέα είναι η κατανάλωση χώρου στο διαμέρισμα. Αυτό επηρεάζει κυρίως επαγγελματικές εγκαταστάσεις αλλά όχι μόνο. Είναι συνηθισμένο το φαινόμενο σε mail servers να γεμίζει το διαμέρισμα /var, λόγω της πολλής αλληλογραφίας spam που βρίσκεται στον κατάλογο /var/mail. Γενικά είναι καλό να υπάρχει αρκετός ελεύθερος χώρος σε κάθε διαμέρισμα του δίσκου για την καλή λειτουργία του συστήματος και να μη λειτουργεί στα όρια του.

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

  1. Το δέντρο αρχείων του Debian GNU/Linux

Το Debian ακολουθεί το FHS (Filesystem Hierarchy Standard http://www.pathname.com/fhs) το οποίο ορίζει συγκεκριμένες θέσεις για καταλόγους και αρχεία συγκεκριμένου τύπου και βοηθάει στην καλύτερη οργάνωση των αρχείων στο σύστημα. Έχει υιοθετηθεί σε μεγάλο βαθμό από σχεδόν όλες τις διανομές.

Ο βασικός κατάλογος (root directory) απεικονίζεται με την πλάγιοκάθετο / (slash). Όλοι οι υπόλοιποι κατάλογοι βρίσκονται κάτω από τον βασικό κατάλογο.

Συγκεκριμένα, έχουμε για τους πιο σημαντικούς από αυτούς:

Όνομα καταλόγου

Πληροφορίες

/bin

Βασικές εντολές συστήματος

/boot

Αρχεία εκκίνησης του συστήματος (πυρήνας, boot loader)

/dev

Αρχεία επαφών συσκευών

/etc

Αρχεία ρύθμισης και παραμετροποίησης συστήματος και εφαρμογών

/home

Προσωπικά αρχεία κάθε χρήστη

/lib

Βασικές βιβλιοθήκες συστήματος

/mnt

Σημείο προσωρινής ενεργοποιήσης και πρόσβασης σε σύστημα αρχείων

/proc

Εικονικό σύστημα αρχείων που παρέχει πληροφορίες για το σύστημα

/root

Προσωπικά αρχεία για τον διαχειριστή συστήματος (χρήστης root)

/sbin

Βασικές εντολές διαχείρισης συστήματος

/tmp

Προσωρινά αρχεία συστήματος

/usr

Δευτερεύουσα ιεραρχία

/var

Διάφορα αρχεία μεταβλητής φύσης

/opt

Επιπρόσθετα αρχεία, συνήθως χρησιμοποιούμενα από εφαρμογές



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

  1. Συνιστώμενη κατάτμηση δίσκου

Με τα σημερινά δεδομένα, το ελάχιστο μέγεθος σκληρού δίσκου είναι περίπου 15 GB. Αυτό το μέγεθος είναι υπεραρκετό για την εγκατάσταση του Debian αλλά η καλή οργάνωση του διαχωρισμού του δίσκου σε διαμερίσματα θα αποβεί προς όφελος σας μακροπρόθεσμα.

Για καλύτερη κατανόηση παραθέτουμε την οργάνωση των διαμερισμάτων στο φορητό υπολογιστή του γράφοντος (15 GΒ συνολική χωρητικότητα).

Διαμέρισμα

Μέγεθος

/

256 MB

swap

512 MB

/usr

5120 ΜB

/var

3400 MB

/tmp

128 MB

/home

5192 ΜB

Σύνολο

14608 MB



Φυσικά μπορείτε να ακολουθήσετε και διαφορετικό σύστημα κατάτμησης. Τα βασικά διαμερίσματα που θα πρέπει να σας απασχολήσουν για το μέγεθός τους είναι το /home και το /var, καθώς πιο συχνά για αυτά γίνονται λανθασμένες εκτιμήσεις στην αρχή.

  1. Προετοιμασία δίσκου

Αφού αποφασίσετε τον τρόπο με τον οποίο θέλετε να διαχωρίσετε το σκληρό σας δίσκο (ή τους σκληρούς δίσκους), επιλέξτε το "Partition a Hard Disk" από την κυρίως οθόνη της εγκατάστασης. Θα εμφανιστεί το πρόγραμμα της διαχείρισης διαμερισμού σκληρού cfdisk. Οδηγίες για τη χρήση του προγράμματος cfdisk θα βρείτε στο Παράρτημα III (σελ. 265).

  1. Εγκαινίαση και ενεργοποίηση διαμερίσματος εναλλαγής μνήμης

Το επόμενο στάδιο είναι η εγκαινίαση (initialization) και ενεργοποίηση (activation) του διαμερίσματος εναλλαγής μνήμης (swap partition), αν φυσικά κάτι τέτοιο είναι επιθυμητό. Θα σας δωθούν τρείς επιλογές: α) εγκαινίαση του διαμερίσματος εναλλαγής μνήμης και ενεργοποίηση, β) ενεργοποίηση προεγκαινιασμένου διαμερίσματος εναλλαγής μνήμης, γ) επιλογή λειτουργίας χωρίς χρήση διαμερίσματος εναλλαγής μνήμης.


Εικόνα 7 Δημιουργία διαμερίσματος εναλλαγής μνήμης


Τις περισσότερες φορές μπορείτε απλώς να επιλέξετε την πρώτη επιλογή, εκτός αν είστε σίγουροι ότι το διαμέρισμα είναι ήδη προεγκαινιασμένο, οπότε επιλέγετε τη δεύτερη.


Εικόνα 8 Έλεγχος χαλασμένων blocks κατά τη διαμόρφωση


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

Η χρήση του διαμερίσματος εναλλαγής μνήμης συνιστάται ακόμη και αν έχετε αρκετή μνήμη εγκατεστημένη στον υπολογιστή σας, αλλά το Linux μπορεί να λειτουργήσει και χωρίς αυτό το χαρακτηριστικό.

  1. Αρχικοποίηση διαμερίσματος για το Linux

Μετά το διαμέρισμα εναλλαγής μνήμης θα πρέπει να αρχικοποιήσετε και να ενεργοποιήσετε τα διαμερίσματα του δίσκου που θα χρησιμοποιήσετε (βλ. εικόνα 9).


Εικόνα 9 Αρχικοποίηση διαμερισμάτων


Θα πρέπει αρχικά να επιλέξετε το διαμέρισμα και το είδος του συστήματος αρχείων που θα φιλοξενήσει τον βασικό κατάλογο / (root directory), όπως δείχνουν οι εικόνες 10 και 11. Αν πρόκειται για ήδη υπάρχον διαμέρισμα με παλιά δεδομένα, η αρχικοποίηση θα διαγράψει όλα τα δεδομένα του.

Για κάθε διαμέρισμα που πρόκειται να αρχικοποιήσετε, θα ερωτηθείτε αν θέλετε να διατηρήσετε συμβατότητα του συστήματος αρχείων με πυρήνες Linux 2.0. Εκτός αν έχετε συγκεκριμένες ανάγκες για να χρησιμοποιήσετε έναν τόσο παλιό πυρήνα, δεν είναι ανάγκη να απαντήσετε καταφατικά.




Εικόνα 10Επιλογή είδους συστήματος αρχείων


Επίσης, θα ερωτηθείτε αν θέλετε να ελέγξετε την επιφάνεια του σκληρού δίσκου – για την ακρίβεια την επιφάνεια του σκληρού δίσκου που αντιστοιχεί στο συγκεκριμένο διαμέρισμα – για ελαττωματικούς τομείς (bad sectors). Σε περίπτωση που πρόκειται για καινούριο σκληρό δίσκο, δεν είναι απαραίτητο να επιλέξετε κάτι τέτοιο διότι πρόκειται για χρονοβόρα διαδικασία. Από την άλλη, δεν είναι κακή συνήθεια να ελέγχει κάποιος την ποιότητα του σκληρού δίσκου στον οποίο πρόκειται να εμπιστευθεί τα δεδομένα του. Πρόκειται για καθαρά προσωπική επιλογή.


Εικόνα 11 Επιλογή διαμερίσματος προς αρχικοποίηση


Τελειώνοντας την αρχικοποίηση του βασικού καταλόγου και πριν προχωρήσετε στο επόμενο στάδιο, θα πρέπει να αρχικοποιήσετε και συναρμόσετε τα υπόλοιπα διαμερίσματα (βλ. εικόνες 12 και 13), που πιθανόν θα αντιστοιχούν στους καταλόγους /home, /usr, /var, κλπ.


Εικόνα 12 Αρχικοποίηση των υπολοίπων διαμερισμάτων


Εικόνα 13 Συναρμογή του συστήματος αρχείων






  1. Συναρμογή προ-αρχικοποιημένου διαμερίσματος

Στην περίπτωση που είχε διακοπεί η διαδικασία της εγκατάστασης σε κάποιο σημείο και δε θέλετε να επαναλάβετε όλα τα βήματα από την αρχή, μπορείτε να συναρμόσετε (mount) τα ίδια διαμερίσματα που είχατε δημιουργήσει την προηγούμενη φορά, χωρίς να τα αρχικοποιήσετε ξανά. Με αυτόν τον τρόπο, μπορείτε να συνεχίσετε την εγκατάσταση από το σημείο που διακόπηκε.


Εικόνα 14 Ενεργοποίηση προ-αρχικοποιημένου διαμερίσματος


Αυτήν την επιλογή θα πρέπει να επιλέξετε ακόμη και αν πρόκειται να ενεργοποιήσετε κάποιο δικτυακό σύστημα αρχείων μέσω NFS (Network File System), π.χ. για ένα υπολογιστή που ανήκει σε δίκτυο και έχει όλους τους καταλόγους των χρηστών σε ένα δικτυακό σύστημα αρχείων /home. Ή ακόμη και για ένα σύστημα χωρίς δίσκο που εκκινεί στο Linux μέσω δικτύου (diskless workstation).

Η σύνταξη της διαδρομής για ένα σύστημα αρχείων NFS, είναι η ακόλουθη:

hostname:/directory

ή

ip-address:/directory

Για παράδειγμα, έγκυρες διαδρομές είναι οι εξής:

mordor.arda.ea:/home
192.168.1.10:/var

(το mordor.arda.ea είναι φανταστικό όνομα!)

  1. Εγκατάσταση Πυρήνα και Οδηγών συσκευών

Το σύστημα είναι πλέον έτοιμο ώστε να αρχίσει η εγκατάσταση των αρχείων. Τα πρώτα αρχεία που πρέπει να εγκατασταθούν είναι ο ίδιος ο πυρήνας του Linux και οι οδηγοί συσκευών. Η εγκατάσταση μπορεί να γίνει από οποιοδήποτε μέσον υποστηρίζεται και δεν είναι ανάγκη να χρησιμοποιήσετε το μέσον της εκκίνησης (δισκέτες, CD-ROM, σκληρός δίσκος).




Εικόνα 15 Εγκατάσταση πυρήνα και οδηγών συσκευών




Στην περίπτωση που η εκκίνηση έγινε από επίσημο CD-ROM του Debian, το πρόγραμμα εγκατάστασης dbootstrap είναι ρυθμισμένο να κάνει την εγκατάσταση του πυρήνα και των οδηγών συσκευών αυτόματα από το CD, οπότε θα πρέπει να τοποθετήσετε το CD 1 στον οδηγό CD.

Αν θέλετε να γίνει η εγκατάσταση από δισκέτες τότε θα σας ζητηθεί να τοποθετήσετε την δισκέτα εκκίνησης (rescue) ακολουθούμενη από τις δισκέτες οδηγών συσκευών (drivers).


Εικόνα 16 Προτροπή εισαγωγής δισκέτας οδηγών




Αν θέλετε να χρησιμοποιήσετε σκληρό δίσκο για την εγκατάσταση (δηλαδή αν έχετε μεταφορτώσει τα αρχεία σε κάποιο διαμέρισμα στο σκληρό δίσκο και θέλετε το πρόγραμμα εγκατάστασης να το χρησιμοποιήσει), τότε θα σας δωθούν δύο επιλογές: α) hard disk, αν το διαμέρισμα δεν έχει ακόμη συναρμοστεί (mounted) και β) mounted, αν το διαμέρισμα είναι συναρμοσμένο. Σε κάθε περίπτωση το πρόγραμμα εγκατάστασης θα αναζητήσει κάποια αρχεία στη θέση dists/woody/main/disks-i386/current. Αν δε μπορεί να τα βρει θα σας ζητήσει να του δώσετε το σωστό κατάλογο που βρίσκονται τα αρχεία ("Debian Archive Path"), δηλαδή όπου τα έχετε μεταφορτώσει. Μπορείτε να δώσετε απευθείας τον κατάλογο ή να τον αναζητήσετε (επιλέγοντας <...>).

Υπάρχει περίπτωση να μην βρεί το σύστημα τα αρχεία που χρειάζεται για την εγκατάσταση του. Το πιο πιθανό αίτιο είναι να έχετε παραλείψει κάποια αρχεία στην αντιγραφή του δέντρου δομής των αρχείων εγκατάστασης. μπορείτε πατώντας [Αριστερό ALT]-[F3] να δείτε τα μηνύματα λάθους του dbootstrap τα οποία θα σας βοηθήσουν στην εύρεση της αιτίας του προβλήματος.

Αν δεν υπάρχει πρόβλημα στην αναζήτηση των καταλλήλων αρχείων, το πρόγραμμα θα σας παρουσιάσει μια λίστα με τις διαθέσιμες υποεκδόσεις του Debian woody (αναλόγως με τα αρχεία που έχετε μεταφορτώσει, πιθανόν να δείτε τις επιλογές "default", "testing", "unstable"). Επιλέξτε default.

Αν θέλετε, είναι δυνατή η εγκατάσταση του πυρήνα και των οδηγών συσκευών εξ' ολοκλήρου από το δίκτυο. Για να γίνει αυτό, θα πρέπει ο πυρήνας που χρησιμοποιείται στην εγκατάσταση να υποστηρίζει την κάρτα δικτύου σας (στο στάδιο αυτό δε μπορεί να γίνει εγκατάσταση μέσω modem). Αν συμβαίνει κάτι τέτοιο τότε θα πρέπει να προχωρήσετε πρώτα στο στάδιο της ρύθμισης του δικτύου ("Configure the Network") σε επόμενη ενότητα. Επιλέξτε "Cancel", και από το κεντρικό μενού "Configure the Network". Κατόπιν, επιστρέψτε στην ίδια ενότητα ("Install Kernel and Driver Modules") και επιλέξτε HTTP ή NFS ως πηγή εγκατάστασης.

NFS

Με αυτόν τον τρόπο η εγκατάσταση γίνεται όπως με ένα σκληρό δίσκο, απλώς θα πρέπει πρώτα να ενεργοποιήσετε το δικτυακό σύστημα αρχείων. Δώστε τη σωστή διεύθυνση NFS (παραδείγματα θα βρείτε στην προηγούμενη παράγραφο) και τα σύστημα αρχείων θα ενεργοποιηθεί υπό τον κατάλογο /instmnt.

Network

Επιλέξτε το σωστό URL ενός δικτυακού τόπου που φιλοξενεί το Αρχείο του Debian (Debian mirror). Τα προκαθορισμένα θα πρέπει να λειτουργήσουν χωρίς κάποιο πρόβλημα. Αν βρίσκεστε σε κάποιο εσωτερικό δίκτυο (π.χ. εταιρικό LAN) και χρησιμοποιήτε διαμεσολαβητή (proxy server), δώστε την διεύθυνση URL του proxy.

  1. Ρύθμιση συσκευών PCMCIA

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


Εικόνα 17 Επιλογή τύπων συσκευών PCMCIA




Θα ερωτηθείτε ποιον ελεγκτή PCMCIA χρησιμοποιεί ο υπολογιστής σας, δηλαδή αν είναι τύπου i82365 ή tcic. Αν δε ξέρετε τί τύπο ελεγκτή PCMCIA χρησιμοποιεί ο υπολογιστής σας μπορείτε να το μάθετε από τις τεχνικές πληροφορίες που δίνονται στα βιβλία και τους οδηγούς χρήσης του υπολογιστή σας. Τα δύο επόμενα πεδία μπορείτε να τα αφήσετε κενά, καθώς παρέχονται για παραμετροποίηση του ελεγκτή σε μη συνηθισμένες διατάξεις περιφερειακών. Αν χρειαστείτε περισσότερες οδηγίες και πληροφορίες για τη λειτουργία του PCMCIA στο Linux, μπορείτε να ανατρέξετε στη διεύθυνση:

http://www.tldp.org/HOWTO/PCMCIA-ΗOWTO.html


Εικόνα 18 Επιλογή τύπου ελεγκτή PCMCIA




Αν φυσικά δε σκοπεύετε να χρησιμοποιήσετε τη θύρα PCMCIA για εγκατάσταση μέσω δικτύου ή δεν πρόκειται να εγκαταστήσετε το Debian μέσω δικτύου, μπορείτε να προσπεράσετε αυτήν την ενότητα.

  1. Ρύθμιση οδηγών συσκευών

Στο σημείο αυτό θα πρέπει να ενεργοποιήσετε και να ρυθμίσετε τους οδηγούς συσκευών που θα χρειαστείτε κατά την εγκατάσταση. Τέτοιες συσκευές είναι κάρτες δικτύου, ελεγκτές SCSI που δεν αναγνωρίστηκαν από τον πυρήνα, ή PCI κάρτες ISDN.

Αρχικά θα ερωτηθείτε αν έχετε περιφερειακά τα οποία έρχονται με δικούς τους οδηγούς για το Linux σε δισκέτα.

Προσοχή: Οι δισκέτες ή τα CD που περιέχουν οδηγούς για Windows ή ακόμη και οδηγούς για Linux αλλά σε συμπιεσμένη μορφή (π.χ. κάποιο αρχείο ZIP) δε θα λειτουργήσουν. Θα χρειαστεί μια δισκέτα διαμορφωμένη σε σύστημα ext2 που να έχει τους οδηγούς σε λογισμικές μονάδες (modules) σε μια δομή όπως /lib/modules/misc (όπου misc ο αντίστοιχος τομέας που ανήκει ο οδηγός, π.χ. scsi, fs, sound, κλπ).

Οι περισσότεροι χρήστες δε θα χρειαστούν τέτοιους οδηγούς.

Έπειτα, θα φορτωθεί το πρόγραμμα modconf το οποίο δείχνει μια λίστα με τους διαθέσιμους οδηγούς συσκευών κατηγοριοποιημένους ανά ομάδες (βλ. εικόνες 20 και 21). Επιλέξτε τους οδηγούς για τις συσκευές που θα χρειαστείτε.


Εικόνα 19 Ρύθμιση οδηγών συσκευών




Πολλές φορές οι οδηγοί φέρουν το όνομα του chipset που χρησιμοποιούν και όχι της εταιρείας του ίδιου του προϊόντος, οπότε είναι αρκετά συχνό το φαινόμενο να βρείτε μια κάρτα δικτύου της ίδιας εταιρείας να λειτουργεί με τον οδηγό rtl8139 και μια άλλη με τον οδηγό eepro100. Αυτό συμβαίνει γιατί στη μια περίπτωση η μια κάρτα δικτύου χρησιμοποιεί το chipset της RealTek 8139 και η άλλη το chipset της Intel i8255x (EtherExpress Pro 100). Θα πρέπει να βρείτε ποιο chipset χρησιμοποιεί η κάρτα σας. Αυτό μπορείτε να το βρείτε με την εντολή lspci. Πατώντας [Αριστερό ALT]-[F2] έχετε πρόσβαση στο κέλυφος ash, όπου δίνοντας lspci, βρίσκετε τις συσκευές που υπάρχουν στον υπολογιστή σας. Παράδειγμα:

$ lspci

00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)

00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)

00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)

00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)

00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)

00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 03)

00:08.0 FireWire (IEEE 1394): Sony Corporation CXD3222 i.LINK Controller (rev 02)

00:09.0 Multimedia audio controller: Yamaha Corporation YMF-744B [DS-1S Audio Controller] (rev 02)

00:0a.0 Communication controller: Conexant HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) (rev 01)

00:0b.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08)

00:0c.0 CardBus bridge: Ricoh Co Ltd RL5c475 (rev 80)

01:00.0 VGA compatible controller: ATI Technologies Inc Rage Mobility P/M AGP 2x (rev 64)

Έτσι, η εντολή lspci μας δείχνει τις κυριότερες συσκευές που είναι συνδεδεμένες στον δίαυλο PCI, ISA και AGP του υπολογιστή μας. Συγκεκριμένα, βλέπουμε ότι το κυρίως chipset είναι το 440BX της Intel, που χειρίζεται τους διαύλους PCI, AGP, ISA και USB. Και ο ελεγκτής IDE ανήκει σε αυτό το chipset. Έχει ελεγκτή ACPΙ επίσης της Intel, ενώ ο ελεγκτής PCMCIA (Cardbus bridge) είναι της Ricoh. Υπάρχει κάρτα δικτύου της Intel με chipset i8255x και κάρτα ήχου της Yamaha (συμβατό με οδηγό YMFPCI). Υπάρχει ενσωματωμένο modem της Conexant τύπου HSF, και ελεγκτής Firewire (IEEE 1394) της SONY. Η κάρτα οθόνης είναι της ATI (οδηγός ati για τα X Windows, σε επόμενη ενότητα).


Εικόνα 20 Επιλογή συσκευών






Προτείνεται να ρυθμίσετε μόνο τις συσκευές που θα σας χρειαστούν κατά την εγκατάσταση. Στη ρύθμισή τους πιθανόν να χρειαστεί να δώσετε κάποιες παραμέτρους, αν και αυτό χρειάζεται μόνο σε παλίες κάρτες ISA ή σε περιφερειακά που έχουν ειδικό τρόπο ρύθμισης. Τις περισσότερες φορές μπορείτε να αφήσετε κενά τα πεδία παραμετροποίησης.

Τρέχοντας το πρόγραμμα modconf είναι δυνατή η ρύθμιση των οδηγών συσκευών και μετά την εγκατάσταση.


Εικόνα 21 Επιλογή συσκευών δικτύου




  1. Ρύθμιση Δικτύου

Αν το σύστημα δεν έχει ανιχνεύσει κάρτα δικτύου, δε θα είναι εμφανής η επιλογή "Configure the Network". Αντίθετα, θα σας ζητηθεί να δώσετε ένα όνομα για τον υπολογιστή σας, ή hostname όπως λέγεται (βλ. εικόνα 57). Το hostname είναι απαραίτητο είτε είστε σε δίκτυο είτε έχετε δυναμική σύνδεση (π.χ. PPP μέσω τηλεφώνου).


Εικόνα 22 Ρύθμιση δικτύου




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


Εικόνα 23 Επιλογή ονόματος hostname




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


Εικόνα 24 Επιλογή διευθυνσιοδότησης μέσω DHCP


Κατόπιν το σύστημα θα σας ρωτήσει αν η ρύθμιση του δικτύου θα γίνει μέσω DHCP ή BOOTP πρωτοκόλλου. Αν βρίσκεστε σε δίκτυο εταιρείας, πιθανόν να χρησιμοποιείτε κάποιο τέτοιο σύστημα αυτόματης διευθυνσιοδότησης. Με αυτόν τρόπο όλες οι ρυθμίσεις του δικτύου λαμβάνονται αυτόματα από κάποιον διακομιστή του δικτύου και δε χρειάζεται να κάνετε κάτι άλλο.

Στην περίπτωση που δεν έχετε τη δυνατότητα να ρυθμίσετε αυτόματα το δίκτυο μέσω DHCP/BOOTP ή αν αποτύχει για κάποιο λόγο η αυτόματη ρύθμιση, θα πρέπει να περάσετε τις απαραίτητες ρυθμίσεις δια χειρός. Τις ρυθμίσεις αυτές θα πρέπει να σας τις έχει παρέχει ο διαχειριστής δικτύου σας. Οι ρυθμίσεις αυτές περιλαμβάνουν τα εξής στοιχεία:


Εικόνα 25 Ρύθμιση διεύθυνσης IP



Εικόνα 26 Ρύθμιση μάσκας δικτύου



Εικόνα 28 Ρύθμιση ονόματος τομέα (domain)



Εικόνα 27 Ρύθμιση πύλης (gateway)


Αφού δώσετε στο πρόγραμμα τις απαραίτητες πληροφορίες για το δίκτυο (εικόνες 25, 26, 27, 28, 29) θα επιστρέψει μια περίληψη της συνολικής ρύθμισης δικτύου (για όλες τις κάρτες δικτύου) και θα σας ρωτήσει ποια είναι η πρωτεύουσα σύνδεση. Για τους περισσότερους χρήστες θα υπάρχει μια μόνο σύνδεση δικτύου που αντιστοιχεί στην κάρτα δικτύου eth0.




Εικόνα 29 Ρύθμιση διευθύνσεων DNS


Περαιτέρω αλλαγές μπορείτε να κάνετε στο δίκτυο σας και μετά την εγκατάσταση είτε επεξεργάζοντας το αρχείο /etc/network/interfaces είτε μέσω του πακέτου etherconf – που εγκαθιστάτε ανά πάσα στιγμή με την εντολή

apt-get install etherconf
  1. Εγκατάσταση Βασικού συστήματος

Το επόμενο βήμα είναι η εγκατάσταση του βασικού συστήματος. Το βασικό σύστημα αποτελείται από μια ελάχιστη ομάδα πακέτων που παρέχουν ένα λειτουργικό σύστημα Debian με τα βασικά εργαλεία. Το μέγεθός του (τελικό ασυμπίεστο) είναι περίπου 70 MB.

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


Εικόνα 30 Εγκατάσταση βασικού συστήματος




Αν μεταφορτώνετε τα αρχεία από το δίκτυο, πρέπει να έχετε υπόψιν σας ότι πρόκειται για χρονοβόρα διαδικασία και δεν είναι άμεσα εμφανής η πρόοδος της μεταφόρτωσης. Αν φαίνεται ότι έχει κολλήσει η μεταφορά των αρχείων, μπορείτε να δείτε στην κονσόλα 2 ([Αριστερό ALT]-2) με την εντολή df -h, την αλλαγή του μεγέθους του δίσκου για να βεβαιωθείτε ότι όντως γίνεται μεταφόρτωση.


Εικόνα 31 Επιλογή τρόπου εγκατάστασης




Στην περίπτωση που η μεταφόρτωση αργεί υπερβολικά ή δεν υπάρχει αλλαγή στα δεδομένα του σκληρού δίσκου (με την εντολή df -h) τότε πιθανώς να υπάρχει πρόβλημα στο δίκτυο και στις ρυθμίσεις του. Αν το πρόβλημα εμφανιστεί αμέσως με τη μεταφόρτωση του αρχείου Release τότε ήταν αδύνατη η εύρεση του δικτυακού τόπου που έχει τα αρχεία εγκατάστασης και θα πρέπει να ελέγξετε την ορθότητα των ρυθμίσεων δικτύου καθώς και το αν όντως λειτουργεί σωστά η σύνδεση δικτύου που έχετε.


Εικόνα 32 Επιλογή πηγής των αρχείων εγκατάστασης




  1. Ετοιμάζοντας το σύστημα για εκκίνηση

Μετά την βασική εγκατάσταση το σύστημα πρέπει να ρυθμιστεί ώστε να εκκινήσει στο Debian.

Η διαδικασία της ρύθμισης αυτής προϋποθέτει τη μετατροπή της πρωτεύοντος πεδίου εκκίνησης (Master Boot Record/MBR) του πρώτου σκληρού δίσκου. Επειδή ένα λάθος στην αλλαγή του MBR μπορεί να φέρει το σύστημά σας σε κατάσταση που να μην είναι δυνατή η εκκίνηση είτε σε Windows είτε σε Linux, συνιστάται να κατασκευάσετε πρώτα μια δισκέτα εκκίνησης (“Make A Boot Floppy”, εικόνα 34) με την οποία μπορείτε να εκκινήσετε κατευθείαν στο Debian. Αν όλα έχουν γίνει σωστά, το σύστημα θα φορτώσει κανονικά και μπορείτε να κάνετε τις αλλαγές στο MBR μέσα από το ίδιο το Linux, όπου και θα έχετε πολύ καλύτερο έλεγχο στην διαδικασία. Οι αλλαγές αυτές μπορούν να γίνουν με το πρόγραμμα LILO (LInux LOader), του οποίου δίνεται μια σύντομη ανάλυση στο Παράρτημα IV (σελ. 269).




Εικόνα 33 Ενεργοποίηση του συστήματος προς εκκίνηση




Αν βέβαια έχετε εξοικείωση με το πρόγραμμα εγκατάστασης του Debian, μπορείτε να πραγματοποιήσετε την αλλαγή στο MBR ώστε να κάνετε το Debian εκκινήσιμο. Μάλιστα, το πρόγραμμα αναλαμβάνει αν θέλετε και τη δημιουργία ενός μενού επιλογής λειτουργικού συστήματος, το οποίο θα εμφανίζεται κατά την εκκίνηση του υπολογιστή. Έτσι, μπορείτε να φορτώνετε κατά βούληση Linux, Windows 98, Windows XP ή όποιο άλλο λειτουργικό σύστημα έχετε εγκατεστημένο στον υπολογιστή σας.


Εικόνα 34 Δημιουργία δισκέτας εκκίνησης






Κεφάλαιο 6 - Μετά την εγκατάσταση

Αν το σύστημα εκκινήσει κανονικά, συγχαρητήρια! Έχετε εγκαταστήσει επιτυχώς το Debian! Τώρα μένει η ρύθμισή του σε δεύτερο επίπεδο.

Αν, παρ' όλα αυτά, υπάρχει πρόβλημα στην εκκίνηση, χρησιμοποιήστε την δισκέτα εκκίνησης (αυτήν που φτιάξατε βάσει των οδηγίων του προηγούμενου κεφαλαίου). Αν και πάλι υπάρχει πρόβλημα, μπορείτε να χρησιμοποιήσετε την δισκέτα εκκίνησης της εγκατάστασης (rescue) η οποία μπορεί να παίξει και ρόλο δισκέτα διάσωσης του συστήματος. Στην προτροπή boot: θα πρέπει να δηλώσετε τη θέση του βασικού διαμερίσματος με την παράμετρο root=. Αν, για παράδειγμα, το βασικό διαμέρισμα το έχετε δηλώσει ως hda5, τότε η παράμετρος θα πρέπει να έχει τη μορφή root=/dev/hda5.

  1. Ρυθμίζοντας το σύστημα για πρώτη φορά

Την πρώτη φορά που φορτώνει το Debian, εκτελεί ένα πρόγραμμα ρύθμισης των βασικών παραμέτρων του. Το πρόγραμμα αυτό λέγεται base-config και μπορείτε να το καλέσετε ως χρήστης root όποτε θέλετε να αλλάξετε κάποια από αυτές τις παραμέτρους. Συνήθως δε χρειάζεται, παρά μόνο αν έχετε κάνει ριζική αλλαγή στα χαρακτηριστικά του συστήματός σας.




Εικόνα 35 Ρύθμιση ώρας σε GMT



Εικόνα 36 Ρύθμιση ζώνης ώρας (περιοχή)



Εικόνα 37 Ρύθμιση ζώνης ώρας (πόλη)




  1. Ρύθμιση Ζώνης Ώρας

Στο στάδιο αυτό σας ζητείται να αποφασίσετε για ρυθμίσεις που ελέγχουν τον τρόπο που θα διατηρείται αλλά και θα απεικονίζεται η ώρα και η ημερομηνία στο σύστημά σας. Καταρχάς, θα πρέπει να επιλέξετε τη σύμβαση διατήρησης της ώρας στο εσωτερικό ρολόι του υπολογιστή σας, τοπικό ή GMT. Το GMT είναι τα αρχικά των λέξεων Greenwich Meridian Time και αποτελούν το σημείο αναφοράς για τον ορισμό της ζώνης ώρας ανά τον κόσμο. Στην Ελλάδα η τοπική ώρα ορίζεται ως EEST (GMT+2 ή GMT+3, την περίοδο του καλοκαιριού), δηλαδή με την προσθήκη δύο (ή τριών) ωρών στην ώρα που δείχνει ένα ρολόι στη θέση Greenwich στο Λονδίνο της Αγγλίας. Αν σκοπεύετε να κάνετε ταξίδια μεταφέροντας τον υπολογιστή σας (αν είναι φορητός, για παράδειγμα), τότε είναι αρκετά βολικό να ρυθμίσετε το ρολόι του σε κατάσταση GMT. Βέβαια, πολλοί ρυθμίζουν το ρολόι σε θέση GMT ακόμη και αν δεν έχουν μετακινήσει τον υπολογιστή τους για χρόνια, είναι απλώς θέμα προτίμησης.

Έπειτα, ρυθμίζετε την ζώνη ώρας στον υπολογιστή. Για την Ελλάδα η ρύθμιση είναι παντού η ίδια, Europe/Athens (ακόμη και αν δε διαμένετε στην Αθήνα, ο ορισμός της ζώνης γίνεται με αυτόν τον τρόπο).

  1. Ρύθμιση κωδικών MD5

Στο επόμενο βήμα θα ερωτηθείτε αν θέλετε MD5 passwords, δηλαδή αν οι κωδικοί ασφαλείας του υπολογιστή σας θα κρατούνται σε μορφή MD5 (ή διαφορετικά σε μορφή “crypt”). Το σύστημα MD5 είναι πολύ πιο ασφαλές από το σύστημα crypt και αν ενδιαφέρεστε για την ασφάλεια στον υπολογιστή σας η επιλογή αυτή συνιστάται. Το πρόβλημα είναι ότι δεν είναι συμβατό με το NIS (Network Information Services).


Εικόνα 38 Ενεργοποίηση κωδικών MD5




  1. Σκίαση Κωδικών (shadow passwords)

Στη συνέχεια θα ερωτηθείτε αν θέλετε να χρησιμοποιήσετε την δυνατότητα “σκίασης” των κωδικών. Σε κανονικές συνθήκες οι κωδικοί κρατούνται στο αρχείο /etc/passwd το οποίο είναι αναγνώσιμο (αλλά όχι εγγράψιμο) από όλους τους χρήστες του συστήματος. Οπωσδήποτε, οι κωδικοί είναι αποθηκευμένοι σε κρυπτογραφημένη μορφή και δεν είναι δυνατό να αναγνωστούν από κάποιον απλό χρήστη. Υπάρχουν, όμως, ειδικά προγράμματα που προσπαθούν να “σπάσουν” αυτήν την κρυπτογραφημένη μορφή τους με αποτέλεσμα την παραβίαση της ασφάλειας του συστήματος. Θα μπορούσε, για παράδειγμα, κάποιος κακόβουλος χρήστης να αντιγράψει το αρχείο σε άλλο υπολογιστή και να πραγματοποιήσει μια επίθεση “brute force” στους κωδικούς αυτούς. Η εύρεση έστω και ενός από αυτούς θα ήταν σημαντική ήττα για την ασφάλεια ενός συστήματος.


Εικόνα 39 Ενεργοποίηση κωδικών shadow




Για το σκοπό αυτό, οι κωδικοί μεταφέρονται σε ένα άλλο αρχείο, το /etc/shadow, το οποίο είναι επίσης εγγράψιμο μόνο από το χρήστη root αλλά αυτή τη φορά αναγνώσιμο μόνον από την ομάδα shadow. Με αυτόν τον τρόπο οι κωδικοί “σκιάζονται”, όπως λέγεται. Η χρήση αυτής της δυνατότητας συνιστάται.

Μπορείτε να αλλάξετε τη ρύθμιση της σκίασης των κωδικών με το πρόγραμμα shadowconfig, οποιαδήποτε στιγμή θελήσετε. Για περισσότερες πληροφορίες σχετικά με τη σκίαση των κωδικών, ανατρέξατε στο αρχείο /usr/share/doc/passwd/README.debian.gz.

  1. Κωδικός χρήστη Root

Ο χρήστης root είναι ο αρμόδιος για τη διαχείριση του συστήματος. Καλείται επίσης και υπερχρήστης (superuser) και για αυτόν δεν ισχύει κανένας περιορισμός σε θέματα ασφαλείας και πρόσβασης στο σύστημα. Για το λόγο αυτόν δε θα πρέπει να δίνεται ο κωδικός πρόσβασης αυτού του χρήστη σε οποιονδήποτε, εκτός ίσως από την περίπτωση που υπάρχουν περισσότεροι από έναν διαχειριστές συστήματος (π.χ. στο δίκτυο μιας εταιρείας).


Εικόνα 40 Ορισμός κωδικού πρόσβασης του χρήστη root




Επίσης θα πρέπει να αποφύγετε να θέσετε κάτι υπερβολικά απλό ως κωδικό για το χρήστη root, καθώς τότε θα ήταν εύκολη η πρόβλεψή του. Ένας κωδικός που θεωρείται ασφαλής περιέχει από 6 ως 8 χαρακτήρες και περιλαμβάνει μικρά και κεφαλαία γράμματα, αριθμούς αλλά και σημεία στίξης.




Εικόνα 41 Δημιουργία ενός νέου χρήστη




  1. Δημιουργία ενός απλού χρήστη

Όπως αναφέρθηκε, για το χρήστη root δεν ισχύει κανένας περιορισμός σε θέματα ασφαλείας και πρόσβασης. Δε θα πρέπει να το χρησιμοποιείτε για απλές λειτουργίες που δεν είναι σχετικές με διαχείριση συστήματος, καθώς είναι πολύ εύκολο να γίνουν λάθη και ζημιές που δύσκολα διορθώνονται (π.χ. το κλασσικό rm -rf στον βασικό κατάλογο).

Έτσι συνιστάται η δημιουργία ενός απλού χρήστη (εικόνα 41) με τον οποίο θα μπορείτε να κάνετε όλες τις άλλες λειτουργίες (προγραμματισμός, ανάγνωση email, browsing στο Internet, κλπ). Το όνομα του λογαριασμού (login name, username, ή και account name) μπορεί να είναι όποιο θέλετε, αλλά συνηθίζεται να εμπεριέχει τα αρχικά του ονόματος του χρήστη.

  1. Ρύθμιση σύνδεσης μέσω PPP

Στο σημείο αυτό θα ερωτηθείτε αν θέλετε να συνεχίσετε την εγκατάσταση χρησιμοποιώντας σύνδεση μέσω τηλεφώνου με PPP. Αν η εγκατάσταση γίνεται ήδη μέσω CD-ROM ή μέσω δικτύου, δεν υπάρχει λόγος να απαντήσετε καταφατικά.




Εικόνα 42 Επιλογή εγκατάστασης μέσω σύνδεσης PPP




Αν επιλέξετε την εγκατάσταση μέσω PPP, θα πρέπει πρώτα να ρυθμιστεί η σύνδεση. Για το σκοπό αυτό θα τρέξει το πρόγραμμα pppconfig. Αυτό είναι ένας διαχειριστής συνδέσεων PPP, και είναι αρκετά απλό και εύκολο στη χρήση του. Έτσι, επιλέξτε “Create” για να δημιουργήσετε μια νέα σύνδεση.




Εικόνα 43 Η αρχική οθόνη του προγράμματος pppconfig




Το πρόγραμμα καταρχάς θα σας ζητήσει το όνομα της σύνδεσης. Για τη συγκεκριμένη σύνδεση που θα χρησιμοποιηθεί για την εγκατάσταση θα πρέπει να δώσετε το προεπιλεγμένο όνομα “provider”. Κατόπιν θα πρέπει να δηλώσετε τους διακομιστές ονομάτων (αν πρόκειται για Static DNS), ή να αφήσετε το πρόγραμμα να πάρει τους διακομιστές ονομάτων δυναμικά απο τον παροχέα (Dynamic DNS), ή να απενεργοποιήσετε τελείως τη ρύθμιση του DNS (για παράδειγμα, αν είστε ταυτόχρονα σε δίκτυο με δικό του διαχειριστή ονομάτων).


Εικόνα 44 Ρύθμιση των διακομιστών DNS σε σύνδεση PPP




Το επόμενο βήμα είναι η επιλογή του τρόπου πιστοποίησης ταυτότητας (authentication), ανάμεσα σε PAP, CHAP ή διαλογική πιστοποίηση (chat). Στην πρώτη και δεύτερη περίπτωση απλώς δίνετε το όνομα του λογαριασμού σας και τον κωδικό πρόσβασης και τα υπόλοιπα τα αναλαμβάνει το πρωτόκολλο. Στην περίπτωση της διαλογικής πιστοποίησης, θα πρέπει να δώσετε στο πρόγραμμα οδηγίες για τον αναμενόμενο διάλογο μεταξύ του υπολογιστή σας και του παροχέα. Τις περισσότερες φορές ο παροχέας θα δίνει ο ίδιος οδηγίες για την διαλογική πιστοποίηση. Αν δεν υπάρχουν τέτοιες οδηγίες μπορείτε να δοκιμάσετε με τον προεπιλεγμένο διάλογο, που παρέχει το pppconfig.


Εικόνα 45 Επιλογή τρόπου πιστοποίησης ταυτότητας




Βέβαια, ο τρόπος αυτός είναι αρκετά ξεπερασμένος και πλέον οι περισσότεροι ISP χρησιμοποιούν PAP ή CHAP λόγω απλότητας.

Στη συνέχεια δίνετε την ταχύτητα σύνδεσης μεταξύ υπολογιστή και modem (όχι μεταξύ υπολογιστή και ISP). Για την πλειονότητα των χρηστών που χρησιμοποιούν εσωτερικά ή εξωτερικά modems η προεπιλεγμένη ταχύτητα των 115200 bps (bits per second) είναι ικανοποιητική.

Ακολουθεί η επιλογή τονικής ή παλμικής κλήσης (tone/pulse dialing). Στη χώρα μας, ισχύει εδώ και χρόνια η τονική κλήση οπότε μπορείτε να την επιλέξετε χωρίς αμφιβολία. Κατόπιν δίνετε τον αριθμό κλήσης του παροχέα σας. Αν χρησιμοποιείτε τηλεφωνικό κέντρο, θυμηθείτε να δώσετε το πρόθεμα (συνήθως 0 ή 9) ακολουθούμενο από ένα κόμμα “,”. Έτσι αν ο αριθμός κλήσης του παροχέα σας είναι 89625XXXXX, θα πρέπει να δώσετε 0,8962XXXXX.

Το pppconfig θα σας ρωτήσει αν θέλετε να ανιχνεύσει τη θύρα στην οποία είναι συνδεδεμένο το modem σας. Αν δεν είστε βέβαιοι για το όνομα της συσκευής της θύρας (π.χ. /dev/ttyS0, κλπ), μπορείτε να δοκιμάσετε την αυτόματη ανίχνευση, αλλιώς παραλείψτε την. Βέβαια υπάρχει περίπτωση το pppconfig να μην ανιχνεύσει το modem σας ενώ ξέρετε ότι λειτουργεί κανονικά (αυτό ίσως να το δείτε σε φορητούς υπολογιστές με ενσωματωμένα modems, τύπου winmodem). Σε αυτήν την περίπτωση θα πρέπει να γνωρίζετε το όνομα της συσκευής του modem (π.χ. για modems τύπου Conexant HSF, το όνομα της συσκευής είναι /dev/ttySHSF0) και να την δώσετε χειροκίνητα.

Στο σημείο αυτό το πρόγραμμα θα σας παρουσιάσει τις ρυθμίσεις της σύνδεσης και σχετικές επιλογές. Η ρύθμιση του λογαριασμού έχει τελειώσει και θα πρέπει τώρα να την αποθηκεύσετε. Επιλέξτε “Finished” και στη συνέχεια “Exit” από το πρόγραμμα pppconfig.

Η κλήση της σύνδεσης γίνεται με την εντολή pon ενώ η διακοπή της με την εντολή poff. Η εντολή plog σας δίνει πληροφορίες για την πρόοδο της σύνδεσης και θα σας χρειαστεί για να βεβαιωθείτε ότι η σύνδεση γίνεται χωρίς πρόβλημα.




Εικόνα 46 Επιλογή σειριακής θύρας για σύνδεση PPP





Εικόνα 47 Συνοπτική εμφάνιση των ρυθμίσεων για τη σύνδεση PPP




Για περισσότερες πληροφορίες για τις συνδέσεις PPP στο Debian μπορείτε να ανατρέξετε στο αρχείο οδηγιών /usr/share/doc/ppp/README.debian.gz.

Βοήθημα για χρήστες netmod ISDN του OTE

Οι συνδρομητές του OTE που έχουν σύνδεση ISDN κατά πάσα πιθανότητα θα χρησιμοποιούν τη συσκευή NetMod του ΟΤΕ, η οποία μπορεί να χρησιμοποιηθεί ως modem χωρίς πρόβλημα. Υπάρχουν δύο εκδόσεις NetMod, μια παλαιότερη που παρέχει μόνο μια σειριακή θύρα για σύνδεση με τον υπολογιστή και μια νεότερη που έχει επιπλέον και μια θύρα USB. Για την έκδοση με τη σειριακή θύρα, αρκεί να δηλώσετε στο pppconfig τη θύρα που έχετε συνδέσει το NetMod στον υπολογιστή σας (π.χ. /dev/ttyS0 αν πρόκειται για την COM1).

Για αυτούς που έχουν τη νεώτερη έκδοση και θέλουν να χρησιμοποιήσουν τη θύρα USB, θα πρέπει να ενεργοποιήσουν τον αντίστοιχο οδηγό του Linux. Εκτελέστε το πρόγραμμα modconf, επιλέξτε drivers/usb, και από τη λίστα των συσκευών επιλέξτε τον οδηγό acm. Αν δείτε το μήνυμα “Installation succeeded” τότε ο οδηγός ενεργοποιήθηκε επιτυχώς. Το όνομα της συσκευής του netmod στο Linux είναι /dev/ttyACM0 ή /dev/usb/acm/0 άν χρησιμοποιείτε devfs.

Προσοχή: Αν δείτε μέσω της plog ή μέσω του syslog το μήνυμα NO DIALTONE, αυτό σημαίνει ότι το modem σας δεν ανιχνεύει γνωστό τόνο τηλεφωνικού κέντρου και θα χρειαστεί μια μικρή ρύθμιση ακόμη. Στο πρόγραμμα pppconfig και στο κεντρικό μενού της σύνδεσης επιλέξτε “Advanced” και στο πεδίο “Modeminit” δώστε ATX3 (βλ. εικόνα 46).




Εικόνα 48 Ρύθμιση προχωρημένων επιλογών του modem




  1. Απενεργοποίηση PCMCIA

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




Εικόνα 49 Απεγκατάσταση της υποστήριξης PCMCIA




  1. Ρύθμιση APT

Για τους περισσότερους χρήστες, ο κύριος τρόπος μεταφόρτωσης και εγκατάστασης των πακέτων του Debian θα είναι το σύστημα APT. Το APT αναλαμβάνει μέσω του εργαλείου apt-get να μεταφορτώσει οποιοδήποτε πακέτο του ζητήσετε. Θα πρέπει αρχικά να ρυθμιστεί κατάλληλα ώστε να γνωρίζει τις πηγές από όπου θα μεταφορτώνει τα πακέτα λογισμικού. Για αυτήν τη ρύθμιση υπάρχει το εργαλείο apt-setup. Ωστόσο, μπορείτε να επεξεργαστείτε απευθείας το αρχείο /etc/apt/sources.list.

Αν η εγκατάσταση έγινε από επίσημα CD-ROM του Debian, τότε το APT θα ρυθμιστεί αυτομάτως ώστε να χρησιμοποιήσει τα CD-ROM αυτά ως πηγές πακέτων λογισμικού. Επειδή πρόκειται για περισσότερα από ένα CD-ROM θα πρέπει να απαντήσετε καταφατικά στην ερώτηση αν θέλετε να ρυθμίσετε το APT για άλλο CD-ROM και να τοποθετήσετε διαδοχικά όλα τα CD-ROM στον οδηγό.

Αν δε χρησιμοποιήσατε CD-ROM για την εγκατάσταση, τότε θα σας παρουσιαστεί μια λίστα επιλογής τρόπου πρόσβασης στα πακέτα λογισμικού του Debian: FTP, HTTP, CD-ROM ή τοπικό σύστημα αρχείων (local file system). Στη λίστα αυτή μπορείτε επίσης να μεταβείτε εαν επιλέξετε να προσθέσετε μια ακόμη πηγή λογισμικού για το APT (στην ερώτηση “Add another source”, εικόνα ).


Εικόνα 50 Ρύθμιση τρόπου εγκατάστασης με το APT




Εδώ πρέπει να σημειωθεί ότι είναι δυνατόν να έχετε δηλώσει πολλές πηγές λογισμικού για το APT. Το APT απλώς θα επιλέξει τη νεώτερη έκδοση του λογισμικού που θα βρεί. Μια πιθανή χρήση αυτού του χαρακτηριστικού είναι με ταυτόχρονη χρήση μιας πηγής CD-ROM και μιας πηγής HTTP. Όταν ζητήσετε από το APT να εγκαταστήσει ένα πακέτο, το APT θα αναζητήσει το πακέτο και στις δύο πηγές, σημειώνοντας την έκδοση που υπάρχει στην καθεμία. Αν οι εκδόσεις είναι ίδιες, θα χρησιμοποιήσει έκδοση που υπάρχει στο CD-ROM, ενώ αν η πηγή HTTP έχει νεώτερη έκδοση, το APT θα μεταφορτώσει τη δεύτερη. Αυτή η μέθοδος συνιστάται για συχνή ενημέρωση ασφαλείας ενός συστήματος που έχει εγκατασταθεί από CD-ROM.


Εικόνα 51 Ρύθμιση διαμεσολαβητή (proxy) για το APT




Η διαφορά μεταξύ FTP και HTTP είναι μικρή, απλώς το πρωτόκολλο HTTP είναι σχετικά πιο γρήγορο στη δημιουργία συνδέσεων.

Στο επόμενο βήμα το πρόγραμμα apt-setup θα σας ρωτήσει αν επιθυμείτε να συμπεριληφθεί και μη ελέυθερο λογισμικό στις πηγές. Με αυτό εννοεί το non-free λογισμικό που προσφέρεται από το Debian αλλά η άδεια χρήσης του δεν ικανοποιεί τον ορισμό του Ελεύθερου Λογισμικού του Debian (Debian Free Software Guidelines, http://www.debian.org/social_contract#guidelines). Μπορείτε να απαντήσετε καταφατικά, αλλά είναι δική σας ευθύνη η ικανοποίηση της άδειας χρήσης του λογισμικού αυτού.

Στη συνέχεια επιλέγετε τη χώρα και το apt-setup σας προτείνει μια ή περισσότερες πηγές από όπου θα γίνεται η μεταφόρτωση τω πακέτων λογισμικού του Debian και θα έχετε τη δυνατότητα να ορίσετε κάποιον διαμεσολαβητή (proxy server), στην περίπτωση που βρίσκεστε σε κάποιο εσωτερικό δίκτυο (π.χ. σε μια εταιρεία).




Έπειτα, θα γίνει ένας έλεγχος για την εγκυρότητα της πηγής (και των ρυθμίσεων που δώσατε για αυτήν).

Το τελευταίο βήμα στη ρύθμιση του APT, είναι η επιλογή των ενημερώσεων ασφαλείας από τον διακομιστή security.debian.org. Η επιλογή αυτή συνιστάται ιδιαίτερα αν ο υπολογιστής πρόκειται να χρησιμοποιηθεί για επαγγελματικό σκοπό.

  1. Εγκατάσταση Πακέτων

Η εγκατάσταση των πακέτων είναι η διαδικασία που ακολουθεί. Η επιλογή των πακέτων μπορεί να γίνει με δύο τρόπους. Ο πρώτος τρόπος είναι ο πιο απλός και γίνεται την επιλογή συγκεκριμένων κατηγοριών λογισμικού που περιλαμβάνουν ομάδες πακέτων που συγκεκριμένης θεματολογίας. Ο δεύτερος είναι αρκετά πιο πολύπλοκος και περιλαμβάνει την επιλογή μεμονωμένων πακέτων από μια λίστα 8300 πακέτων.

Για πρώτη εγκατάσταση προτείνεται η χρήση του απλού τρόπου. Άλλωστε, μετά την εγκατάσταση θα είναι ανά πάσα στιγμή δυνατή η χρήση κάποιου από τα διαθέσιμα προγράμματα εγκατάστασης λογισμικού για να επιλέξετε κάποιο συγκεκριμένο πακέτο.

Απλή

Η απλή εγκατάσταση καλεί το πρόγραμμα tasksel το οποίο παρουσιάζει μια λίστα κατηγοριών πακέτων. Εσείς αρκεί να επιλέξετε τις κατηγορίες που σας ενδιαφέρουν. Κάθε κατηγορία απευθύνεται σε μια συγκεκριμένη εργασία (task), όπως για παράδειγμα προγραμματισμό στη γλώσσα C (“Development in C”) ή διακομιστής αρχείων (“File server”).




Εικόνα 52 Επιλογή απλής εγκατάστασης πακέτων




Για κάθε κατηγορία μπορείτε να δείτε σχετικές πληροφορίες με την επιλογή “Task Info”. Ανάμεσα στις διαθέσιμες πληροφορίες είναι ο σκοπός της συγκεκριμένης κατηγορίας, η περιγραφή της καθώς και μια λίστα με τα σημαντικότερα πακέτα που περιλαμβάνει.


Εικόνα 53 Επιλογή κατηγοριών πακέτων με την tasksel


Όταν έχετε επιλέξει τις επιθυμητές κατηγορίες πακέτων, επιλέξτε “Finish”. Θα ξεκινήσει η μεταφόρτωση και στη συνέχεια η εγκατάσταση. Ακόμη και στην περίπτωση που δεν έχετε επιλέξει καμία κατηγορία, το σύστημα θα αρχίσει τη μεταφόρτωση και εγκατάσταση όσων πακέτων είναι απαραίτητα για τη λειτουργία του συστήματος (σε αυτό το σημείο). Για τη συγκεκριμένη έκδοση (woody) η μεταφόρτωση των πακέτων θα έχει συνολικό μέγεθος περίπου 37MB.



Για προχωρημένους: dselect

Το dselect είναι ένα αρκετά περίπλοκο αλλά δυνατό πρόγραμμα που μπορεί να χρησιμοποιηθεί για την εγκατάσταση μεμονωμένων πακέτων στο Debian. Αναλυτικές οδηγίες για το πρόγραμμα και τη χρήση του θα βρείτε στο κεφ. 13 (σελ. 197), όπου και περιγράφεται αναλυτικά η διαδικασία εγκατάστασης πακέτων λογισμικού στο Debian.

Εναλλακτικές προτάσεις: kpackage, stormpkg

Σε πολλούς το πρόγραμμα dselect φαίνεται δύσχρηστο και οπισθοδρομικό. Για το σκοπό αυτό το Debian παρέχει δύο ακόμη προγράμματα που μπορούν να χρησιμοποιηθούν αντί για το dselect. Το πρώτο, το KPackage είναι σχεδιασμένο σε περιβάλλον KDE και προσφέρει μια φιλική προς το χρήστη εναλλακτική πρόταση προγράμματος εγκατάστασης πακέτων λογισμικού. Το ίδιο το πρόγραμμα είναι σχεδιασμένο να λειτουργεί σε όλες τις διανομές, ανεξαρτήτως της μορφής των πακέτων (deb, rpm, bsd, slackware tgz).

Το δεύτερο πρόγραμμα StormPkg είναι ειδικά σχεδιασμένο για το Debian και προήλθε από τη διανομή Storm που βασίστηκε στο Debian.

Περισσότερες πληροφορίες και για τα δύο προγράμματα και οδηγίες χρήσης μπορείτε να βρείτε επίσης στο κεφ. 13 (σελ. 201).



  1. Ρύθμιση του συστήματος παραθύρων X




Εικόνα 54 Εκκίνηση της ρύθμισης των X




Ένα από τα σημαντικότερα πακέτα λογισμικού για οποιοδήποτε λειτουργικό σύστημα τύπου UNIX είναι το σύστημα παραθύρων X (X Window System). Η εγκατάσταση και ρύθμιση αυτού του συστήματος δεν είναι ό,τι απλούστερο και έχουν γραφτεί ολόκληρα βιβλία για τη σωστή ρύθμισή του. Κάτι τέτοιο φυσικά ξεφεύγει από τους σκοπούς αυτού του οδηγού. Αντίθετα, στην παρούσα ενότητα θα δείξουμε μια βήμα προς βήμα εγκατάσταση των πακέτων που προσφέρει το Debian για το σύστημα παραθύρων X. Το Debian έχει έναν από τους φιλικότερους αλλά και πιο ευέλικτους τρόπους εγκατάστασης των Χ και το πιο πιθανόν είναι ότι δε θα αντιμετωπίσετε πρόβλημα στην εγκατάστασή τους.

Το πρώτο βήμα αφορά την επιλογή του οδηγού της κάρτας οθόνης. Στο σημείο αυτό θα χρειαστείτε τις πληροφορίες για την κάρτα οθόνης που συγκεντρώσατε στο κεφ. 2. Επιλέγετε τον οδηγό της κάρτας οθόνης και δηλώνετε το όνομά του.




Εικόνα 55 Επιλογή του οδηγού της κάρτας οθόνης




Το επόμενο βήμα είναι απαραίτητο σε όσους έχουν περισσότερες από μία κάρτες οθόνης στον ίδιο υπολογιστή. Το σύστημα εγκατάστασης των Χ στο Debian, μπορεί να ρυθμίσει μόνο μια κάρτα οθόνης. Για τις υπόλοιπες θα πρέπει να το κάνετε διά χειρός. Στο παρόν πεδίο θα πρέπει να δηλώσετε τον αριθμό της συσκευής της κάρτας οθόνης στον δίαυλο PCI/AGP. Τον αριθμό αυτό μπορείτε να τον δείτε με την εντολή lspci. Η εντολή αυτή επιστρέφει τον αριθμό σε δεκαεξαδική μορφή, ωστόσο το πρόγραμμα εγκατάστασης απαιτεί δεκαδική μορφή.

Στη συνέχεια γίνεται η δήλωση του μεγέθους μνήμης της κάρτας οθόνης. Στην πλειοψηφία των περιπτώσεων μπορείτε να αφήσετε το πεδίο κενό, καθώς τα X αναγνωρίζουν αυτόματα τέτοιου είδους πληροφορίες.

Η επόμενη επιλογή σας επιτρέπει να χρησιμοποιήσετε την διασύνδεση των X με το σύστημα πλαισίου μνήμης γραφικών του πυρήνα (kernel framebuffer). Εγγυημένη πρόταση για αυτήν την επιλογή δεν υπάρχει καθώς εξαρτάται από το μοντέλο κάρτας οθόνης, από την έκδοση του πυρήνα και από ποια χαρακτηριστικά του πυρήνα είναι ενεργοποιημένα.


Εικόνα 56 Ενεργοποίηση του πλαισίου μνήμης οθόνης (framebuffer)




Οι επόμενες πέντε ερωτήσεις είναι σχετικές με τη ρύθμιση του πληκτρολογίου. Για τα πληκτρολόγια που χρησιμοποιούνται στην Ελλάδα, συνήθως ορίζονται οι επιλογές xfree86, pc104 και el αντίστοιχα για τις πρώτες τρεις ερωτήσεις. Στην τέταρτη ερώτηση μπορείτε να δώσετε κενό, ενώ στην πέμπτη grp:alt_shift_toggle (χρησιμοποιείται για την εναλλαγή της διάταξης του πληκτρολογίου για εισαγωγή ελληνικών, βλ. Παράρτημα VII, σελ. 282).

Το ποντίκι είναι το επόμενο στοιχείο που πρέπει να ορίσετε για να λειτουργήσουν σωστά τα X. Καταρχάς, θα πρέπει να επιλέξετε τη θύρα και τον τύπο του ποντικιού. Για τα περισσότερα ποντίκια PS/2 μπορείτε να επιλέξετε /dev/psaux, ή /dev/misc/psaux αν χρησιμοποιείτε devfs (βλ. εικόνα 57). Τα περισσότερα ποντίκια είναι PS/2 με ορισμένες μικρές παραλλαγές (π.χ. τα Microsoft Intellimouse χρησιμοποιούν την παραλλαγή ImPS/2) και θα πρέπει να βρείτε ποια παραλλαγή χρησιμοποιεί το δικό σας ποντίκι (βλ. εικόνα 58).


Εικόνα 57 Επιλογή θύρας ποντικιού




Τα X έχουν υποστήριξη για τρία πλήκτρα που τα παλαιότερα ποντίκια δεν έχουν, όπως επίσης και τα touchpads των φορητών. Έτσι για να μπορείτε να εκμεταλλευτείτε τη λειτουργικότητα ενός ποντικιού με τρία πλήκτρα σε ένα ποντίκι με δύο πλήκτρα ή σε ένα touchpad φορητού, θα πρέπει να ενεργοποιήσετε την εξομοίωση των τριών πλήκτρων “Emulate 3 button mouse” (βλ. εικόνα 59).




Εικόνα 58 Επιλογή τύπου ποντικιού




Στην επόμενη οθόνη μπορείτε να ενεργοποιήσετε την υποστήριξη για τροχό κύλισης (scroll wheel) που βρίσκεται στα νεότερα ποντίκια.

Στα επόμενα βήματα καθορίζετε τον τύπο, το μέγεθος και τα χαρακτηριστικά της οθόνης του υπολογιστή σας. Αφού δώσετε ένα όνομα για την οθόνη, επιλέγετε αν πρόκειται για οθόνη καθοδικής λυχνίας (CRT) ή οθόνη κρυστάλλων TFT/LCD. Οι περισσότερες οθόνες είναι καθοδικής λυχνίας αν και τελευταία έχουν αρχίσει να γίνονται δημοφιλείς και οι οθόνες TFT πλέον.


Εικόνα 59 Ενεργοποίηση εξομοίωσης του τρίτου πλήκτρου




Στη συνέχεια επιλέγετε το επίπεδο παραμετροποιήσης που θέλετε. Για τους περισσότερους χρήστες συνιστάται η επιλογή Simple ή Medium (για τις οθόνες TFT η επιλογή simple είναι απενεργοποιημένη).

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




Εικόνα 60 Επιλογή βέλτιστης ανάλυσης οθόνης




Κατόπιν, θα χρειαστεί να ορίσετε το χρωματικό βάθος. Συνιστάται να επιλέξετε το υψηλότερο δυνατό (24 ή 32 bits), εκτός ίσως αν πρόκειται για παλαιότερη κάρτα οθόνης με περιορισμένη μνήμη που δε μπορείτε να υποστηρίξει τέτοιο χρωματικό βάθος. Σε αυτήν την περίπτωση καλύτερα να επιλέξετε 15 ή 16 bits.


Εικόνα 61 Επιλογή συνόλου υποστηριζόμενων αναλύσεων




Τέλος, θα σας δωθεί μια λίστα με τις υποστηριζόμενες επεκτάσεις των X, οι οποίες καλό θα ήταν να παραμείνουν επιλεγμένες.


Εικόνα 62 Επιλογή επεκτάσεων των X




Προσοχή: η επέκταση xtt δεν είναι συμβατή με τη freetype. Επιλέξτε μόνο μία από τις δύο, με προτίμηση στη freetype.

Για να αποθηκεύσετε τις αλλαγές στο αρχείο παραμετροποίησης των X απαντήστε καταφατικά στις επόμενες δύο ερωτήσεις.

Απομένει να δοκιμάσετε αν το σύστημα παραθύρων X έχει εγκατασταθεί και ρυθμιστεί σωστά. Ως χρήστης root μπορείτε να δώσετε την εντολή startx. Αν όλα έχουν ρυθμιστεί σωστά, τα Χ θα φορτώσουν κανονικά. Το περιβάλλον που θα αντικρύσετε εξαρτάται από τα πακέτα λογισμικού που έχετε εγκαταστήσει στον υπολογιστή σας.

Αν υπάρχει πρόβλημα και δε φορτώνουν τα X, μπορείτε να βρείτε πληροφορίες για το ποιο ακριβώς ήταν το πρόβλημα στο αρχείο /var/log/XFree86.log.

Επίσης, περισσότερες πληροφορίες για το σύστημα παραθύρων X στο Debian, βρίσκονται στους καταλόγους /usr/share/doc/xserver-xfree86 και /usr/share/doc/xfree86-common.

Αν επιθυμείτε να ξανακαλέσετε το πρόγραμμα ρύθμισης του συστήματος παραθύρων X, αρκεί να εκτελέσετε ως χρήστης root την εντολή:

dpkg-reconfigure xserver-xfree86

Εναλλακτικά, όλες οι ρυθμίσεις των X, βρίσκονται στο αρχείο /etc/X11/XF86Config-4 το οποίο είναι απλό αρχείο κειμένου.

Κεφάλαιο 7 - Εκκίνηση του συστήματος

  1. Σύνδεση στο σύστημα

Κάθε φορά που εκκινείτε τον υπολογιστή σας, θα σας δίνεται η δυνατότητα να επιλέξετε ανάμεσα στο Debian GNU/Linux και σε άλλα λειτουργικά συστήματα που έχετε δηλώσει ως εναλλακτικά. Για να οριστούν τα λειτουργικά που θα παρατίθενται σο αρχικό μενού θα πρέπει να χρησιμοποιηθεί το πρόγραμμα LILO (βλ. Παράρτημα IV, σελ. 269).

Οι επιλογές μπορεί να καλύπτουν διαφορετικά λειτουργικά αλλά και διαφορετικούς τρόπους εκκίνησης του ίδιου του λειτουργικού, π.χ. χρησιμοποιώντας ένα διαφορετικό πυρήνα ή ενεργοποιώντας την εκκίνηση σε κατάσταση ανάγκης (single user mode) κατά την οποία συνδέεστε ως χρήστης root (βλ. Παράρτημα V, σελ. 274).

Αφού εκκινήσει το Debian, αν η εγκατάσταση έχει γίνει χωρίς πρόβλημα, το σύστημα θα φτάσει στην εμφάνιση μιας οθόνη σύνδεσης. Εκεί, το σύστημα θα περιμένει κάποιο όνομα χρήστη (login name ή username ή account name) και ένα κωδικό (password). Η οθόνη σύνδεσης μπορεί να είναι είτε γραφική, μέσω του συστήματος παραθύρων X, ή κειμένου μόνο (κονσόλα). Και στις δύο περιπτώσεις, είναι απαραίτητο να δώσετε όνομα χρήστη και κωδικό πρόσβασης για να συνδεθείτε. Αντίθετα με άλλα λειτουργικά συστήματα, δεν είναι δυνατόν να προσπεράσετε την διαδικασία σύνδεσης στο σύστημα.

Σύνδεση από γραφικό περιβάλλον Χ

Για τη σύνδεση μέσω γραφικού περιβάλλοντος χρησιμοποιούνται συγκεκριμένα προγράμματα, που έχουν τον έλεγχο του συστήματος παραθύρων Χ και δίνουν πρόσβαση μόνο σε εγκεκριμένους χρήστες. Τα προγράμματα αυτά λέγονται διαχειριστές οθόνης (Display Managers). Η χρήση τους ενδείκνυται καθώς προσφέρουν αυξημένη ασφάλεια στις περιόδους εργασίας στο σύστημα (system sessions), δυνατότητα για απομακρυσμένη λειτουργία (μέσω του πρωτοκόλλου XDMCP) αλλά και ένα πιο φιλικό τρόπο σύνδεσης στο σύστημα.

Οι δυνατότητες που σας παρέχονται εξαρτώνται κάθε φορά από το συγκεκριμένο πρόγραμμα διαχείρισης οθόνης. Τα βασικά χαρακτηριστικά που αναφέραμε (αυξημένη ασφάλεια, απομακρυσμένη λειτουργία μέσω XDMCP) παρέχονται από όλους. Από τους υπάρχοντες διαχειριστές οθόνης, τρεις είναι οι πιο διαδεδομένοι, ο αρχικός X Display Manager (xdm), o K Desktop Manager (kdm) και ο GNOME Display Manager (gdm). Οι δύο τελευταίοι είναι τμήματα των περιβαλλόντων εργασίας KDE και GNOME αντίστοιχα. μπορείτε να δείτε δείγματα των διαχειριστών οθόνης στις εικόνες 63, 64 και 65.


Εικόνα 63 Ο διαχειριστής οθόνης kdm.






Και οι τρεις παρέχονται ως πακέτα στο Debian και μπορείτε να εγκαταστήσετε οποιονδήποτε (μόνον ένας μπορεί να είναι ενεργός κάθε στιγμή) με την εντολή:

$ apt-get install <display manager>

όπου <display manager> είναι ένα από τους xdm, gdm, kdm.


Εικόνα 64 Ο διαχειριστής οθόνης gdm.


Αφού δώσετε το όνομα χρήστη και τον κωδικό πρόσβασης στην προτροπή σύνδεσης (login prompt) θα συνδεθείτε στο σύστημα και θα έχετε τον έλεγχο του περιβάλλοντος εργασίας (desktop environment).



Εδώ πρέπει να σημειωθεί ότι ο κάθε χρήστης έχει ένα τελείως προσωπικό περιβάλλον εργασίας και μπορεί να το παραμετροποιήσει κατά βούληση, από το να αλλάξει τον διαχειριστή παραθύρων, τα εικονίδια, τις γραμματοσειρές, κλπ. Κάτι τέτοιο είναι δυνατόν, γιατί κάθε χρήστης έχει δικό του χώρο στο σύστημα αρχείων, τον κατάλογο home (home directory) όπως λέγεται. Αυτός ο κατάλογος βρίσκεται συνήθως στο /home με το όνομα του χρήστη. Για παράδειγμα, για το χρήστη feanor, ο κατάλογος home θα είναι /home/feanor.


Εικόνα 65 Ο διαχειριστής οθόνης xdm.




Στον προσωπικό κατάλογο του κάθε χρήστη κρατούνται τα προσωπικά του αρχεία καθώς και τα αρχεία ρυθμίσεων και προτιμήσεων όλων των προγραμμάτων που χρησιμοποιεί ο χρήστης. Όπως και κάθε λειτουργικό τύπου UNIX, έτσι και το Linux είναι ένα πολυχρηστικό σύστημα, που σημαίνει υποστήριξη πολλών χρηστών ταυτόχρονα συνδεδεμένων στο ίδιο σύστημα. Το γεγονός αυτό συνεπάγεται αυτόματα και προσαρμογή των προγραμμάτων στις ανάγκες του κάθε χρήστη. Έχει καθοριστεί, λοιπόν, τα αρχεία παραμετροποίησης και ρύθμισης του κάθε προγράμματος να βρίσκονται στον κατάλογο home του κάθε χρήστη, ως κρυμμένα αρχεία, το όνομα των οποίων αρχίζει με τελεία “.”. Έτσι για παράδειγμα όλα τα αρχεία παραμετροποίησης του KDΕ για το χρήστη feanor βρίσκονται στον κατάλογο /home/feanor/.kde.

Σύνδεση από κονσόλα

Σε συστήματα που δεν είναι απαραίτητη η ύπαρξη ή χρήση γραφικού περιβάλλοντος, επιλέγεται να μην εγκατασταθεί το σύστημα παραθύρων X, για λόγους μείωσης κατανάλωσης πόρων του συστήματος. Σε ένα τέτοιο σύστημα δεν είναι φυσικά δυνατή η σύνδεση μέσω γραφικού περιβάλλοντος καθώς δεν υπάρχει κάποιος διαχειριστής οθόνης. Εξάλλου, το κύριο περιβάλλον λειτουργίας του συστήματος είναι η κονσόλα. Στα περισσότερα συστήματα, παρέχονται περισσότερες από μια κονσόλες εργασίας, στις οποίες μεταφέρεστε με τη χρήση των προγραμματιζόμενων πλήκτρων [F1]-[F8] σε συνδυασμό με το αριστερό πλήκτρο [ALT]. Αυτές ονομάζονται εικονικές κονσόλες (virtual consoles) και λειτουργούν αυτόνομα. Σε κάθε μία από αυτές μπορείτε να τρέχετε οποιοδήποτε πρόγραμμα θέλετε και να μεταφέρεστε από τη μία στην άλλη κατά βούληση. Ωστόσο, σε κάθε κονσόλα πρέπει να συνδεθείτε ξεχωριστά δίνοντας το όνομα χρήστη και τον κωδικό πρόσβασης.

  1. Αποσύνδεση

Η διαδικασία της αποσύνδεσης ονομάζεται logout. Αν εργάζεστε σε γραφικό περιβάλλον θα πρέπει να χρησιμοποιήσετε την αντίστοιχη επιλογή στα μενού που σας προσφέρει ο διαχειριστής παραθύρων ή το αντίστοιχο κουμπί σε λωρίδα εργασίας. Από την άλλη, αν βρίσκεστε σε κονσόλα, αρκεί να δώσετε την εντολή logout ή exit, ή ακόμη και το συνδυασμό πλήκτρων [CTRL]-D.

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

Μετά την αποσύνδεση έχετε τις εξής δυνατότητες, οι οποίες εξαρτώνται από τις δυνατότητες του αντίστοιχου διαχειριστή οθόνης που χρησιμοποιείτε:

  1. Τερματισμός του υπολογιστή

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

Δε μπορείτε απλώς να κλείσετε τον υπολογιστή σας γιατί θα χαθούν όλες οι πληροφορίες που βρίσκονται εκείνη τη στιγμή στη μνήμη του υπολογιστή και πολλά αρχεία που είναι ανοιχτά κινδυνεύουν να καταστραφούν. Το ίδιο το σύστημα αρχείων θα υποστεί βλάβη και στην καλύτερη περίπτωση την επόμενη φορά που θα εκκινήσετε τον υπολογιστή σας θα περιμένετε αρκετή ώρα για την διόρθωση πιθανών λαθών (η διαδικασία λέγεται filesystem check και το αντίστοιχο πρόγραμμα fsck). Δε συνιστάται το σβήσιμο του υπολογιστή αν δεν έχει γίνει σωστός τερματισμός, εκτός ίσως από περιπτώσεις που δεν έχετε άλλη επιλογή, όπως π.χ. όταν έχει “παγώσει” ο υπολογιστής και δεν ανταποκρίνεται σε οποιαδήποτε εντολή.

Τερματισμός από γραφικό περιβάλλον Χ

Στην περίπτωση που χρησιμοποιείτε kdm, θα πρέπει να επιλέξετε “Shutdown” και μετά “Shutdown” ή “Reboot” αναλόγως αν θέλετε τερματισμό (σβήσιμο) ή απλώς επανεκκίνηση του υπολογιστή. Για το gdm ισχύουν αντίστοιχα οι επιλογές Σύστημα->Τερματισμός (System->Halt) ή Σύστημα->Επανεκκίνηση (System->Reboot) από το μενού.




Εικόνα 66 Τερματισμός συστήματος από τον διαχειριστή kdm.




Τερματισμός από κονσόλα

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




Drawing 67Τερματισμός συστήματος από τον διαχειριστή gdm.




Επανεκκίνηση από πληκτρολόγιο

Σε ορισμένες περιπτώσεις είναι ανάγκη για άμεσο τερματισμό του συστήματος και δεν υπάρχει χρόνος για τις κανονικές διαδικασίες. Σε αυτήν την περίπτωση, κάνετε άμεση επανεκκίνηση του υπολογιστή πατώντας το συνδυασμό πλήκτρων [CTRL]-[ALT]-[DEL]. Με αυτόν τον τρόπο το σύστημα προσπαθεί να επανεκκινήσει όσον το δυνατόν πιο γρήγορα αλλά και ομάλα, πραγματοποιώντας αποσύνδεση από τα X, τερματίζοντας τις διεργασίες, χωρίς να δώσει χρόνο για την αποθήκευση αλλαγών στα προγράμματα, και τέλος απενεργοποιώντας τις συσκευές και τα συστήματα αρχείων. Είναι ο πιο γρήγορος τρόπος να επανεκκινήσει ο υπολογιστής ομαλά, αλλά δε συνιστάται η χρήση του εκτός ίσως από μεγάλη ανάγκη ή αν τρέχουν λίγες διεργασίες και δεν υπάρχει κίνδυνος απώλειας δεδομένων.

  1. Μετάβαση από Χ σε κονσόλα

Αν για κάποιο λόγο θέλετε να μεταβείτε από τα X σε μια εικονική κονσόλα, π.χ. για να κάνετε κάποια εργασία ως χρήστης root, που δεν απαιτεί γραφικό περιβάλλον, μπορείτε να χρησιμοποιήσετε το συνδυασμό πλήκτρων [Αριστερό ALT] -[F1] ως [F6]. Έτσι θα μεταβείτε σε μια από τις διαθέσιμες εικονικές κονσόλες (virtual consoles) και συνδεθείτε δίνοντας το ζητούμενο όνομα χρήστη και τον αντίστοιχο κωδικό πρόσβασης.

Η επιστροφή στα X γίνεται με το συνδυασμό [Αριστερό ALT]–[F7].

  1. Εκκίνηση του γραφικού περιβάλλοντος Χ

Αν έχετε εγκαταστήσει κάποιον από τους διαχειριστές οθόνης (xdm, gdm ή kdm) τότε το σύστημα μετά την εκκίνηση θα εισέρχεται σε γραφικό περιβάλλον. Πιθανόν όμως για κάποιο λόγο να έχετε απενεργοποιήσει τον διαχειριστή οθόνης, ή να μην τον έχετε εγκαταστήσει, ή ακόμη να υπάρχει κάποιο πρόβλημα και να χρειαστεί να το διορθώσετε. Για αυτό το σκοπό μπορείτε να μεταφερθείτε προσωρινά σε εικονική κονσόλα με το συνδυασμό [Αριστερό ALT]-[F1] (ως [F6]). Εκεί μπορείτε να εκκινήσετε διά χειρός τον διαχειριστή οθόνης ή απευθείας το σύστημα παραθύρων X (αν φυσικά είναι εγκατεστημένα στον υπολογιστή σας). Η εκκίνηση του διαχειριστή οθόνης μπορεί να γίνει, αφού έχετε συνδεθεί ως χρήστης root, με τον εξής απλό τρόπο:

# /etc/init.d/kdm start

ενώ, αν ήδη ήταν σε λειτουργία και θέλετε να τον επανεκκινήσετε για κάποιο λόγο, μπορείτε να χρησιμοποιήσετε την εντολή:

# /etc/init.d/kdm restart

Φυσικά, εδώ θεωρήσαμε ότι ο διαχειριστής οθόνης είναι ο kdm. Για οποιονδήποτε άλλο διαχειριστή οθόνης θα πρέπει να αντικαταστήσετε με το σωστό όνομα (gdm, xdm).

Τα X μπορούν να εκκινήσουν χωρίς διαχειριστή οθόνης απευθείας στο περιβάλλον εργασίας με την εντολή:

# startx

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

  1. Απενεργοποίηση του γραφικού περιβάλλοντος Χ

Με παρόμοιο τρόπο μπορείτε να απενεργοποιήσετε τον διαχειριστή οθόνης, αφού μεταφερθείτε πρώτα σε μια εικονική κονσόλα και συνδεθείτε ως χρήστης root:

# /etc/init.d/kdm stop

Υπάρχει και ένας γρήγορος αλλά αρκετά βίαιος τρόπος να πραγματοποιήσετε απότομο τερματισμό των X και επανεκκίνηση του διαχειριστή οθόνης, χρησιμοποιώντας το συνδυασμό πλήκτρων [CTRL]-[ALT]-[Backspace]. Δε είναι όμως προτιμητέο, γιατί τερματίζει απότομα όλα τα προγράμματα που χρησιμοποιουν το γραφικό περιβάλλον ή έχουν εκκινήσει μέσα σε αυτό. Χρησιμοποιήστε το μόνο αν έχετε πρόβλημα με τα X ή αν δεν αποκρίνεται το σύστημα.



Κεφάλαιο 8 - Η επιφάνεια εργασίας και το σύστημα παραθύρων Χ

  1. Το σύστημα παραθύρων X

Το σύστημα παραθύρων X, το γνωστό X Window System, ή πιο συχνά αναφερόμενο απλώς ως X, είναι το de facto περιβάλλον εργασίας που χρησιμοποιείται σε σχεδόν κάθε σύστημα UNIX. Αναπτύχθηκε αρχικά στο MIT και στη συνέχεια δημιουργήθηκε το X Consortium από το Open Group το οποίο είναι υπεύθυνο για την ανάπτυξή του. Το αυθεντικό σύστημα παραθύρων X του MIT/Open Group πέρασε από πολλές εκδόσεις οι οποίες αποτέλεσαν τη βάση για άλλες προσπάθειες δημιουργίας συμβατών συστημάτων παραθύρων X, εμπορικών και μή. Η τελευταία έκδοση είναι η X11R6.4 και αποτελεί το νεώτερο στανταρντ.

Το Debian και οι περισσότερες διανομές Linux καθώς και άλλα λειτουργικά UNIX (FreeBSD, NetBSD, OpenBSD) δε χρησιμοποιούν το αυθεντικό σύστημα παραθύρων X, αλλά μια Ανοιχτού Λογισμικού (Open Source) εναλλακτική προσπάθεια που βασίστηκε στα αυθεντικά Χ, το XFree86. Αυτό παρέχει μια πιο σύγχρονη αρχιτεκτονική από τα αυθεντικά X και επιπλέον λειτουργίες που το καθιστούν ανώτερο, πιο γρήγορο και πιο επεκτάσιμο.

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

Ο τρόπος που λειτουργούν τα X είναι παρόμοιος με αυτόν που λειτουργούν τα γραφικά περιβάλλοντα σε σχεδόν όλα τα σύγχρονα λειτουργικά συστήματα. Υπάρχουν αυτόνομες μονάδες που καλούνται παράθυρα και φιλοξενούν τις εφαρμογές ενώ μπορείτε να χρησιμοποιήσετε το ποντίκι και το πληκτρολόγιο.

Στο Debian τα X διατίθενται με το πακέτο x-window-system.

  1. Διαχειριστές Παραθύρων

Σε αντίθεση με τα γραφικά περιβάλλοντα που προσφέρονται από τα περισσότερα λειτουργικά συστήματα, ο τρόπος με τον οποίο τα X διαχειρίζονται τα παράθυρα, δεν είναι μοναδικός. Στην πραγματικότητα, τα X διαχειρίζονται μόνο τις πολύ βασικές λειτουργίες που είναι απαραίτητες για την απεικόνιση του γραφικού περιβάλλοντος. Για τις λειτουργίες που έχουν να κάνουν με την οργάνωση, στοίχιση, μετακίνηση ή μεταβολή των παραθύρων καθώς και για την εμφάνιση των πλαισίων γύρω από τα παράθυρα, είναι υπεύθυνα άλλα προγράμματα που ονομάζονται διαχειριστές παραθύρων (window managers). Υπάρχει μια τεράστια ποικιλία από διαχειριστές παραθύρων, καθένας από τους οποίους προσφέρει διαφορετικά πλεονεκτήματα. Υπάρχουν διαχειριστές παραθύρων με πολύ μικρές απαιτήσεις σε πόρους για μικρά συστήματα, διαχειριστές παραθύρων με ειδικές γλώσσες προγραμματισμού για αυξημένη παραμετροποίηση, διαχειριστές παραθύρων που έχουν σχεδιαστεί να προσομοιάζουν ένα άλλο λειτουργικό σύστημα, κ.ο.κ. Σημειώνουμε ότι οι διαχειριστές παραθύρων είναι διαφορετικά προγράμματα από τους διαχειριστές οθόνης. Ο διαχειριστής οθόνης διαχειρίζεται την πρόσβαση στο γραφικό περιβάλλον του υπολογιστή, ενώ ο διαχειριστής παραθύρων τίθεται σε λειτουργία αφού επιτρέψει την πρόσβαση ο διαχειριστής οθόνης. Ο διαχειριστής παραθύρων μπορεί να είναι διαφορετικός για κάθε χρήστη ακόμη και στον ίδιο υπολογιστή, όχι όμως και ο διαχειριστής οθόνης.

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

Στις εικόνες που ακολουθούν φαίνονται μερικοί από τους πιο γνωστούς διαχειριστές παραθύρων.




Εικόνα 68 Ένα τυπικό περιβάλλον KDE.




Το Debian προσφέρει μια μεγάλη ποικιλία διαχειριστών παραθύρων και ένα μικρό δείγμα μπορείτε να δείτε χρησιμοποιώντας την εντολή


		


Εικόνα 69 Ένα τυπικό περιβάλλον GNOME.


$ apt-cache search window manager



  1. Προσομοιωτές Τερματικού

Υπάρχει ένα είδος προγραμμάτων που χρησιμοποιείται ίσως περισσότερο από οποιοδήποτε άλλο στα X. Είναι ένα αναπόσπαστο τμήμα οποιουδήποτε γραφικού περιβάλλοντος εργασίας και δε νοείται η εγκατάσταση των X χωρίς ένα τέτοιο πρόγραμμα. Πρόκειται για τους προσομοιωτές τερματικών (terminal emulators) ή απλώς X terminals. Πρακτικά, ένας προσομοιωτής τερματικού δημιουργεί ένα εικονικό τερματικό το οποίο συνδέει με ένα παράθυρο και το οποίο θέτει υπό τον έλεγχο ενός κελύφους (shell), έτσι ο χρήστης μπορεί να εκτελέσει εντολές κελύφους ή κατευθείαν εφαρμογές γραφικού περιβάλλοντος μέσα από ένα τερματικό, ακριβώς σα να ήταν συνδεδεμένος στην κονσόλα του συστήματος. Μπορείτε να εκκινήσετε όσους προσομοιωτές τερματικού θέλετε, ο μόνος περιορισμός είναι η μνήμη του συστήματος.

Στις εικόνες 70, 71 και 72 φαίνονται μερικοί από τους πιο δημοφιλείς προσομοιωτές τερματικού, το konsole του KDE, το multi-gnome-terminal του GNOME και το κλασσικό (αν και απηρχαιωμένο) xterm.

Τα προγράμματα αυτά βρίσκονται στα πακέτα konsole, multi-gnome-terminal και xterm.

  1. Περιβάλλοντα Εργασίας

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


Εικόνα 70 Ο προσωμοιωτής τερματικού του KDE, konsole



Εικόνα 71 Ο προσωμοιωτής τερματικού του GNOME, mgt






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

Τα δύο αυτά κινήματα είναι το KDE και το GNOME. Κάθε ένα έχει διαφορετική φιλοσοφία ως προς την ιδανική φύση του περιβάλλοντος εργασίας αλλά αυτό κάθε άλλο παρά εμπόδιο αποτελεί στην ανάπτυξή τους. Το αντίθετο μάλιστα, αφού αυτή η άμιλα ωθεί τους προγραμματιστές του καθενός περιβάλλοντος να το εμπλουτίσουν και να το αναπτύξουν περισσότερο.




Εικόνα 72 Ο πρώτος προσωμοιωτής τερματικού xterm




KDE

Όταν ο Matthias Ettrich ξεκίνησε το KDE το 1996, λίγοι θα μπορούσαν να φανταστούν ότι σήμερα θα ήταν ίσως το πιο δημοφιλές περιβάλλον εργασίας στο Linux και στα υπόλοιπα UNIX συστήματα. Αν και στην αρχή η εμφάνισή του KDE 1.0 ήταν υπερβολικά όμοια με αυτή των Windows 95/98, σήμερα η παραμετροποίηση της εμφάνισης του KDE 3.1 ξεπερνάει κατά πολύ όλα τα υπόλοιπα λειτουργικά συστήματα. Ωστόσο, το KDΕ δεν είναι απλά ένα εμφανίσιμο περιβάλλον εργασίας. Συνοδευέται από εργαλεία ανάπτυξης λογισμικού, όπως το KDevelop και το KDE-Designer (αμφότερα υπάρχουν ως πακέτα στο Debian) και από ολοκληρωμένα API (διασυνδέσεις προγραμματισμού εφαρμογών) για ανάπτυξη εφαρμογών. Το KDE βασίζεται στην βιβλιοθήκη Qt, η οποία χαρακτηρίζεται από μια ιδιαίτερη ευκολία στην ανάπτυξη εφαρμογών χρησιμοποιώντας τελευταίες τεχνολογίες αντικειμενοστραφούς προγραμματισμού (Object Oriented Programming) και επικοινωνίας διεργασιών μέσω μηνυμάτων και σημάτων (message & signal passing interfaces). Αυτήν την ευκολία έχει εκμεταλλευτεί και το KDE ώστε οι εφαρμογές του να έχουν γρήγορη ανταπόκριση και ελάχιστο χρόνο καθυστέρησης κατά την αλληλεπίδραση με το χρήστη.

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

Το ίδιο το KDE Project έχει ξεκινήσει και τη δημιουργία μιας σουίτας προγραμμάτων γραφείου, το KOffice, που έχει ως απώτερο σκοπό την αντικατάσταση εμπορικών πακέτων όπως το Microsoft Office. Ακόμη βρίσκεται σε περίοδο ανάπτυξης αλλά η πρόοδος γίνεται με ταχείς ρυθμούς και ήδη ορισμένα από τα τμήματα του KOffice, το KWord και το KSpread, ένας επεξεργαστής κειμένου και μια εφαρμογή φύλλων εργασίας (spreadsheet) αντίστοιχα, είναι κατάλληλα προς χρήση.

Για περισσότερες πληροφορίες για το KDE, ανατρέξατε στην διεύθυνση http://www.kde.org.

GNOME

Σύντομα μετά το KDE, το 1997, ο Miguel de Icaza ξεκίνησε τη δημιουργία ενός δεύτερου γραφικού περιβάλλοντος εργασίας που θα προσέφερε αυτά που τότε αδυνατούσε να προσφέρει το KDE, δηλ. ταχύτητα και μικρή κατανάλωση πόρων (ειδικά μνήμης). Το περιβάλλον αυτό ονομάστηκε GNOME και γρήγορα έγινε δημοφιλές, ειδικά για χρήση σε υπολογιστές χαμηλών επιδόσεων, καθώς οι απαιτήσεις του ήταν σαφώς μικρότερες από αυτές του KDE. Αλλά δεν περιορίστηκε στο να είναι ένα ελαφρύ υποκατάστατο του KDE και γρήγορα το GNOME εξελίχθηκε σε ένα ισχυρό ανταγωνιστή.

Σε αντιστοιχία με το KDE, το GNOME βασίστηκε στη βιβλιοθήκη GTK, που παρέχει παρόμοια χαρακτηριστικά με τη βιβλιοθήκη Qt. Μάλιστα, για τη βιβλιοθήκη GTK προσφέρονται διασυνδέσεις με περισσότερες γλώσσες προγραμματισμού πέρα από τις C/C++, όπως Perl, Python και Tcl.

Ένα από τα κυριότερα πλεονεκτήματα του GNOME είναι οι εφαρμογές που βασίζονται σε αυτό. Ορισμένες από αυτές ευθύνονται για την εξάπλωση της φήμης του λογισμικού ανοικτού κώδικα. Πληροφοριακά θα αναφέρουμε τις GIMP, Mozilla, Evolution, Gnumeric, Abiword, GAIM, X-Chat, κλπ. Οι εφαρμογές αυτές παρέχονται στα αντίστοιχα πακέτα λογισμικού του Debian.

Ο επίσημος δικτυακός τόπος του GNOME βρίσκεται στην διεύθυνση http://www.gnome.org.

  1. Αντιγραφή/επικόλληση κειμένου στα X

Μια πολύ χρήσιμη λειτουργία που προσφέρουν τα X είναι η αντιγραφή και επικόλληση κειμένου χρησιμοποιώντας το αριστερό και μεσαίο πλήκτρο του ποντικιού, αν φυσικά πρόκειται για ποντίκι με τρία πλήκτρα ή τροχό κύλισης (scroll wheel). Για κατόχους ποντικιού με δύο πλήκτρα θα πρέπει να ενεργοποιήσετε την εξομοίωση ποντικιού με τρία πλήκτρα (σελ. 79).

Με το αριστερό πλήκτρο επιλέγετε το κείμενο που θέλετε να αντιγράψετε (εικόνα 73) και με το μεσαίο πλήκτρο (ή πατώντας ταυτόχρονα αριστερό και δεξί πλήκτρο αν έχετε ποντίκι με δύο πλήκτρα) επικολλάτε το κείμενο στο παράθυρο που θέλετε (εικόνα 74).


Εικόνα 73 Επιλογή κειμένου με το ποντίκι από ένα τερματικό





Εικόνα 74 Επικόλληση κειμένου σε έναν κειμενογράφο






Κεφάλαιο 9 - Η δύναμη του UNIX,το Κέλυφος

Το Κέλυφος (shell), ή μεταφραστής εντολών (command interpreter) όπως αλλιώς ονομάζεται, είναι ένα από τα χαρακτηριστικά που κάνουν το UNIX (το Linux είναι ένα λειτουργικό σύστημα τύπου UNIX) να ξεχωρίζουν. Προσφέρει απεριόριστες δυνατότητες στο χρήστη που ξέρει να το χειρίζεται και δεν είναι λίγα τα παραδείγματα ολόκληρων εφαρμογών που στηρίζονται σε σενάρια κελύφους (shell scripts). Για την ακρίβεια τα σενάρια κελύφους είναι ένας από τους προτεινόμενους τρόπους παραμετροποίησης μιας εφαρμογής καθώς είναι μεταφέρσιμα (portable) σε σχεδόν όλες τις πλατφόρμες UNIX , έχουν πολύ μικρό μέγεθος και είναι πολύ βολικά στην κατανάλωση μνήμης και επεξεργαστικής ισχύος. Ακόμη είναι πολύ γρήγορο και εύκολο να κατασκευαστεί ένα μικρό σενάριο κελύφους που θα πραγματοποιεί μια συγκεκριμένη λειτουργία, για την οποία πιθανόν να χρειαζόταν πολλαπλάσιος χρόνος να γραφτεί σε κάποια παραδοσιακή γλώσσα προγραμματισμού (π.χ. C/C++), και η μεταφερσιμότητά της (portability) θα ήταν κάτι αμφισβητίσιμο.

Τί ακριβώς όμως είναι το κέλυφος; Από την πλευρά του πυρήνα, το κέλυφος είναι ένα απλό πρόγραμμα που ερμηνεύει και εκτελεί τις εντολές που του ορίζετε, διαδοχικά. Ανάμεσα σε άλλα, το κέλυφος είναι υπεύθυνο για την εκτέλεση των σεναρίων κελύφους, για την ανάπτυξη των χαρακτήρων μοτίβων (patterns) σε ονόματα αρχείων, τη σύνδεση των αρχείων και εντολών με σωληνώσεις (pipes) και την υπό συνθήκη εκτέλεση εντολών (conditional execution). Τα σενάρια κελύφους δεν είναι τίποτε άλλο από προγράμματα γραμμένα σε ειδική σύνταξη αλλά όμοια με εκείνη που εισάγετε στη γραμμή εντολών, τα οποία το κέλυφος μπορεί να εκτελέσει.

  1. Γιατί Κέλυφος;

Όπως αναφέραμε, το κέλυφος παρέχει μια άμεση πρόσβαση σε αμέτρητα προγράμματα του UNIX και για πολλούς είναι αυτό που έχει καταστήσει το UNIX τόσο δημοφιλές. Πολλοί θα αναρωτηθούν γιατί να ασχοληθούν με μια τεχνολογία 20 ετών και να χάσουν χρόνο μαθαίνοντας “περίεργες” μονοσύλλαβες εντολές τη στιγμή που τα λειτουργικά συστήματα προσφέρουν τόσο φιλικούς τρόπους διασύνδεσης με το χρήστη (interfaces) και όμορφα γραφικά περιβάλλοντα. Η απάντηση δεν είναι τόσο απλή αλλά εξαρτάται κάθε φορά από το σκοπό για τον οποίο χρησιμοποιεί ο κάθε χρήστης τον υπολογιστή. Για παράδειγμα, σε ένα επαγγελματικό περιβάλλον αυτό που έχει πραγματική σημασία δεν είναι τόσο τα όμορφα γραφικά αλλά η σταθερότητα, η ασφάλεια και η απόδοση. Η έλλειψη της όμορφης παρουσίασης είναι μάλλον προτέρημα παρά μειονέκτημα. Από την άλλη, για ένα χρήστη που θέλει να εμβαθύνει στο σύστημά του και όχι να το αντιμετωπίζει ως ένα μαύρο κουτί, το κέλυφος είναι μια άμεση πύλη στα ενδότερα του συστήματος.

Οπωσδήποτε, αυτό δε σημαίνει ότι τα λειτουργικά UNIX (και κατά συνέπεια και το Linux) θα πρέπει να στερηθούν των εξελίξεων στις νέες τεχνολογίες και να συνεχίσουν να είναι το ίδιο φιλικά προς το χρήστη όπως πρίν από 20 χρόνια – δηλαδή καθόλου! Αντίθετα, έχουν γίνει πολύ σημαντικές προσπάθειες ώστε να μπορεί ο παλαιός τρόπος διασύνδεσης με το χρήστη, το κέλυφος, να συνυπάρχει με όμορφα και φιλικά γραφικά περιβάλλοντα. Μερικά από τα αποτελέσματα αυτών των προσπαθειών είναι τα περιβάλλοντα KDE και GNOME. Αμφότερα παρέχουν πολλές από τις ευκολίες που συναντούμε σε λειτουργικά συστήματα που εστιάζουν την προσοχή τους στο όμορφο περιβάλλον (Windows XP, MacOS X).

  1. Ποιά κελύφη υπάρχουν;

Όπως πολλοί θα γνωρίζουν δεν υπάρχει μόνο ένα κέλυφος του UNIX. Για την ακρίβεια το πλήθος των διαθέσιμων κελύφων ανταγωνίζεται το πλήθος των διαφορετικών UNIX συστημάτων! Θα αναφέρουμε μόνο τα σημαντικότερα και αυτά που έχουν επηρεάσει σε μεγάλο βαθμό την εξέλιξη του UNIX. Στον παρόντα οδηγό θα ασχοληθούμε εκτενώς μόνο με το bash, καθώς είναι πλέον το εδραιωμένο κέλυφος σε σχεδόν όλες τις διανομές του Linux – φυσικά και στο Debian.

Το κέλυφος Bourne (sh)

Το κέλυφος Bourne, ή Bourne shell, πήρε το όνομά του από τον δημιουργό του Steve Bourne, που το έγραψε για την Έβδομη Δημιοσίευση του UNIX το 1979 στα Εργαστήρια της Bell. Είναι το πρώτο σημαντικό κέλυφος που χρησιμοποιήθηκε και λόγω ορισμένων επιπλέον δυνατοτήτων που παρέχει στη δημιουργία των σεναρίων κελύφους, έχει εδραιωθεί πλέον ως το προκαθορισμένο κέλυφος για σενάρια κελύφους. Το αρχικό κέλυφος Bourne ήταν αρκετά δύσχρηστο σε διαλογική επικοινωνία καθώς δεν πρόσφερε διόρθωση και εκτέλεση προηγούμενων εντολών και υποστήριξη ψευδωνύμων εντολών (aliases).

Δεν παρέχεται στο Debian ως πακέτο, καθώς έχει αντικατασταθεί από το Bourne Again Shell (bash).

Το κέλυφος της γλώσσας C (csh)

Το csh, παρά το όνομά του δεν έχει ιδιαίτερη σχέση με τη γλώσσα C στη σύνταξη των εντολών, αν και προσφέρει πρόσθετους τελεστές όμοιους με της γλώσσας C. Αναπτύχθηκε στα πλαίσια του BSD UNIX από το Πανεπιστήμιο του Berkeley λίγο μετά το κέλυφος Bourne, για να προσφέρει ένα πιο φιλικό στην διαλογική επικοινωνία κέλυφος. Την εποχή εκείνη ήταν αρκετά δημοφιλές λόγω του ιστορικού εντολών, της δυνατότητας διόρθωσης και εκτέλεσης προηγούμενων εντολών, έλεγχο εργασιών και υποστήριξη ψευδωνύμων.

Στο Debian υπάρχει ως πακέτο csh.

Το κέλυφος TENEX C (tcsh)

Το κέλυφος tcsh, είναι μια ενισχυμένη έκδοση του κελύφους csh του BSD UNIX 4.4, με επιπλέον χαρακτηριστικά όπως δυνατότητα αυτόματης σύνταξης εντολής (command completion) και αρχείων (filename completion) και χρονολόγηση της κάθε εντολής με σφραγίδες (timestamps).

Διατίθεται στο Debian ως πακέτο tcsh.

Το κέλυφος Korn (ksh)

Το κέλυφος Korn αναπτύχθηκε στα εργαστήρια της AT&T το 1982 από το David Korn και περιλαμβάνει πολλά από τα χαρακτηριστικά των κελύφων Bourne και C αλλά και πολλά πρόσθετα. Περιλαμβάνεται στην Τέταρτη Έκδοση του System V UNIX της AT&T αλλά και άλλων συστημάτων.

Διατίθεται στο Debian μια ελεύθερη έκδοση του ksh, ως πακέτο pdksh.

  1. Το κέλυφος Bourne Again (bash)

Το κέλυφος bash ή πιο ολοκληρωμένα GNU Bourne Again Shell, είναι η απάντηση του Free Software Foundation στην προσπάθεια κατασκευής του τέλειου κελύφους και μπορούμε να πούμε ότι είναι αρκετά κοντά! Αναπτύχθηκε το 1989 από μια πληθώρα προγραμματιστών που εργάστηκαν με το μοντέλο του Ανοιχτού Κώδικα (Open Source). Σήμερα, η δεύτερη έκδοση του Κελύφους Bourne Again χρησιμοποείτει σε σχεδόν όλες τις διανομές Linux και τα ελεύθερα λειτουργικά UNIX (NetBSD, OpenBSD, Debian GNU/Hurd) και φυσικά στο Debian GNU/Linux.

Στο εξής, κάθε αναφορά στο κέλυφος εννοεί το κέλυφος Bourne Again.

  1. Εκκίνηση

Η εκκίνηση του κελύφους γίνεται καταρχάς με την εισαγωγή στο σύστημα (login). Το ποιο ακριβώς κέλυφος θα χρησιμοποιήσετε ορίζεται στο αρχείο /etc/passwd, και μπορείτε να το αλλάξετε με την εντολή

$ usermod –s <path to shell> <username>

Για παράδειγμα, αν θέλαμε να αλλάξουμε το κέλυφος στο χρήστη feanor στο TENEX csh θα μπορούσαμε να δώσουμε:

$ usermod –s /usr/bin/tcsh feanor

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

$ sh ./script.sh

είτε δίνοντας ως πρώτη γραμμή του σεναρίου την εντολή:

#!/bin/sh

ο συνδυασμός των χαρακτήρων #! λέγεται και shebang, και απλώς δηλώνει ότι το παρόν σενάριο θα εκτελεστεί μέσω του προγράμματος κελύφους /bin/sh. Ο ίδιος τρόπος χρησιμοποιείται και για άλλου είδους μεταφραστές εντολών, όπως τις γλώσσες προγραμματισμού Perl, Python, κλπ.

Με αυτόν τον τρόπο μπορεί να εκτελεστεί ένα σενάριο κελύφους ως εκτελέσιμο πρόγραμμα (αρκεί να έχει φυσικά τις απαραίτητες άδειες εκτέλεσης ενεργοποιημένες (executable flag):

$ ./script.sh
  1. Προτροπές (prompts)

Με την εκκίνηση του κελύφους, θα παρουσιαστεί μια προτροπή (prompt) για εισαγωγή εντολής. Η προτροπή συνήθως περιέχει το όνομα του χρήστη ακολουθούμενο από το όνομα του υπολογιστή (hostname) και τον τρέχων κατάλογο. Για το χρήστη root, απλώς δίνει το όνομα του υπολογιστή με τον τρέχοντα κατάλογο. Για παράδειγμα, ο χρήστης feanor στο σύστημα silmaril που βρίσκεται στον κατάλογο /usr/src θα είχε την εξής προκαθορισμένη (default) προτροπή:

feanor@silmaril:/usr/src$ 

ενώ ο χρήστης root στο ίδιο σύστημα:

silmaril:/usr/src# 

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

man bash

και να αναζητήσετε τις μεταβλητές περιβάλλοντος (environment variables) και συγκεκριμένα την PS1.

  1. Γραμμή Εντολών

Στην γραμμή εντολών το κέλυφος αναμένει τις εντολές σας. Αυτές μπορεί να είναι ενδογενείς εντολές του ίδιου του κελύφους bash, εντολές του συστήματος ή ακόμη και εκτελέσιμα προγράμματα. Ο τρόπος εκτέλεσης είναι ο ίδιος για όλες.

Ως ενδογενείς εντολές του κελύφους εννοούμε εντολές που δεν έχουν φυσική υπόσταση ως αρχεία στο σκληρό δίσκο. Είναι απλώς εντολές ελέγχου και ρύθμισης του ίδιου του κελύφους. Μερικά παραδείγματα τέτοιων εντολών με τις οποίες θα ασχοληθούμε στον οδηγό αυτό είναι:

Το κέλυφος bash προσφέρει περισσότερες ενδογενείς εντολές αλλά η καταγραφή και επεξήγησή τους ξεφεύγει από τα όρια του οδηγού αυτού.

  1. Δομή εντολών

Οι περισσότερες εντολές (ενδογενείς ή μη) προσφέρουν κάποιον τρόπο παραμετροποίησης ώστε το αποτέλεσμα της εκτέλεσής τους να προσαρμόζεται κάθε φορά στις ανάγκες του χρήστη. Ένας τρόπος παραμετροποίησης είναι με αρχείο ρυθμίσεων – που τις περισσότερες φορές βρίσκεται στον κατάλογο /etc. Ένας άλλος, πιο άμεσος τρόπος παραμετροποίησης, είναι στην γραμμή εντολών κατά την εισαγωγή της εντολής. Ας πάρουμε για παράδειγμα την εντολή παρουσίασης των περιεχομένων καταλόγου, ls (list).

Η εντολή ls από μόνη της επιστρέφει τα περιεχόμενα ενός καταλόγου.

feanor@silmaril:/$ ls
bin   cdrom  etc     home    lib        mnt   proc   sbin   usr   vmlinuz
boot  dev    floppy  initrd  lost+found opt   root   tmp    var

Αν στην εντολή ls δώσετε την επιλογή -l, το αποτέλεσμα θα είναι αρκετά πιο λεπτομερές:

feanor@silmaril:/$ ls -l
total 56
drwxr-xr-x    2 root     root         2048 2003-06-09 16:36 bin
drwxr-xr-x    2 root     root         1024 2003-05-23 09:29 boot
drwxr-xr-x    2 root     root         1024 2002-12-23 11:13 cdrom
drwxr-xr-x    1 root     root            0 2002-12-23 02:00 dev
drwxr-xr-x  111 root     root         6144 2003-06-11 16:37 etc
drwxr-xr-x    2 root     root         1024 2002-12-23 11:13 floppy
drwxr-xr-x    9 root     root         4096 2003-06-04 16:32 home
drwxr-xr-x    2 root     root         1024 2001-12-19 19:08 initrd
drwxr-xr-x    5 root     root         4096 2003-06-09 16:36 lib
drwx------    3 root     root        12288 2002-12-23 11:03 lost+found
drwxr-xr-x    4 root     root         1024 2003-05-15 14:27 mnt
drwxr-xr-x    2 root     root         1024 2001-12-19 19:08 opt
dr-xr-xr-x  134 root     root            0 2003-06-11 16:08 proc
drwxr-xr-x   29 root     root         2048 2003-06-10 15:28 root
drwxr-xr-x    2 root     root         4096 2003-06-09 16:36 sbin
drwxrwxrwt   10 root     root          300 2003-06-11 16:11 tmp
drwxr-xr-x   16 root     root         4096 2003-06-06 11:58 usr
drwxr-xr-x   16 root     root         4096 2003-05-19 14:28 var
lrwxrwxrwx    1 root     root           19 2002-12-23 11:14 vmlinuz -> boot/vmlinuz-2.4.20

Ενώ με την προσθήκη της επιλογής -t, η ταξινόμηση γίνεται τώρα χρονικά:

feanor@silmaril:/$ ls -lt
total 56
drwxr-xr-x  111 root     root         6144 2003-06-11 16:37 etc
drwxrwxrwt   10 root     root          300 2003-06-11 16:11 tmp
dr-xr-xr-x  134 root     root            0 2003-06-11 16:08 proc
drwxr-xr-x   29 root     root         2048 2003-06-10 15:28 root
drwxr-xr-x    5 root     root         4096 2003-06-09 16:36 lib
drwxr-xr-x    2 root     root         2048 2003-06-09 16:36 bin
drwxr-xr-x    2 root     root         4096 2003-06-09 16:36 sbin
drwxr-xr-x   16 root     root         4096 2003-06-06 11:58 usr
drwxr-xr-x    9 root     root         4096 2003-06-04 16:32 home
drwxr-xr-x    2 root     root         1024 2003-05-23 09:29 boot
drwxr-xr-x   16 root     root         4096 2003-05-19 14:28 var
drwxr-xr-x    4 root     root         1024 2003-05-15 14:27 mnt
lrwxrwxrwx    1 root     root           19 2002-12-23 11:14 vmlinuz -> boot/vmlinuz-2.4.20
drwxr-xr-x    2 root     root         1024 2002-12-23 11:13 cdrom
drwxr-xr-x    2 root     root         1024 2002-12-23 11:13 floppy
drwx------    3 root     root        12288 2002-12-23 11:03 lost+found
drwxr-xr-x    2 root     root         1024 2001-12-19 19:08 initrd
drwxr-xr-x    2 root     root         1024 2001-12-19 19:08 opt
drwxr-xr-x    1 root     root            0 2002-12-23 02:00 dev

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

Η εισαγωγή επιλογών στην γραμμή εντολών γίνεται πάντοτε μετά την εντολή και με δύο διαφορετικές μορφές, αναλόγως την εντολή: μία σύντομη μορφή (που αναγνωρίζεται με τη μονή παύλα “-”) και μια αναλυτική (με δύο παύλες “--”). Οι περισσότερες εντολές δέχονται και τις δύο μορφές αλλά δεν είναι βέβαιο ότι για κάθε αναλυτική μορφή θα υπάρχει και μια σύντομη. Για παράδειγμα, στην εντολή ls, η επιλογή -l δεν έχει αναλυτική μορφή, ενώ η -s έχει (--size).

Οι περισσότερες εντολές παρέχουν μια επιλογή βοηθείας, σχεδόν σίγουρα σε αναλυτική μορφή (--help) αλλά συχνά και σε σύντομη μορφή (-h). Με την επιλογή βοηθείας, εμφανίζονται αναλυτικές οδηγίες όσον αφορά τη σύνταξη της εντολής και των επιλογών της. Έτσι, για την ls ισχύει:

$ ls --help
  1. Απόλυτες και Σχετικές Διαδρομές, Τρέχων Κατάλογος

Όπως είδαμε και στο προηγούμενο παράδειγμα, η εντολή ls επέστρεψε τα περιεχόμενα του βασικού καταλόγου /. Αυτό συνέβη γιατί ο τρέχων κατάλογος του κελύφους και συνεπώς και της εντολής ήταν ο κατάλογος /. Τί ακριβώς όμως σημαίνει τρέχων κατάλογος;

Κάθε αρχείο αναγνωρίζεται στο σύστημα από τη μοναδική του διαδρομή στο σύστημα αρχείων. Δηλαδή υπάρχει μόνο ένα αρχείο που βρίσκεται στον κατάλογο /etc και έχει όνομα passwd. Η διαδρομή του αρχείου αυτού είναι /etc/passwd. Το ίδιο ισχύει και για τους καταλόγους, ο κατάλογος /var/log είναι μοναδικός στο σύστημα. Έτσι για να έχουμε πρόσβαση σε κάποιο αρχείο ή κατάλογο θα πρέπει να το προσπελάσουμε χρησιμοποιώντας την διαδρομή του. Αν πρόκειται για ένα αρχείο όπως το /etc/passwd αυτό είναι αρκετά εύκολο. Τί γίνεται όμως αν έχουμε να κάνουμε με αρχεία όπως /var/log/very/long/path/verylongfilename.log; Κάτι τέτοιο γίνεται κουραστικό, ειδικά με μεγάλο αριθμό αρχείων. Αλλά υπάρχει και ένα άλλο πρόβλημα, καθώς τα προγράμματα πρέπει να είναι σχεδιασμένα έτσι ώστε να μπορούν να εκτελεστούν χωρίς να παίζει ρόλο σε ποιο κατάλογο τρέχουν, αφού τα ίδια προγράμματα μπορούν να τρέξουν σε άλλες αρχιτεκτονικές που χρησιμοποιούν διαφορετικό σχήμα καταλόγου.

Για αυτό το σκοπό ορίστηκαν οι σχετικές διαδρομές σε σύγκριση με τις απόλυτες διαδρομές (relative και asbolute paths). Η διαφορά είναι ότι για τις σχετικές διαδρομές είναι απαραίτητος και ο ορισμός ενός σημείου αναφοράς. Χωρίς το σημείο αναφοράς δεν είναι δυνατός ο καθορισμός της θέσης του αρχείου με μονοσήμαντο τρόπο. Στην ουσία, το σημείο αναφοράς είναι ένας κατάλογος του δέντρου καταλόγων (directory tree) του συστήματος στο οποίο μετακινούμαστε κατά βούληση μέσα στο κέλυφος, έχοντας ως αρχή τον βασικό κατάλογο “/”. Αυτό το σημείο αναφοράς το ονομάζουμε Τρέχων Κατάλογο (current directory). Κάθε κέλυφος έχει έναν τρέχοντα κατάλογο, τον οποίο μπορούμε να μάθουμε με την εντολή pwd.

feanor@silmaril:/home/feanor$ pwd
/home/feanor

Απόλυτες διαδρομές είναι οι διαδρομές /var/log/syslog, ενώ σχετική είναι η διαδρομή log/syslog, με τρέχοντα κατάλογο το /var. Οι σχετικές διαδρομές εξαρτώνται από τον τρέχοντα κατάλογο του κελύφους.

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

Στο UNIX έχει οριστεί ένας ειδικός συμβολισμός για τον τρέχοντα κατάλογο, η τελεία “.”. Έτσι κάθε αρχείο file του τρέχοντος καταλόγου μπορεί να προσπελαστεί με το όνομα ./file.

Με τον ίδιο τρόπο, έχει οριστεί να συμβολίζεται και ο γονικός κατάλογος (δηλαδή ο κατάλογος πρίν από τον τρέχοντα στο δέντρο δομής καταλόγων, parent directory) με δύο τελείες “..”.

Για παράδειγμα, αν ο τρέχων κατάλογος είναι /var/log, το αρχείο syslog μπορεί να προσπελαστεί ως ./syslog, ενώ ο γονικός κατάλογος είναι /var.

Αντίστοιχα, αν ο τρέχων κατάλογος είναι πάλι /var/log, το αρχείο /var/mail/root μπορεί να προσπελαστεί ως ../mail/root.

  1. Αλλαγή τρέχοντος καταλόγου

Μπορούμε να αλλάζουμε τον τρέχοντα κατάλογο κατά βούληση και να μεταφερόμαστε σε διαφορετικούς καταλόγους του συστήματος αλλάζοντας το σημείο αναφοράς μας. Η εντολή με την οποία δηλώνουμε στο κέλυφος την αλλαγή του τρέχοντος καταλόγου είναι η cd (Change Directory).

feanor@silmaril:/home/feanor$ cd /var/log
feanor@silmaril:/var/log$ cd ..
feanor@silmaril:/var/$ 

Με την εντολή cd και τους συμβολισμούς “.” και “..” μπορούμε πλέον να μετακινηθούμε οπουδήποτε θέλουμε στο σύστημα αρχείων του συστήματός μας.

  1. Περιεχόμενα καταλόγου

Σε προηγούμενη παράγραφο είχαμε μια πρώτη επαφή με την εντολή ls. Η εντολή ls είναι μια από τις πιο χρήσιμες εντολές στο κέλυφος. Επιτρέπει την απλή ή σύνθετη παρουσίαση των περιεχομένων ενός ή και περισσοτέρων καταλόγων. Η σύνταξή της γενικά είναι απλή:

ls [options] [directory] [directory] [directory]...

χωρίς επιλογές απλώς επιστρέφει τα περιεχόμενα του τρέχοντος καταλόγου. Αν δοθεί το όνομα ενός ή και περισσοτέρων προσβάσιμων καταλόγων, τότε επιστρέφει τα περιεχόμενα αυτών των καταλόγων, χρησιμοποιώντας κάθε φορά τις επιλογές – αν υπάρχουν – για τη μορφοποίηση της λίστας των περιεχομένων. Εκτός από τις επιλογές -l και -t που αναφέραμε πιο πριν υπάρχουν και άλλες που μπορούν να μορφοποιήσουν τη λίστα με διάφορους τρόπους αναλόγως τις ανάγκες μας. Παραθέτουμε μερικές από τις πιο σημαντικές στον επόμενο πίνακα:



Επιλογή

Λειτουργία

-a

Τυπώνει όλα τα αρχεία ακόμη και τα κρυμμένα αρχεία (αυτά των οποίων το όνομα αρχίζει με “.”).

--color
--colour

Τυπώνει τη λίστα χρησιμοποιώντας διαφορετικά χρώματα για κάθε τύπο αρχείων.

-l
--format=long

Τυπώνει επιπλέον πληροφορίες για τα αρχεία.

-F
--classify

Τυπώνει ειδικούς χαρακτήρες δίπλα στο όνομα του αρχείου, αναλόγως με τον τύπο του αρχείου.

  • / Κατάλογος

  • * Εκτελέσιμο πρόγραμμα

  • @ Συμβολικός σύνδεσμος (symbolic link)

-L
--dereference

Τυπώνει το ίδιο το αρχείο και όχι το σύνδεσμό του.

-R

Τυπώνει αναδρομικά και όλους τους περιεχόμενους καταλόγους.

-S
--sort=size

Ταξινομεί τα αρχεία σύμφωνα με το μέγεθός τους.

-t
--sort=time

Ταξινομεί τα αρχεία σύμφωνα με την ημερομηνία της τελευταίας μεταβολής τους.

-X
--sort=extension

Ταξινομεί τα αρχεία σύμφωνα με την κατάληξή τους (μερικά αρχεία δεν έχουν κατάληξη).

-x
--format=across

Τυπώνει τη λίστα σε περισσότερες από μια στήλες.



  1. Η Μεταβλητή PATH

Εκτός από τις ενδογενείς εντολές, οι υπόλοιπες εντολές και τα εκτελέσιμα προγράμματα έχουν φυσική υπόσταση στο σύστημα αρχείων του Linux. Το σύστημα αρχείων του Linux, όπως θα δούμε και σε επόμενο κεφάλαιο, οργανώνει τα αρχεία σε καταλόγους. Έτσι τα εκτελέσιμα αρχεία -οι εντολές και τα προγράμματα- βρίσκονται σε καταλόγους όπως /bin, /sbin, /usr/bin, /usr/sbin, κοκ. Αντίθετα, τα αρχεία ρυθμίσεων βρίσκονται στον κατάλογο /etc, ενώ οι βιβλιοθήκες στους καταλόγους /lib, /usr/lib. Το κέλυφος θα πρέπει να ξέρει σε ποιο κατάλογο θα αναζητήσει τις εντολές που θα του ζητήσουμε να εκτελέσει, ή αλλιώς ποια διαδρομή θα χρησιμοποιήσει για να βρεί την κάθε εντολή. Αυτό επιτυγχάνεται με τη μεταβλητή περιβάλλοντος (environment variable) PATH.

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

Στην περίπτωση που ένας κατάλογος δεν υπάρχει μέσα στη μεταβλητή PATH, οποιοδήποτε εκτελέσιμο πρόγραμμα ή εντολή σε αυτόν, θα πρέπει να κληθεί με την πλήρη διαδρομή (full path).Για παράδειγμα, για να εκτελέσει ένας απλός χρήστης την εντολή ifconfig, στην οποία έχει άμεση πρόσβαση μόνο ο χρήστης root (αφού βρίσκεται στον κατάλογο /sbin, και μόνο η μεταβλητή PATH για το χρήστη root περιλαμβάνει τους καταλόγους sbin) θα πρέπει να δώσει στην προτροπή του κελύφους:

$ /sbin/ifconfig

Επίσης για να εκτελέσει ένα πρόγραμμα που βρίσκεται στον τρέχοντα κατάλογο θα πρέπει θα χρησιμοποιήσει το πρόθεμα “./”. Το ”./” είναι η διαδρομή ενός αρχείο στον τρέχοντα κατάλογο. Θα μπορούσε κάποιος να το προσθέσει στη μεταβλητή PATH, αλλά αυτή η τεχνική δε συνιστάται καθώς αφήνει περιθώρια για “Δούρειους Ίππους” (trojan horses), προγράμματα δηλαδή που έχουν ως σκοπό το συμβιβασμό της ασφάλειας του συστήματος.

Η προκαθορισμένη τιμή της μεταβλητής PATH για ένα απλό χρήστη είναι η εξής:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games

ενώ για το χρήστη root:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

Ο χρήστης root έχει επιπλέον και τους καταλόγους sbin (που περιέχουν εντολές και προγράμματα απαραίτητα για την διαχείριση του συστήματος, αλλά περιττά για έναν απλό χρήστη). Αυτά ισχύουν για το Debian GNU/Linux. Άλλες διανομές ή λειτουργικά συστήματα πιθανόν να έχουν διαφορετικές προκαθορισμένες τιμές για την διαδρομή PATH.

  1. Κανονικές παραστάσεις (regular expressions)

Πολλές φορές θέλουμε να εκτελέσουμε μια εντολή σε περισσότερα από ένα αρχεία ή σε μια ομάδα αρχείων που έχουν συγκεκριμένα χαρακτηριστικά, π.χ. τα ονόματά τους να έχουν μια συγκεκριμένη κατάληξη ή κάποια συγκεκριμένα γράμματα. Στην περίπτωση που πρόκειται για λίγα αρχεία δεν υπάρχει ιδιαίτερο πρόβλημα να τα συμπληρώσουμε με το χέρι. Αν πρόκειται όμως για δεκάδες ή και εκατοντάδες αρχεία, δεν είναι ιδιαίτερα πρακτικό και φιλικό να γράψουμε τόσα ονόματα.

Για το σκοπό αυτό επινοήθηκαν οι κανονικές παραστάσεις (regular expressions). Χρησιμοποιώντας ειδικούς μεταχαρακτήρες (χαρακτήρες μπαλαντέρ ή wildcards είναι μερικές από τις ονομασίες που έχουν), μπορούμε να ορίσουμε ένα συγκεκριμένο μοτίβο κειμένου το οποίο εφαρμόζεται σε μια λίστα τμημάτων κειμένου. Όποιο από τα τμήματα αυτά ταιριάζει στο μοτίβο αυτό, γίνεται αποδεκτό. Τα τμήματα αυτά μπορούν να είναι ονόματα αρχείων ή καταλόγων, λέξεις ή ακόμη και φράσεις κειμένου.

Ένα απλό παράδειγμα αφορά τη χρήση του μεταχαρακτήρα “*”. Για να αναφερθούμε σε όλα τα αρχεία του καταλόγου /var/log, αρκεί να δώσουμε /var/log/*, ενώ για όλα αρχεία που έχουν την κατάληξη log, αρκεί να δώσουμε /var/log/*.log.

Στον επόμενο πίνακα αναφέρονται οι κυριότεροι μεταχαρακτήρες και η χρήση τους. Σημείωνουμε ότι μπορούν να χρησιμοποιηθούν εξίσου στο κέλυφος για την αντιστοίχιση σε ονόματα αρχείων αλλά και σε επεξεργαστές κειμένου όπως sed, vi, ed και ex αλλά και στις εντολές grep, αν και υπάρχουν ορισμένες διαφορές σε κάθε περίπτωση.



Μεταχαρακτήρας

Λειτουργία

*

Ταυτοποιείται με μηδέν ή περισσότερες εμφανίσεις οποιουδήποτε χαρακτήρα.

?

Ταυτοποιείται με μόνον ένα οποιονδήποτε χαρακτήρα.

^

Αν βρίσκεται στην αρχή της κανονικής παράστασης, τότε αντιστοιχεί στην αρχή της γραμμής κειμένου, αλλιώς απεικονίζεται σαν κανονικός χαρακτήρας. Δηλαδή η κανονική παράσταση ^chapter*, αντιστοιχεί σε όλες τις γραμμές που αρχίζουν με chapter.

$

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

[set]

Υποδηλώνει ένα σύνολο χαρακτήρων. μπορεί να έχει τις εξής μορφές:

  • [c1c2c3...] ταυτοποιείται με οποιονδήποτε από τους χαρακτήρες του συνόλου c1, c2 ,c3, ...

  • [c1-c2] ταυτοποιείται με οποιονδήποτε χαρακτήρα στο σύνολο ASCII (ή οποιαδήποτε κωδικοποιήση ισχύει στο σύστημα) που έχει τιμή ανάμεσα στις τιμές των χαρακτήρων c1, c2. Για παράδειγμα η παράσταση [a-zA-Z] παριστάνει οποιονδήποτε χαρακτήρα από το λατινικό αλφάβητο, αλλά όχι αριθμητικούς χαρακτήρες ή άλλα σύμβολα.

  • [^set] ταυτοποιείται με την άρνηση του συνόλου set. Για παράδειγμα το [^a-zA-Z] υποδηλώνει οποιονδήποτε χαρακτήρα εκτός από το λατινικό αλφάβητο (δηλαδή περιλαμβάνει και αριθμητικούς χαρακτήρες και άλλα σύμβολα).

{w1, w2, w3, ...}

Ταυτοποιείται με οποιαδήποτε από τις λέξεις w1, w2, w3, ...

\

Επισημαίνει το μεταχαρακτήρα που ακολουθεί, δηλαδή του αφαιρεί την ειδική λειτουργία και τον τυπώνει ως κανονικό χαρακτήρα. Για παράδειγμα, η παράσταση “*file\?” περιλαμβάνει το “?” ως κανονικό χαρακτήρα και αντιστοιχεί σε ονόματα όπως “thisfile?” ή “anotherfile?” αλλά όχι “somefiles”.



Χρειάζεται μεγάλη προσοχή στη χρήση των μεταχαρακτήρων, ειδικά του “*“ και όταν προσπαθείτε να διαγράψετε αρχεία. Για παράδειγμα ή εντολή rm -rf * σβήνει κάθε αρχείο στον τρέχοντα κατάλογο αλλά και στους περιεχόμενους καταλόγους!

  1. Ανακατεύθυνση Εισόδου/Εξόδου

Η κάθε εντολή ή πρόγραμμα που εκτελούμε χρησιμοποιεί κάποια πρότυπα αρχεία για επικοινωνία με το χρήστη. Ένα πρότυπο αρχείο εισόδου που μεταφέρει πληροφορίες από το χρήστη προς το πρόγραμμα και δύο πρότυπα αρχεία εξόδου που μεταφέρουν πληροφορίες από το πρόγραμμα προς το χρήστη. Το αρχείο εισόδου συναντάται πιο συχνά ως standard input ή stdin ενώ τα αρχεία εξόδου ως standard output ή stdout και standard error ή stderr. Το πρότυπο αρχείο λαθών (stderr) υπάρχει για να μπορούμε να διαχωρίσουμε τις αμιγείς πληροφορίες του προγράμματος (δηλαδή την πληροφορία που πραγματικά μας ενδιαφέρει) από τα μηνύματα λάθους που πιθανόν να προκύψουν κατά την εκτέλεση του.

Τα πρότυπα αρχεία αποτελούν συμβολισμούς που κάθε φορά αντιστοιχούν σε πραγματικά αρχεία, όπως για παράδειγμα το τερματικό σας, ένα αρχείο στο δίσκο, μια σειριακή θύρα, μια απομακρυσμένη σύνδεση TELNET, κλπ. Αν φυσικά χρησιμοποιείτε την εντολή διαλεκτικά σε ένα κέλυφος τα πρότυπα αρχεία αντιστοιχούν στην είσοδο και έξοδο του κελύφους (το πληκτρολόγιο και η οθόνη του τερματικού του κελύφους αντίστοιχα).

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

Ας υποθέσουμε ότι έχουμε ένα απλό πρόγραμμα στατιστικών το οποίο βγάζει τη μέση τιμή χρησιμοποιώντας τα στοιχεία που του δίνουμε στην είσοδο:

$ calcavg
Please enter data:
10.0
11.2
13.4
15.6
14.5
11.0
Average is = 12.62

Τώρα αν έχουμε κάνει κάποιο λάθος σε μία τιμή θα πρέπει να εισάγουμε ξανά όλες τις τιμές στο πρόγραμμα. Στο παράδειγμά μας αυτό δεν είναι και τόσο τραγικό, αλλά υπάρχουν περιπτώσεις όπου η εισαγωγή χιλιάδων πεδίων για δεύτερη φορά είναι μάλλον καταστροφικό γεγονός.

Και ακριβώς για αυτόν το λόγο θα πρέπει να χρησιμοποιήσουμε την ανακατεύθυνση εισόδου. Έστω ότι κατασκευάζουμε ένα αρχείο κειμένου data.txt με τα περιεχόμενα των τιμών:

10.0
11.2
13.4
15.6
14.5
11.0

Τώρα αρκεί να εκτελέσουμε το πρόγραμμα calcavg χρησιμοποιώντας το data.txt ως είσοδο:

$ calcavg < data.txt
Please enter data:
Average is = 12.62

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

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

$ sort -k 2 names.txt

Η εντολή αυτή θα μας τυπώσει στην πρότυπη έξοδο (stdout) την ταξινομημένη λίστα ονομάτων. Για να την ανακατευθύνουμε σε ένα αρχείο θα χρησιμοποιήσουμε το χαρακτήρα > :

$ sort -k 2 names.txt > sortednames.txt

Το αρχείο sortednames.txt περιέχει την ποθητή λίστα. (Σημείωση: η εντολή sort παρέχει μια επιλογή για απευθείας αποθήκευση των αποτελεσμάτων σε αρχείο την -o/--output που έχει το ίδιο αποτέλεσμα με την ανακατεύθυνση, βλ. σελ. 148).

Στην περίπτωση που το αρχείο sortednames.txt προϋπάρχει τα περιεχόμενά του θα διαγραφούν από τη νέα λίστα. Αν δε θέλουμε κάτι τέτοιο αλλά απλώς να προσθέσουμε μια νέα λίστα, θα πρέπει να χρησιμοποιήσουμε τους χαρακτήρες >>.

$ sort -k 2 names.txt >> sortednames.txt

Η ανακατεύθυνση του προτύπου αρχείου λαθών μπορεί να γίνει χρησιμοποιώντας το πρόθεμα 2 πριν το χαρακτήρα >. Δηλαδή η εντολή

$ command 2> errorfile

θα αποθηκεύσει πιθανά μηνύματα λάθους στο αρχείο errorfile. Αυτό είναι πολύ χρήσιμο ειδικά για προγράμματα που τρέχουν ως δαίμονες (daemons) και δεν είναι δυνατή η συνεχής παρακολούθησή τους σε ένα τερματικό.

Στο κέλυφος bash, είναι δυνατόν να ανακατευθύνουμε στο ίδιο αρχείο και το πρότυπο αρχείο εξόδου (stdout) και το πρότυπο αρχείο λαθών (stderr) χρησιμοποιώντας τη συντόμευση >&.

$ command >& logfile
  1. Σωληνώσεις

Ένας ακόμη τρόπος χρήσης της ανακατεύθυνσης είναι ο συνδυασμός των εντολών με διαύλους ή αγωγούς ή σωλήνες (pipes). Η συντακτική δομή ονομάζεται σωλήνωση (pipeline). Στην ουσία αυτό που επιτρέπουν οι σωληνώσεις είναι η χρήση του προτύπου αρχείου εξόδου μιας εντολής ως πρότυπο αρχείο εισόδου μιας άλλης εντολής. Αποφεύγεται έτσι η ενδιάμεση κατασκευή αρχείων που θα χρειαζόταν για να επεξεργαστούμε την έξοδο μιας εντολής μέσω μιας άλλης χωρίς μάλιστα να χρειάζεται ειδικός προγραμματισμός για τις εντολές αυτές.

Η χρήση της σωλήνωσης είναι αρκετά απλή. Μπορούμε να ορίσουμε μια σωλήνωση με τον τελεστή “|” ως εξής:

$ command1 | command2

Έτσι η έξοδος της εντολής command1 χρησιμοποιείται ως είσοδος στην εντολή command2. Ένα απλό παράδειγμα είναι η χρήση προγράμματος σελιδοποίησης (pager) όπως το more ή το less για να γίνει εφικτή η ανάγνωση κάποιων μακροσκελών αποτελεσμάτων ενός προγράμματος.

$ dpkg -l| less



Η σωλήνωση αυτή σελιδοποιεί την έξοδο του προγράμματος dpkg, το οποίο με την επιλογή -l, επιστρέφει τη λίστα όλων των πακέτων που είναι εγκατεστημένα στο σύστημα. Θα έχουμε μια πιο αναλυτική παρουσίαση και των δύο προγραμμάτων, της dpkg και της less, σε επόμενα κεφάλαια.

Εκτός από τις απλές σωληνώσεις, υπάρχουν και οι ονομαστικές σωληνώσεις αλλά το θέμα αυτό είναι σχετικά προχωρημένο και ξεφευγεί από τους σκοπούς αυτού του βιβλίου.

Η εντολή tee

Υπάρχουν περιπτώσεις που θέλουμε να ανακατευθύνουμε την έξοδο ενός προγράμματος σε ένα αρχείο αλλά θέλουμε ταυτόχρονα τη στείλουμε και για περαιτέρω επεξεργασία σε ένα άλλο πρόγραμμα. Η εντολή tee κάνει ακριβώς αυτό: αντιγράφει την είσοδό της στην έξοδο και ταυτόχρονα την αποθηκεύει σε ένα αρχείο.

$ command1 | tee file.log | command2

Η εντολή command1 στέλνει την έξοδό της στην tee, η οποία την αποθηκεύει με τη σειρά της σε ένα αρχείο file.log και ταυτόχρονα την αποστέλει – ως είσοδο πλέον – στην εντολή command2.

  1. Εργασίες στο προσκήνιο, παρασκήνιο

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

Μερικά προγράμματα όμως είναι σχεδιασμένα να τρέχουν συνεχώς και δεν αναμένεται ο τερματισμός τους, όπως, για παράδειγμα, προγράμματα διακομιστές αλληλογραφίας (mail servers) ή προγράμματα που έχουν σχεδιαστεί για πολύωρη επεξεργασία δεδομένων (π.χ. εξομοιώσεις φυσικών μοντέλων (physical modelling simulations). Η δέσμευση ενός τερματικού για την παρακολούθηση κάθε τέτοιου προγράμματος είναι περιττό φόρτο για το σύστημα, καθώς υπάρχουν πολλές τέτοιες διεργασίες που τρέχουν ανά πάσα στιγμή. Θα πρέπει λοιπόν να επινοηθεί ένας τρόπος να τρέχουν οι διεργασίες αυτές στο περιθώριο ή στο παρασκήνιο (background) χωρίς να είναι εμφανής η λειτουργία τους, χωρίς φυσικά αυτό να σημαίνει ότι θα χάνεται η επικοινωνία.

Ο τρόπος με το οποίο επιτυγχάνεται η εκτέλεση ενός προγράμματος στο παρασκήνιο είναι με τη χρήση του τελεστή &.

$ command &
[1] 3465
$

Η μορφή αυτή θα εκτελέσει την εντολή command ως εργασία παρασκηνίου με το διακριτικό [1]. Το διακριτικό είναι απαραίτητο γιατί μπορούμε να έχουμε περισσότερες από μία εργασίες παρασκηνίου στο ίδιο κέλυφος και μπορεί να θελήσουμε να φέρουμε μία από αυτές στο προσκήνιο ξανά. Ο δεύτερος αριθμός είναι ο αριθμός ταυτότητας της διεργασίας (process id – pid). Στις διεργασίες θα αναφερθούμε αναλυτικά στο κεφ. 14.

Πολλές φορές θα δούμε τον τελεστή να χρησιμοποιείται με δύο εντολές

$ command1 & command2

Στην περίπτωση αυτή, η πρώτη εντολή θα εκτελεστεί στο παρασκήνιο και η δεύτερη στο προσκήνιο.

Μπορούμε να δούμε τις υπάρχουσες εργασίες στο παρασκήνιο με την εντολή jobs. Εκτελώντας την εντολή, θα μας επιστρέψει μια λίστα με τις εργασίες, τα διακριτικά τους, τα ονόματά τους, και την κατάστασή τους δηλαδή αν είναι σε εξέλιξη ή σταματημένες:

$ command1 &
[1] 3465
$ command2 &
[2] 3466
$ jobs
[1]-  Running                 command1 &
[2]+  Running                 command2 &

Αν για κάποιο λόγο θέλουμε να επαναφέρουμε μία από τις εργασίες στο προσκήνιο αρκεί να εκτελέσουμε την εντολή fg (foreground) με το διακριτικό της εργασίας.

$ fg 1
command1

Αντίστροφα, μπορεί να θέλουμε να στείλουμε την τρέχουσα διεργασία στο παρασκήνιο, γιατί πιθανώς να περιμένει κάποια πληροφορία την οποία δεν έχουμε εύκαιρη και πρέπει να τρέξουμε κάποιο άλλο πρόγραμμα. Αυτό γίνεται με το συνδυασμό πλήκτρων [CTRL]-Ζ. Η διεργασία που βρίσκεται στο προσκήνιο τίθεται σε νάρκη και επιστρέφουμε στην προτροπή κελύφους. Έπειτα μπορούμε να ξαναφέρουμε την διεργασία στο προσκήνιο με την εντολή fg, ή να τη στείλουμε στο παρασκήνιο με την εντολή bg (background).

$ command
[CTRL-Z]
[1]+  Stopped                 command
$ bg
[1]+ command &

Όταν μια εργασία που βρίσκεται στο παρασκήνιο τερματίσει, θα εμφανιστεί το ακόλουθο μήνυμα στο κέλυφος:

[1]+  Done                    command
  1. Σύνδεση εντολών με τελεστές

Εκτός από τους τελεστές | και &, που είδαμε μέχρι τώρα, υπάρχουν και οι τελεστές ||, && και ;. Αυτοί συνδέουν δύο εντολές command1 και command2 έτσι ώστε η εκτέλεση της δεύτερης να εξαρτάται ή όχι από την εκτέλεση της πρώτης.

Για περισσότερες πληροφορίες για την επιτυχή ή ανεπιτυχή εκτέλεση ενός προγράμματος, ανατρέξατε στην ενότητα για τη διαχείριση των διεργασιών στο κεφ. 14 (σελ. 240).

  1. Συντομεύσεις

Το κέλυφος bash προσφέρει πολλές διευκολύνσεις για τη συντόμευση ορισμένων διαδικασιών και ειδικά τις σχετικές με την εισαγωγή ή επιλογή των εντολών.

Ιστορικό του κελύφους

Πολλές φορές έχει χρειαστεί να εισάγετε την ίδια ή περίπου την ίδια με αυτήν που εκτελέσετε το κέλυφος. Σε παλαιότερα κελύφη, όπως το κέλυφος Bourne, θα έπρεπε να γράψετε ξανά την ίδια εντολή. Αυτό όμως είναι χάσιμο χρόνου και πηγή εκνευρισμού καθώς ειδικά για περίπλοκες εντολές είναι πάντα πιθανό να γίνει κάποιο συντακτικό λάθος και να χρειαστεί να ξαναδώσετε την εντολή. Για το σκοπό αυτό όλα τα σύγχρονα κελύφη, ανάμεσά τους και το bash, υποστηρίζουν ιστορικό εντολών και κατά βούληση μετακίνηση σε αυτό.

Η μετακίνηση στο ιστορικό των εντολών μπορεί να γίνει με τα πάνω και κάτω βέλη του δρομέα (cursor). Μόλις βρείτε την εντολή που σας ενδιαφέρει μπορείτε είτε να την εκτελέσετε απευθείας πατώντας [ENTER] ή να την τροποποιήσετε, όπως ακριβώς θα αλλάζατε ένα κείμενο.

Αν η εντολή που αναζητείτε δε βρίσκεται στις αμέσως προηγούμενες εντολές, μπορείτε να χρησιμοποιήσετε την εντολή history για να δείτε όλο το ιστορικό των τελευταίων εντολών που έχετε δώσει. Οι εντολές θα είναι αριθμημένες (το προκαθορισμένο πλήθος για το ιστορικό του κελύφους bash στο Debian είναι 500) και με αυτόν τον τρόπο μπορείτε να τις καλέσετε χρησιμοποιώντας τον τελεστή “!”. Παράδειγμα, αν έχουμε κάνει μια αλλαγή στο αρχείο names.txt που χρησιμοποιήσαμε σε προηγούμενη ενότητα και θέλουμε να ταξινομήσουμε ξανά τα δεδομένα του:

$ history
[...]
   32  ls -l
   33  rm sortednames.txt
   34  vi names.txt
   35  sort -k 2 names.txt > sortednames.txt
   36  vi names.txt
$ !35
sort -k 2 names.txt > sortednames.txt
$

Αφού είδαμε το ιστορικών εντολών με τη history επιλέξαμε την εντολή με τον αριθμό 35 για να μην την πληκτρολογούμε ξανά και δώσαμε στο κέλυφος !35.

Για την αμέσως προηγούμενη εντολή, εκτός από τα βέλη του δρομέα μπορούμε να χρησιμοποιήσουμε και τον τελεστή !!.

$ sort -k 2 names.txt > sortednames.txt
$ !!
sort -k 2 names.txt > sortednames.txt

Η εντολή history μπορεί επίσης να χρησιμοποιηθεί και με την εντολή grep (για την οποία θα μιλήσουμε σε επόμενο κεφάλαιο):

$ history | grep sort
   33  rm sortednames.txt
   35  sort -k 2 names.txt > sortednames.txt
$

Αυτόματη ολοκλήρωση με TAB

Ένας ακόμη τρόπος να γλυτώσετε χρόνο είναι χρησιμοποιώντας την αυτόματη ολοκλήρωση εντολών και ονομάτων αρχείων (command completion και filename completion), πατώντας το πλήκτρο [TAB] (το πλήκτρο πάνω από το CAPS LOCK στα περισσότερα πληκτρολόγια). Αν ξεκινήσετε να γράφετε την εντολή, τότε πατώντας [TAB] θα συμβεί ένα από τα ακόλουθα:

Για παράδειγμα, αν γράψετε his και πατήσετε [TAB] το κέλυφος θα αναγνωρίζει ότι δεν υπάρχει άλλη εντολή που να αρχίζει με τα γράμματα his, εκτός από τη history, και θα τη συμπληρώσει μόνο του.

$ his[TAB]tory

Αντίθετα, αν γράψετε set και πατήσετε [TAB], το κέλυφος θα σας παρουσιάσει την εξής λίστα:

$ set
set          setfdprm     setkeycodes  setleds      setmetamode  setserial
setsid       setterm      settheme     setxkbmap
$ set

Το ίδιο σύστημα αυτόματης ολοκλήρωσης ισχύει και για τα ονόματα αρχείων.

Ψευδώνυμα (Aliases)

Τα ψευδώνυμα είναι εικονικές εντολές που αντιστοιχούν σε μια παράσταση με πραγματικές εντολές. Τα ψευδώνυμα δεν υφίστανται ως αρχεία στην πραγματικότητα αλλά το κέλυφος τις αναγνωρίζει και εκτελεί την παράσταση που έχετε ορίσει. Ο χειρισμός των ψευδωνύμων γίνεται με τις εξής εντολές:

Για παράδειγμα, μπορούμε να ορίσουμε τα εξής χρήσιμα ψευδώνυμα:

$ alias ls='ls –-color=auto' 
$ alias l='ls -CF'
$ alias ll='ls -la'
$ alias
alias ls='ls –-color=auto' 
alias l='ls -CF'
alias ll='ls -la'

Σημειώστε ότι η ls που βρίσκεται στα επόμενα ψευδώνυμα είναι η ίδια ψευδώνυμο, δηλαδή η πραγματική τιμή του ψευδωνύμου l είναι ls -–color=auto -CF.

Έτσι κάθε φορά που δίνετε ll θα βλέπετε μια αναλυτική παρουσίαση όλων των περιεχομένων ενός καταλόγου.

Υποκατάσταση Εντολών

Η υποκατάσταση εντολών (command substitution) αποτελεί μια συντακτική δομή του κελύφους, η οποία υποκαθιστά την ίδια την εντολή με την έξοδό της ως κείμενο. Για να χρησιμοποιήσετε την υποκατάσταση εντολών θα πρέπει να περικλείσετε την εντολή με δασείες ``.

Ένα παράδειγμα θα βοηθήσει περισσότερο στην κατανόηση αυτής της λειτουργίας:

$ echo “There are “ `who | wc -l` “ users logged in.”
There are 17 users logged in.

Σημειώστε ότι χρησιμοποιήσαμε μια εντολή με σωλήνωση εντός των δασειών. Πρακτικά, μπορείτε να χρησιμοποιήσετε οποιαδήποτε έγκυρη εντολή ή συνδυασμό εντολών εντός των δασειών.

  1. Μεταβλητές Περιβάλλοντος

Οι μεταβλητές περιβάλλοντος (environment variables) είναι μεταβλητές του κελύφους που ρυθμίζουν διάφορες λειτουργίες του ίδιου ή και άλλων διεργασιών. Οι μεταβλητές περιβάλλοντος κληρονομούνται από κάθε διεργασία που εκτελείται από το κέλυφος. Υπάρχουν ορισμένες προκαθορισμένες μεταβλητές που το κέλυφος ορίζει μόνο του, όπως η HOME, η TERM και η PATH που είδαμε σε προηγούμενη παράγραφο.

Για να υποκαταστήσετε τη μεταβλητή με τα περιεχόμενά της θα πρέπει να τη χρησιμοποιήσετε με τον τελεστή $ πρίν από το όνομα της μεταβλητής (και προαιρετικά περικλείοντάς τη σε αγκύλες {}):

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games
$ echo ${PATH}
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games

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

Ο ορισμός μιας μεταβλητή κελύφους γίνεται ως εξής:

$ var=value

Αυτή είναι μια τοπική μεταβλητή (όχι περιβάλλοντος) στην οποία έχει πρόσβαση μόνο το ίδιο το κέλυφος και δεν κληρονομείται στις διεργασίες που εκτελείτε από το κέλυφος. Η χρήση απλών μεταβλητών συναντάται κυρίως σε σενάρια κελύφους ή τη στιγμή της εκτέλεσης μιας εντολής. Π.χ. μπορείτε να ορίσετε ότι για μια συγκεκριμένη διεργασία η μεταβλητή PATH θα περιέχει και τον κατάλογο $HOME/bin ως εξής:

$ PATH=”$HOME/bin:$PATH” command

Η εντολή command θα έχει για διαδρομή PATH τον κατάλογο $HOME/bin επιπλέον της προκαθορισμένης διαδρομής. Σημειώστε ότι ορίσαμε την PATH να περιέχει και την προηγούμενη τιμή της, διαφορετικά η PATH θα ήταν ορισμένη ως $HOME/bin μόνο.

Μια μεταβλητή την μετατρέπετε σε μεταβλητή περιβάλλοντος “εξάγοντάς” τη με την εντολή export, είτε κατά τον ορισμό της ή αργότερα. Στο ακόλουθο παράδειγμα βλέπουμε την διαφορά της απλής (τοπικής) μεταβλητής από τη μεταβλητή περιβάλλοντος.

$ var=one
$ var2=two
$ export var2
$ sh 
$ echo $var $var2
two
$ exit
$ echo $var $var2
one two
  1. Εργαλεία βοηθείας

Το κέλυφος bash περιέχει πάρα πολλές δυνατότητες ακόμη στις οποίες δεν αναφερθήκαμε. Κάτι τέτοιο θα απαιτούσε ένα ολόκληρο βιβλίο από μόνο του. Πέρα από τη σχετική βιβλιογραφία που προτείνουμε στο τέλος του βιβλίου, μπορείτε να βρείτε πληροφορίες και μέσα από το ίδιο το λειτουργικό, χρησιμοποιώντας τα κατάλληλα εργαλεία. Τα κυριότερα είναι οι εντολές man, info και whatis.

Εντολή man

Ο κλασσικός τρόπος του UΝIX για να βρείτε πληροφορίες, οδηγίες ή οποιουδήποτε άλλου είδους βοήθεια για μια εντολή, αρχείο, κλήση συστήματος ή συσκευή είναι οι σελίδες οδηγιών (man pages) που μπορείτε να δείτε με την εντολή man. Η χρήση της είναι αρκετά απλή,

$ man command

και σας δείχνει μέσω ενός προγράμματος σελιδοποίησης (more ή less) τη σελίδα οδηγίων για την εντολή (αν υπάρχει).

Αν και αρκετά εύχρηστες οι σελίδες οδηγιών, έχουν αρχίσει να θεωρούνται ξεπερασμένες και πλέον περισσότερες πληροφορίες βρίσκονται στα κείμενα τεκμηρίωσης (info documents).

Κείμενα τεκμηρίωσης (info documents)

Τα κείμενα τεκμηρίωσης, παράγονται από το σύστημα texinfo, το οποίο είναι ένα ολοκληρωμένο σύστημα παραγωγής τεχνικών (ή όχι) κειμένων. Λόγω της μεγαλύτερης ευελιξίας του και περισσότερων δυνατοτήτων, μεγάλα κείμενα οδηγιών βρίσκονται πιο ενημερωμένα σε μορφή info παρά σε σελίδες οδηγιών (man pages). Παραδείγματα αποτελούν σχεδόν όλα τα εργαλεία GNU, όπως ο μεταγλωτιστής GCC, η εντολή make, αλλά και οι απλές εντολές του UNIX, όπως ls, tee, και άλλες.

Τα κείμενα τεκμηρίωσης μπορείτε να τα δείτε με αρκετούς τρόπους, με την εντολή info αλλά και με τα προγράμματα βοηθείας των KDE/GNOME τα οποία παρέχουν μια πιο φιλική στο χρήστη βοήθεια (βλ. εικόνες 75 και ).

Για την εντολή info, αρκεί να δώσετε όπως και με την εντολή man το όνομα της εντολής για την οποία χρειάζεστε βοήθεια:

$ info command


Εικόνα 75 Εμφάνιση κειμένων τεκμηρίωσης (info) στο KDE




Η εντολή whatis

Η εντολή whatis παρέχει απλώς μια σύντομη περιγραφή της εντολής ή γενικότερα του αντικειμένου για το οποίο ζητάμε πληροφορίες. Παράδειγμα:

$ whatis bash
bash (1)             - GNU Bourne-Again SHell



Κεφάλαιο 10 - Linux και αρχεία

  1. Τύποι αρχείων

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

Κοινά αρχεία

Τα κοινά αρχεία (regular files) είναι αυτά με τα οποία ασχολούμαστε συνεχώς, είτε είναι αρχεία κειμένου, ήχου, εικόνες, εκτελέσιμα προγράμματα, σενάρια κελύφους ή οτιδήποτε άλλο περιέχει δεδομένα. Για το Linux ένα αρχείο δεν είναι τίποτε άλλο παρά μια ακολουθία χαρακτήρων (bytes). Η απεικόνιση σε αποθηκευτική μονάδα μπορεί να διαφέρει σημαντικά αλλά ο τρόπος με τον οποίο το Linux “βλέπει” ένα αρχείο είναι ο ίδιος.

Κατάλογοι

Οι κατάλογοι αρχείων (folders ή directories) είναι δομές που περιέχουν τις απαραίτητες πληροφορίες για την ομαδοποίηση αρχείων. Οι κατάλογοι είναι απαραίτητοι για την δημιουργία ιεραρχίας σε ένα σύστημα αρχείων. Φυσικά δεν είναι μοναδικοί στο Linux, χρησιμοποιούνται σε όλα τα λειτουργικά συστήματα (Windows, MacOS, κλπ). Στη λίστα καταλόγου εμφανίζονται με το διακριτικό d.

Ειδικά αρχεία

Τα ειδικά αρχεία (special files) είναι αρχεία που παρέχουν πρόσβαση σε περιφερειακές συσκευές του συστήματος (devices). Όπως είπαμε, το Linux βλέπει ένα αρχείο μόνο ως μια ακολουθία χαρακτήρων. Το ίδιο ισχύει και για τις συσκευές. Το Linux προσφέρει έναν τρόπο επικοινωνίας με σχεδόν κάθε συσκευή, ο οποίος είναι βασισμένος σε χειρισμό αρχείων. Αναλόγως όμως με τον τύπο της συσκευής μπορεί το αντίστοιχο αρχείο μονάδας να είναι αρχείο χαρακτήρων ή block.

Η διαφορά των δύο τύπων αρχείων είναι στον τρόπο που γίνεται η μεταφορά δεδομένων. Στα δε αρχεία χαρακτήρων η μεταφορά γίνεται χαρακτήρα προς χαρακτήρα, ή καλύτερα byte προς byte, ενώ στα αρχεία block η μεταφορά δεδομένων γίνεται ανά δεσμίδες χαρακτήρων (block transfers). Συνήθως, τα μεγέθη των blocks είναι δυνάμεις του 2 (512, 1024, 2048, κοκ).

Οι πιο συνηθισμένες συσκευές που λειτουργούν με αρχεία block είναι οι σκληροί δίσκοι, τα CD-ROM, οι ταινίες και άλλα αποθηκευτικά μέσα, ενώ συσκευές που χρησιμοποιούν αρχεία χαρακτήρων είναι τα πληκτρολόγια, ποντίκια, οι εκτυπωτές, οι συσκευές τερματικών, τα modems, κλπ. Στη λειτουργία των αρχείων block βασίζεται η υλοποίηση των συστημάτων αρχείων (filesystems) κάθε λειτουργικού συστήματος και χωρίς αυτόν τον τύπο αρχείων δε θα ήταν δυνατή η αποθήκευση σε οποιοδήποτε μέσο, όχι τουλάχιστον με τη μορφή που έχουμε ως τώρα συνηθίσει. Τα ειδικά αρχεία που συνδέονται με συσκευές υλικού του συστήματος ονομάζονται και σημεία επαφής των συσκευών και συνήθως βρίσκονται στον κατάλογο /dev. Μπορούμε να ξεχωρίσουμε τα ειδικά αρχεία από τα κοινά αρχεία καθώς στη λίστα καταλόγου (με την εντολή ls) εμφανίζονται με το διακριτικό c τα αρχεία χαρακτήρωνκαι ή b τα αρχεία block:

# ls -l /dev/console /dev/sda
crw-------    1 root     tty        5,   1 2003-06-24 08:40 /dev/console
brw-rw----    1 root     disk       8,   0 2003-06-24 08:39 /dev/sda

Άλλοι τύποι

Υπάρχουν και άλλοι τύποι αρχείων πιο εξειδικευμένοι, όπως οι υποδοχείς ή στόμια (sockets), οι ονομαστικοί δίαυλοι (named pipes) και τα ρεύματα (streams). Οι υποδοχείς και τα ρεύματα είναι διαθέσιμα μόνο σε επίπεδο προγραμματισμού του λειτουργικού συστήματος και δεν είναι δυνατή η δημιουργία τους με κάποια εντολή καθώς δε θα εξυπηρετούσε κάποιο σκοπό. Τα αρχεία αυτά χρησιμοποιούνται για επικοινωνία και ανταλλαγή δεδομένων ανάμεσα σε διεργασίες.

Οι ονομαστικοί δίαυλοι είναι αρχεία που λειτουργούν όπως ακριβώς οι απλοί δίαυλοι αλλά μέσω ενός αρχείου το οποίο μεταφέρει την είσοδό του στην έξοδο του. Ονομάζονται αλλιώς και αρχεία FIFO (First In First Out), επειδή τα δεδομένα που εισέρχονται πρώτα εξέρχονται και πρώτα. Η δημιουργία ενός τέτοιου αρχείου γίνεται με την εντολή mknod. Ακολουθεί ένα παράδειγμα χρήσης ονομαστικού διαύλου:

$ mknod apipe p
$ ls -l apipe
prw-r--r--    1 feanor   users           0 2003-06-24 16:57 apipe
$ cat textfile >apipe &
$ less <apipe

Που είναι το ίδιο με το

$ cat textfile |less

Το αντίστοιχο διακριτικό για τους ονομαστικούς διαύλους είναι το p, ενώ για τα αρχεία υποδοχέων το s.

Σύνδεσμοι

Οι σύνδεσμοι (links) αρχείων είναι ειδικά αρχεία τα οποία δεν έχουν φυσική υπόσταση, δηλαδή δεν έχουν περιεχόμενα δικά τους που να τα καθιστούν ξεχωριστά αρχεία. Στην πραγματικότητα πρόκειται για καταχωρήσεις σε έναν κατάλογο αρχείων οι οποίες αποτελούνται από το όνομα και από έναν δείκτη στη φυσική θέση του πραγματικού αρχείου του οποίου είναι σύνδεσμοι. Έτσι όταν γίνεται προσπέλλαση στο σύνδεσμο, στην πραγματικότητα γίνεται στο πραγματικό αρχείο. Επειδή ο δείκτης του συνδέσμου αντιστοιχεί στη φυσική θέση του πραγματικού αρχείου (στην πραγματικότητα στον αριθμό του πληροφοριακού του κόμβου, i-node) θα πρέπει ο σύνδεσμος και το αρχείο να βρίσκονται στο ίδιο σύστημα αρχείων, ή στο ίδιο διαμέρισμα δίσκου, αν πρόκειται για σκληρό δίσκο.

Η δημιουργία ενός συνδέσμου σε ένα οποιοδήποτε αρχείο γίνεται με την εντολή ln:

$ touch afile
$ ls -l afile
-rw-r--r--    1 feanor   users           0 2003-06-24 18:46 afile
$ ln afile alink
$ ls -li afile alink
  16517 -rw-r--r--    2 feanor   users           0 2003-06-24 18:48 afile
  16517 -rw-r--r--    2 feanor   users           0 2003-06-24 18:48 alink

Στο παράδειγμα αυτό δημιουργήσαμε ένα σύνδεσμο alink που συνδέεται με το αρχείο afile. Όπως βλέπουμε από το αποτέλεσμα της εντολής ls -il (που δείχνει και τα i-nodes, δηλαδή τις φυσικές θέσεις των αρχείων στο δίσκο) το αρχείο alink έχει τον ίδιο πληροφοριακό κόμβο με το αρχείο afile του οποίου είναι σύνδεσμος. Δε θα ήταν δυνατόν άλλωστε να κατέχουν την ίδια φυσική θέση στο δίσκο αν το ένα δεν ήταν σύνδεσμος του άλλου. μπορεί να υπάρχουν περισσότεροι από ένας σύνδεσμοι στο αρχείο, αλλά δεν είναι δυνατή η διαγραφή του πραγματικού αρχείου όσο υπάρχουν σύνδεσμοι σε αυτό.

Οι σύνδεσμοι αυτού του τύπου καλούνται και σθεναροί σύνδεσμοι (hard links).

Συμβολικοί σύνδεσμοι

Πέρα από τους σθεναρούς συνδέσμους, που απαιτούν συνύπαρξη του αρχείου με το σύνδεσμο στο ίδιο σύστημα αρχείων, υπάρχουν και οι συμβολικοί ή χαλαροί σύνδεσμοι (symbolic links ή soft links). Στους συμβολικούς συνδέσμους η αντιστοίχιση αρχείου-συνδέσμου γίνεται με την διαδρομή του αρχείου και όχι με τον πληροφοριακό κόμβο του. Επομένως, δεν είναι ανάγκη η συνύπαρξη αρχείου-συνδέσμου στο ίδιο σύστημα αρχείων.

Μια ακόμη διαφορά με τους σθεναρούς συνδέσμους είναι ότι είναι δυνατή η διαγραφή ή η αντικατάσταση του πραγματικού αρχείου με κάποιο άλλο χωρίς να διαγράψουμε όλους τους συνδέσμους του προηγουμένως. Βέβαια, χωρίς την απαραίτητη προσοχή, αυτό μπορεί να οδηγήσει σε νεκρούς συνδέσμους (dead links), δηλαδή σε συνδέσμους που δεν οδηγούν σε κάποιο αρχείο, γεγονός που πιθανόν να δημιουργήσει προβλήματα σε όποιο πρόγραμμα προσπαθήσει να προσπελάσει το σύνδεσμο.

Το προηγούμενο παράδειγμα γίνεται ως εξής με τη χρήση συμβολικών συνδέσμων – προσέξατε την επιλογή -s στην εντολή ln:

$ touch afile
$ ls -l afile
-rw-r--r--    1 feanor   users           0 2003-06-24 18:46 afile
$ ln -s afile alink
$ ls -li afile alink
  16517 -rw-r--r--    1 feanor   users           0 2003-06-24 18:48 afile
  16524 lrwxrwxrwx    1 feanor   users           5 2003-06-24 20:01 alink -> afile

Καταρχάς, παρατηρούμε ότι το αρχείο συνδέσμου δεν έχει πλέον την ίδια φυσική θέση με το πραγματικό αρχείο, καθώς πρόκειται για νέα καταχώρηση στον κατάλογο. Επιπλέον, είναι εμφανές από το χαρακτήρα l που εμφανίζεται στην αρχή της γραμμής αλλά και από την ένδειξη alink -> afile, ότι πρόκειται για συμβολικό σύνδεσμο. Από αυτήν την άποψη, είναι ίσως προτιμότερη η χρήση των συμβολικών συνδέσμων, γιατί σε μία λίστα καταλόγου είναι άμεσα εμφανές ποια αρχεία είναι σύνδεσμοι και ποια είναι πραγματικά αρχεία.

  1. Ονοματολογία στο Linux

Γενικά, τα ονόματα των αρχείων μπορούν να είναι οτιδήποτε, αλλά υπάρχουν κάποιοι κανόνες που πρέπει να ακολουθούν:

  1. Το κάθε όνομα δε μπορεί να είναι μεγαλύτερο από 255 χαρακτήρες ενώ η απόλυτη διαδρομή του αρχείου δεν πρέπει να υπερβαίνει τους 4095 χαρακτήρες. Αυτά είναι ασφαλή όρια και πολύ σπάνια έχουν διαπιστωθεί προβλήματα με το μήκος ονόματος αρχείου.

  2. Τα κεφαλαία γράμματα θεωρούνται διαφορετικά από τα πεζά, οπότε αν υπάρχουν δύο αρχεία με τα ονόματα π.χ. afile και AFILE αυτά θεωρούνται διαφορετικά αρχεία.

  3. Μπορούν να περιέχουν οποιονδήποτε χαρακτήρα, αν και δε συνιστάται η χρήση των μεταχαρακτήρων #, $, των απλών ή διπλών εισαγωγικών (' ', “ ”) ή του χαρακτήρα / που δρα ως διαχωριστικό καταλόγων.

Καταλήξεις αρχείων στο Linux

Σε πολλά λειτουργικά συστήματα τα ονόματα αρχείων έχουν μια κατάληξη που υποδηλώνει το είδος ή τον τύπο του αρχείου. Η κατάληξη αυτή είναι συνήθως από δύο ως τέσσερα γράμματα (π.χ. ps, jpg ή mpeg) και χωρίζονται από το κυρίως όνομα με μια τελεία. Το Linux υποστηρίζει αυτήν το χαρακτηριστικό αλλά δεν το απαιτεί. Για την ακρίβεια, το σύστημα αρχείων δεν ενδιαφέρεται για τις καταλήξεις των αρχείων ή αν υπάρχουν καταλήξεις. Οι καταλήξεις αρχείων υπάρχουν κυρίως για τους χρήστες και τα προγράμματα που τις απαιτούν.

Βέβαια, επειδή είναι αρκετά σύνηθες να συνοδεύονται τα αρχεία και από μια κατάληξη που δηλώνει τον τύπο τους, έχουν επινοηθεί ολόκληροι μηχανισμοί, όπως το σύστημα MIME (Multipurpose Internet Mail Extensions) που συνδέει έναν τύπο αρχείου με τις αντίστοιχες εφαρμογές και προγράμματα που διαχειρίζονται το συγκεκριμένο τύπο. Το Debian υποστηρίζει πλήρως τέτοιου είδους μηχανισμούς είτε μέσω των γραφικών περιβάλλοντων KDE και GNOME είτε με επιπλέον πακέτα που διατίθενται με την διανομή.

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



Κατάληξη

Είδος αρχείου

.bz2

Αρχείο συμπιεσμένο με το πρόγραμμα bzip2.

.c

Αρχείο πηγαίου κώδικα της γλώσσας προγραμματισμού C.

.cpp/.cxx/.c++

Αρχείο πηγαίου κώδικα της γλώσσας προγραμματισμού C++.

.conf/.cfg/.config

Αρχείο παραμετροποίησης ή ρύθμισης κάποιας εφαρμογής. Συνήθως βρίσκονται στον κατάλογο /etc.

.d

Συνήθως υποδηλώνει κάποιον κατάλογο με ιδιαίτερη σημασία, π.χ. cron.d, init.d. Συνήθως βρίσκονται στον κατάλογο /etc.

.deb

Πακέτο λογισμικού της διανομής Debian.

.gz

Αρχείο συμπιεσμένο με το πρόγραμμα gzip.

.lock/.LCK

Αρχείο που υποδηλώνει την παρούσα δέσμευση κάποιου πόρου (π.χ. modem). Συνήθως βρίσκονται στον κατάλογο /var/lock.

.log

Αρχείο ημερολογίου της διεργασίας που φέρει το όνομα του αρχείου. Συνήθως βρίσκονται στον κατάλογο /var/log.

.pid

(Process id) Αρχείο που περιέχει τον αριθμό της διεργασίας που φέρει το όνομα του αρχείου. Συνήθως βρίσκονται στον κατάλογο /var/run.

.rpm

Πακέτο λογισμικού της διανομής RedHat.

.so

(Shared Object) Βιβλιοθήκη για δυναμικό δεσμό (dynamic linking). Συνήθως βρίσκονται στους κατάλογους /lib, /usr/lib.

.tar

Αρχειοθήκη (archive) που δημιουργήθηκε με το πρόγραμμα tar.

.tar.bz2/.tbz

Αρχειοθήκη TAR που συμπιέστηκε με το πρόγραμμα bzip2.

.tar.gz/.tgz

Αρχειοθήκη TAR που συμπιέστηκε με το πρόγραμμα gzip.

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

  1. Χρήστες και αρχεία

Έχουμε ήδη αναφέρει ότι το Linux είναι πολυχρηστικό σύστημα. Αυτό σημαίνει ότι στο ίδιο σύστημα συνυπάρχουν περισσότεροι από ένας χρήστες, ο καθένας από τους οποίους έχει δικό του χώρο στο σύστημα αρχείων, προσβάσιμο μόνο από τον ιδιοκτήτη και φυσικά από το χρήστη root. Αυτό φυσικά ισχύει για όλα τα αρχεία που βρίσκονται στον ιδιαίτερο χώρο του κάθε χρήστη. Αυτό επιτυγχάνεται δηλώνοντας σε κάθε αρχείο ορισμένα πεδία που αφορούν την προσπέλαση σε αυτά. Τα πεδία αυτά είναι το όνομα, ή για την ακρίβεια, το διακριτικό του ιδιοκτήτη (user id) και της ομάδας (group id) καθώς και συγκεκριμένες άδειες προσπέλασης (protection bits) για τον ιδιοκτήτη, τους χρήστες της ομάδας στην οποία ανήκει το αρχείο αλλά και όλους τους υπόλοιπους χρήστες.

Ιδιοκτήτης και ομάδες

Ο ιδιοκτήτης ενός αρχείου έχει πλήρη πρόσβαση στα δεδομένα του και πέρα από το χρήστη root είναι ο μόνος που μπορεί να αλλάξει τις άδειες προσπέλασης του αρχείου. Πέρα από τον ιδιοκτήτη, για κάθε αρχείο μπορούμε να ορίσουμε μια ομάδα χρηστών η οποία να έχει κάποιες ξεχωριστές από τον ιδιοκτήτη άδειες προσπέλασης. Με βάση αυτές τις άδειες, κάθε χρήστης που ανήκει στην προκείμενη ομάδα μπορεί να προσπελάσει ή όχι το αρχείο.

Σε ορισμένα από τα παραδείγματα στον παρόντα οδηγό, έχουμε χρησιμοποιήσει την εντολή ls. Οι πιο προσεκτικοί θα παρατηρήσατε ίσως κάποιο όνομα χρήστη και κάποια ομάδα στο αποτέλεσμα της εντολής:

$ touch afile
$ ls -l afile
-rw-r--r--    1 feanor   users           0 2003-06-24 18:46 afile

Βλέπουμε ότι το αρχείο afile ανήκει στο χρήστη feanor και στην ομάδα users. Μπορείτε να αλλάξετε τον ιδιοκτήτη του αρχείου με την εντολή chown και την ομάδα του αρχείου με την εντολή chgrp. Για λόγους ασφαλείας αυτές οι μεταβολές μπορούν να γίνουν μόνο από το χρήστη root.

$ chown root afile
$ chgrp bin afile

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

$ chown root.bin afile

Το αποτέλεσμα είναι το ίδιο:

$ ls -l afile
-rw-r--r--    1 root     bin             0 2003-06-24 18:46 afile

Και οι δύο εντολές δέχονται κάποιες επιλογές, οι οποίες αλλάζουν τη συμπεριφορά τους.

Γενικά η σύνταξή τους είναι:

chown OWNER[.GROUP] [OPTIONS] FILELIST
chown GROUP [OPTIONS] FILELIST

Επιλογές

Λειτουργία

-c
--changes

Εμφανίζει πληροφορίες για τα αρχεία που μεταβάλλονται μόνο όταν υπάρχουν αλλαγές.

--reference=file

Χρησιμοποιεί ως αναφορά το αρχείο file και τον ιδιοκτήτη ή την ομάδα του.

-r
--recursive

Εφαρμόζει τις αλλαγές αναδρομικά στους καταλόγους και τα περιεχόμενά τους.

-v
--verbose

Το ίδιο με την επιλογή -c, αλλά εμφανίζει τις πληροφορίες πάντα, όχι μόνο όταν υπάρχουν αλλαγές.



Άδειες προσπέλασης

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

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

Όσον αφορά τις βασικές άδειες προσπέλασης, αυτές είναι η ανάγνωση (read), η εγγραφή (write) και η εκτέλεση (execution). Το κάθε αρχείο, λοιπόν, ορίζει από μόνο του στο σύστημα ποιοι χρήστες έχουν άδεια να το διαβάσουν, να γράψουν σε αυτό ή να το εκτελέσουν. Κάθε άδεια προσπέλασης απεικονίζεται με ένα χαρακτήρα, r για την άδεια ανάγνωσης, w για την άδεια εγγραφής και x για την άδεια εκτέλεσης. Έτσι για κάθε μία από τις τρεις κατηγορίες αδειών, έχουμε τρεις άδειες προσπέλασης, ώστε τελικά να έχουμε έναν πίνακα από 9 χαρακτήρες στον οποίο να απεικονίζεται η πλήρης εικόνα της προσπέλασης κάθε χρήστη σε κάποιο αρχείο. Τέτοιους πίνακες έχουμε ήδη δει στα παραδείγματα που χρησιμοποιήσαμε την εντολή ls:

$ ls -l afile
-rw-r--r--    1 root     bin             0 2003-06-24 18:46 afile

Οι άδειες προσπέλασης για το αρχείο afile είναι -rw-r--r--, δηλαδή άδεια ανάγνωσης και εγγραφής για τον ιδιοκτήτη (δηλαδή το χρήστη root), άδεια ανάγνωσης για την ομάδα του χρήστη (ομάδα bin) και άδεια ανάγνωσης για τους υπόλοιπους. Ο πρώτος χαρακτήρας είναι για την αναγνώριση του τύπου του αρχείου.

Άδειες προσπέλασης καταλόγου

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

Ειδικές άδειες προσπέλασης

Πέρα από τις βασικές άδειες προσπέλασης, υπάρχουν και οι ειδικές που είναι χρήσιμες κυρίως σε αρχεία που είναι σχετικά με τη διαχείριση του συστήματος.

Bit Ταυτότητας Χρήστη

Αυτή η άδεια προσπέλασης (set-uid bit) έχει νόημα μόνο σε εκτελέσιμα αρχεία. Όταν είναι ενεργοποιημένη, κατά τη διάρκεια εκτέλεσης του προγράμματος, ισχύουν οι άδειες προσπέλασης του ιδιοκτήτη του αρχείου και όχι του χρήστη που εκτελεί το πρόγραμμα. Πρακτικά, αυτό σημαίνει ότι ένας χρήστης μπορεί να προσπελάσει κάποια αρχεία στα οποία κανονικά δε θα είχε πρόσβαση, μέσω κάποιου άλλου εκτελέσιμου προγράμματος που ανήκει σε χρήστη που έχει πρόσβαση στα αρχεία αυτά. Παριστάνεται με το χαρακτήρα s και αντικαθιστά την άδεια εκτέλεσης x στον πίνακα των αδειών προσπέλασης.

Ένα αρχείο που έχει ενεργοποιημένη το bit ταυτότητας χρήστη θα φαίνεται ως εξής στη λίστα καταλόγου:

$ ls -l file
-rwsr-xr-x    1 feanor   users         345 2003-06-24 23:42 file
Bit Ταυτότητας Ομάδος

Το bit ταυτότητας ομάδος (set-gid bit) λειτουργεί με τον ίδιο τρόπο όπως το bit ταυτότητας χρήστη, μόνο που τώρα ισχύουν οι άδειες προσπέλασης της ομάδας στην οποία ανήκει το αρχείο. Παριστάνεται επίσης με το χαρακτήρα s:

$ ls -l file
-rwxr-sr-x    1 feanor   users         345 2003-06-24 23:42 file
Bit Παραμονής

Το bit παραμονής (sticky bit) δε χρησιμοποιείται στο Linux. Σε παλαιότερα συστήματα UNIX καθιστούσε το προκείμενο αρχείο μονίμως φορτωμένο στη μνήμη του συστήματος (resident). Παριστάνεται με το χαρακτήρα t.

Η εντολή chmod

Για να αλλάξετε τις άδειες προσπέλασης ενός αρχείου, μπορείτε να χρησιμοποιήσετε την εντολή chmod, μόνο αν είστε ο ιδιοκτήτης του ή ο χρήστης root. Υπάρχουν δύο τρόποι εκτέλεσης της εντολής: ο συμβολικός και ο απόλυτος.

Συμβολικός τρόπος εκτέλεσης chmod

Ο συμβολικός χρησιμοποιεί συνδυασμούς χαρακτήρων και των τελεστών +, -, = για να καθορίσει τις ζητούμενες άδειες προσπέλασης στο αρχείο. Ο απόλυτος επιτυγχάνει το ίδιο αποτέλεσμα με τη χρήση των οκταδικών κωδικών που αντιστοιχούν στο σύνολο των συγκεκριμένων αδειών προσπέλασης.

Η σύνταξη της chmod με το συμβολικό τρόπο εκτέλεσης είναι η εξής:

chmod [OPTIONS] GROUP ACTION PERMISSIONS FILELIST

Οι επιλογές είναι οι ίδιες με των εντολών chown και chgrp:



Επιλογές

Λειτουργία

-c
--changes

Εμφανίζει πληροφορίες για τα αρχεία που μεταβάλλονται μόνο όταν υπάρχουν αλλαγές.

--reference=file

Χρησιμοποιεί ως αναφορά το αρχείο file και τις αντίστοιχες άδειες προσπέλασης.

-r
--recursive

Εφαρμόζει τις αλλαγές αναδρομικά στους καταλόγους και τα περιεχόμενά τους.

-v
--verbose

Το ίδιο με την επιλογή -c, αλλά εμφανίζει τις πληροφορίες πάντα, όχι μόνο όταν υπάρχουν αλλαγές.



Όσον αφορά το GROUP, αυτό μπορεί να είναι οποιοσδήποτε συνδυασμός των χαρακτήρων u, g, o, που αντιστοιχούν στις κατηγορίες αδειών προσπέλασης του ιδιοκτήτη (user), της ομάδος (group) και των υπολοίπων (others) ή ο χαρακτήρας a, που αντιστοιχεί σε όλες τις κατηγορίες (all).

Η λέξη ACTION μπορεί να είναι ένας εκ των τελεστών +, -, =.

Τελεστής

Λειτουργία

+

Προσθέτει την άδεια προσπέλασης στις υπάρχουσες του αρχείου.

-

Αφαιρεί την άδεια προσπέλασης από τις υπάρχουσες του αρχείου.

=

Ορίζει τις άδειες προσπέλασης του αρχείου στις δοθείσες, διαγράφοντας τις υπάρχουσες.



Ενώ τα PERMISSIONS είναι οι ίδιες οι άδειες προσπέλασης και μπορεί να είναι μια εκ των παρακάτω:

Άδεια

Λειτουργία

-

Να μην οριστούν οι άδειες προσπέλασης.

u

Να οριστούν οι άδειες όπως είναι οι άδειες προσπέλασης για τον ιδιοκτήτη του αρχείου.

g

Να οριστούν οι άδειες όπως είναι οι άδειες προσπέλασης για την ομάδα του αρχείου.

o

Να οριστούν οι άδειες όπως είναι οι άδειες προσπέλασης για τους υπόλοιπους.

r

Άδεια ανάγνωσης.

w

Άδεια εγγραφής.

x

Άδεια εκτέλεσης.

s

Bit ταυτότητας χρήστη ή ομάδος.

t

Bit παραμονής του αρχείου.



Για παράδειγμα, αν θέλουμε να ορίσουμε ένα αρχείο αναγνώσιμο και εκτελέσιμο από όλους τους χρήστες, μπορούμε να δώσουμε:

$ ls -l file
-rwx------    1 feanor   users         345 2003-06-24 23:42 file
$ chmod a=rx file
$ ls -l file
-r-xr-xr-x    1 feanor   users         345 2003-06-24 23:42 file

Ενώ αν θέλουμε να ορίσουμε το αρχείο αναγνώσιμο και εγγράψιμο και από την ομάδα του και από τους υπόλοιπους χρήστες:

$ ls -l file
-rw-------    1 feanor   users         345 2003-06-24 23:42 file
$ chmod go+w file
$ ls -l file
-rw-rw-rw-    1 feanor   users         345 2003-06-24 23:42 file
Απόλυτος τρόπος εκτέλεσης chmod

Με τον τρόπο αυτό εκτελούμε την εντολή chmod με την εξής σύνταξη:

chmod [OPTIONS] NUMBER FILELIST

Ο αριθμός NUMBER είναι ένας οκταδικός αριθμός που αντιστοιχεί στις άδειες προσπέλασης του αρχείου ή των αρχείων που θέλουμε να τροποποιήσουμε.

Αποτελείται από τρία ή τέσσερα ψηφία καθένα από τα οποία λαμβάνει την τιμή του σύμφωνα με τον ακόλουθο πίνακα:

Τιμή Ψηφίου

Λειτουργία

4

Άδεια ανάγνωσης.

2

Άδεια εγγραφής.

1

Άδεια εκτέλεσης.

0

Καμία άδεια προσπέλασης.



Η τιμή του ψηφίου λαμβάνεται από την πρόσθεση των τιμών των αντιστοίχων αδειών. Δηλαδή, η τιμή για ανάγνωση και εγγραφή είναι 4+2 = 6.

Επειδή πρόκειται για τρεις κατηγορίες αδειών προσπέλασης, θα έχουμε το ελάχιστο τρία ψηφία, που θα περιγράφουν αντίστοιχα τις άδειες προσπέλασης του ιδιοκτήτη, της ομάδας στην οποία ανήκει το αρχείο και των υπολοίπων χρηστών. Έτσι, για να ορίσουμε ένα αρχείο αναγνώσιμο, εγγράψιμο και εκτελέσιμο (4 + 2 + 1 = 7) από τον ιδιοκτήτη του, αλλά μόνο αναγνώσιμο και εκτελέσιμο (4 + 1 = 5) για την ομάδα και τους υπόλοιπους χρήστες, μπορούμε να δώσουμε την εντολή:

$ chmod 755 file
$ ls -l file
-rwxr-xr-x    1 feanor   users         345 2003-06-24 23:42 file

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

Τιμή 4ου Ψηφίου

Λειτουργία

4

Bit ταυτότητας χρήστη (set-uid bit).

2

Bit ταυτότητας ομάδος (set-gid bit).

1

Bit παραμονής (sticky bit)

0

Καμία ειδική άδεια προσπέλασης.



Σημείωση: το 4ο ψηφίο μπαίνει στην αρχή του αριθμού και όχι στο τέλος, δηλαδή αν θέλουμε να ορίσουμε και το bit ταυτότητας χρήστη στο προηγούμενο παράδειγμα, θα πρέπει να δώσουμε:

$ chmod 4755 file

$ ls -l file

-rwsr-xr-x 1 feanor users 345 2003-06-24 23:42 file



Στο σημείο αυτό, μπορούμε πλέον να συνοψίσουμε τη σημασία του πρώτου χαρακτήρα στο αποτέλεσμα της εντολής ls στον ακόλουθο πίνακα:

Χαρακτήρας

Τύπος αρχείου

-

Κοινό αρχείο.

d

Κατάλογος (directory).

l

Συμβολικός σύνδεσμος (symbolic link).

p

Ονομαστικός δίαυλος (named pipe).

b

Ειδικό αρχείο block (block special file).

c

Ειδικό αρχείο χαρακτήρων (character special file).



Κεφάλαιο 11 - Συνηθισμένες λειτουργίες σε αρχεία και καταλόγους

Όπως κάθε λειτουργικό σύστημα UNIX, έτσι και το Linux παρέχει πολλές εντολές και εργαλεία για διαχείριση αρχείων. Οι εντολές αυτές είναι προσβάσιμες μόνο από τη γραμμή εντολών του κελύφους, αν και φυσικά μπορούν να χρησιμοποιήθούν από σενάρια κελύφους που πιθανόν θα εκτελούνται ως εφαρμογές από κάποιο γραφικό περιβάλλον εργασίας. Στο κεφάλαιο αυτό θα αναφέρουμε μόνο ορισμένες από τις βασικές εντολές που θα χρειαστείτε στα πρώτα σας βήματα στο Linux. Για περισσότερες πληροφορίες σχετικά με το πλήθος των διαθέσιμων εντολών, θα πρέπει να ανατρέξετε σε κάποιο βιβλίο αναφοράς του Linux ή του UNIX γενικότερα (βλ. βιβλιογραφία).

  1. Αντιγραφή αρχείων

Με την αντιγραφή αρχείων μπορούμε να πάρουμε ένα αρχείο (το αρχείο προέλευσης ή source file) και να αντιγράψουμε τα δεδομένα του σε ένα νέο αρχείο (το αρχείο προορισμού, target file) χωρίς να πειράξουμε το αρχείο προέλευσης. Θα έχουμε έτσι δύο πανομοιότυπα αρχεία με διαφορετικά ονόματα.

Για την αντιγραφή αρχείων χρησιμοποιείται η εντολή cp. Ανάλογα με τις επιλογές, το αποτέλεσμα της εντολής μπορεί να ποικίλει. Γενικά, η σύνταξή της είναι αρκετά απλή:

cp [OPTIONS] source target

ή για την αντιγραφή πολλών αρχείων σε ένα κατάλογο

cp [OPTIONS] filelist ... directory

όπου source το αρχείο ή ο κατάλογος προέλευσης και target το αρχείο ή κατάλογος προορισμού, ή για το δεύτερο τρόπο σύνταξης, filelist είναι η λίστα των αρχείων προέλευσης και directory το όνομα του καταλόγου στον οποίο θα αντιγραφούν όλα τα αρχεία που δίνονται στη λίστα.

Οι επιλογές που μπορεί να δεχτεί η εντολή είναι οι εξής:

Επιλογές

Λειτουργία

-a
--archive

Πραγματοποιεί ένα ακριβές αντίγραφο του αρχείου ή του καταλόγου που δίνεται ως source. Έχει το ίδιο αποτέλεσμα με τη χρήση των επιλογών -dpR.

-b
--backup

Πραγματοποιεί ένα αντίγραφο ασφαλείας οποιονδήποτε ήδη υπαρχόντων αρχείων προέλευσης.

--no-dereference

Αντιγράφει το συμβολικό δεσμό και όχι το αρχείο στο οποίο δείχνει ο σύνδεσμος.

-f
--force

Αντικατάσταση των υπαρχόντων αρχείων προορισμού.

-i
--interactive

Διαλογική αντιγραφή αρχείων. Ο χρήστης ερωτάται για κάθε αρχείο που πρόκειται να αντικατασταθεί.

-p
--preserve

Διατήρηση των αδειών προσπέλασης και των ιδιοκτητών των αρχείων προέλευσης στα αρχεία προορισμού.

-r, -R
--recursive

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

-s
--symbolic-link

Δημιουργία συμβολικών συνδέσμων αντί για πραγματική αντιγραφή αρχείων.

-u
--update

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

-v
--verbose

Αναλυτική περιγραφή της διαδικασίας της αντιγραφής.



Για καλύτερη κατανόηση, παραθέτουμε ορισμένα παραδείγματα χρήσης της εντολής cp:

$ cp -pv *.txt texts

Αντιγράφει όλα τα αρχεία με κατάληξη .txt στον κατάλογο texts (αν υπάρχει), διατηρώντας όλες τις άδειες προσπέλασης και τους ιδιοκτήτες, δίνοντας ταυτόχρονα αναλυτική περιγραφή της διαδικασίας.

$ cp -a Source /tmp/newSource

Δημιουργεί ένα ακριβές αντίγραφο ολόκληρου του καταλόγου Source (μαζί με τα περιεχόμενά του) στον κατάλογο /tmp/newSource.

$ cp -u /var/log/*.log /backup/var/log

Αντιγράφει μόνο τα νεώτερα αρχεία με κατάληξη .log του καταλόγου /var/log στον κατάλογο /backup/var/log.

$ cp -vR ${HOME}/Mail /tmp/OldMails

Αντιγράφει αναδρομικά όλα τα αρχεία του καταλόγου Mail που βρίσκεται στον κατάλογο $HOME του χρήστη στον κατάλογο /tmp/OldMails, δίνοντας ταυτόχρονα αναλυτική περιγραφή της διαδικασίας.

  1. Μετακίνηση Αρχείων

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

mv [OPTIONS] source target

ή για τη μετακίνηση πολλών αρχείων σε ένα κατάλογο

mv [OPTIONS] filelist ... directory

Αν το αρχείο προορισμού target δεν υπάρχει τότε γίνεται μια απλή μετονομασία του αρχείου προέλευσης στο αρχείο προορισμού. Αν υπάρχει τότε γίνεται αντικατάσταση του αρχείου προορισμού (εκτός αν είναι ενεργοποιημένη η επιλογή -b). Οι επιλογές που δέχεται η εντολή mv είναι παρόμοιες με της εντολής cp:

Επιλογές

Λειτουργία

-b
--backup

Πραγματοποιεί ένα αντίγραφο ασφαλείας οποιονδήποτε ήδη υπαρχόντων αρχείων προέλευσης.

-f
--force

Αντικατάσταση των υπαρχόντων αρχείων προορισμού.

-i
--interactive

Διαλογική μετακίνηση αρχείων. Ο χρήστης ερωτάται για κάθε αρχείο που πρόκειται να αντικατασταθεί.

-u
--update

Μετακίνηση μόνο των αρχείων προέλευσης που είναι νεώτερα από τα αρχεία προορισμού ή όταν τα αρχεία προορισμού δεν υπάρχουν.

-v
--verbose

Αναλυτική περιγραφή της διαδικασίας της μετακίνησης.



Ακολουθούν παραδείγματα χρήσης της εντολής:

$ mv afile newfile

Μετονομάζει το αρχείο afile σε newfile (η αντίστοιχη της εντολής ren σε άλλα λειτουργικά συστήματα).

$ mv -i *.c sourcecode

Μετακινεί όλα τα αρχεία πηγαίου κώδικα γλώσσας C που βρίσκονται στον τρέχοντα κατάλογο, στον κατάλογο sourcecode, ρωτώντας το χρήστη πριν αντικαταστήσει κάποιο υπάρχον αρχείο.

  1. Δημιουργία καταλόγων

Για καλύτερη οργάνωση των αρχείων σας μπορείτε να δημιουργήσετε καταλόγους κατά βούληση. Η διαδικασία είναι αρκετά απλή και χρησιμοποιεί την εντολή mkdir, η σύνταξη της οποίας είναι η εξής:

mkdir [OPTIONS] directorylist ...

όπου directorylist, το όνομα του καταλόγου ή τα ονόματα των καταλόγων που επιθυμείτε να δημιουργήσετε.

Ως επιλογές μπορείτε να χρησιμοποιήσετε τις εξής:

Επιλογές

Λειτουργία

-m
--mode=MODE

Χρησιμοποιεί τις δοθείσες άδειες προσπέλασης MODE (σε οκταδική μορφή, βλ. κεφ. 10).

-p
--parents

Δημιουργεί και τους γονικούς καταλόγους αν δεν υπάρχουν (βλ. παραδείγματα).

-v
--verbose

Αναλυτική περιγραφή της διαδικασίας της δημιουργίας καταλόγου.



Παράδειγμα:

$ mkdir -p --mode=750 levelone/leveltwo/levelthree

Στο παράδειγμα αυτό, ζητάμε από τη mkdir να δημιουργήσει τον κατάλογο levelthree που όμως βρίσκεται κάτω από τους καταλόγους levelone και leveltwo. Εφόσον δεν υπάρχουν οι δύο τελευταίοι, και επειδή έχουμε δώσει την επιλογή -p θα τους δημιουργήσει και αυτούς. Οι δημιουργηθέντες κατάλογοι θα έχουν άδειες προσπέλασης 744 ή συμβολικά rwxr-x---.

  1. Διαγραφή αρχείων/καταλόγων

Για τη διαγραφή αρχείων ή καταλόγων χρησιμοποιείται η εντολή rm. Η σύνταξή της είναι η εξής:

rm [OPTIONS] filelist ...

όπου filelist η λίστα αρχείων ή/και καταλόγων που επιθυμείτε να διαγραφούν. Οι αντίστοιχες επιλογές που δέχεται η εντολή είναι:

Επιλογές

Λειτουργία

-d
--directory

Αναδρομική διαγραφή όλων των καταλόγων που περιλαμβάνονται στα αρχεία προέλευσης. Προσβάσιμη παράμετρος μόνο από το χρήστη root.

-f
--force

Μη διαλογική διαγραφή υπαρχόντων αρχείων.

-i
--interactive

Διαλογική διαγραφή αρχείων. Ο χρήστης ερωτάται για κάθε αρχείο που πρόκειται να διαγραφεί.

-r
--recursive

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

-v
--verbose

Αναλυτική περιγραφή της διαδικασίας της μετακίνησης.


Σε περίπτωση που το αρχείο που θέλετε να διαγράψετε αρχίζει με παύλα “-” στο όνομά του, μπορείτε να δώσετε ως επιλογή “--”:

$ rm -- -afile

Η παραπάνω εντολή θα διαγράψει το αρχείο -afile.

Για την διαγραφή καταλόγων υπάρχει και η εντολή rmdir. Μπορείτε να χρησιμοποιείτε οποιονδήποτε τρόπο επιθυμείτε, είναι και οι δύο ισοδύναμοι.

$ rmdir afolder

ή

$ rm -r afolder

ΠΡΟΣΟΧΗ! Πριν εκτελέσετε την εντολή rm με επιλογές -rf, βεβαιωθείτε ότι βρίσκεστε στο σωστό κατάλογο. Είναι πολύ εύκολο να αχρηστέψετε το σύστημά σας, αν δώσετε rm -rf στον βασικό κατάλογο /, ειδικά αν είστε συνδεδεμένος ως χρήστης root!
  1. Αναγνώριση Αρχείων

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

Η σύνταξή της είναι η εξής:

file [OPTIONS] files ...

όπου files τα αρχεία των οποίων τον τύπο ζητάμε. Ως επιλογές μπορούμε να δώσουμε τις εξής:

Επιλογές

Λειτουργία

-f
--files-from

Χρησιμοποιεί τη λίστα αρχείων που είναι καταχωρημένη στο αρχείο που δίνεται με την επιλογή -f.

-i
--mime

Αντί για την προκαθορισμένη περιγραφή αρχείου με βάση το μαγικό αρχείο /etc/magic του UNIX, χρησιμοποιεί περιγραφή με βάση το σύστημα MIME.

-L
--dereference

Η διαδικασία της αναγνώρισης θα εφαρμοστεί στο πραγματικό αρχείο και όχι στο σύνδεσμό του.

-z
--uncompress

Αν είναι δυνατόν, αποσυμπιέζει το αρχείο και ύστερα προσπαθεί να το αναγνωρίσει.



Παραδείγματα:

$ file /lib/libc.so.6 /usr/lib/libc.a
/lib/libc.so.6:  symbolic link to `libc-2.3.1.so'
/usr/lib/libc.a: current ar archive

$ file -L /lib/libc.so.6
/lib/libc.so.6: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped

$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped

$ file -i /bin/ls
/bin/ls: application/x-executable, for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped
  1. Αναζήτηση αρχείων

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

Η εντολή find

Η εντολή find είναι ίσως το πιο δυνατό εργαλείο για αναζήτηση αρχείων. Η αναζήτηση μέσω της find μπορεί να γίνει χρησιμοποιώντας πολλά κριτήρια ακόμη και σε συνδυασμό. Ενδεικτικά αναφέρουμε ορισμένα από τα κριτήρια αναζήτησης:

Η σύνταξή της find είναι η εξής:

find directory OPTIONS ACTION

όπου directory είναι το σημείο εκκίνησης της αναζήτησης, δηλαδή ο κατάλογος από τον οποίο θα ξεκινήσει την αναζήτηση η find. Ορισμένες από τις επιλογές που δέχεται η find αναγράφονται στον επόμενο πίνακα:

Επιλογές

Λειτουργία

-amin N
-atime N

Αναζήτηση με το χρόνο προσπέλασης του αρχείου, όπου N ο αριθμός των λεπτών (για την amin) ή των ημερών (για την atime) από την τελευταία προσπέλαση. Με τη χρήση των τελεστών +, - μπορούμε να ζητήσουμε τα αρχεία που προσπελάστηκαν πριν από χρόνο μεγαλύτερο (+) ή μικρότερο από N λεπτά/ημέρες.

-cmin N
-ctime N

Παρόμοια λειτουργία με τις amin, atime αλλά για το χρόνο από την τελευταία τροποποίηση.

-follow

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

-group gname

Αναζήτηση με το όνομα της ομάδας χρηστών gname.

-user uname

Αναζήτηση με το όνομα χρήστη uname.

-mindepth
-maxdepth

Ελάχιστο και μέγιστο βάθος διαδρομής καταλόγου στο οποίο θα πραγματοποιηθεί η αναζήτηση. Δηλαδή, καθορίζει πόσο βαθιά στο σύστημα αρχείων θα αναζητήσει αρχεία η find.

-name expr

Αναζήτηση με το όνομα ή την κανονική παράσταση expr.

-newer file

Αναζήτηση νεώτερων αρχείων από το file.

-perm protbits

Αναζήτηση αρχείων που έχουν τις άδειες προσέλασης που δίνονται (protbits) σε οκταδική (απόλυτη) μορφή.

-size N[bckw]

Αναζήτηση με το μέγεθος. Αναγνωρίζονται οι εξής μονάδες μεγέθους: 512-byte block ('b'), bytes ('c'), kilobytes ('k'), 2-byte words ('w'). Ισχύουν και εδώ οι τελεστές +, - ζητώντας αντίστοιχα μεγαλύτερα ή μικρότερα μεγέθη αρχείων.

-type T

Αναζήτηση με τον τύπο του αρχείου, όπου T μπορεί να είναι ένα από τα εξής: ειδικό αρχείο block ('b'), ειδικό αρχείο χαρακτήρα ('c'), κατάλογος ('d'), ονομαστικός δίαυλος (FIFO) ('p'), κοινό αρχείο ('f'), συμβολικός σύνδεσμος ('l'), υποδοχέας (socket) ('s').


Ως δράση (ACTION) μπορούμε να έχουμε μία από τις εξής:

Παράμετρος

Λειτουργία

-exec cmd

Εκτελεί την εντολή cmd για κάθε αρχείο που βρίσκει. Το όνομα του εκάστοτε αρχείου συμβολίζεται με τα άγκιστρα {}.

-ok cmd

Το ίδιο, αλλά με ερώτηση επιβεβαίωσης πριν από την εκτέλεση της εντολής.

-print

Επιστρέφει το όνομα του αρχείου που βρέθηκε.

-ls

Επιστρέφει το αποτέλεσμα της εντολής ls -dils για κάθε αρχείο που βρέθηκε.



Παραδείγματα:

$ find /usr/include -name “v*.h” -print

Αναζήτηση όλων των αρχείων κεφαλίδας (include files) που βρίσκονται στον κατάλογο /usr/include και των οποίων το όνομα αρχίζει από v.

$ find / -name core -exec rm -f “{}” \;

Αναζήτηση όλων των αποτυπωμάτων μνήμης (core dumps) που βρίσκονται στο σύστημα και άνευ όρων διαγραφή τους.

$ find backup -size +100k -exec mv '{}' BigFiles \;

Αναζήτηση των αρχείων του καταλόγου backup που έχουν μέγεθος μεγαλύτερο από 100 kilobytes και μετακίνησή τους στον κατάλογο BigFiles.

$ find $HOME \! -user `whoami` -type -d -ok rm '{}' \;

Αναζήτηση όλων των αρχείων του καταλόγου $HOME του τρέχοντος χρήστη (προσέξατε τις δασείες στη whoami) και διαλογική διαγραφή τους .

Περισσότερα παραδείγματα και πληροφορίες για τη find, μπορείτε να βρείτε στις σελίδες οδηγιών (man find) ή στα κείμενα πληροφοριών (info find).

Η εντολή locate

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

Η σύνταξή της είναι αρκετά απλή:

locate [OPTIONS] pattern

όπου pattern η κανονική παράσταση των ζητούμενων ονομάτων, ενώ μερικές από τις σημαντικότερες επιλογές φαίνονται στον επόμενο πίνακα:

Επιλογές

Λειτουργία

-e
--existing

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

-i
--ignore-case

Να αγνοηθούν οι διαφορές πεζών-κεφαλαίων γραμμάτων.


Η εντολή which

Η εντολή which, χρησιμοποιείται για να μάθουμε την πλήρη διαδρομή ενός ή περισσοτέρων εκτελέσιμων αρχείων. Αυτό που κάνει είναι να αναζητήσει το αρχείο που ζητούμε σε κάθε κατάλογο που ορίζεται στην διαδρομή $PATH. Λειτουργεί ως εξής:

which filename ...

όπου filename η λίστα των εντολών των οποίων θέλουμε να βρούμε τη διαδρομή.

Για παράδειγμα:

$ which ls find
/bin/ls
/usr/bin/find

Η which χρησιμοποιείται συχνά με το ιστορικό ή την υποκατάσταση εντολών του κελύφους, όπως δείχνει το ακόλουθο παράδειγμα:

$ which ls find

/bin/ls

/usr/bin/find

$ ls -l `!!`

ls -l `which ls find`

-rwxr-xr-x 1 root root 64428 2003-05-14 00:05 /bin/ls

-rwxr-xr-x 1 root root 44936 2002-11-03 20:33 /usr/bin/find

το ίδιο αποτέλεσμα επιτυγχάνεται με το συνδυασμό εντολών:

$ ls -l `which ls find`

-rwxr-xr-x 1 root root 64428 2003-05-14 00:05 /bin/ls

-rwxr-xr-x 1 root root 44936 2002-11-03 20:33 /usr/bin/find

  1. Αρχεία κειμένου

Τα συστήματα UNIX βασίζονται σε μεγάλο βαθμό σε σενάρια κελύφους για πολλές λειτουργίες τους και αυτά δεν είναι παρά κοινά αρχεία κειμένου. Είναι, λοιπόν, απαραίτητη η ύπαρξη εργαλείων που θα χειρίζονται αυτά τα αρχεία κειμένου. Η ανάγκη αυτή οδήγησε σε μια πληθώρα εργαλείων για την εμφάνιση και επεξεργασία των αρχείων κειμένου στο UNIX, καθένα εξειδικευμένο σε μια ή και περισσότερες χρήσεις. Υπάρχουν εργαλεία απλώς για εμφάνιση, για ανάστροφη εμφάνιση, για εμφάνιση με σελιδοποίηση, για εμφάνιση μόνο της κεφαλίδας (header) ή του τέλους του αρχείου, για καταμέτρηση γραμμών, λέξεων ή χαρακτήρων ενός αρχείου κλπ. Θα αναφέρουμε εδώ τα βασικά εργαλεία που θα χρειαστείτε.

“less is more”

Από τα πιο χρήσιμα προγράμματα είναι οι σελιδοποιητές (pagers) που επιτρέπουν την εμφάνιση ενός αρχείου κειμένου ανά σελίδα. Η χρήση τους είναι αρκετά απλή και συχνά προσφέρουν online βοήθεια. Ένα από τα πρώτα προγράμματα σελιδοποιητής που χρησιμοποιείται ακόμη είναι το more, αν και πλέον θεωρείται ξεπερασμένο. Πολύ πιο εύχρηστο και λειτουργικό είναι το πρόγραμμα less που ονομάστηκε έτσι χάριν του λογοπαίγνιου “less is more”!

Και τα δύο προγράμματα είναι πολύ απλά στη χρήση τους και η σύνταξή τους είναι η εξής:

$ more textfile
$ less textfile

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

Εντολές cat και tac

Οι εντολές cat και tac τυπώνουν στην πρότυπη έξοδο το αρχείο ή αρχεία που δέχονται ως παραμέτρους. Η διαφορά της tac είναι ότι τυπώνει το αρχείο ανάστροφα, από το τέλος προς την αρχή.

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

Η σύνταξή της είναι:

cat [OPTIONS] file ...
tac [OPTIONS] file ...

Αν δεν δοθεί όνομα αρχείου, λαμβάνεται η πρότυπη είσοδος (standard input). Οι επιλογές που δέχεται η cat είναι οι εξής:

Επιλογές

Λειτουργία

-A
--show-all

Ισοδύναμο με τη χρήση των επιλογών -vET.

-b
--number-nonblank

Αρίθμηση μη κενών γραμμών

-E
--show-ends

Εμφάνιση του χαρακτήρα $ στο τέλος κάθε γραμμής (Linefeed).

-n
--number

Αρίθμηση όλων των γραμμών (ακόμη και των κενών).

-T
--show-tabs

Εμφάνιση του χαρακτήρα TAB ως ^I.

-v
--show-nonprinting

Εμφάνιση των μη εκτυπώσιμων χαρακτήρων χρησιμοποιώντας τη σύνταξη ^ (CTRL-) και M- (ESC-). Δεν τυπώνει τους χαρακτήρες Linefeed και TAB.



Παραδείγματα χρήσης της cat:

$ cat file1 file2 |less

Τυπώνει τα περιεχόμενα των αρχείων file1 και file2 στην πρότυπη έξοδο και μέσω σωλήνωσης στην εντολή less.

$ cat file1 >file2
$ cat <file1 >file2

Οι δύο αυτές εντολές αντιγράφουν το αρχείο file1 στο αρχείο file2 και είναι ισοδύναμες με την εντολή αντιγραφής αρχείων cp:

cp file1 file2


$ cat file1 file2 >> file3

Προσάρτηση των αρχείων file1 και file2 στο τέλος του αρχείου file3.

$ cat part*.txt >whole.txt 

Συνένωση όλων των αρχείων part*.txt σε ένα ενιαίο αρχείο whole.txt.

$ cat >file
This is a piece of text.
EOF
$ cat file
This is a piece of text.

Η πρώτη κλήση της cat χρησιμοποιεί την πρότυπη είσοδο στην οποία δίνουμε το κείμενο “This is a piece of text.” και το χαρακτήρα EOF (End of file, συνήθως [CTRL]-\). Η δεύτερη κλήση της cat απλώς τυπώνει αυτό που δημιουργήσαμε.

Εντολές head και tail

Οι εντολές head και tail εμφανίζουν την κεφαλίδα και το τέλος (την “ουρά”) ενός αρχείου κειμένου αντίστοιχα. Ειδικά η εντολή tail είναι από τα πιο χρήσιμα εργαλεία για τους διαχειριστές συστήματος.

head [OPTIONS] file
tail [OPTIONS] file

όπου file το αρχείο ή τα αρχεία των οποίων θέλουμε την κεφαλίδα ή το τέλος. Ορισμένες από τις επιλογές των εντολών head και tail αναγράφονται στον επόμενο πίνακα:

Επιλογές

Λειτουργία

-c N
--bytes=N

Εμφάνιση των πρώτων (για τη head) ή των τελευταίων (για την tail) N bytes.

-n N
--lines=N

Εμφάνιση των πρώτων (για τη head) ή των τελευταίων (για την tail) N γραμμών κειμένου. Η προκαθορισμένη τιμή για το N είναι 10.

-f
--follow

(Μόνο για την tail) Εμφάνιση των προσαρτημένων γραμμών καθώς το αρχείο μεγαλώνει. Η follow δέχεται τις επιλογές descriptor ή name. Η προκαθορισμένη είναι η descriptor, με την οποία η tail παρακολουθεί το αρχείο ακόμη και αν αλλάξει όνομα (στην ουσία παρακολουθεί το file descriptor). Με την επιλογή name, η tail παρακολουθεί πάντα το αρχείο που φέρει το όνομα file.

-F

(Μόνο για την tail) Ισοδύναμο με --follow=name --retry.

--retry

(Μόνο για την tail) Ξαναπροσπαθεί να ανοίξει το αρχείο file ακόμη και αν δεν είναι προσπελάσιμο όταν η tail ξεκινάει ή κατά τη διάρκεια της εκτέλεσής της. Η επιλογή αυτή είναι χρήσιμη μόνο σε συνδυασμό με τη -f.



Ακολουθούν παραδείγματα χρήσης της head και tail:

$ head -c 1000 file

Τυπώνει τα 1000 πρώτα bytes του αρχείου file.

$ tail -n 100 file

Τυπώνει τις τελευταίες γραμμές του αρχείου file.

$ tail -f logfile

Παρακολουθεί και εμφανίζει τα περιεχόμενα του αρχείου logfile, ακόμη και αν αυτό αλλάξει όνομα ή θέση.

$ tail -F /var/log/syslog

Παρακολουθεί και εμφανίζει τα περιεχόμενα του αρχείου που φέρει πάντα το όνομα /var/log/syslog ακόμη και αν αυτό αλλάξει κατά τη διάρκεια εκτέλεσης της εντολής tail.

Καταμέτρηση αρχείων με τη wc

Για την καταμέτρηση αρχείων χρησιμοποιούμε την εντολή wc. Η εντολή wc επιστρέφει στατιστικά για ένα αρχείο κειμένου, και συγκεκριμένα τον αριθμό των bytes, χαρακτήρων, λέξεων και γραμμών του αρχείου. Ακολουθεί την ίδια σύνταξη:

wc [OPTIONS] file ...

ή αν δεν δοθεί το file, χρησιμοποιείται η πρότυπη είσοδος (standard input). Δέχεται τις εξής επιλογές:

Επιλογές

Λειτουργία

-c
--bytes

Εμφανίζει τον αριθμό των bytes του αρχείου.

-m
--chars

Εμφανίζει τον αριθμό των χαρακτήρων του αρχείου.

-l
--lines

Εμφανίζει τον αριθμό των γραμμών κειμένου του αρχείου.

-L
--max-line-length

Τυπώνει το μήκος της μεγαλύτερης σε μήκος γραμμής.

-w
--words

Εμφανίζει τον αριθμό των λέξεων του αρχείου



Παραδείγματα:

$ wc sample.txt
     10      29     278 sample.txt



Δηλαδή το αρχείο sample.txt έχει 278 χαρακτήρες, 29 λέξεις και 10 γραμμές κειμένου.

Η wc χρησιμοποιείται συχνά σε συνδυασμό με άλλες εντολές. Π.χ., για να δούμε πόσους χρήστες έχουμε συνδεδεμένους στο σύστημα αυτή τη στιγμή:

$ who |wc -l
17
  1. Αναζήτηση κειμένου σε αρχείο

Αν προσπαθήσατε ποτέ να εισχωρήσετε στα πιο “βαθειά νερά” του UNIX, θα χρειαστήκατε σίγουρα σε κάποια στιγμή να βρείτε κάποιο αρχείο που να περιέχει κάποιο συγκεκριμένο κείμενο. Κατά πάσα πιθανότητα θα χρησιμοποιήσατε κάποια από τις εντολές grep για να κάνετε την αναζήτηση. Οι εντολές αυτές προσφέρουν, με μικρές παραλλαγές η κάθε μία, τρόπους αναζήτησης κειμένου ή κανονικών παραστασεων (regular expressions) σε αρχεία κειμένου (χωρίς να περιορίζεται η χρήση τους μόνο σε αυτά).

Οι εντολές grep, fgrep, egrep, rgrep

Υπάρχουν τέσσερις εντολές grep, η γενικής χρήσης grep, η fgrep που δε χρησιμοποιεί μεταχαρακτήρες, η egrep που ειδικεύεται στην αναζήτηση με μεταχαρακτήρες και η rgrep που δρα αναδρομικά σε καταλόγους. Συγκεκριμένα,

Στην πραγματικότητα δεν πρόκειται για τεσσερις διαφορετικές εντολές αλλά για συντομεύσεις της ίδιας εντολής. Σε κανονικά UNIX συστήματα ήταν όντως τρείς εντολές (grep, fgrep, egrep) αλλά στο πακέτο GNU grep που διανέμεται με το Debian, πρόκειται για μία εντολή με επιπλέον τρια σενάρια κελύφους που λειτουργούν ως wrappers(?): fgrep, egrep και rgrep. Η σύνταξή της είναι η εξής:

grep [OPTIONS] pattern file
fgrep [OPTIONS] pattern file
egrep [OPTIONS] pattern file
rgrep [OPTIONS] pattern file

όπου file το αρχείο ή τα αρχεία στα οποία θέλουμε να αναζητήσουμε κείμενο, ή αν δεν δίνεται αρχείο θεωρείται ή πρότυπη είσοδος (standard input). Ως pattern δίνουμε το κείμενο που θέλουμε να αναζητήσουμε ή την κανονική παράσταση που περιέχει μεταχαρακτήρες. Για τις εντολές grep ισχύουν οι εξής επιλογές:

Επιλογές

Λειτουργία

-E

Ισοδύναμο με την κλήση της egrep.

-F

Ισοδύναμο με την κλήση της fgrep.

-r, -R
--recursive

Ισοδύναμο με την κλήση της rgrep. Πραγματοποιεί την αναζήτηση αναδρομικά σε όλους τους καταλόγους και στα αρχεία που περιέχονται σε αυτούς.

-f FILE
--file FILE

Πραγματοποιεί την αναζήτηση χρησιμοποιώντας τις κανονικές παραστάσεις ή το κείμενο που περιέχεται στο αρχείο FILE.

-i
--ignore-case

Αγνοεί τις διαφορές μεταξύ πεζών-κεφαλαίων γραμμάτων.

-l
--files-with-matches

Εμφανίζει μόνο τους τίτλους των αρχείων για τα οποία πέτυχε η αναζήτηση.

-L
--files-without-matches

Εμφανίζει μόνο τους τίτλους των αρχείων για τα οποία απέτυχε η αναζήτηση.

-n
--line-number

Εμφανίζει τις γραμμές αριθμημένες.

-v
--invert-match

Αντιστρέφει την αναζήτηση. Αναζητά γραμμές κειμένου που δεν ταιριάζουν με το δοθέν κείμενο ή κανονική παράσταση.



Για περισσότερες πληροφορίες για τις κανονικές παραστάσεις ανατρέξατε στο κεφ. 9 και στις σελίδες οδηγιών και κείμενα πληροφοριών της grep (man, info).

Παραθέτουμε ορισμένα παραδείγματα χρήσης της grep:

$ ps aux|grep ssh
root       733  0.0  0.3  2684  744 ?        S    Jun27   0:00 /usr/sbin/sshd
feanor    9895  0.0  0.3  2796  712 pts/5    R    21:29   0:00 grep ssh

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

$ grep -lr sqrt /usr/include/
/usr/include/bits/mathinline.h
/usr/include/bits/mathcalls.h
/usr/include/bits/cmathcalls.h
/usr/include/math.h
/usr/include/tgmath.h
/usr/include/linux/sysctl.h

Επιστρέφει τη λίστα όλων των αρχείων που βρίσκονται στον κατάλογο /usr/include και περιέχουν αναφορά στο υποπρόγραμμα της γλώσσας C sqrt (square root, τετραγωνική ρίζα).

$ grep -v ^[A-z] userslist

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

$ grep -i “john smith” userslist

Στο ίδιο αρχείο, επιστρέφει τις γραμμές στις οποίες αναφέρεται το όνομα “john smith” αλλά και “JOHN SMITH” και “John Smith” κλπ.

  1. Ταξινόμηση αρχείων κειμένου

Στο κεφάλαιο 9 είχατε μια πρώτη επαφή με την εντολή sort και την διαδικασία ταξινόμησης αρχείων κειμένου, οπότε εδώ θα περιοριστούμε στην απλή παράθεση των επιλογών της εντολής.

Η εντολή sort

Η σύνταξη της εντολής είναι:

sort [OPTIONS] file1 ...

και μερικές από τις επιλογές δίνονται στον ακόλουθο πίνακα:

Επιλογές

Λειτουργία

-b
--ignore-leading-blanks

Αγνοεί τους κενούς χαρακτήρες πριν από το κείμενο.

-d
--dictionary-order

Αναγνωρίζει μόνο κενών και αλφαρηθμητικών χαρακτήρων.

-f
--ignore-case

Μετατροπή πεζών σε κεφαλαίους χαρακτήρες.

-g
--general-numeric-sort

Αριθμητική ταξινόμηση με μετατροπή σε αριθμό κινητής υποδιαστολής. Προτιμήστε την --numeric-sort.

-i
--ignore-nonprinting

Αγνοεί τους μη εκτυπώσιμους χαρακτήρες.

-M
--month-sort

Ημερολογιακή ταξινόμηση.

-n
--numeric-sort

Αριθμητική ταξινόμηση χωρίς μετατροπή του κειμένου σε αριθμό κινητής υποδιαστολής.

-r
--reverse

Αναστροφή της ταξινόμησης.

-c
--check

Έλεγχος του αρχείου αν είναι ήδη ταξινομημένο.

-k
--key=POS1[,POS2]

Εκκίνηση της ταξινόμησης από τη στήλη POS1, προαιρετικά ως POS2.

-m
--merge

Συγχώνευση δύο ήδη ταξινομημένων αρχείων.

-o
--output=FILE

Αποθήκευση του αποτελέσματος στο αρχείο FILE.

-t
--field-separator=SEP

Χρησιμοποιεί το χαρακτήρα SEP για διαχωρισμό στηλών (κανονικά χρησιμοποιεί οποίονδήποτε κενό χαρακτήρα).

-u
--unique

Σε συνδυασμό με τη -c, ελέγχει την ταξινόμηση με αυστηρότερα κριτήρια, διαφορετικά επιστρέφει μόνο τα μοναδικά στοιχεία.



  1. Σύγκριση αρχείων

Η σύγκριση αρχείων είτε κειμένου είτε κοινών δυαδικών (binary) είναι συνηθισμένη διαδικασία στο UNIX. Πάνω στη σύγκριση αρχείων βασίζονται διαδικασίες όπως Backup και Restore. Για το σκοπό αυτό όλα τα συστήματα UNIX, συνεπώς και το Linux, προσφέρουν εργαλεία για σύγκριση αρχείων με αρκετούς τρόπους παραμετροποίησης. Στον παρόντα οδηγό, θα αναφερθούμε στις εντολές cmp, comm και diff.

Η εντολή cmp

Για απλή σύγκριση δυαδικών αρχείων χρησιμοποιούμε την εντολή cmp. Επειδή τα δυαδικά αρχεία δεν είναι δυνατόν να τα θεωρήσουμε “περίπου” ίδια, η εντολή συγκρίνει δύο αρχεία byte προς byte. Αυτό που μπορούμε να παραμετροποιήσουμε είναι το σημείο εκκίνησης, αλλά αν είναι έστω και ένα byte διαφορετικό, τα αρχεία θεωρούνται διαφορετικά και η εντολή επιστρέφει κωδικό αποτυχίας (βλ. κεφ. 14 για τους κωδικούς επιστροφής των διεργασιών).

Η σύνταξη της cmp είναι η εξής:

cmp [options] file1 file2

όπου file1, file2 τα προς σύγκριση δυαδικά αρχεία, και ως επιλογές έχουμε τις εξής:

Επιλογές

Λειτουργία

-b
--print-bytes

Εμφανίζει τα διαφορετικά bytes.

-i SKIP
--ignore-initial=SKIP

Ξεκινά τη σύγκριση μετά απο SKIP bytes.

-i SKIP1:SKIP2
--ignore-initial=SKIP1:SKIP2

Ξεκινά τη σύγκριση μετά απο SKIP1 bytes για το file1 και SKIP2 bytes για το file2.

-l
--verbose

Εμφανίζει πληροφορίες για όλα τα διαφορετικά bytes (θέσεις και τιμές).

-n N
--bytes=N

Η σύγκριση να γίνει για το πολύ N bytes.

-s
--quiet
--silent

Η έξοδος να είναι σιωπηλή, να επιστραφεί μόνο ο κωδικός επιτυχίας ή αποτυχίας του προγράμματος.



Η εντολή comm

Η εντολή comm συγκρίνει δύο προηγουμένως ταξινομημένα αρχεία κειμένου και εμφανίζει επιλεκτικά τρεις στήλες: μια με τις γραμμές που υπάρχουν μόνο στο πρώτο αρχείο, μια με τις γραμμές που υπάρχουν μόνο στο δεύτερο αρχείο και μια με τις κοινές γραμμές. Αυτή η παραμετροποίηση είναι και η μόνο επιλογή που δέχεται η εντολή. Συγκεκριμένα:

comm [-N] file1 file2

όπου -N ο αριθμός του οποίου τα ψηφία αποτελούνται από τις στήλες που επιλέγετε να εμφανιστούν, δηλαδή για τις στήλες 1 και 3 θα πρέπει να δώσετε:

comm -13 file1 file2

Η εντολή diff

Η εντολή diff είναι ένα πολύ ισχυρό εργαλείο για σύγκριση αρχείων ακόμη και καταλόγων και μπορεί να παραμετροποιηθεί σε μεγάλο βαθμό. Το αποτέλεσμα της σύγκρισης με τη diff μπορεί να χρησιμοποιηθεί και από άλλα εργαλεία ή προγράμματα και βάση αυτού, χρησιμοποιώντας το ως αναφορά, να τροποποιήσουμε ένα άλλο αρχείο μόνο σε συγκεκριμένα σημεία. Με αυτόν τον τρόπο λειτουργούν τα προσράμματα ή “μπαλώματα” (patches). Χάρη στην εντολή diff τα patches έιναι ο πιο εύκολος τρόπος ανανέωσης (update) ανοιχτού – και όχι μόνο – όχι κώδικα στο internet.

Για την ακρίβεια, στην ίδια δομή βασίζεται και το ίδιο το Debian και το σύστημα πακέτων λογισμικού που χρησιμοποιεί, και χωρίς τη diff πιθανότατα δε θα υπήρχε, τουλάχιστον όχι σε αυτή τη μορφή!

Η σύνταξη της diff δεν διαφέρει από των άλλων εντολών που έχουμε δεί ως τώρα:

diff [OPTIONS] file1 file2

ή για σύγκριση καταλόγων

diff [OPTIONS] dir1 dir2

όπου dir1, dir2 τα ονόματα των καταλόγων που θέλουμε να συγκρίνουμε.

με μια πληθώρα από επιλογές, από τις οποίες θα αναφέρουμε τις σημαντικότερες:

Επιλογές

Λειτουργία

-i
--ignore-case

Αγνοεί τις διαφορές μεταξύ πεζών-κεφαλαίων γραμμάτων.

-b
--ignore-space-change

Αγνοεί τις αλλαγές που οφείλονται σε κενούς χαρακτήρες.

-w
--ignore-all-space

Αγνοεί όλους τους κενούς χαρακτήρες.

-B
--ignore-blank-lines

Αγνοεί όλες τις κενές γραμμές.

-a
--text

Αντιμετωπίζει όλα τα αρχεία ως αρχεία κειμένου.

-c
-C NUM
--context[=NUM]

Εμφανίζει Ν (προκαθορισμένη τιμή 3) γραμμές αντιγραμένου περιεχομένου.

-u
-U N
--unified[=N]

Εμφανίζει Ν (προκαθορισμένη τιμή 3) γραμμές ενωποιημένου περιεχομένου.

-y
--side-by-side

Εμφάνιση σε δύο στήλες.

-r
--recursive

Αναδρομική σύγκριση των καταλόγων και των περιεχομένων αρχείων τους.

-N
--new-file

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



Για να δείξουμε τη λειτουργία της diff θα παρουσιάσουμε ένα σχετικά απλό παράδειγμα.

Έστω δύο αρχεία κειμένου, file1 και file2 των οποίων τα περιεχόμενα είναι τα εξής:

file1

file2

One
two
three
four
five
ONE
two
three
FIVE
SIX


Αν εκτελέσουμε τη diff με παραμέτρους τα δύο αρχεία:

$ diff file1 file2
1c1
< One
---
> ONE
4,5c4,5
< four
< five
---
> FIVE
> SIX


Το κείμενο του αρχείου file1 φαίνεται με το σύμβολο < ενώ με το > φαίνεται το αρχείο file2. Οι συμβολισμοί 4,5c4,5 καταδεικνύουν ότι στις γραμμές 4 και 5 του αρχείου file1 υπάρχει αλλαγή (εξού και ο χαρακτήρας c, από τη λέξη change) που αντιστοιχεί στις γραμμές 4 και 5 του αρχείου file2.

Αν θελήσουμε να αγνοήσουμε τις διαφορές πεζών-κεφαλαίων χαρακτήρων με την επιλογή -i:

$ diff -i file1 file2
4d3
< four
5a5
> SIX

Τώρα το πρόγραμμα απλώς διαπιστώνει ότι από το αρχείο file1 έχει διαγραφεί (d από delete) η λέξη four στη γραμμή 4 ενώ έχει προστεθεί (a από append) στη γραμμή 5 του αρχείου file2 η λέξη SIX.

Δείτε τη διαφορά με την επιλογή -y:

$ diff -y file1 file2
One                                                           | ONE
two                                                             two
three                                                           three
four                                                          | FIVE
five                                                          | SIX

Τώρα αρκεί μόνο ο χαρακτήρας |, για να φανούν οι διαφορές ανάμεσα στα δύο αρχεία.

Με ενωποιημένο περιεχόμενο (unified context) το αποτέλεσμα είναι και πάλι διαφορετικό:

$ diff -u file1 file2
--- file1       2003-06-29 00:47:04.000000000 +0300
+++ file2       2003-06-29 00:47:13.000000000 +0300
@@ -1,5 +1,5 @@
-One
+ONE
 two
 three
-four
-five
+FIVE
+SIX

Αφού εμφανιστούν στην κεφαλίδα πληροφορίες για τα δύο αρχεία, καταδεικνύεται το σημείο της αλλαγής με τους χαρακτήρες @@, ενώ με - και + ξεχωρίζουν τις γραμμές που αντιστοιχούν σε κάθε αρχείο (στην προκειμένη περίπτωση, το - αντιστοιχεί στο file1, ενώ το + στο file2). Στο παράδειγμα αυτό, δηλώνεται ότι από τις γραμμές 1 ως 5 του αρχείου file1 και τις γραμμές 1 ως 5 του αρχείου file2, εμφανίζονται οι διαφορές που καταδεικνύονται με τα σύμβολα -, +.

Ο τρόπος του ενωποιημένου περιεχομένου είναι και αυτός που χρησιμοποιείται κατά κόρον για την δημιουργία patches.

Για περισσότερες πληροφορίες για τα προσράμματα μπορείτε να ανατρέξετε στις σελίδες οδηγίων της εντολής patch:

man patch

ή

info patch

  1. Συμπίεση αρχείων

Η συμπίεση αρχείων είναι κάτι αρκετά διαδεδομένο σε όλα τα λειτουργικά. Ο τρόπος με τον οποίο συμπιέζεται ένα αρχείο ή το πρωτόκολλο συμπίεσης όπως πιο σωστά καλείται, συνήθως είναι συμφυές με το λειτουργικό σύστημα για το οποίο προορίζεται η χρήση του αρχείου. Έτσι για τα Windows έχει πλέον εδραιωθεί η χρήση του πρωτοκόλλου ZIP (με δευτερεύοντα πρωτόκολλα όπως RAR, ACE, κλπ). Στο UNIX και κατά συνέπεια στο Linux, απαντώνται δύο κύρια πρωτόκολλα συμπίεσης που χρησιμοποιούνται από δύο εντολές που θα αναφέρουμε εδώ.

Η εντολή GNU zip (gzip)

Η εντολή gzip χρησιμοποιεί μια τεχνική κωδικοποίησης βασισμένη στο αλγόριθμό Lempel-Ziv. Τα συμπιεσμένα αρχεία αναγνωρίζονται με την κατάληξη .gz στο όνομά τους. Τη gzip συμπληρώνουν και ένα πλήθος εντολών, όπως gunzip, uncompress, και zcat. Στην ουσία πρόκειται για σθεναρούς συνδέσμους στην ίδια εντολή gzip, που αλλάζει τη λειτουργία της αναλόγως τον τρόπο κλήσης της. Ως gunzip ή uncompress αποσυμπιέζει επί τόπου τα συμπιεσμένα αρχεία, ενώ η zcat αποσυμπιέζει και τυπώνει στην πρότυπη έξοδο (ακριβώς όπως η εντολή cat) τα περιεχόμενά τους. Η εντολή αναγνωρίζει και αρχεία που έχουν συμπιεστεί με την παλαιότερη εντολή του UNIX compress και έχουν την κατάληξη .Z.

Η σύνταξη των εντολών είναι η εξής:

gzip [options] file...
gunzip [options] file...
uncompress [options] file...
zcat [options] file...

Ορισμένες από τις επιλογές που δέχονται αναγράφονται στον επόμενο πίνακα:



Επιλογές

Λειτουργία

-c
--stdout
--to-stdout

Συμπιέζει (ή αποσυμπιέζει) και τυπώνει το αποτέλεσμα στην πρότυπη έξοδο. Χρήσιμο σε συνδυασμό με ανακατεύθυνση.

Η zcat ορίζεται ως uncompress -c.

-d
--decompress
--uncompress

Αποσυμπιέζει τα αρχεία που δίνονται ως παράμετρος.

-l
--list

Για κάθε αρχείο που δίνεται ως παράμετρος, εμφανίζονται οι εξής πληροφορίες:

compressed size: Μέγεθος του συμπιεσμένου αρχέιου

uncompressed size: αρχικό μέγεθος

ratio: λόγος συμπίεσης

uncompressed_name: όνομα αποσυμπιεσμένου αρχείου

-r
--recursive

Πραγματοποιεί αναδρομικά στους περιεχόμενους καταλόγους την πράξη της συμπίεσης/αποσυμπίεσης.

-S .suf
--suffix .suf

Χρησιμοποιεί ως κατάληξη το .suf.

-t
--test

Ελέγχει την ακεραιότητα του αρχείου. Σε συνδυασμό με τη -v, τυπώνει OK μετά το όνομα του αρχείου αν τα δεδομένα του είναι ακέραια.

-v --verbose

Εμφανίζει επιπλέον πληροφορίες για την διαδικασία της συμπίεσης.

-#
--fast
--best

Ορίζει το επίπεδο ποιότητας της συμπίεσης. Η επιλογή -1 ή ισοδύναμα --fast δίνει μεγαλύτερη έμφαση στη μείωση του χρόνου συμπίεσης, ενώ η -9 (ισοδύναμα --best) προσπαθεί να επιτύχει μεγαλύτερο λόγο συμπίεσης. Το προκαθορισμένο επίπεδο συμπίεσης είναι -6.



Αντίστοιχα προσφέρονται και εντολές που αποσυμπιέζουν ένα αρχείο και στέλνουν τα (αποσυμπιεσμένα) περιεχόμενά του σε άλλες εντολές, όπως zless, zmore, zgrep, zdiff, zcmp, κλπ.

Ακολουθούν ορισμένα παραδείγματα της χρήσης της gzip και των βοηθητικών εντολών της.

Για να συμπιέσουμε δύο αρχεία file1 και file2 με ανάλυση της διαδικασίας

$ gzip -v file1 file2
file1:   91.6% -- replaced with file1.gz
file2:   66.1% -- replaced with file2.gz

Αν το αρχείο file1 ήταν αρχείο κειμένου μπορούμε πολύ εύκολα να το δούμε με τις εξής ισοδύναμες εντολές:

$ zless file1.gz
$ zcat file1.gz |less
$ gunzip -c file1.gz |less
$ gzip -dc file1.gz |less

Η zless ειδικά είναι πολύ χρήσιμη για να δούμε τα αρχεία κείμενων που συνοδεύουν τα πακέτα λογισμικού του Debian, που συνήθως είναι συμπιεσμένα:

$ zless /usr/share/doc/gzip/changelog.Debian.gz

Ενώ μπορούμε να αναζητήσουμε κείμενο μέσα στο αρχείο χωρίς να το αποσυμπιέσουμε:

$ zgrep -i “Prices” file1.gz

Η ίδια η gzip με την επιλογή -l μας δίνει πληροφορίες για τα συμπιεσμένα αρχεία, ενώ με τις -lv οι πληροφορίες είναι πιο αναλυτικές.

$ gzip -l file1 file2
         compressed        uncompressed  ratio uncompressed_name
               1782               20845  91.6% file1
                600                1700  66.1% file2
               2382               22545  89.5% (totals)
$ gzip -lv file1 file2
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 829009df Jul  8 13:18                1782               20845  91.6% file1
defla 6f54f29f Jul  8 13:18                 600                1700  66.1% file2
                                           2382               22545  89.5% (totals)

Η εντολή bzip2

Η εντολή bzip2 βασίζεται σε μια διαφορετική τεχνική συμπίεσης, τον αλγόριθμο ταξινόμησης block κειμένου Burrows-Wheeler που σε πολλές περιπτώσεις παρέχει καλύτερους λόγους συμπίεσης από τον αλγόριθμο Lempel-Ziv. Τα αρχεία που είναι συμπιεσμένα με αυτήν την εντολή έχουν συνήθως την κατάληξη .bz2.

Η σύνταξή της εντολής είναι παρόμοια με της gzip ενώ οι επιλογές της είναι σχεδόν ίδιες με αυτές της gzip.

bzip2 [options] file...
bunzip2 [options] file...
bzcat [options] file...
bzip2recover filename

Παρέχονται και εδώ οι αντίστοιχες βοηθητικές εντολές bzless, bzmore, bzgrep, bzdiff, bzcmp, κλπ.

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

Άλλες εντολές συμπίεσης

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



Κατάληξη Αρχείου

Πακέτα στο Debian

.zip

zip, unzip

.rar

rar, unrar

.lha

lha

.arj

arj, unarj

.zoo

zoo, unzoo
  1. Αρχειοθέτηση αρχείων

Πέρα από τη συμπίεση, πολύ σημαντική είναι και η αρχειοθέτηση των αρχείων, δηλαδή η τοποθέτησή τους πολλών αρχείων σε ένα ενιαίο αρχείο με σκοπό την εύκολη μεταφορά και αποθήκευσή τους. Όπως και με τα συστήματα συμπίεσης αρχείων έτσι και με τα συστήματα αρχειοθέτησης υπάρχει μεγάλη ποικιλία και συνήθως κάθε λειτουργικό σύστημα υιοθετεί κάποιο ειδικό σύστημα αρχειοθέτησης. Στο UNIX για λόγους ιστορικούς και συμβατότητας το πιο συνηθισμένο σύστημα είναι το TAR (Tape ARchive) που χρησιμοποιεί την ομώνυμη εντολή tar και οι αρχειοθήκες του έχουν την ίδια κατάληξη .tar. Πολύ συχνά τα αρχεία αυτά απαντώνται και συμπιεσμένα οπότε μπορούμε να τα δούμε με τις εξής καταλήξεις:

Κατάληξη Αρχείου

Είδος Αρχείοθήκης

.tar.Z
.tar.gz
.tgz

Αρχειοθήκη συμπιεσμένη με το πρόγραμμα gzip.

.tar.bz
.tar.bz2
.tbz

Αρχειοθήκη συμπιεσμένη με το πρόγραμμα bzip2.

.tar.zip

Αρχειοθήκη συμπιεσμένη με το πρόγραμμα zip (σπάνια χρησιμοποιείται ο συνδυασμός αυτός).



Στο Debian, χρησιμοποιείται η έκδοση GNU tar που προσφέρει ορισμένα επιπλέον χαρακτηριστικά από τις περισσότερες εντολές tar των άλλων συστημάτων UNIX. Η σύνταξη της εντολής GNU tar ακολουθεί τους εξής κανόνες:

tar [-] [function][options] archive files...

όπου function η εργασία που θα πραγματοποιήσει η tar, με τις επιλογές options, χρησιμοποιώντας την αρχειοθήκη archive και τα αρχεία (ή καταλόγους files). Για αυτήν την εντολή η χρήση της παύλας - δεν είναι απαραίτητη.

Ως εργασία μπορούμε να χρησιμοποιήσουμε μία από τις εξής:

Εργασίες

Λειτουργία

-A
--catenate
--concatenate

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

-c
--create

Δημιουργεί την αρχειοθήκη archive με περιεχόμενα τα αρχεία files.

-d
--diff
--compare

Εμφανίζει τις διαφορές μεταξύ των αρχείων που βρίσκονται στην αρχειοθήκη και των αρχείων που βρίσκονται στο σύστημα αρχείων.

--delete

Διαγράφει τα αρχεία files που βρίσκονται στην αρχειοθήκη archive.

-r
--append

Προσαρτά τα αρχεία files στο τέλος της αρχειοθήκης archive.

-t
--list

Εμφάνιση των περιεχομένων της αρχειοθήκης.

-u
--update

Ανανέωση των αρχείων files που βρίσκονται στην αρχειοθήκη archive. Αν υπάρχουν ήδη στην αρχειοθήκη, γίνεται αντικατάσταση με τα νέα αρχεία, ενώ διαφορετικά προστίθενται στην αρχειοθήκη.

-x
--extract
--get

Εξάγει τα αρχεία files από την αρχειοθήκη archive. Αν δεν δοθούν ονόματα αρχείων για εξαγωγή, εξάγει όλα τα αρχεία της αρχειοθήκης.


Ενώ ως επιλογές οποιονδήποτε (συμβατό) συνδυασμό των παρακάτω:

Επιλογές

Λειτουργία

-C
--directory DIR

Χρησιμοποιείται σε συνδυασμό με την εργασία εξαγωγής (-x, extract), εξάγει τα αρχεία στον κατάλογο DIR και όχι στον τρέχοντα κατάλογο.

-f
--file [HOSTNAME:]FILE

Χρησιμοποιεί ως αρχειοθήκη το αρχείο FILE, το οποίο μπορεί να είναι και απομακρυσμένο (εξού και η επιλογή HOSTNAME). Η tar είχε σχεδιαστεί να λειτουργεί με συσκευές οδηγούς κασέτας (tape drives), οπότε το αρχείο μπορεί να είναι απευθείας το σημείο επαφής της συσκευής οδηγού κασέτας, π.χ. /dev/st0.

-T
--files-from FILE

Χρησιμοποιεί για τη λίστα αρχείων που βρίσκεται στο αρχείο κειμένου FILE για εξαγωγή ή αρχειοθέτηση, αντί της παραμέτρου files.

--exclude PATTERN

Αποκλείει τα αρχεία που ταιριάζουν την κανονική παράσταση PATTERN από την εξαγωγή ή αρχειοθέτηση.

-X
--exclude-from FILE

Αποκλείει τα αρχεία που περιέχονται στο αρχείο κειμένου FILE από την εξαγωγή ή αρχειοθέτηση.

-l
--one-file-system

Όταν γίνεται αρχειοθέτηση χρησιμοποιεί μόνο το τρέχον σύστημα αρχείων και δεν εισέρχεται σε συναρμοζόμενα συστήματα αρχείων σε αυτό (mounted).

--no-recursion

Δεν περιλαμβάνει αναδρομικά τα περιεχόμενα των καταλόγων στην αρχειοθέτηση.

-h
--dereference

Όταν συναντά συμβολικούς συνδέσμους, αρχειοθετεί τα πραγματικά αρχεία και όχι τους συνδέσμους.

--ignore-case

Αγνοεί την διαφορά πεζών-κεφαλαίων στον αποκλεισμό αρχείων (με την --exclude).

-k
--keep-old-files

Κατά την εξαγωγή δεν διαγράφει τα υπάρχοντα αρχεία.

-N
--after-date DATE
--newer DATE

Αρχειοθετεί μόνο τα αρχεία που είναι νεώτερα από την ημερομηνία DATE.

--newer-mtime DATE

Αρχειοθετεί μόνο τα αρχεία που έχουν μεταβληθεί μεταγενέστερα από την ημερομηνία DATE.

--mode M

Κατά την αρχειοθέτηση χρησιμοποιεί τις άδειες πρόσβασης που ορίζονται από τον οκταδικό αριθμό M (βλ. απόλυτο τρόπο εκτέλεσης chmod, σελ. 131).

-p
--same-permissions
--preserve-permissions

Διατηρεί τις άδεις προσπέλασης των αρχείων κατά την αρχειοθέτηση ή εξαγωγή τους.

-s
--same-order
--preserve-order

Κατά την εξαγωγή των αρχείων, διατηρείται η σειρά τους όπως στην αρχειοθήκη.

--same-owner

Διατηρεί τα ονόματα ιδιοκτητών/ομάδος των αρχείων κατά την αρχειοθέτηση ή εξαγωγή τους (προκαθορισμένο για το χρήστη root).

--no-same-owner

Χρησιμοποιεί το όνομα του τρέχοντος χρήστη/ομάδος κατά την αρχειοθέτηση ή εξαγωγή των αρχείων (ισχύει για όλους τους χρήστες πλήν του root).

--group G

Κατά την αρχειοθέτηση ορίζει την ομάδα των αρχείων.

--totals

Εμφανίζει το συνολικό αριθμό bytes που αρχειοθετήθηκαν.

-V
--label NAME

Ονομάζει την αρχειοθήκη με την ετικέτα NAME.

-w
--interactive
--confirmation

Διαλογική εργασία. Ζητάει επαλήθευση για κάθε πράξη.

-Z
--compress
--uncompress

Χρησιμοποιεί την εντολή compress για τη συμπίεση ή αποσυμπίεση των αρχείων (το όνομα του αρχείου θα πρέπει να είναι .tar.Z).

-z
--gzip
--gunzip
--ungzip

Χρησιμοποιεί την εντολή gzip για τη συμπίεση ή αποσυμπίεση των αρχείων (το όνομα του αρχείου θα πρέπει να είναι .tar.gz ή .tgz).

-j
--bzip2

Χρησιμοποιεί την εντολή bzip2 για τη συμπίεση ή αποσυμπίεση των αρχείων (το όνομα του αρχείου θα πρέπει να είναι .tar.bz2 ή .tbz). Σημείωση: παλαιότερες εκδόσεις της tar χρησιμοποιούσαν την επιλογή -I.

--use-compress-program PROG

Χρησιμοποιεί την εντολή PROG για τη συμπίεση ή αποσυμπίεση των αρχείων. Η μόνη απαίτηση είναι η εντολή να δέχεται την παράμετρο -d για αποσυμπίεση.



Ακολουθούν μερικά παραδείγματα χρήσης της εντολής tar.

Αν θέλετε να πάρετε συμπιεσμένο αντίγραφο του καταλόγου σας $HOME, στην αρχειοθήκη /tmp/homebackup.tar.gz, και να το μεταφέρετε σε ένα καινούριο δίσκο που έχετε συναρμόσει στον κατάλογο /newdisk:

$ tar czf /tmp/homebackup.tar.gz $HOME
$ cd /newdisk/
$ tar xzf /tmp/homebackup.tar.gz

Η τελευταία εντολή είναι ισοδύναμη με

$ tar xf -C /newdisk /tmp/homebackup.tar.gz

Αν θέλετε να ανανέωςετε τα αρχεία της αλληλογραφίας σας στην αρχειοθήκη μπορείτε να χρησιμοποιήσετε την εντολή:

$ tar uvf /tmp/homebackup.tar.gz $HOME/mail

Ως χρήστης root, για να λάβετε ένα πλήρες αντίγραφο ενός καταλόγου, συμπιεσμένου με την εντολή bzip2, και να βλέπετε αναλυτικά τα αρχεία καθώς εισάγονται στην αρχειοθήκη:

# tar cvpjf /var/backup/etc.tar.gz /etc
  1. Ο κειμενογράφος vim

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

Για να πραγματοποιηθεί οποίοδήποτε από αυτά τα σενάρια, θα πρέπει να χρησιμοποιήσετε κάποιο πρόγραμμα επεξεργασίας κειμένου ή κειμενογράφο. Το Linux και ειδικά το Debian, προσφέρει μια πληθώρα από τέτοια προγράμματα, αρκεί να δώσετε στην γραμμή εντολών

apt-cache search text editor

για να πειστείτε!

Στο παρόν βιβλίο θα προτείνουμε την εκμάθηση και χρήση του κειμενογράφου vim. Ο vim είναι απόγονος του vi, του VIsual editor, που κυριαρχούσε στα παλιά συστήματα UNIX για πολλά χρόνια (αν και οι οπαδοί του Emacs θα αμφισβητήσουν το γεγονός αυτό...). Ο αρχικός vi γράφτηκε από το Bill Joey για το BSD UNIX και έκτοτε υιοθετήθηκε από όλα τα υπάρχοντα συστήματα UNIX, λόγω των πολλών δυνατοτήτων του, του μικρού μεγέθους του και της μεταφερσιμότητάς του σε άλλα συστήματα (portability).

Με το πέρασμα του χρόνου, οι απαιτήσεις αυξήθηκαν και εμφανίστηκε ένας νέος διάδοχος για το θρόνο του “επίσημου” κειμενογράφου του UNIX. Ο vim, του οποίου τα αρχικά σημαίνουν Vi IMproved, γράφτηκε από το Bram Moolenaar και προσφέρει δεκάδες επιπλέον δυνατότητες στον αρχικό vi και πλήρη συμβατότητα με τις εντολές του αρχικού.

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

Ο vim, καθώς και o αρχικός vi, χαρακτηρίζεται από μια κατάσταση λειτουργίας του η οποία μπορεί να είναι:

Αναφέρουμε εδώ ορισμένες από τις βασικές εντολές του vim:

Εντολές

Λειτουργία

ESC

Ενεργοποιεί την κατάσταση εντολών.

i

Ενεργοποιεί την κατάσταση εισαγωγής κειμένου στο σημείο που βρίσκεται ο δρομέας (cursor).

:FILE

Φορτώνει το αρχείο FILE.

:q

Έξοδος από το πρόγραμμα.

:w

Αποθήκευση του αρχείου.

:x

Αποθήκευση του αρχείου και άμεση έξοδος από το πρόγραμμα. Ισοδύναμο με τη wq.

x

Διαγραφή του χαρακτήρα στον οποίο βρίσκεται ο δρομέας.

d

Διαγραφή της τρέχουσας γραμμής κειμένου.

yy

Αντιγραφή της τρέχουσας γραμμής στο πρόχειρο (clipboard).

p

Αντιγραφή του κειμένου που βρίσκεται στο πρόχειρο (clipboard) στην τρέχουσα θέση του δρομέα.


Ο κειμενογράφος vim δεν είναι προεγκατεστημένος σε ένα σύστημα Debian, μπορείτε όμως να τον εγκαταστήσετε πολύ εύκολα ως εξής (ως χρήστης root):


# apt-get -u install vim


Σημείωση: Ο κειμενογράφος vim παρέχει την δυνατότητα του διαφορετικού χρωματισμού του κειμένου κάτι το οποίο είναι ιδιαίτερα χρήσιμο ειδικά όταν γράφετε ή τροποποιείτε κώδικα, σενάρια κελύφους ή αρχεία παραμετροποίησης προγραμμάτων. Η επιλογή του syntax highlighting όπως λέγεται δεν είναι ενεργοποιημένη εξαρχής αλλά μπορείτε πολύ εύκολα να την ενεργοποιήσετε ως εξής:

# vi /etc/vim/vimrc

ή

# vi /etc/vimrc

αναλόγως με το ποια έκδοση του vim έχετε εγκατεστημένη. Αναζητήστε τις γραμμές κειμένου:

" Vim5 and later versions support syntax highlighting. Uncommenting the next

" line enables syntax highlighting by default.

" syntax on

Και αφαιρέστε το χαρακτήρα " πρίν από την γραμμή syntax on. Δηλαδή θα πρέπει το κείμενο να μεταβληθεί στο εξής:

" Vim5 and later versions support syntax highlighting. Uncommenting the next

" line enables syntax highlighting by default.

syntax on

Κατόπιν αποθηκεύστε το αρχείο ως εξής. Πατήστε [ESC] και δώστε :wq στη γραμμή εντολών του vim. Έχετε ενεργοποιήσει το συντακτικό χρωματισμό του vim.



Κεφάλαιο 12 - Συστήματα αρχείων του Linux

  1. Γενικά

Το σύστημα αρχείων του Linux και γενικότερα ενός συστήματος UNIX δεν είναι απαραίτητο ότι θα βρίσκεται σε μία φυσική μονάδα, όπως ένα διαμέρισμα δίσκου. Για την ακρίβεια, όπως είδατε και στο κεφ. 5 κατά την εγκατάσταση, κάτι τέτοιο δε συνιστάται. Αντίθετα, προτείνεται η χρήση πολλών διαμερισμάτων δίσκου ως δευτερέυοντα συστήματα αρχείων που θα φιλοξενήσουν τους διάφορους καταλόγους /home, /usr, /var, κ.ο.κ.

Το πρωτεύον σύστημα αρχείων είναι πάντα αυτό που φιλοξενεί τον βασικό κατάλογο root /, και όλα τα υπόλοιπα έιναι δευτερεύοντα. Για κάθε σύστημα αρχείων, πρωτεύον ή δευτερεύον υπάρχει ένας αντίστοιχος βασικός κατάλογος root. Επειδή αυτό μάλλον θα προκαλέσει σύγχυση, θα χρησιμοποιήσουμε ένα παράδειγμα.

Έστω ότι έχουμε δύο συστήματα αρχείων, σε δύο διαφορετικά διαμερίσματα hda1 και hda2 στο δίσκο. Το ένα είναι το πρωτεύον που περιέχει τον βασικό κατάλογο root / του συστήματός μας και το δεύτερο περιέχει τον κατάλογο /usr.

Ο βασικός κατάλογος root για τον υπολογιστή μας είναι στο hda1. Κάθε ένα από τα συστήματα αρχείων έχει το δικό του βασικό κατάλογο root. Στο διαμέρισμα hda1, ο βασικός κατάλογος root ταυτίζεται με τον κατάλογο root του υπολογιστή μας. Στο διαμέρισμα hda2, όμως ο βασικός κατάλογος είναι αυτός που περιέχει τα αρχεία που εμείς βλέπουμε ότι ανήκουν στο /usr.

Αυτό που γίνεται όταν χρησιμοποιούμε δύο ή περισσότερα συστήματα αρχείων, είναι να συνδέουμε τον βασικό κατάλογο των δευτερευόντων συστημάτων αρχείων με έναν κατάλογο του πρωτεύοντος. Στο παράδειγμά μας, συνδέσαμε τον βασικό κατάλογο του συστήματος αρχείων που βρίσκεται στο διαμέρισμα hda2 με τον κατάλογο /usr του συστήματος αρχείων που βρίσκεται στο hda1. Αυτή η σύνδεση ονομάζεται συναρμογή (mount), και ο κατάλογος /usr ο αρμός του συστήματος αρχείων που βρίσκεται στο hda2.

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

Αυτό ακριβώς το χαρακτηριστικό γίνεται ιδιαίτερα φανερό όταν προσπαθούμε να συναρμόσουμε ετερογενή συστήματα αρχείων, όπως δικτυακά συστήματα αρχείων ή άλλων λειτουργικών συστημάτων (π.χ. Windows, MacOS).

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

  1. Συστήματα αρχείων δίσκων

Τα βασικά συστήματα αρχείων που θα χρησιμοποιήσετε, τουλάχιστον ως νέοι χρήστες του Linux θα είναι αυτά που φιλοξενούνται σε διαμερίσματα (partitions) δίσκων. Υπάρχει μεγάλη πληθώρα διαθέσιμων συστημάτων αρχείων δίσκων (disk filesystems), μερικά από τα οποία είναι γενικής χρήσης ενώ άλλα απευθύνονται σε συγκεκριμένες απαιτήσεις και συνθήκες.

Τα πιο συνηθισμένα συστήματα αρχείων που χρησιμοποιούνται σε σχεδόν όλες τις διαθέσιμες διανομές Linux είναι τα ext2 και ext3.

Το συστήμα αρχείων ext2

Το ext2 είναι η δεύτερη έκδοση του extended filesystem (ext), το οποίο βασίστηκε με τη σειρά του στο σύστημα αρχείων του Minix που χρησιμοποιούσε στις αρχικές του εκδόσεις το Linux. Για πολλά χρόνια ήταν το de facto σύστημα αρχείων που χρησιμοποιότανε σε όλες τις εκδόσεις καθώς πρόσφερε υψηλή απόδοση, ασφάλεια δεδομένων και χαμηλή κατανάλωση επεξεργαστικής ισχύος. Τα κύρια μειονεκτήματα που οδήγησαν στην ανάπτυξη άλλων εναλλακτικών συστημάτων αρχείων ήταν ο μεγάλος χρόνος επιδιόρθωσης με την εντολή fsck σε περίπτωση βλάβης (για μεγέθη της τάξεως των μερικών GB ο χρόνος μπορούσε να φτάσει σε δεκάδες λεπτά), το οποίο με τη σειρά του σήμαινε αυξημένο χρόνο εκκίνησης του συστήματος. Σε επαγγελματικά περιβάλλοντα κάτι τέτοιο είναι ανεπίτρεπτο και έπρεπε να βρεθεί μια λύση στο πρόβλημα. Η λύση είναι τα συστήματα αρχείων με αρχείο journal (journalling filesystems).

Journalling

Το journalling είναι μια τεχνική που χρησιμοποιήθηκε αρχικά σε επαγγελματικά συστήματα αρχείων σε περιβάλλοντα UNIX. Υπάρχει μεγάλη βιβλιογραφία γύρω από το journalling και την ασφάλεια των δεδομένων, αλλά η γενική φιλοσοφία ενός τέτοιου συστήματος είναι απλή. Πρακτικά, σε ένα τέτοιο σύστημα αρχείων όλες οι αλλαγές αποθηκεύονται πρώτα σε ένα δεσμευμένο χώρο του συστήματος αρχείων, το αρχείο journal, και όχι απευθείας στα κανονικά αρχεία. Όταν το αρχείο αυτό φτάσει ένα συγκεκριμένο μέγεθος ή όταν περάσει ένα προκαθορισμένο χρονικό διάστημα (συνήθως μερικά δευτερόλεπτα), οι αλλαγές που βρίσκονται στο αρχείο journal αποθηκεύονται πλέον στους κανονικούς παραλήπτες. Αυτή η μέθοδος ευθύνεται για την αυξημένη ασφάλεια δεδομένων που προσφέρουν αυτά τα συστήματα καθώς και για τους μειωμένους χρόνους εκκίνησης (δεν είναι πλέον απαραίτητος ο έλεγχος με την εντολή fsck σε κάθε εκκίνηση).

Journalling και ext3

Το ext3 είναι η απάντηση του ext2 στα journalling συστήματα αρχείων. Τα θετικά του σημεία είναι η συμβατότητά του με το ext2 και η δυνατότητα μετατροπής ενός υπάρχοντος συστήματος αρχείων ext2 σε ext3 και αντίστροφα. Παρέχει υψηλή ασφάλεια και εξελιγμένους αλγορίθμους ανάγνωσης και εγγραφής δεδομένων που ξεπερνούν σε απόδοση ακόμη και εξειδικευμένα συστήματα αρχείων.

Η εντολή mkfs και παραλλαγές

Δοθείσας μιας μονάδας συσκευής block ή ένα σημείο επαφής αυτής μπορούμε να τη διαμορφώσουμε εύκολα με ένα σύστημα αρχείων οποιουδήποτε είδους θελήσουμε με τη χρήση της εντολής mkfs (make filesystem). Η εντολή αυτή είναι ένας wrapper που καλεί την αντίστοιχη εντολή διαμόρφωσης, αν φυσικά υπάρχει. Η σύνταξή της είναι

mkfs -t <fstype> [fs-options] filesys

όπου fstype ο τύπος του συστήματος αρχείων με τις δικές του επιλογές fs-options και filesys το όνομα της μονάδας συσκευής block ή το σημείου αρμού της (mount point).

Για το ext2 ή ext3 χωρίς να είναι απαραίτητη η εγκατάσταση επιπλέον λογισμικού στο σύστημά μας, μπορούμε να χρησιμοποιήσουμε τη mkfs ή απευθείας μια από τις mkfs.ext2, mkfs.ext3, mke2fs. Πρόκειται στην ουσία για το ίδιο πρόγραμμα, καθώς είναι σθεναροί σύνδεσμοι (hard links) στο ίδιο αρχείο.

Για εξάσκηση στις ικανότητές μας στο κέλυφος, κάτι τέτοιο μπορούμε πολύ εύκολα να το δούμε χρησιμοποιώντας τις εντολές του προηγούμενου κεφαλαίου και τις δυνατότητες των σωληνώσεων:

# ls -li /sbin |sort|uniq -D -W 1

8064 -rwxr-xr-x 3 root root 118796 May 22 01:11 e2fsck

8064 -rwxr-xr-x 3 root root 118796 May 22 01:11 fsck.ext2

8064 -rwxr-xr-x 3 root root 118796 May 22 01:11 fsck.ext3

8065 -rwxr-xr-x 3 root root 19456 May 22 01:11 e2label

8065 -rwxr-xr-x 3 root root 19456 May 22 01:11 findfs

8065 -rwxr-xr-x 3 root root 19456 May 22 01:11 tune2fs

8096 -rwxr-xr-x 2 root root 22652 Jul 14 2002 ifdown

8096 -rwxr-xr-x 2 root root 22652 Jul 14 2002 ifup

8175 -rwxr-xr-x 3 root root 27212 May 22 01:11 mke2fs

8175 -rwxr-xr-x 3 root root 27212 May 22 01:11 mkfs.ext2

8175 -rwxr-xr-x 3 root root 27212 May 22 01:11 mkfs.ext3

Κλείνοντας αυτήν τη μικρή παρένθεση, η διαμόρφωση σε ext2 ή ext3 με την εντολή mke2fs, γίνεται ως εξής:

mke2fs [OPTIONS] filesys

Η mke2fs δέχεται πληθώρα επιλογών, αλλά προς το παρόν οι σημαντικότερες που θα πρέπει να σας απασχολήσουν είναι οι εξής:

Επιλογές

Λειτουργία

-b blocksize

Ρυθμίζει το μέγεθος του block που θα χρησιμοποιήσει η μονάδα block. Δεκτά μεγέθη είναι τα 1024, 2048, 4096.

-L label

Ονομάζει το σύστημα αρχείων με την ετικέτα label.

-j

Το σύστημα αρχείων θα είναι ext3 (ενεργοποιεί το αρχείο journal).

-n

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



Για παράδειγμα, για να διαμορφώσουμε το διαμέρισμα /dev/hda2 μεγέθους 1GB σε ext3 μπορούμε να δώσουμε την εξής εντολή (μόνο ως χρήστης root!):

# mke2fs -j /dev/hda2
mke2fs 1.34-WIP (21-May-2003)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
4194304 inodes, 8388608 blocks
419430 blocks (5.00%) reserved for the super user
First data block=0
256 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

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

Εδώ, πρέπει να σημειώσουμε ότι θα πρέπει να είναι ενεργοποιημένη η υποστήριξη του ext3 στον πυρήνα του Linux που τρέχετε (η υποστήριξη ext2 είναι πάντα ενεργοποιημένη στους τυπικούς πυρήνες).

Τα συστήματα αρχείων reiserfs, xfs, jfs

Πέρα από τα ext2 και ext3, υπάρχουν πλέον και άλλα συστήματα αρχείων γενικής χρήσης διαθέσιμα για το Linux, συγκεκριμένα τα ReiserFS, το XFS της SGI και το JFS της IBM. Όλα είναι συστήματα αρχείων journalling και υποστηρίζονται από τον πυρήνα χωρίς απαραίτητους οδηγούς. Για την διαμόρφωση όμως μονάδων συσκευών σε αυτά θα πρέπει να εγκαταστήσετε ειδικό λογισμικό, όπως φαίνεται στον ακόλουθο πίνακα:

Σύστημα Αρχείων

Απαραίτητα πακέτα λογισμικού στο Debian

ReiserFS

progsreiserfs ή

reiserfsprogs

SGI XFS

kernel-patch-xfs

xfsprogs

IBM JFS

jfsutils



Καθένα από τα πακέτα αυτά μπορείτε να το εγκαταστήσετε με την εντολή:

apt-get install <packagename>

Λεπτομέρειες για τη χρήση της apt-get θα δούμε στο επόμενο κεφάλαιο.

  1. Άλλα συστήματα αρχείων

Πέρα από τα συστήματα αρχείων που είδαμε τα οποία είναι ειδικά για μονάδες δίσκων του Linux, υπάρχουν και άλλα που σκοπό έχουν την ανταλλαγή αρχείων με άλλα λειτουργικά συστήματα τα οποία έχουν δικά τους συστήματα αρχείων. Το πιο χρήσιμο ίσως σύστημα αρχείων με το οποίο θα ασχοληθείτε στο Linux πέρα από τα ext2/ext3 είναι το σύστημα αρχείων των CD-ROM, το ISO 9660.

Το σύστημα αρχείων ISO 9660

Όλα σχεδόν τα CD που κυκλοφορούν, με εξαίρεση κάποια παλαιότερα που χρησιμοποιούν το HFS σύστημα αρχείων των υπολογιστών Macintosh, χρησιμοποιούν το σύστημα αρχείων ISO 9660. Υπάρχουν κάποιες παραλλαγές, όπως το Joliet, που χρησιμοποιείται από τα Windows για διατήρηση κάποιων επιπλέον πληροφοριών (ιδιοκτησία, μεγαλύτερα ονόματα) για τα αρχεία, και το RockRidge που είναι κάτι παρόμοιο με το Joliet αλλά προυπήρχε αν και η χρήση του ήταν περιορισμένη σε συστήματα UNIX.

Για να μπορείτε να διαβάσετε CD που έχουν γραφτεί σε οποίονδήποτε σύγχρονο υπολογιστή και χρησιμοποιούν αυτό το σύστημα αρχείων, πιθανόν να χρειαστεί να ενεργοποιήσετε την υποστήριξη για το ISO 9660 στον πυρήνα. Όλοι οι πυρήνες που διατίθενται με τις διανομές Linux – και φυσικά και με το Debian – έχουν ενεργοποιημένη την υποστήριξη του ISO 9660.

Θα πρέπει, όπως εξηγήσαμε και στην αρχή του κεφαλαίου να συναρμόσετε το σύστημα αρχείου που βρίσκεται στο CD-ROM με το πρωτεύον σύστημα αρχείων του συστήματος σας. Αυτό το επιτυγχάνετε με την εντολή mount για την οποία θα μιλήσουμε σε επόμενη παράγραφο.

Χρήσιμα πακέτα λογισμικού στό Debian: mkisofs, cdrecord, sg3-utils.

Τα σύστηματα αρχείων VFAT, MSDOS και NTFS

Σε περίπτωση που στον ίδιο υπολογιστή έχετε εγκατεστημένα Windows, και έχετε κάποιο διαμέρισμα διαμορφωμένο σε VFAT (που περιλαμβάνει τα συστήματα αρχείων FAT16, FAT32, και όλες τις παραλλαγές τους) ή NTFS (που χρησιμοποιείται από τα Windows NT/2000/XP), μπορείτε να τα προσπελάσετε μέσα από το Linux. Κάτι τέτοιο είναι χρήσιμο σε περίπτωση που θέλετε να ανταλλάξετε δεδομένα από το ένα λειτουργικό στο άλλο.

Και σε αυτήν την περίπτωση θα χρειαστεί να ενεργοποιήσετε την υποστήριξη αυτών των συστημάτων αρχείων στον πυρήνα (βλ. Παράρτημα VI, σελ. 275).

Χρήσιμα πακέτα λογισμικού στό Debian: mtools, ntfstools.

  1. Δικτυακά συστήματα αρχείων

Όπως αναφέραμε και στην αρχή του κεφαλαίου, το Linux έχει μια ενιαία διαχείριση των αρχείων αναξάρτητα από το ακριβές μέσον από το οποίο έχουν συναρμοστεί (mount) στο κυρίως σύστημα αρχείων. Αυτό επέτρεψε στους προγραμματιστές να αναπτύξουν συστήματα αρχείων που λειτουργούν μέσω δικτύου και στα οποία το ίδιο το σύστημα αρχείων βρίσκεται σε άλλο υπολοιγιστή UNIX (μέσω NFS), σε διαφορετικής αρχιτεκτονικής υπολογιστή (π.χ. Windows), η ακόμη και διαμοιρασμένο στο δίκτυο χωρίς να βρίσκεται εξοκλήρου σε κάποιο συγκεκριμένο υπολογιστή (ClusterFS, GFS). Στο Linux, αυτά τα αρχεία θα φαίνονται απλώς σαν κοινά αρχεία σε κάποιον κατάλογο κάτω από τον οποίο γίνεται η συναρμογή.

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

Το σύστημα αρχείων NFS (επικοινωνία με UNIX)

Είχαμε ήδη μια πρώτη επαφή με το σύστημα NFS (Network File System) κατά την εγκατάσταση του Debian. Το NFS είναι ένα αρκετά παλιό δικτυακό σύστημα αρχείων που χρησιμοποιείται ευρέως ακόμη και σήμερα, λόγω της σταθερότητας, της αξιοπρεπούς απόδοσης και της ευκολίας χειρισμού του. Η δήλωση μιας διαδρομής σε σύστημα NFS είναι η εξής:

hostname:/directory 

ή

IP-address:/directory

Για παράδειγμα, αν έχετε ονομάσει τον τομέα (domain) του εσωτερικού σας δικτύου arda.nonet και υπάρχει ένας υπολογιστής ονόματι mordor με διεύθυνση IP 192.168.1.10 που προσφέρει τον κατάλογο /home μέσω NFS, μπορείτε να χρησιμοποιήσετε τις εξής διαδρομές:

mordor.arda.nonet:/home
192.168.1.10:/home

Πληροφορίες για το NFS, μπορείτε να βρείτε στη σελίδα οδηγιών nfs:

$ man nfs

Χρήσιμα πακέτα λογισμικού στό Debian: portmap, nfs-kernel-server, nfs-user-server.

Το σύστημα αρχείων smbfs (επικοινωνία με Windows)

Με παρόμοιο τρόπο, μπορείτε να δείτε τα αρχεία των υπολογιστών σε ένα δίκτυο Windows με το πρόγραμμα Samba. Το πρόγραμμα αυτό εμφανίζει στο δίκτυο αυτό τον υπολογιστή σας ως άλλο ένα σύστημα Windows και είναι δυνατή η μεταφορά αρχείων από και προς τον υπολογιστή σας στο υπόλοιπο δίκτυο. Δυστυχώς, η εγκατάσταση ενός τέτοιου συστήματος είναι σχετικά περίπλοκη και ξεφεύγει από τους σκοπούς αυτού του οδηγού (στην πραγματικότητα είναι θέμα ενός ολόκληρου βιβλίου από τον εκδοτικό οίκο O'Reilly!). Εντούτοις, στο κεφ. 14 αναφέρουμε τις βασικές πληροφορίες για τη ρύθμιση αυτού του συστήματος ώστε να μπορείτε να ανταλλάξετε δεδομένα σε μια ομάδα εργασίας (workgroup) ενός δικτύου Windows.

Χρήσιμα πακέτα λογισμικού στό Debian: smbclient, smbfs, samba.

  1. Ειδικά συστήματα αρχείων

Στα συστήματα αρχείων που είδαμε μέχρι τώρα τα αρχεία έχουν κάποια φυσική υπόσταση, δηλαδή υπάρχουν στην επιφάνεια κάποιου δίσκου ή άλλου αποθηκευτικού μέσου. Το Linux προσφέρει για συγκεκριμένες ανάγκες και κάποια εικονικά συστήματα αρχείων στα οποία τα αρχεία έχουν κάποια ειδική σημασία, π.χ. παρουσιάζουν πληροφορίες για το σύστημα ή αντιστοιχούν σε συσκευές που συνδέονται κατά τη διάρκεια λειτουργίας του συστήματος (hot-plug), όπως συμβαίνει με τις συσκευές USB και Firewire.

Το εικονικό σύστημα αρχείων devfs

To σύστημα αυτό χρησιμοποιείται ως εναλλακτική λύση στον τρόπο διαχείρισης των αρχείων των μονάδων συσκευών που βρίσκονται συνήθως στον κατάλογο /dev. Χωρίς το devfs, με μια απλή ματιά θα διαπιστώσετε το τεράστιο πλήθος των αρχείων που βρίσκονται σε αυτόν τον κατάλογο.

Κάθε ένα από αυτά αρχεία είναι σημείο επαφής μιας μονάδας συσκευής υλικού (διαμερίσματος σκληρού δίσκου, μονάδας CD-ROM, τερματικού, σειριακής και παράλληλης θύρας, κλπ). Για να χρησιμοποιήσετε την κάθε συσκευή θα πρέπει να χρησιμοποιήσετε το σημείο επαφής της. Φυσικά, σπάνια βρίσκεται υπολογιστής που να έχει τόσες συσκευές συνδεδεμένες όσα και σημεία επαφών. Τα σημεία επαφών έχουν προδημιουργηθεί για μελλοντική χρήση, με το σενάριο κελύφους /dev/MAKEDEV. Τα περισσότερα από αυτά είναι αχρησιμοποίητα αλλά βρίσκονται στον κατάλογο αυτό για περίπτωση που υπάρξει ανάγκη.

Τα προβλήματα που δημιουργούνται με αυτήν την αντιμετώπιση, πέρα από το πλήθος των περιττών αρχείων, είναι αρχικά η μη ομαδοποίηση των σημείων επαφής των συσκευών, δηλαδή ανεξάρτητα του είδους της συσκευής (διαμέρισμα δίσκου, σειριακής θύρας, ποντικιού, κλπ) όλα βρίσκονται στον κατάλογο /dev. Στο παρελθόν, όταν ο αριθμός των διαθέσιμων συσκευών δεν ήταν τόσο μεγάλος αυτό δεν αποτελούσε πρόβλημα. Όμως τα πρωτόκολλα SCSI, USB και Firewire, χρησιμοποιούν γενικής χρήσης θύρες στις οποίες συνδέονται αμέτρητες συσκευές. Με το υπάρχον σύστημα θα έπρεπε να δημιουργήσουμε σημεία επαφής για όλες τις πιθανές συσκευές που συνδέονται στην κάθε θύρα και όλα αυτά θα έπρεπε να είναι μέσα στον κατάλογο /dev μη ομαδοποιημένα! Κάτι τέτοιο είναι φυσικά παράλογο.

Αλλά αν υποθέσουμε ότι λυνόταν το πρόβλημα της ομαδοποίησης, θα είχαμε ακόμη ένα σημαντικό πρόβλημα να αντιμετωπίσουμε, αυτό της πρόβλεψης όλων των πιθανών συσκευών που συνδέονται ή πρόκειται να συνδεθούν στις συγκεκριμένες θύρες ώστε να δεσμεύσουμε για κάθε μια τους αντίστοιχους πρωτεύοντες και δευτερεύοντες αριθμούς μονάδος (major και minor device numbers). Με το υπάρχον συστημα, κάτι τέτοιο δεν είναι εφικτό, καθώς γρήγορα θα εξαντλούνταν όλοι οι διαθέσιμοι αριθμοί (έχοντας διαθέσιμο εύρος 8-bit ο καθένας).

Αυτά και άλλα ακόμη προβλήματα της υπάρχουσας υποδομής, οδήγησαν στην ανάπτυξη ενός συστήματος όπως το Devfs. Το Devfs, προσφέρει ένα εικονικό σύστημα αρχείων που εμφανίζει ομαδοποιημένες τις συσκευές και μόνο αυτές που είναι συνδεδεμένες την κάθε στιγμή. Αυτό έχει το θετικό χαρακτηριστικό της μείωσης του αριθμού των αρχείων και την εμφάνιση ακόμη και των συσκευών που συνδέονται κατά τη διάρκεια της λειτουργίας του υπολογιστή (hot-pluggable devices). Συν τοις άλλοις, προσφέρει πλήρη συμβατότητα με την ονοματολογία των συσκευών του Linux όπως χρησιμοποιούνται με το υπάρχον σύστημα.

Μερικά παραδείγματα της ονοματολογίας του Devfs εμφανίζονται στον επόμενο πίνακα:



Παλιά ονομασία

Ονομασία Devfs

/dev/hda1
/dev/ide/host0/bus0/target0/lun0/part1
/dev/sda3
/dev/scsi/host0/bus0/target0/lun0/part3
/dev/sg1
scsi/host2/bus0/target0/lun0/generic
/dev/tty2
/dev/vc/2
/dev/psaux
/dev/misc/psaux



Φυσικά ισχύουν και οι καινούριες ονομασίες για λόγους συμβατότητας.

Για να χρησιμοποιήσετε το Devfs θα πρέπει να ενεργοποιήσετε την αντίστοιχη επιλογή στον πυρήνα του Linux (βλ. Παράρτημα VI, σελ. 275).

Για περισσότερες πληροφορίες για το Devfs, μπορείτε να ανατρέξετε στην διεύθυνση:

http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html

Χρήσιμα πακέτα λογισμικού στό Debian: devfsd.

Το εικονικό σύστημα αρχείων procfs

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

Πιο αναλυτικά στο procfs και στα χαρακτηριστικά του θα αναφερθούμε στο κεφ. 14.

Το procfs είναι εκ των προτέρων ενεργοποιημένο σε κάθε πυρήνα του Linux και ο αρμός του (mount point είναι πάντα ο κατάλογος /proc).

Χρήσιμα πακέτα λογισμικού στό Debian: procps, psmisc, systune.

  1. Οι Εντολές mount & umount

Η εντολή mount

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

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

mount [-l]
mount [OPTIONS] -a
mount [OPTIONS] device | dir
mount [OPTIONS] device dir

Με τον πρώτο τρόπο εκτέλεσης, η mount απλώς επιστρέφει τα υπάρχοντα συστήματα αρχείων που είναι συναρμοσμένα στο σύστημα, και η επιλογή -l δίνει σε αγκύλες τις ετικέτες αυτών (labels), όπως αυτές έχουν δοθεί με κάποιο πρόγραμμα όπως fdisk, cfdisk, κλπ. Παράδειγμα:

# mount
/dev/ide/host0/bus0/target0/lun0/part1 on / type ext3 (rw, errors=remount-ro)
proc on /proc type proc (rw)
/dev/ide/host0/bus0/target0/lun0/part5 on /usr type ext3 (rw)
/dev/ide/host0/bus0/target0/lun0/part6 on /home type ext3 (rw)

Η mount μας δίνει τις εξής πληροφορίες: το σύστημα χρησιμοποιεί devfs, υπάρχει εικονικό σύστημα αρχείων /proc και τρία συστήματα ext3 στα διαμερίσματα 1, 5 και 6. Το πρώτο είναι το πρωτεύον και φιλοξενεί τον βασικό κατάλογο root, ενώ τα 5 και 6 φιλοξενούν τους καταλόγους /usr και /home αντίστοιχα. Οι επιλογές που φαίνονται στις παρενθέσεις θα αναλυθούν παρακάτω.

Η δεύτερη χρήση της mount είναι με την επιλογή -a. Σε αυτήν την περίπτωση η mount συναρμόζει όλα τα συστήματα αρχείων που είναι δηλωμένα στο αρχείο /etc/fstab, για το οποίο θα αναφερθούμε στην επόμενη παράγραφο.

Η τρίτη περίπτωση χρησιμοποιεί πάλι το αρχείο fstab, αλλά συναρμόζει μόνο το ζητούμενο σύστημα αρχείων. Θα πρέπει να δοθεί είτε το όνομα της μονάδας της συσκευής (π.χ. το διαμέρισμα) είτε το όνομα του αρμού (mount point) του συστήματος αρχείων. Για παράδειγμα, χρησιμοποιώντας το προηγούμενο παράδειγμα, οι παρακάτω εντολές είναι ισοδύναμες:

# mount /dev/ide/host0/bus0/target0/lun0/part6

ή

# mount /dev/hda6

ή

# mount /home

Παρόμοιο τρόπο θα χρησιμοποιούμε για να συναρμόσουμε ένα CD-ROM, συνήθως υπό τον κατάλογο /cdrom (θεωρώντας πάντα ότι υπάρχει μια καταχώρηση στο αρχείο fstab):

# mount /cdrom

Τέλος, στην περίπτωση που θέλουμε να συναρμόσουμε κάποιο σύστημα αρχείων προσωρινά και δεν υπάρχει καταχώρηση στο αρχείο fstab πρέπει να δοθεί και το όνομα της μονάδας της συσκευής (device) και το όνομα του αρμού (dir). Για να κρατήσουμε μια ομοιομορφία στα παραδείγματα, έστω ότι θέλουμε να συναρμόσουμε το διαμέρισμα hda7 που φιλοξενεί ένα σύστημα αρχείων ext3 στον αρμό /tmp:

# mount -t ext3 /dev/hda7 /tmp

ή με τη χρήση του devfs

# mount -t ext3 /dev/ide/host0/bus0/target0/lun0/part7 /tmp

Θεωρώντας ότι η συσκευή οδηγού CD-ROM έχει σημείο επαφής το /dev/cdrom, μπορούμε να συναρμόσουμε ένα CD-ROM με σύστημα αρχείων ISO 9660, χωρίς να υπάρχει καταχώρηση στο fstab, ως εξής:

# mount -t iso9660 /dev/cdrom /cdrom

Προχωρώντας σε περισσότερα παραδείγματα, έστω ότι στο σύστημά μας είναι εγκατεστημένα παράλληλα και τα Windows XP με δύο διαμερίσματα, ένα σε NTFS και ένα σε FAT32 (το οποίο στο Linux αναγνωρίζεται ως VFAT). Έστω ότι το NTFS βρίσκεται στο διαμέρισμα hda1 και το FAT32 στο διαμέρισμα hdb5 (πρώτο λογικό διαμέρισμα στον δεύτερο δίσκο IDE, βλ. κεφ. 2). Αυτά θέλουμε να τα συναρμόσουμε στους καταλόγους /mnt/windows/ntfs και /mnt/windows/fat αντίστοιχα.

# mount -t ntfs /dev/hda1 /mnt/windows/ntfs
# mount -t vfat /dev/hdb5 /mnt/windows/fat

Αν τώρα θελήσουμε για παράδειγμα να συναρμόσουμε το NTFS διαμέρισμα μόνο για ανάγνωση, μπορούμε να χρησιμοποιήσουμε την επιλογή -o ro (Read Only):

# mount -t ntfs -o ro /dev/hda1 /mnt/windows/ntfs

Τέλος, έστω ότι για τον κατάλογο /home, θέλουμε να χρησιμοποιήσουμε NFS από το server moria με διεύθυνση IP 192.168.10.34, αλλά όχι στη προκαθορισμένη διαδρομή. Για να περιπλέξουμε τα πράγματα, έστω ότι ο moria διανέμει τους καταλόγους home των χρηστών υπό το όνομα /external/users/homedirs. Τότε, μπορούμε πολύ εύκολα να συναρμόσουμε τον κατάλογο αυτό στον δικό μας κατάλογο /home:

# mount -t nfs moria:/external/users/homedirs /home

ή

# mount -t nfs 192.168.10.34:/external/users/homedirs /home

Αναφερθήκαμε σε ορισμένες επιλογές της mount χωρίς να τις εξηγήσουμε. Ακολουθεί επεξηγηματικός πίνακας ορισμένων από τις βασικότερες επιλογές που δέχεται η εντολή:



Επιλογές

Λειτουργία

-t vfstype

Ορίζει το είδος του συστήματος αρχείων. Μερικά από τα αποδεκτά είναι: ext2, ext3, vfat, msdos, iso9660, hfs, ntfs, nfs, proc, reiserfs, jfs, ufs, xfs.

-r

Ισοδύναμη με την -o ro.

-w

Ισοδύναμη με την -o rw.

-f

(fake) Προσποιείται τη συναρμογή.

-o options

Περνάει ειδικές επιλογές στο συγκεκριμένο σύστημα αρχείων. Πολλά έχουν δικές τους επιλογές οι οποίες πρέπει να δηλωθούν εδώ. Κοινές για όλα τα συστήματα αρχείων είναι οι:

ro: Read Only, συναρμόζει το σύστημα μόνο για ανάγνωση.

rw: Read/Write, το σύστημα θα είναι διαθέσιμο και για εγγραφή.

remount: Επανασυναρμόζει το σύστημα αρχείων.

User: Ένας απλός χρήστης μπορεί να καλέσει τη mount για αυτό το σύστημα αρχείων.

Noauto: Δεν γίνεται αυτόματη συναρμογή του συστήματος αρχείων με την εκκίνηση του συστήματος.

Ειδικά για το ext2/ext3 μπορούμε να χρησιμοποιήσουμε τις εξής:

errors: μπορεί να πάρει μία από τις εξής τιμές:

  • errors=continue, συνεχίζει χωρίς πρωτοβουλία.

  • errors=remount-ro, συναρμόζει το σύστημα μόνο για ανάγνωση.

  • errors=panic, τερματίζει απότομα το σύστημα και ορίζει κατάσταση πανικού.

Η εντολή umount

Αντίστροφα, μπορούμε να αποσυναρμόσουμε ένα σύστημα αρχείων από τον βασικό κατάλογο με την εντολή umount.

Έχει παρόμοια σύνταξη με τη mount, την οποία μπορούμε πιο εύκολα να δούμε με μερικά παραδείγματα:

# umount -a

Αποσυναρμόζει όλα τα συνδεδεμένα συστήματα αρχείων (στην πραγματικότητα όλα όσα αναφέρονται στο αρχείο /etc/mtab).

# umount /home

Αποσυναρμόζει το σύστημα αρχείων /home (ό,τι και αν είναι αυτό, ext3, nfs, κλπ).

# umount -a -t vfat

Αποσυναρμόζει όλα τα συστήματα αρχείων vfat.

# umount moria:/external/users/homedirs

Αποσυναρμόζει το σύστημα αρχείων που συναρμόστηκε μέσω NFS από τον διακομιστή moria.

Για περισσότερες πληροφορίες για την umount, ανατρέξατε στη σελίδα οδηγιών της εντολής.

Το αρχείο fstab

Έχουμε ήδη αναφερθεί στο αρχείο /etc/fstab. Αυτό δεν είναι παρά ένα αρχείο που ορίζει τα συστήματα αρχείων που θα συναρμοστούν στο σύστημα κατά την εκκίνηση. Είναι ένα απλό αρχείο κειμένου, στο οποίο κάθε γραμμή είναι μια καταχώρηση ενός συστήματος αρχείων. Ακολουθεί ένα τυπικό αρχείο fstab:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>                  <dump>  <pass>
/dev/hda1         /              ext3    defaults,errors=remount-ro  0       1
/dev/hda5         swap           swap    defaults                    0       0
proc              /proc          proc    defaults                    0       0
/dev/fd0          /floppy        auto    defaults,user,noauto        0       0
/dev/cdrom        /cdrom         iso9660 defaults,ro,user,noauto     0       0
/dev/hda6         /usr           ext3    defaults                    0       2
/dev/hda7         /var           ext3    defaults                    0       2
/dev/hda8         /home          ext3    defaults                    0       2

(Οι γραμμές που αρχίζουν με το χαρακτήρα # είναι σχόλια)

Στην πρώτη στήλη φαίνεται το όνομα της μονάδας block που φιλοξενεί το σύστημα αρχείων και στη δεύτερη στήλη ο αρμός του (mount point). Στην τρίτη στήλη ορίζεται το είδος του συστήματος αρχείων (με την επιλογή auto, αφήνεται στον πυρήνα να αποφασίσει ποιο είδος θα χρησιμοποιήσει) και στην τέταρτη οι ειδικές επιλογές με τις οποίες κάθε σύστημα αρχείων συναρμόζεται. Η πέμπτη στήλη δε χρησιμοποιείται πλέον και τέλος, η έκτη στήλη ορίζει τη σειρά προτεραιότητας με την οποία γίνεται η συναρμογή ξεκινώντας από 1 για το βασικό σύστημα αρχείων root και 2 για τα υπόλοιπα. Για τα δικτυακά και τα εικονικά συστήματα αρχείων και για το διαμέρισμα εναλλαγής μνήμης (swap) η προτεραιότητα έχει την τιμή 0.

Το αρχείο εναλλαγής μνήμης (swap)

Αν και αρκετές φορές συναντάται ως swap filesystem, κάτι τέτοιο είναι λάθος, καθώς δεν πρόκειται για σύστημα αρχείων. Δε συναρμόζεται κάπου και δε φιλοξενεί αρχεία ή άλλες παρόμοιες δομές. Η σύγχυση οφείλεται στο ότι δηλώνεται στο αρχείο fstab και καταλαμβάνει συνήθως ένα διαμέρισμα, ενώ υπάρχουν ειδικά εργαλεία που το αρχικοποιούν όπως ακριβώς και με ένα σύστημα αρχείων. Είναι δυνατή η χρήση περισσοτέρων από μία μονάδα εναλλαγής μνήμης με τη χρήση προτεραιοτήτων.

Υπάρχουν οι εξής απλές εντολές που αφορούν την δημιουργία και ενεργοποίηση ενός αρχείου εναλλαγής μνήμης: mkswap, swapon και swapoff. Συντάσσονται ως εξής:

mkswap [options] device | file
swapon -a
swapon [-v] [-p priority]  specialfile ...
swapoff -a
swapoff specialfile ...

Η mkswap αρχικοποιεί ένα αρχείο ή διαμέρισμα δίσκου για χρήση ως αρχείο εναλλαγής μνήμης. Από τις επιλογές που δέχεται, η πιο χρήσιμη για τους περισσότερους χρήστες είναι η -c, που ελέγχει το διαμέρισμα δίσκου για κατεστραμμένα blocks πριν το αρχικοποιήσει.

Η swapon και swapoff ενεργοποιούν και απενεργοποιούν αντίστοιχα ένα αρχείο ή μονάδα εναλλαγής μνήμης. Οι παράμετροι που χρησιμοποιούν είναι οι εξής:

Επιλογές

Λειτουργία

-a

Ενεργοποιεί ή απενεργοποιεί όλα τα αρχεία ή μονάδες εναλλαγής μνήμης που αναγράφονται στο αρχείο fstab.

-p

(μόνο swapon) Ορίζει την προτεραιότητα της μονάδας εναλλαγής μνήμης και φυσικά έχει σημασία η χρήση της μόνο για περισσότερες από μία μονάδες στο ίδιο σύστημα.

-s

(μόνο swapon) Εμφανίζει πληροφορίες για την κατάσταση της μονάδας. Τις ίδιες πληροφορίες μπορούμε να λάβουμε και από το αρχείο /proc/swaps.

-e

(μόνο swapon) Σε συνδυασμό με την -a, αγνοεί σιωπηλά μη διαθέσιμες μονάδες εναλλαγής μνήμης.

  1. Επιδιόρθωση συστημάτων αρχείων

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

Όσον αφορά τις βλάβες του υλικού, λίγα μπορούμε να κάνουμε, και εξαρτάται πάντα από το μέγεθος της βλάβης. Αν για παράδειγμα έχει πάθει τοπική βλάβη σε κάποια blocks (bad blocks όπως ονομάζονται) τότε μπορείτε να διασώσετε τα υπόλοιπα δεδομένα και να τα αντιγράψετε σε ένα καινούριο σκληρό δίσκο. Αν πάλι καταστραφεί ολοσχερώς ο σκληρός δίσκος, θα πρέπει να αποχαιρετήσετε τα δεδομένα σας...

Οι λογικές βλάβες αφορούν με κάποια λάθος πληροφορία που έχει αποθηκευτεί στο σύστημα αρχείων και προκαλεί σύγχυση στον υπολογιστή. Για παράδειγμα, αν ο υπολογιστής έκλεισε τη στιγμή που γινόταν εγγραφή ενός αρχείου, όταν επανεκκινήσει ξανά, το αρχείο θα έχει μείνει σε μια αντιφατική κατάσταση. Ορισμένα από τα δεδομένα ίσως να έχουν προλάβει να εγγραφούν αλλά όχι όλα. Πιθανόν να έχουν δεσμευτεί πληροφοριακοί κόμβοι (i-nodes) για το αρχείο οι οποίοι ακόμη να είναι κενοί ή ακόμη και να ανήκουν σε κάποιο άλλο αρχείο. Ακόμη μπορείτε να γίνει κάποια λάθος κίνηση από το χρήστη, όπως π.χ. να γράψει απευθείας δεδομένα στο σημείο επαφής του διαμερίσματος (dd if=/dev/random of=/dev/sda1!). Αυτά και άλλα προβλήματα είναι πολύ εύκολο να συμβούν, ειδικά σε συστήματα που έχουν πρόβλημα με τη σταθερή παροχή ρεύματος και απρόσεχτους χρήστες!

Ευτυχώς, τα περισσότερα από τα προβλήματα αυτά μπορούν να επιλυθούν με τη χρήση λογισμικού ελεγχου και επιδιόρθωσης (filesystem check & repair software). Κάθε είδος συστήματος αρχείων έχει δικό του τέτοιο λογισμικό και θα πρέπει να χρησιμοποιείται σε κάθε πρόβλημα.

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

Σε μερικές περιπτώσεις όμως, το πρόβλημα που έχει δημιουργηθεί είναι αρκετά σοβαρό και θα πρέπει να υπάρξει παρέμβαση χρήστη (θα δείτε το μήνυμα “user intervention required”). Στην περίπτωση αυτή το σύστημα θα μεταφερθεί σε κατάσταση ανάγκης (βλ. Παράρτημα V, σελ. 274). Στην περίπτωση αυτή θα πρέπει να εκτελέσετε χειροκίνητα το αντίστοιχο πρόγραμμα επιδιόρθωσης και να οδηγήσετε το πρόγραμμα κατά τη διαδικασία της επιδιόρθωσης.

Είναι ιδιαίτερα σημαντικό να χρησιμοποιήσετε το σωστό λογισμικό επιδιόρθωσης. Είναι ανώφελο να προσπαθήσετε να χρησιμοποιήσετε το λογισμικό επιδιόρθωσης του ext3 σε διαμέρισμα που φιλοξενεί NTFS σύστημα αρχείων. Οι δομές τους είναι τελείως διαφορετικές και το πιθανότερο είναι ότι το ίδιο το λογισμικό δε θα σας αφήσει. Υπάρχει όμως περίπτωση να νομίζει ότι πρόκειται για κατεστραμμένο ext3 σύστημα αρχείων και να προχωρήσει στην επιδιόρθωση καταστρέφοντας έτσι και το NTFS. Βεβαιωθείτε ότι χρησιμοποιείτε το σωστό λογισμικό πριν προσπαθήσετε να κάνετε κάποια επιδιόρθωση χειροκίνητα. Ευτυχώς, κάτι τέτοιο είναι αρκετά απίθανο και σπάνια θα χρειαστεί να καλέσετε απευθείας το πρόγραμμα επιδιόρθωσης του συγκεκριμένου συστήματος αρχείων. Τις περισσότερες φορές, αρκεί να καλέσετε την εντολή fsck και αυτή αναλαμβάνει να εκτελέσει το σωστό πρόγραμμα επιδιόρθωσης.

Η εντολή fsck

Όπως αναφέραμε, η εντολή αυτή καλείται αυτόματα κατά την εκκίνηση του συστήματος για τον έλεγχο των συστημάτων αρχέιων. Η ίδια η εντολή δεν πραγματοποιεί κάποιου είδους επιδιόρθωση στο σύστημα αρχείων, παρά μόνο εκτελεί το σωστό πρόγραμμα επιδιόρθωσης (συνήθως υπό το όνομα fsck.fstype όπου fstype το είδος του συστήματος αρχείων, π.χ. ext2, minix). Σε περίπτωση που χρειαστεί να την εκτελέσετε χειροκίνητα, η σύνταξή της είναι η εξής:

fsck [OPTIONS] device | dir [--] [FS-OPTIONS]

όπου device το σημείο επαφής της μονάδος που φιλοξενεί το σύστημα αρχείων ή dir το όνομα του καταλόγου που λειτουργεί ως αρμός (στην περίπτωση χρήσης αρμού, θα πρέπει να υπάρχει αντίστοιχη καταχώρηση στο αρχείο /etc/fstab). Ως επιλογές αναφέρουμε τις σημαντικότερες:

Επιλογές

Λειτουργία

-t fslist

Ορίζει το είδος ή τα είδη του συστήματος αρχείων (χωριζόμενα με κόμμα) που θα ελεγχθούν/επιδιορθωθούν.

-A

Ελέγχει/επιδιορθώνει όλα τα συστήματα αρχείων που είναι δηλωμένα στο αρχείο fstab.

-C

Εμφανίζει μια ράβδο προόδου (progress bar) για την διαδικασία ελέγχου/επιδιόρθωσης.

-N

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

--

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

-a: Αυτόματη επιδιόρθωση του συστήματος αρχείων.

-r: Διαλογική επιδιόρθωση του συστήματος αρχείων.

Στην περίπτωση που θέλετε να χρησιμοποιήσετε πιο περίπλοκες επιλογές καλό είναι να καλέσετε το ίδιο το πρόγραμμα επιδιόρθωσης (π.χ. fsck.ext2) και όχι το wrapper fsck.


Το θέμα της επιδιόρθωσης ενός συστήματος δε σταματάει εδώ. Υπάρχουν πολλά κείμενα στο Internet αλλά και στην ίδια τη διανομή Debian, που θα σας δώσουν περισσότερες πληροφορίες. Πολύ χρήσιμες θα βρείτε τις σελίδες οδηγιών των προγραμμάτων fsck, fsck.ext2, αλλά και κείμενα περιγραφής του συστήματος ext2. Άν έχετε εγκατεστημένο το πακέτο λογισμικού kernel-source-2.4.xx (όπου 2.4.xx η τελευταία έκδοση του πυρήνα, τη στιγμή γραφής του παρόντος 2.4.20), ενα καλό σημείο εκκίνησης είναι:

/usr/src/kernel-source-2.4.20/Documentation/filesystems/ext2.txt




Κεφάλαιο 13 - Εγκατάσταση λογισμικού στο Debian

  1. Ιστορικό

Αρχικά, οι διανομές του Linux δε χρησιμοποιούσαν την έννοια του πακέτου λογισμικού. Αντίθετα, χρησιμοποιούσαν την αρχειοθήκη του πηγαίου κώδικα κάθε προγράμματος (το αρχέιο .tar.gz δηλαδή) και έκαναν όλη τη διαδικασία της εγκατάστασης χειροκίνητα. Αυτή η διαδικασία περιλάμβανε τη ρύθμιση (configuration), μεταγλώττιση (compile) και εγκατάσταση (install) των προγραμμάτων στις σωστές τους θέσεις και πολλές φορές έπαιρνε ακόμη και ώρες.

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

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

Εμφανίστηκαν αρκετές διανομές η κάθε μία με το δικό της σύστημα πακέτων λογισμικού, που χαρακτηριζόταν από διάφορα πλεονεκτήματα και μειονεκτήματα. Πλέον, τα είδη των πακέτων λογισμικού που επικράτησαν είναι στην ουσία αυτά που βασίστηκαν στο RPM (Redhat Package Manager) και στο DPKG (Debian Package).

  1. Το σύστημα πακέτων λογισμικού του Debian

Το σύστημα πακέτων του Debian μαζί με ορισμένα εργαλεία όπως το APT, είναι στην ουσία αυτά που έχουν οδηγήσει το Debian να θεωρείται μια από τις πιο εύκολες στη διαχείριση διανομές Linux που υπάρχουν. Τα πλεονεκτήματα του συστήματος πακέτων του Debian είναι η αυστηρότητα και η συνέπεια από την οποία διέπεται, όσον αφορά τις εξαρτήσεις (dependencies) μεταξύ των πακέτων, καθώς και την αυξημένη παραμετροποίηση των πακέτων κατά την εγκατάσταση, με τη χρήση προγραμμάτων όπως το debconf. Κάθε πακέτο λογισμικού του Debian, χαρακτηρίζεται από αρκετά πεδία, τα πιο σημαντικά εκ των οποίων είναι τα εξής:

Με βάση ορισμένα από αυτά τα πεδία, συγκεκριμένα το όνομα, την αρχιτεκτονική και την έκδοση (κύρια και δευτερεύουσα) ονομάζεται το αρχείο που περιέχει το πακέτο λογισμικού. Συγκεκριμένα, κάθε πακέτο στο Debian χρησιμοποιεί την εξής ονοματολογία:

name-version-revision_arch.deb

όπου name το όνομα του πακέτου (πάντα με μικρούς λατινικούς χαρακτήρες), version η upstream έκδοση του πακέτου, revision η δευτερεύουσα έκδοση στο Debian, arch η αρχιτεκτονική και .deb είναι η κατάληξη που χαρακτηρίζει κάθε πακέτο λογισμικού του Debian. Ένα παράδειγμα ονόματος είναι coreutils-5.0-4_i386.deb.

Υπάρχει περίπτωση να δούμε και ένα ακόμη πεδίο το epoch (ΤODO?), το οποίο χωρίζεται από την κύρια έκδοση με άνω και κάτω τελεία “:”. Αυτό είναι ένας αριθμός που όταν υπάρχει θεωρείται ως ένας τρόπος να επιβάλλουμε την εγκατάσταση ενός πακέτου ακόμη και όταν το υπάρχον φαίνεται ότι έχει μεγαλύτερη έκδοση. Για παράδειγμα, έστω ότι έχουμε το πακέτο λογισμικού autotools-dev με έκδοση που αντιστοιχεί στην ημερομηνία συγκρότησής του από το δέντρο CVS (20030519) και revision 1, δηλαδή η έκδοση του πακέτου λογισμικού είναι 20030519-1.

Αν κάποια στιγμή κυκλοφορήσει μια τελική έκδοση του πακέτου, π.χ. 2.1-1 τότε το σύστημα δε θα δεχτεί να το εγκαταστήσει γιατί, ως αριθμός, η έκδοση 20030519-1 είναι προφανώς μεγαλύτερη από τη 2.1-1. Σε αυτήν την περίπτωση χρησιμοποιείται το πεδίο epoch και η έκδοση του νέου πακέτου είναι πλέον 1:2.1-1. Το σύστημα διαχείρισης πακέτων θα αναγνωρίσει το epoch και θα εγκαταστήσει το σωστό πακέτο. Σε περίπτωση που και η παλιά έκδοση είχε πεδίο epoch, θα εγκατασταθεί το πακέτο με το μεγαλύτερο epoch.

Εξαρτήσεις & Εκδόσεις

Θα αναφερθούμε λίγο περισσότερο στη σημασία των εξαρτήσεων και των εκδόσεων και το πόσο σημαντικές είναι στην διαχείριση του συστήματος.

Για παράδειγμα θα θεωρήσουμε ένα από τα πιο χρήσιμα πακέτα στη διανομή (και ίσως το πιο απαραίτητο!), το μεταγλωττιστή GNU της γλώσσας C, gcc. Το πακέτο αυτό έχει τη στιγμή της συγγραφής του οδηγού τις εξής εξαρτήσεις:

cpp (>= 3:3.3-1), gcc-3.3 (>= 1:3.3-0pre9), cpp-3.3 (>= 1:3.3-0pre9)

Αυτό σημαίνει ότι για να μπορέσουμε να εγκαταστήσουμε το πακέτο gcc, θα πρέπει πρώτα να έχουμε εγκαταστήσει τα πακέτα cpp, gcc-3.3 και cpp-3.3 με εκδόσεις μεγαλύτερες ή ίσες από αυτές που φαίνονται στις παρενθέσεις.

Αντίστοιχα, το πακέτο gcc-3.3 εξαρτάται από τα εξής πακέτα:

gcc-3.3-base, libgcc1 (>= 1:3.3), libc6 (>= 2.3.1-1), cpp-3.3 (>= 1:3.3), cpp-3.3 (<< 1:3.4), binutils (>= 2.13.90.0.10)

Έτσι για να εγκαταστήσουμε το πακέτο gcc, θα πρέπει να έχουμε εγκαταστήσει όλα τα παραπάνω πακέτα (καθώς και αυτά που εξαρτάται το καθένα).

Προφανώς, η εγκατάσταση των πακέτων, αν φυσικά πρόκειται να την κάνετε χειροκίνητα πρέπει να γίνει από το χαμηλότερο επίπεδο του δέντρου και σταδιακά να ανεβαίνουμε επίπεδο. Κάτι τέτοιο μπορεί να αποδειχτεί αρκετά κουραστικό ειδικά όταν πρόκειται για εγκατάσταση πολλών πακέτων. Ευτυχώς, το Debian προσφέρει το APT, ένα εργαλείο που αυτοματοποιεί τη διαδικασία της εγκατάστασης σε μεγάλο βαθμό, όπως θα δούμε και σε επόμενη παράγραφο.

  1. Το εργαλείο dpkg

Για την εγκατάσταση ή απεγκατάσταση των πακέτων, το βασικό εργαλείο είναι η εντολή dpkg. Αυτή αναλαμβάνει να κάνει τους ελέγχους για τις εξαρτήσεις των πακέτων, να τοποθετήσει τα αρχεία στις σωστές τους θέσεις, να εκτελέσει πιθανά σενάρια κελύφους για τη ρύθμιση ή απορύθμιση του πακέτου και να εκκινήσει ακόμη κάποια προγράμματα-δαίμονες (daemons).

Βασικές λειτουργίες

Το εργαλείο dpkg έχει σχεδιαστεί για να χρησιμοποιείται από την γραμμή εντολών του κελύφους μόνον. Για το λόγο αυτό δέχεται μια πληθώρα από επιλογές και παραμέτρους. Στο παρόν κείμενο, θα αναφερθούμε μόνο στις πιο σημαντικές από αυτές.

Γενικά η σύνταξη είναι η εξής:

dpkg [OPTIONS] ACTION packagename | filename

όπου packagename το όνομα του πακέτου ενώ filename το όνομα του αρχείου κάποιου πακέτου (όπως αναφέρθηκε σε προηγούμενη παράγραφο), ACTION το είδος της εργασίας που θέλουμε να πραγματοποιήσουμε με το πακέτο και ως επιλογές έχουμε τις εξής:

Επιλογές

Λειτουργία

-B
--auto-deconfigure

Όταν απεγκαθιστούμε κάποιο πακέτο, το dpkg αυτομάτως απορυθμίζει (deconfigure) όσα πακέτα εξαρτώνται από αυτό.

--force-depends

Η ομάδα των επιλογών --force-xxx, επιβάλει στο dpkg την εργασία που του δώσαμε, ακόμη και αν οι συνθήκες αποτρέπουν κάτι τέτοιο. Η συγκεκριμένη --force-depends, επιβάλει την εγκατάσταση/απεγκατάσταση ενός πακέτου ακόμη και αν δεν ικανοποιούνται οι εξαρτήσεις των υπολοίπων πακέτων με την εργασία αυτή.

--force-overwrite

Η επιλογή αυτή αντικαθιστά αρχεία στο σύστημα που παρέχονται από άλλο πακέτο.

--force-downgrade

Εγκαθιστά το πακέτο ακόμη και αν είναι εγκατεστημένη νεώτερη έκδοση.

--force-conflicts

Εγκαθιστά το πακέτο ακόμη και αν είναι ασύμβατο με κάποιο άλλο εγκατεστημένο.

--force-all

Χρησιμοποιεί όλες τις παραπάνω και ακόμη περισσότερες επιλογές --force-xxx. Αποφύγετε τη χρήση της επιλογής αυτής.

--no-act

Προσποιείται τη διαδικασία χωρίς στην πραγματικότητα να κάνει κάποια εγκατάσταση/απεγκατάσταση στο σύστημα.



Γενικά οι επιλογές --force-xxx θα πρέπει να αποφεύγονται, καθώς είναι πολύ εύκολο να καταστρέψετε το σύστημά σας με κάποια λάθος εγκατάσταση ή απεγκατάσταση κάποιου βασικού πακέτου.

Ως ACTION μπορούμε να χρησιμοποιήσουμε μία από τις ακόλουθες:

Εργασία

Λειτουργία

-i
--install

Εγκαθιστά το πακέτο που περιέχεται στο αρχείο filename.

-r
--remove

Απεγκαθιστά το πακέτο packagename (σημ. Χρειάζεται μόνο το όνομα του πακέτου). Η απεγκατάσταση εννοεί την διαγραφή και όλων των αρχείων του πακέτου πλην των αρχείων παραμετροποίησης (configuration files) τα οποία διατηρούνται για πιθανή μελλοντική χρήση.

--purge

Όπως η -r, αλλά διαγράφει και τα αρχεία παραμετροποίησης.

--configure

Ολοκληρώνει την εγκατάσταση κάποιου πακέτου που για κάποιο λόγο δεν είχε ολοκληρώσει την εγκατάστασή του.

-l
--list

Παρουσιάζει τη λίστα των εγκατεστημένων πακέτων (δέχεται μια κανονική παράσταση ως παράμετρο).

-s
--status

Παρουσιάζει πληροφορίες για κάποιο εγκατεστημένο πακέτο.

-S
--search

Αναζητά ποιο εγκατεστημένο πακέτο περιέχει το ζητούμενο αρχείο.

-L
--list-contents

Παρουσιάζει τη λίστα των αρχείων ενός εγκατεστημένου πακέτου.

-C
--audit

Εμφανίζει τα πακέτα των οποίων η εγκατάσταση δεν έχει ολοκληρωθεί και αν είναι δυνατόν εμφανίζει τις αιτίες.

-c
--contents

Εμφανίζει τη λίστα των αρχείων του πακέτου που περιέχεται στο αρχείο filename (αντίστοιχη της -L).

-I
--info

Εμφανίζει πληροφορίες για το πακέτο που περιέχεται στο αρχείο filename (αντίστοιχη της -s).



Ακολουθούν μερικά παραδείγματα της χρήσης του dpkg:

Για να μάθουμε ποια πακέτα υπάρχουν στο Debian διαθέσιμα, των οποίων το όνομα αρχίζει με vim:

# dpkg -l 'vim*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                         Version                      Description
+++-============================-============================-========================================================================
ii  vim                          6.1-320+1                    Vi IMproved - enhanced vi editor
pn  vim-gtk                      <none>                       (no description available)
pn  vim-perl                     <none>                       (no description available)
pn  vim-python                   <none>                       (no description available)
un  vim-rt                       <none>                       (no description available)
pn  vim-ruby                     <none>                       (no description available)
pn  vim-scripts                  <none>                       (no description available)
pn  vim-tcl                      <none>                       (no description available)
un  vim-tiny                     <none>                       (no description available)
un  vim-tty                      <none>                       (no description available)

Αντίθετα, για μάθουμε ποιο πακέτο του vim είναι εγκατεστημένο στο σύστημά μας μπορούμε να χρησιμοποιήσουμε την εξής:

# dpkg -l |grep vim
ii  vim            6.1-320+1      Vi IMproved - enhanced vi editor

Για να διαγράψουμε το πακέτο elvis (ένας κειμενογράφος τύπου vi), μπορούμε να γράψουμε το εξής:

# dpkg -r elvis

Για να εγκαταστήσουμε ένα πακέτο:

# dpkg -i vim_4.5-3.deb

Μια χρήσιμη εντολή σε περίπτωση που έχουμε υποψίες για κάποια πακέτα, π.χ. μπορεί να μην έχουν εγκατασταθεί σωστά, ή μπορεί το σύστημα να μας έχει ειδοποιήσει ανάλογα, είναι ο συνδυασμός της configure και της --audit. Στην ουσία, ολοκληρώνει την εγκατάσταση όλων των πακέτων που δεν έχουν για κάποιο λόγο εγκατασταθεί πλήρως.

# dpkg --configure --audit

Η παρακάτω εντολή θα μας δώσει το εξής αποτέλεσμα (αν φυσικά είναι εγκατεστημένος ο vim):

# dpkg -s vim
Package: vim
Status: install ok installed
Priority: optional
Section: editors
Installed-Size: 14848
Maintainer: Luca Filipozzi <lfilipoz@debian.org>
Version: 1:6.1-320+1
Replaces: vim-rt, vim-tiny (<< 6.0), vim-perl (<< 6.0), vim-python (<< 6.0), vim-tcl (<< 6.0), vim-tty (<< 6.0), vim-gtk (<< 6.0)
Provides: editor, vim-rt
Depends: libc6 (>= 2.3.1-1), libgpmg1 (>= 1.19.6-1), libncurses5 (>= 5.3.20021109-1)
Pre-Depends: dpkg (>= 1.6.8)
Suggests: ctags
Conflicts: vim-rt, vim-tiny (<< 6.0), vim-perl (<< 6.0), vim-python (<< 6.0), vim-tcl (<< 6.0), vim-tty (<< 6.0), vim-gtk (<< 6.0)
Conffiles:
 /etc/vim/gvimrc b0b75c84c84ac6a3397316a6e0876f97
 /etc/vim/vimrc 6ad2e5a7195e1d055392627a9fe42ec5
Description: Vi IMproved - enhanced vi editor
 Vim is an almost compatible version of the UNIX editor Vi.  Many new
 features have been added: multi level undo, syntax highlighting,
 command line history, on-line help, filename completion, block operations,
 folding, unicode support, etc.

Το ίδιο αποτέλεσμα θα έχουμε αν εκτελέσουμε την εντολή:

# dpkg --info vim_4.5-3.deb

Εκτελώντας την εντολή dpkg με παράμετρο -L, θα μας τυπώσει τη λίστα αρχείων του vim:

# dpkg -L vim
/.
/usr
/usr/bin
/usr/bin/vim
/usr/bin/vimtutor
/usr/bin/xxd
/usr/share
/usr/share/man
...

Και το ίδιο αποτέλεσμα θα έχουμε με την εντολή:

# dpkg -c vim_4.5-3.deb

Αν υποθέσουμε ότι θέλουμε να μάθουμε σε ποιο (εγκατεστημένο) πακέτο βρίσκεται κάποιο συγκεκριμένο αρχείο, μπορούμε να χρησιμοποιήσουμε την εξής εντολή:

# dpkg -S /usr/bin/vim
vim: /usr/bin/vim

Περισσότερες πληροφορίες για την εντολή dpkg μπορείτε να βρείτε στη σελίδα οδηγιών της.

  1. Το σύστημα APT

Έχουμε ήδη αναφέρει ότι για να εγκαταστήσουμε ένα πακέτο λογισμικού με την εντολή dpkg, θα πρέπει πρώτα να το μεταφέρουμε με κάποιον τρόπο στον υπολογιστή μας μαζί με όλες τις εξαρτήσεις του και ύστερα να το εγκαταστήσουμε, αφού φυσικά εγκαταστήσουμε πρώτα τις εξαρτήσεις του. Κάτι τέτοιο είναι αρκετά χρονοβόρο, κουραστικό και επιρρεπές σε λάθη.

Για το σκοπό αυτό, δημιουργήθηκε το εργαλείο APT (Advanced Package Tool) το οποίο αυτοματοποιήσε όλες τις διαδικασίες εγκατάστασης ενός πακέτου και πλέον μπορεί να γίνει ολόκληρη εγκατάσταση ή ανανέωση συστήματος με μια μόνο εντολή!

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

Για τη χρήση του συστήματος APT, θα χρησιμοποιήσετε κατά κύριο λόγο τέσσερις εντολές: apt-setup, apt-cdrom, apt-cache και apt-get. Οι δύο πρώτες ρυθμίζουν τις πηγές των πακέτων του APT, η apt-cache προσφέρει τρόπους αναζήτησης πακέτων μέσα στην βάση δεδομένων του APT, ενώ η apt-get χρησιμοποιείται για τη μεταφόρτωση και εγκατάσταση των πακέτων.

Τη χρήση της apt-setup την είδαμε κατά την εγκατάσταση του Debian στο κεφ. 6 (σελ. 72). Συνοπτικά αναφέρουμε ότι επιλέγετε τη λίστα των πιθανών πηγών πακέτων λογισμικού, από διευθύνσεις δικτυακών τόπων (URLs) σε μορφή HTTP ή FTP, από συστήματα αρχείων ακόμη και από CD-ROM. Στην τελευταία περίπτωση, η apt-setup εκτελεί την apt-cdrom. Τέλος, δίνεται η δυνατότητα χειροκίνητης καταχώρησης μιας πηγής.


Εικόνα 76 Η αρχική οθόνη της apt-setup




Γενικά, δε χρειάζεται να εκτελείτε απευθείας την apt-cdrom, καθώς η apt-setup παρέχει την ίδια λειτουργία με πιο φιλικό τρόπο.

Το αρχείο sources.list

Το σύστημα APT διατηρεί τη λίστα με τις διαθέσιμες πηγές πακέτων λογισμικού στο αρχείο /etc/apt/sources.list. Αυτό το αρχείο τροποποιούν οι εντολές apt-cdrom και apt-setup όταν προστίθεται μια νέα πηγή. Όσον αφορά πηγές δικτύου, είναι δυνατή η πρόσθεσή τους χειροκίνητα στο αρχείο. Για τα CD είναι απαραίτητη η χρήση της εντολής apt-cdrom. Ιδού ορισμένες από τις προκαθορισμένες πηγές, όπως αυτές είναι καθορισμένες στο αρχείο sources.list:

deb http://ftp.de.debian.org/debian/ woody main non-free contrib
deb http://ftp.de.debian.org/debian/ woody main non-free contrib
deb http://non-us.debian.org/debian-non-US woody/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US woody/non-US main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free

Το πρώτο πεδίο μπορεί να είναι deb ή deb-src δηλώνοντας έτσι ότι η πηγή είναι πηγή έτοιμων μεταγλωττισμένων πακέτων για την αρχιτεκτονική του υπολογιστή μας, ή αντίστοιχα σε μορφή πηγαίου κώδικα, αν θέλουμε να τα κατασκευάσουμε μόνοι μας.

Το δεύτερο πεδίο είναι η διεύθυνση URL του δικτυακού τόπου (μέσω http/ftp) ή της διαδρομής αρχείων (π.χ. σε κάποιο σύστημα αρχείων) από όπου θα λαμβάνει τα πακέτα η εντολή apt-get. Για τις διαδρομές αρχείων θα πρέπει να χρησιμοποιηθεί το πρόθεμα file:. Σημειώστε ότι σε κάθε περίπτωση θα πρέπει να διατηρήσετε την ίδια ακριβώς δομή δέντρου αρχείων με μια επίσημη πηγή Debian, διαφορετικά τα πακέτα δε θα είναι προσβάσιμα από το σύστημα APT.

Ως τρίτο πεδίο δηλώνουμε την έκδοση της διανομής (π.χ. woody, testing, unstable) ή/και την υποομάδα (non-US, updates).

Τέλος, τα τελευταία πεδία ορίζουν τις ομάδες πακέτων, όπως τις αναφέραμε στο κεφ. 1. Υπάρχουν τρεις ομάδες πακέτων, η κύρια (main), ή συνεισφερόμενη (contrib) και η μή ελευθέρου λογισμικού (non-free).

Αναζήτηση με την apt-cache

Όσον αφορά την apt-cache, αυτή είναι ένας πιο εύκολος τρόπος να αναζητήσουμε διαθέσιμα πακέτα στο Debian, αν και έχει και άλλες χρήσεις. Είναι πιο εύκολο να δούμε τη χρήση της με ένα παράδειγμα. Ας υποθέσουμε ότι χρειαζόμαστε ένα πρόγραμμα που να μπορεί να απεικονίσει μετεωρολογικά δεδομένα (!) αλλά δε ξέρουμε ποιο ή ακόμη αν υπάρχει κάτι τέτοιο στο Debian.

# apt-cache search weather visual
vis5d - Visualizes data made by numerical weather models etc.
vis5d-doc - Documentation for the Vis5D visualization system

Βλέπουμε ότι όντως υπάρχει κάποιο πακέτο vis5d, μαζί με το πακέτο οδηγιών του. Μπορούμε να μάθουμε πληροφορίες για αυτό το πακέτο και να δούμε αν ταιριάζει στις ανάγκες μας:

# apt-cache show vis5d
Package: vis5d
Priority: optional
Section: science
Installed-Size: 6984
Maintainer: Torsten Landschoff <torsten@debian.org>
Architecture: i386
Version: 5.2abeta5-3
Depends: libc6 (>= 2.2.4-4), libgl1, netcdfg3 (>= 3.5.0-1), xlibs (>> 4.1.0)
Suggests: vis5d-doc
Filename: pool/main/v/vis5d/vis5d_5.2abeta5-3_i386.deb
Size: 1222796
MD5sum: e860cc618efc77a48204d2727263cf3a
Description: Visualizes data made by numerical weather models etc.
 Vis5D is a software system for visualizing data made by
 numerical weather models and similar sources.  Vis5D works on
 data in the form of a five-dimensional rectangle.
 .
 The Vis5D system includes the vis5d visualization program,
 several programs for managing and analyzing five-dimensional data
 grids, and instructions and utilities for converting your data
 into its file format.

Εγκατάσταση με την apt-get

Από ό,τι βλέπουμε το πρόγραμμα ίσως να είναι αυτό που χρειαζόμαστε. Δε μένει παρά να το εγκαταστήσουμε για να το δοκιμάσουμε. Αν χρησιμοποιούμε κάποια πηγή πακέτων λογισμικού στο Internet, θα πρέπει να είμαστε συνδεδεμένοι για να μπορούμε να τη χρησιμοποιήσουμε. Για παράδειγμα αν στην εγκατάσταση ρυθμίσαμε κάποιο είδος σύνδεσης PPP, μπορούμε να την ενεργοποιήσουμε ως εξής (<provider> είναι το όνομα του παροχέα που έχουμε δηλώσει):

# pon <provider>
# apt-get install vis5d vis5d-doc
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
  vis5d vis5d-doc
0 packages upgraded, 2 newly installed, 0 to remove and 16  not upgraded.
Need to get 4893kB/4893kB of archives. After unpacking 10.9MB will be used.
Do you want to continue? [Y/n]
Get:1 http://ftp.de.debian.org testing/main vis5d 5.2abeta5-3 [1223kB]
Get:2 http://ftp.de.debian.org testing/main vis5d-doc 5.2abeta5-3 [3670kB]
Fetched 4893kB in 10m49s (7533B/s)
Selecting previously deselected package vis5d.
(Reading database ... 107053 files and directories currently installed.)
Unpacking vis5d (from .../vis5d_5.2abeta5-3_i386.deb) ...
Selecting previously deselected package vis5d-doc.
Unpacking vis5d-doc (from .../vis5d-doc_5.2abeta5-3_all.deb) ...
Setting up vis5d (5.2abeta5-3) ...

Setting up vis5d-doc (5.2abeta5-3)

Η εντολή apt-get, όπως βλέπουμε αναλαμβάνει τη μεταφόρτωση των απαραίτητων αρχείων και μας πληροφορεί για το απαραίτητο μέγεθος μεταφόρτωσης (4.9 MB περίπου) και το τελικό μέγεθος των εγκατεστημένων αρχείων. Πριν προχωρήσει στη διαδικασία μας ρωτάει αν θέλουμε να συνεχίσουμε, ίσως π.χ. για να αλλάξουμε τα πακέτα προς εγκατάσταση.

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

Μετά την ολοκλήρωση, το apt-get πραγματοποιεί οποιεσδήποτε ρυθμίσεις πακέτων είναι απαραίτητες και εγκαθιστά τα αρχεία στις σωστές τους θέσεις. Αν υπάρχει κάποιο πρόβλημα, θα προσπαθήσει να δώσει όσον το δυνατόν πιο αναλυτικές οδηγίες για την επίλυσή του. Συνήθως, τα προβλήματα που παρουσιάζονται είναι λόγω ασυμβατότητας των εξαρτήσεων των πακέτων.

Έχει ολοκληρωθεί έτσι η εγκατάσταση του πακέτου μας και μπορούμε να το δοκιμάσουμε!

# vis5d LAMPS.v5d

(Το LAMPS.v5d βρίσκεται συμπιεσμένο στον κατάλογο /usr/share/doc/vis5d/examples).


Εικόνα 77 Το πρόγραμμα Vis5D




Το συγκεκριμένο παράδειγμα είχε σκοπό απλώς να μας δείξει μια συνηθισμένη διαδικασία αναζήτησης και εγκατάστασης κάποιου εξειδικευμένου πακέτου. Το Debian περιέχει περίπου 8900 πακέτα και το πιθανότερο είναι ότι παρέχει κάποιο πακέτο για τις περισσότερες εργασίες, όσο εξειδικευμένες και αν είναι. Το σημαντικό είναι η σωστή αναζήτηση με τη χρήση του εργαλείου apt-cache.

Άλλες λειτουργίες

Πέρα από την αναζήτηση και την εγκατάσταση, τα εργαλεία apt-cache και apt-get δέχονται και άλλες επιλογές και εντολές, που ρυθμίζουν ανάλογα και την δράση των ίδιων των εργαλείων. Η σύνταξή τους ακολουθεί τους γνωστούς κανόνες:

apt-cache  [options] [command]
apt-get [options] [command]

Μερικές από τις πιο σημαντικές αναφέρονται στους ακόλουθους πίνακες:

Εντολή apt-cache

Επιλογές

Λειτουργία

-i
--important

Εμφανίζει μόνο τα σημαντικά πακέτα (αυτά που έχουν χαρακτηρισμό προτεραιότητας important).

-f
--full

Εμφανίζει όλα τα χαρακτηριστικά κάθε πακέτου.

-a
--all-versions

Εμφανίζει όλες τις διαθέσιμες εκδόσεις κάθε πακέτου.

--names-only

Η αναζήτηση να γίνει χρησιμοποιώντας μόνο τα ονόματα των πακέτων. Το προκαθορισμένο είναι να χρησιμοποιείται και το πεδίο της περιγραφής των πακέτων.

--all-names

Σε συνδυασμό με την εντολή pkgnames, εμφανίζει όλα τα πακέτα, ακόμη και τα εικονικά.

Εντολές

Λειτουργία

show packagename

Εμφανίζει πληροφορίες για το πακέτο packagename. Αντίστοιχο με τη dpkg --print-avail.

showpkg packagename

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

search pattern

Αναζήτηση στο ευρετήριο των πακέτων χρησιμοποιώντας την κανονική παράσταση pattern.

depends packagename

Εμφανίζει τα ονόματα των πακέτων που εξαρτώνται από το πακέτο packagename.

stats

Εμφανίζει στατιστικά για το πλήθος των διαθέσιμων πακέτων.

pkgnames [prefix]

Εμφανίζει τα ονόματα όλων των πακέτων. Αν δοθεί το prefix, η λίστα περιορίζεται στα πακέτα των οποίων το όνομα αρχίζει με prefix.

unmet

Εμφανίζει τη λίστα με τις μη ικανοποιημένες εξαρτήσεις πακέτων στο σύστημα.



Και ακολουθεί ο αντίστοιχος πίνακας για την apt-get.



Εντολή apt-get

Επιλογές

Λειτουργία

-d
--download-only

Πραγματοποιεί μόνο τη μεταφόρτωση των πακέτων, όχι την εγκατάσταση.

-f
--fix-broken

Αν η apt-get διαπιστώσει ότι στο σύστημα υπάρχουν μη ικανοποιημένες εξαρτήσεις πακέτων (δηλαδή είναι εγκατεστημένο κάποιο πακέτο, χωρίς να είναι εγκατεστημένα και τα πακέτα από τα οποία εξαρτάται), θα προσπαθήσει να δράσει ανάλογα για να ικανοποιήσει αυτές τις εξαρτήσεις. Αυτό σημαίνει, είτε εγκατάσταση κάποιων επιπλέον πακέτων ή αν δεν είναι αυτό δυνατόν, απεγκατάσταση των προβληματικών πακέτων. Χρησιμοποιείται σε συνδυασμό με την install ή remove.

-m
--ignore-missing
--fix-missing

Αγνοεί τα προβλήματα από πακέτα που παρουσιάζουν πρόβλημα κατά την εγκατάσταση (χαλασμένο αρχείο, προβληματική ρύθμιση, κλπ) και συνεχίζει με τα υπόλοιπα αρχεία.

--no-download

Απενεργοποιεί οποιαδήποτε επιπλέον μεταφόρτωση και προσπαθεί να χρησιμοποιήσει τα ήδη μεταφορτωμένα πακέτα.

-s
--simulate
--just-print
--dry-run
--recon
--no-act

Προσποιείται τη διαδικασία χωρίς στην πραγματικότητα να κάνει κάποια εγκατάσταση/απεγκατάσταση στο σύστημα.

-u
--show-upgraded

Εμφανίζει και τα επιπλέον πακέτα που πρόκειται να εγκατασταθούν, συνήθως λόγω εξαρτήσεων.

--force-yes

Επιβάλει την εγκατάσταση των πακέτων, ακόμη και αν δεν ικανοποιούνται οι απαραίτητες συνθήκες (εξαρτήσεις, συμβατότητα, αντικατάσταση υπαρχόντων αρχείων). Θα πρέπει να χρησιμοποιηθεί με την δέουσα προσοχή.

--purge

Όταν διαγράφεται ένα πακέτο να γίνεται πλήρης διαγραφή και των αρχείων παραμετροποίησής του (configuration files).

Εντολές

Λειτουργία

update

Ανανεώνει την βάση δεδομένων των πακέτων λογισμικού του Debian. Εκτός αν χρησιμοποιήτε κάποια στατική πηγή (π.χ. CD-ROM) θα πρέπει να ανανεώνετε συχνά τους καταλόγους των πακέτων που παρέχονται από κάθε πηγή, για να ενημερώνετε το σύστημά σας για τυχόν ανανεωμένο λογισμικό.

upgrade

Πραγματοποιεί τη διαδικασία της ανανέωσης όλων των πακέτων για τα οποία υπάρχει διαθέσιμη ανανεωμένη έκδοση.

dist-upgrade

Όπως συμβαίνει συνήθως με μια νέα έκδοση της διανομής, η ανανέωση είναι τόσο ριζική που δε μπορεί να επιτευχθεί μόνο με τη χρήση της apt-get upgrade. Η dist-upgrade χρησιμοποιεί έξυπνους μηχανισμούς για να γίνει η μετάβαση με όσο το δυνατόν λιγότερα προβλήματα.

install packages

Εγκαθιστά τα πακέτα packages.

remove packages

Απεγκαθιστά τα πακέτα packages.

source packages

Μεταφορτώνει τον πηγαίο κώδικα των πακέτων packages. Χρησιμεύει όταν θέλετε να δημιουργήσετε μια τροποποιημένη έκδοση κάποιου υπάρχοντος πακέτου για δικές σας ανάγκες.

check

Εκτελεί κάποια απλά διαγνωστικά σχετικά με μη ικανοποιούμενες εξαρτήσεις.



Οι apt-get και apt-cache παρέχουν και περισσότερες πιο προχωρημένες λειτουργίες. Για περισσότερες πληροφορίες θα πρέπει να ανατρέξετε στις οδηγίες των εντολών.

# man apt-get
# man apt-cache
  1. Το εργαλείο dselect

Το εργαλείο dselect είναι το επίσημο διαδραστικό (interactive) εργαλείο εγκατάστασης λογισμικού στο Debian. Είναι αρκετά ισχυρό εργαλείο, αν και πιθανόν όχι το φιλικότερο σύστημα εγκατάστασης που υπάρχει. Εντούτοις, με λίγη εξάσκηση προσφέρει όλες τις δυνατότητες που μπορεί να χρειαστεί ένας χρήστης για να διαχειριστεί το λογισμικό του συστήματός του. Το γεγονός ότι τρέχει σε περιβάλλον κονσόλας το καθιστά ιδιαίτερα χρήσιμο σε διαχειριστές συστημάτων που θέλουν να εγκαταστήσουν λογισμικό σε απομακρυσμένους υπολογιστές.

Με την εκκίνηση το dselect θα εμφανίσει την εξής οθόνη:


Εικόνα 78 Η αρχική οθόνη του dselect




Στο σημείο αυτό έχετε τις εξής επιλογές:

Επιλογή “Access”

Με την Access, ρυθμίζετε τις πηγές από τις οποίες θα εγκαθιστά το dselect τα πακέτα του Debian. Οι πηγές αυτές είναι διαφορετικές από τις πηγές του συστήματος APT, αν και το dselect μπορεί να χρησιμοποιήσει ως πηγή το ίδιο το σύστημα APT. Το dselect προσφέρει μια μεγάλη ποικιλία πηγών, αλλά στην πραγματικότητα οι περισσότερες υπάρχουν μόνο για συμβατότητα με παλαιότερες εκδόσεις του λειτουργικού. Τα είδη των πηγών που θα πρέπει να σας ενδιαφέρουν είναι τα εξής:

Επιλογή “Update”

Με την επιλογή γίνεται μεταφόρτωση της λίστας των πακέτων από την ή τις πηγές που επιλέξατε στο βήμα “Access”.

Επιλογή “Select”

Το στάδιο αυτό είναι και το πιο σημαντικό στο dselect καθώς η επιλογή των πακέτων που θα εγκατασταθούν γίνεται εδώ. Με την εισαγωγή σε αυτό το στάδιο εμφανίζεται μια οθόνη βοηθείας με τις βασικότερες πληροφορίες που θα χρειαστείτε για το dselect. Πατώντας [ENTER] μεταβαίνετε στην επόμενη οθόνη που εμφανίζει τη λίστα των πακέτων.


Εικόνα 79 Η οθόνη επιλογής πακέτων του dselect




Την πρώτη φορά που θα επιλέξετε τη “Select”, συνιστάται να μην κάνετε κάποια επιλογή στην κεντρική λίστα των πακέτων. Πατώντας [ENTER] το dselect θα σας παρουσιάσει τις μη ικανοποιημένες εξαρτήσεις και θα σας ζητήσει να τις διορθώσετε (δηλαδή να επιλέξετε εκείνα τα πακέτα που τις ικανοποιούν ή να απεγκαταστήσετε τα πακέτα που δημιουργούν το πρόβλημα). Πιθανώς να βγείτε στο κεντρικό μενού οπότε επιλέξατε ξανά τη “Select”.

Όσον αφορά την επιλογή των πακέτων θα πρέπει να έχετε υπόψιν σας τα εξής σημεία:

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

Πλήκτρο

Λειτουργία

+

Επιλέγει ένα πακέτο για εγκατάσταση.

=

Τοποθετεί το πακέτο σε αναμονή (on hold). Χρησιμεύει σε προβληματικά πακέτα. Μπορείτε να εγκαταστήσετε μια παλαιότερη έκδοση που δεν παρουσιάζει πρόβλημα και να ορίσετε το πακέτο σε αναμονή.

-

Επιλέγει ένα πακέτο για απεγκατάσταση.

_

Επιλέγει ένα πακέτο για απεγκατάσταση (διαγράφοντας και τα αρχεία ρυθμίσεων και παραμετροποίησης).

I,i

Εμφανίζει διαδοχικά στο κάτω μισό της οθόνης της dselect διάφορες πληροφορίες για τα πακέτα.

O,o

Επιλέγει κυκλικά τρόπους ταξινόμησης των πακέτων.

V,v

Εμφανίζει αναλυτικές πληροφορίες για τους κωδικούς EIOM που εμφανίζονται στη δεύτερη γραμμή της οθόνης επιλογής των πακέτων.

Q

Επιβάλει τις αλλαγές που έχετε επιλέξει ακόμη και αν δημιουργούν προβλήματα με εξαρτήσεις και ασυμβατότητες πακέτων. Δε συνιστάται η χρήση του εκτός αν έχετε εμπειρία με το dselect.

X

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

R

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

U

Επαναφέρει τις αρχικές επιλογές το dselect.

D

Ακυρώνει μόνο τις επιλογές το dselect.



Όταν ολοκληρώσετε τις επιλογές σας, πατήστε [ENTER] για να μεταβείτε στην κεντρική σελίδα του dselect.

Επιλογή “Install”

Πραγματοποιεί την εγκατάσταση των πακέτων. Αναλόγως την πηγή και τα πακέτα που έχετε επιλέξει, πιθανόν να μην ολοκληρωθεί η εγκατάσταση, λόγω κάποιου προβληματικού πακέτου. Σε αυτήν την περίπτωση θα χρειαστεί να επιλέξετε ξανά την “Install”. Επιλέγοντας ως πηγή το APT, η εγκατάσταση θα γίνει σε ένα βήμα.

Επιλογή “Configure”

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

Επιλογή “Remove”

Απεγκαθιστά τα πακέτα που έχουν οριστεί για απεγκατάσταση κατά τη “Select”.

Επιλογή “Quit”

Πραγματοποιεί έξοδο από το πρόγραμμα.

Για περισσότερες πληροφορίες για το dselect μπορείτε να ανατρέξετε στις επίσημες οδηγίες που βρίσκονται στον δικτυακό τόπο του Debian:

http://www.debian.org/doc/manuals/dselect-beginner/

  1. Το εργαλείο kpackage

Το kpackage είναι ένα εργαλείο που παρέχει ένα φιλικό προς το χρήστη τρόπο διαχείρισης των πακέτων. Διαφέρει από τα περισσότερα προγράμματα που είδαμε ως τώρα στο ότι παρέχει έναν ενιαίο τρόπο διαχείρισης για διαφορετικά είδη πακέτων, καθώς το ίδιο πρόγραμμα μπορεί να χρησιμοποιηθεί από σύστημα βασισμένο σε RPM, Slackware, BSD, κλπ. Το σύστημα είναι αρκετά εύκολο στη χρήση και παρέχει και online βοήθεια και έτσι δε θα αναφερθούμε διεξοδικά στη χρήση του.

Με σωστή κατανόηση της φιλοσοφίας των πακέτων λογισμικού του Debian και του συστήματος APT, το kpackage μπορεί να χρησιμοποιηθεί ως μια πολύ καλή εναλλακτική.




Εικόνα 80 Το εργαλείο kpackage




Το kpackage υπάρχει ως ομώνυμο πακέτο το Debian. Για οδηγίες χρήσης εντός του προγράμματος μπορείτε να πατήσετε [F1].

  1. Το εργαλείο stormpkg


Εικόνα 81 Το εργαλείο StormPkg


Το stormpkg αποτελούσε το κύριο πρόγραμμα διαχείρισης πακέτων της διανομής Storm Linux που κυκλοφόρησε το 2000 βασισμένη στο Debian. Η Storm Linux απέτυχε ως προσπάθεια, αλλά το πρόγραμμα που θεωρήθηκε αξιόλογο προστέθηκε στην κυριώς διανομή Debian. Είναι απλό και εύκολο στη χρήση και παρέχει επίσης online βοήθεια. Δυστυχώς έχει σταματήσει η ανάπτυξή του από τον Οκτώβριο του 2001, αλλά συνεχίζει να θεωρείται αξιόλογη εναλλακτική.



  1. Μετά την εγκατάσταση

Μετά την εγκατάσταση, ίσως να χρειαστείτε κάποιες οδηγίες για τα πακέτα και το λογισμικό που περιέχουν. Ίσως να πρόκειται για κάποιο πολύπλοκο πρόγραμμα, η λειτουργία του οποίου δε μπορεί να περιγραφεί ικανοποιητικά σε μια απλή σελίδα οδηγιών (man page) και φυσικά υπάρχει η πιθανότητα να μη συνοδεύεται από τέτοιες σελίδες. Άλλες φορές είναι απαραίτητη μια συνολική παρουσίαση με πιο ευπαρουσίαστο τρόπο (π.χ. ένα αρχείο PDF ή online οδηγίες χρήσης σε μορφή HTML).

Κάθε πακέτο λογισμικού στο Debian περιέχει κάποιους προκαθορισμένους καταλόγους, με τις βασικές πληροφορίες για το συγκεκριμένο πακέτο. Από τους πιο βασικούς καταλόγους είναι ο κατάλογος των αρχείων τεκμηρίωσης (documentation files). Ο κατάλογος αυτός είναι ομώνυμος με το συγκεκριμένο πακέτο και βρίσκεται υπό του καταλόγου /usr/share/doc. Δηλαδή, για το πακέτο <package>, ο κατάλογος τεκμηρίωσης είναι ο

/usr/share/doc/package

και περιλαμβάνει οπωσδήποτε τουλάχιστον τα εξής αρχεία:

changelog.Debian.gz
README.Debian
copyright

Το αρχείο changelog.Debian.gz είναι το αρχείο αλλαγών του πακέτου. Δηλαδή ποιες αλλαγές έχουν γίνει στο πακέτο κατά την διάρκεια ύπαρξής του στη διανομή. Το αρχείο README.Debian έχει ορισμένες απαραίτητες πληροφορίες σχετικά με το πρόγραμμα και την συμβατότητά του με το Debian, ενώ το copyright περιέχει την άδεια διανομής του πακέτου.

Συνήθως μέσα στον κατάλογο αυτόν περιλαμβάνονται και άλλα αρχεία όπως README, INSTALL, NEWS, TO-DO, examples, html που περιέχουν διάφορες πληροφορίες για το λογισμικό του πακέτου. Θα πρέπει να ανατρέξετε σε κάθε ένα από αυτά τα αρχεία για να μάθετε συγκεκριμένες λεπτομέρειες για το συγκεκριμένο πακέτο και τη χρήση του.

Τέλος, είναι αρκετά συνηθισμένη η ύπαρξη πακέτων λογισμικού που περιέχουν μόνο τα αρχεία τεκμηρίωσης και τα ξεχωρίζουμε από την κατάληξη -doc στο όνομά τους (π.χ. το πακέτο glibc-doc περιέχει τα αρχεία τεκμηρίωσης για την βιβλιοθήκη GNU libc).



Κεφάλαιο 14 - Διαχείριση συστήματος

Η χρήση του Linux αλλά και γενικότερα των συστημάτων UNIX, μέχρι τώρα αφορούσε κατά κύριο λόγο υπηρεσίες διακομιστών (servers) και η απόδοση και καλή λειτουργία αυτών των συστημάτων ήταν μεγίστης σημασίας. Η διατήρηση ενός διακομιστή σε καλή κατάσταση και συνεχή λειτουργία αποτελεί ευθύνη ειδικών χρηστών, των διαχειριστών συστημάτων (system administrators), οι οποίοι για το σκοπό αυτό χρησιμοποιούν διάφορα εργαλεία ή και χαρακτηριστικά που προσφέρει το ίδιο το σύστημα. Η διαχείριση συστήματος περιλαμβάνει από απλή επίβλεψη (monitoring) των πόρων του συστήματος, πληροφόρηση των τεχνικών χαρακτηριστικών του συστήματος και βελτιστοποίηση των παραμέτρων του πυρήνα (kernel fine-tuning), διαχείριση των συσκευών που είναι συνδεδεμένες στο σύστημα, των διεργασιών, των χρηστών και των ομάδων και τέλος των υπηρεσιών (services) που τρέχουν στο σύστημα.

Η διαχείριση και βελτιστοποίηση του πυρήνα είναι αρκετά προχωρημένο ως θέμα και δε θα αναφερθούμε περαιτέρω. Στο Παράρτημα VI (σελ. 275), αναφέρονται οι βασικές πληροφορίες για τη ρύθμιση του.

  1. Διαχείριση πόρων συστήματος

Οι πόροι του συστήματος περιλαμβάνουν το υλικό του υπολογιστή και κυρίως τα πιο βασικά του στοιχεία όπως επεξεργαστές, μνήμη, δίσκους (ή άλλες αποθηκευτικές μονάδες), διαύλους PCI και USB και δίκτυο. Για την κάθε ομάδα πόρων το Linux παρέχει αρκετούς τρόπους πληροφόρησης αλλά και επέμβασης για την βελτιστοποίηση της απόδοσης του συστήματος.

  1. Κεντρικοί επεξεργαστές

Οι κεντρικοί επεξεργαστές (CPU) είναι το κύριο χαρακτηριστικό ενός υπολογιστή, θα λέγαμε ο “εγκέφαλός” του. Οι περισσότεροι υπολογιστές έχουν έναν κεντρικό επεξεργαστή αν και έχουν αρχίσει να γίνονται πιο διαδεδομένοι και οι υπολογιστές με περισσότερους από έναν. Με αρχιτεκτονικές όπως Συμμετρική Πολυεπεξεργασία (Symmetric Multi-Processing, SMP) και Μη Ομοιόμορφη Προσπέλλαση μνήμης (Non-Uniform Memory Access, NUMA), μπορούμε πλέον να έχουμε υπολογιστές από 2-64 επεξεργαστές. Το Linux μπορεί να τους χρησιμοποιήσει όλους και να εκμεταλλευτεί τον καθένα ξεχωριστά, π.χ. διαμοιράζοντας τα προγράμματα να τρέχουν σε πολλούς επεξεργαστές, ώστε να μην έχουμε πτώση της απόδοσης όταν τρέχουμε πολλά προγράμματα.

Αρχιτεκτονική του επεξεργαστή

Ο κάθε επεξεργαστής ανήκει σε μια αρχιτεκτονική, όπως έχουμε αναφέρει και στο κεφάλαιο 2 (σελ. 18). Στο Debian αυτή η αρχιτεκτονική καθορίζει και τα πακέτα λογισμικού που μπορούμε να εγκαταστήσουμε στον υπολογιστή. Συνήθως, δεν υπάρχει θέμα σύγχυσης και το πιο πιθανόν είναι ότι θα έχετε αρχιτεκτονική IA32 (ix86 όπως αλλιώς λέγεται) που χαρακτηρίζει τους περισσότερους προσωπικούς υπολογιστές σήμερα (τα γνωστά μας PC).

Εντούτοις, είναι πολλές φορές χρήσιμο να έχουμε επιπλέον πληροφορίες για την αρχιτεκτονική του επεξεργαστή μας και το Linux μας παρέχει τέτοια δυνατότητα με τις εξής εντολές:

# arch
i686

Η arch απλώς τυπώνει το είδος του επεξεργαστή, i386/i586/i686 αυτή η εντολή είναι αρκετά χρήσιμη σε σενάρια κελύφους, όταν π.χ. θέλουμε να εκτελέσουμε την κατάλληλη έκδοση για τον κάθε επεξεργαστή.

# uname -a
Linux silmaril 2.4.20 #1 Sat Jul 5 20:21:27 EEST 2003 i686 GNU/Linux

Μια πιο εξελιγμένη εντολή από την arch, η uname μας παρέχει πληροφορίες για το όνομα του πυρήνα (στην προκειμένη περίπτωση Linux), το όνομα του υπολογιστή (silmaril) την έκδοση του πυρήνα (2.4.20 #1) με την ημερομηνία κατασκευής του, την αρχιτεκτονική (i686) και το όνομα του λειτουργικού συστήματος (GNU/Linux).

Ο ίδιος ο πυρήνας μας παρέχει πληροφορίες για το είδος του επεξεργαστή που χρησιμοποιεί, μέσω του εικονικού συστήματος αρχείων procfs (βλ. κεφ. 12, σελ. 172) και το αρχείο /proc/cpuinfo. Το αρχείο αυτό είναι ένα απλό αρχείο κειμένου το οποίο μπορούμε να τυπώσουμε με μια εντολή όπως η cat.

# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 8
model name      : Pentium III (Coppermine)
stepping        : 6
cpu MHz         : 694.850
cache size      : 256 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr sse
bogomips        : 1386.08

Οι πληροφορίες που χαρακτηρίζουν κάθε επεξεργαστή είναι πάρα πολλές και συχνά διαφορετικές μεταξύ επεξεργαστών, αλλά υπάρχουν ορισμένα κοινά στοιχεία, όπως π.χ. ο αριθμός του επεξεργαστή (processor), το όνομα της εταιρείας κατασκευής (vendor_id), το όνομα του μοντέλου (model_name), τη συχνότητα του επεξεργαστή (cpu MHz), το μέγεθος του L2 cache (cache size) και ένα απλό μετρητή απόδοσης (bogomips).

Χρήσιμα πακέτα: cpuid, microcode.ctl, set6x86, x86info.

Φόρτο του επεξεργαστή και χρόνος λειτουργίας

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

Εδώ πρέπει να σημειώσουμε ότι σε κάθε στιγμή στο σύστημα τρέχουν πολλές δεκάδες διεργασίες. Τις περισσότερες φορές όμως, οι διεργασίες αυτές είναι σε κατάσταση αναμονής, περιμένοντας κάποιο γεγονός (event) να συμβεί, οπότε και θα αρχίσουν την επεξεργασία του. Τότε θεωρούμε ότι ο επεξεργαστης έχει φόρτο από τις συγκεκριμένες διεργασίες. Όσο περισσότερες διεργασίες προσπαθούν να δεσμεύσουν τον επεξεργαστή τόσο υψηλότερο φόρτο έχουμε. Αν δηλαδή το σύστημα εμφανιστεί να έχει φόρτο 60, τότε 60 διεργασίες προσπαθούν να μοιραστούν το χρόνο ενός επεξεργαστή, και η απόδοση του συστήματος θα πέσει κατακόρυφα. Σε αυτήν την περίπτωση, θα πρέπει ή να αναβαθμίσουμε το σύστημά μας (με επιπλέον επεξεργαστή ή καλύτερο επεξεργαστή) ή αν κάτι τέτοιο δεν είναι δυνατόν, να ελαττώσουμε τον αριθμό των διεργασιών που εκτελούνται στο σύστημα.

Το φόρτο του συστήματος μπορούμε να το πληροφορηθούμε πολύ εύκολα με την εντολή uptime, η οποία μας δίνει και επιπλέον πληροφορίες, όπως την τρέχουσα ώρα του συστήματος, το χρόνο λειτουργίας του (το λεγόμενο uptime), τον αριθμό των χρηστών που είναι συνδεδεμένοι στο σύστημα, και τρεις μετρητές φόρτου, για το τελευταίο 1, 5 και 15 λεπτά.

# uptime
 10:53:06 up 1 day, 13:43,  1 user,  load average: 0.09, 0.10, 0.09

Για την εμφάνιση του φόρτου υπάρχουν και άλλα προγράμματα που παρουσιάζουν με χρήσιμα γραφήματα τις μεταβολές των μετρητών αυτών και πιθανόν και άλλες επιπλέον πληροφορίες του συστήματος. Μερικά από αυτά τα προγράμματα είναι το (κλασσικό) xload, το gtop που λειτουργεί σε περιβάλλον GNOME και το ksysguard που περιλαμβάνεται στο βασικό περιβάλλον του KDE.


Εικόνα 82 Η ένδειξη φόρτου επεξεργαστή & μνήμης του ksysguard






Χρήσιμα πακέτα: kcpuload, gtop.

  1. Μνήμη συστήματος

Η μνήμη του συστήματος είναι επίσης ένα βασικό στοιχείο του υπολογιστή. Θα πρέπει να υπάρχει σε αφθονία (με κάποιο μέτρο φυσικά) ώστε ο υπολογιστής να μη χρειαστεί να χρησιμοποιήσει το αρχείο εναλλαγής μνήμης (swap file), καθώς η χρήση του μειώνει αισθητά την απόδοση του υπολογιστή. Κάτι τέτοιο ίσως δεν είναι σημαντικό για οικιακή χρήση, αλλά για επαγγελματικά περιβάλλοντα είναι σημαντικός παράγοντας καθυστέρησης.

Την ελεύθερη μνήμη του συστήματος μπορείτε εύκολα να τη δείτε μέσω της εντολής free ή και απευθείας από τα αρχεία /proc/meminfo και /proc/swaps. Το αρχείο /proc/swaps περιλαμβάνει μόνο πληροφορίες για την εικονική μνήμη. Για παράδειγμα:

# free -t
             total       used       free     shared    buffers     cached
Mem:        191824     185784       6040          0      16036      83364
-/+ buffers/cache:      86384     105440
Swap:       524280     108024     416256
Total:      716104     293808     422296

Η εντολή free δέχεται και άλλες απλές παραμέτρους, τις οποίες μπορείτε να μάθετε μέσω της σελίδας οδηγίων της εντολής (man free).

Το αρχείο swaps στον κατάλογο /proc, παρέχει τις ακόλουθες πληροφορίες:

# cat /proc/swaps
Filename                        Type            Size    Used    Priority
/dev/hda5                       partition       524280  105524  -1

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

Όσον αφορά το αρχείο meminfo αυτό είναι αρκετά πιο αναλυτικό και παρέχει συνολικές πληροφορίες για τη μνήμη:

# cat /proc/meminfo
        total:    used:    free:  shared: buffers:  cached:
Mem:  196427776 190799872  5627904        0 17199104 112848896
Swap: 536862720 110612480 426250240
MemTotal:       191824 kB
MemFree:          5496 kB
MemShared:           0 kB
Buffers:         16796 kB
Cached:          82584 kB
SwapCached:      27620 kB
Active:          74128 kB
Inactive:        87032 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       191824 kB
LowFree:          5496 kB
SwapTotal:      524280 kB
SwapFree:       416260 kB

Χρήσιμα πακέτα: memtest86, hwtools, memtester, sysutils.

  1. Συστήματα αρχείων

Η διαχείριση των σκληρών δίσκων σε ένα σύστημα είναι επίσης σημαντική υπόθεση. Είναι σημαντικό να βεβαιωθούμε ότι ένα διαμέρισμα έχει αρκετό διαθέσιμο χώρο, ώστε το σύστημα να συνεχίσει να λειτουργεί χωρίς πρόβλημα. Κατί τέτοιο είναι ιδιαίτερα σημαντικό για το διαμέρισμα που φιλοξενεί τον βασικό κατάλογο root, τον κατάλογο /var και τον κατάλογο /tmp καθώς τα περιεχόμενα αυτών των καταλόγων μεταβάλλονται συχνά. Υπάρχουν αρκετά εργαλεία στο Debian για την πληροφόρηση για την κατάσταση των διαμερισμάτων και των σκληρών δίσκων αλλά και για τον δίαυλο SCSI ειδικά.

Σε επαγγελματικά περιβάλλοντα η διαχείριση των διαμερισμάτων γίνεται με εξειδικευμένο λογισμικό, τους Διαχειριστές Λογικών Μονάδων (Logical Volume Managers), όπως τα συστήματα LVM, LVM2, EVMS, και άλλα πακέτα. Η περιγραφή και εγκατάσταση τέτοιων συστημάτων απαιτεί αρκετή εμπειρία στην διαχείριση συστημάτων και ξεφεύγει από τους σκοπούς αυτού του οδηγού, αλλά παραθέτουμε παρακάτω τα ονόματα ορισμένων πακέτων .

Γενικά, την κατάσταση των διαμερισμάτων, όσον αφορά τον διαθέσιμο χώρο, μπορούμε να την πληροφορηθούμε εύκολα με την εντολή df. Η πιο συνήθης κλήση της df είναι χωρίς παραμέτρους, καθώς παρέχει μια συνολική εικόνα του συστήματος και της κατανάλωσης του αποθηκευτικού χώρου. Δέχεται όμως ένα αριθμό παραμέτρων και επιλογών, ορισμένες από τις οποίες απεικονίζονται στον παρακάτω πίνακα:

Επιλογές

Λειτουργία

-B, --block-size=SIZE

Εμφανίζει το μέγεθος σε blocks μεγέθους SIZE.

-k

Χρησιμοποιεί την επιλογή --block-size=1K (1 kilobyte = 1024 bytes).

-h
--human-readable

Εμφανίζει το μέγεθος χρησιμοποιώντας πιο ευανάγνωστη μορφή (1G, 23M, 543K).

--sync

Συγχρονίζει τα περιεχόμενα του δίσκου με τους buffers του συστήματος (βλ. εντολή sync παρακάτω).

-P, --portability

Εμφανίζει το αποτέλεσμα σε μορφή συμβατή με το σύστημα POSIX.

-t, --type=TYPE

Εμφανίζει μόνο τα συστήματα αρχείων τύπου TYPE.

-T, --print-type

Εμφανίζει τον τύπο του συστήματος αρχείων για κάθε μονάδα.

-x, --exclude-type=TYPE

Δεν εμφανίζει τα συστήματα αρχείων τύπου TYPE.


Ακολουθεί παράδειγμα εκτέλεσης της εντολής df σε σύστημα που χρησιμοποιεί σύστημα LVM και devfs (σελ. 171).

# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/ide/host0/bus0/target0/lun0/part1
                        241116    133994     94674  59% /
/dev/local_vg/usr      3096336   2060656    878396  71% /usr
/dev/local_vg/var      3426896   1168756   2084060  36% /var
/dev/local_vg/home     5160576   4266632    631800  88% /home

Φαίνεται καθαρά το συνολικό μέγεθος του διαμερίσματος, το μέγεθος του χρησιμοποιούμενου και διαθέσιμου χώρου, το ποσοστό χρήσης καθώς και το όνομα του αρμού του διαμερίσματος (mount point).

Η εντολή sync που αναφέρθηκε χρησιμοποιείται για να αποθηκεύσει όλες τις αλλαγές στο σύστημα αρχείων που βρίσκονται ακόμη στους buffers του συστήματος. Κάτι τέτοιο μπορεί να διαρκέσει αρκετά δευτερόλεπτα, καθώς το λειτουργικό σύστημα, για λόγους απόδοσης, δεν αποθηκεύει κάθε αλλαγή αμέσως αλλά με κάποια καθυστέρηση. Πολλές φορές και ειδικά σε περιβάλλοντα server το μέγεθος των δεδομένων που βρίσκονται σε buffers πιθανόν να ανέλθει σε αρκετά MB.

Η εντολή df μας δίνει την κατανάλωση χώρου σε ολόκληρο το σύστημα αρχείων. Αν θέλουμε αντ' αυτού να μάθουμε την κατανάλωση στο δίσκο ενός μόνο καταλόγου (και των περιεχομένων του) θα πρέπει να χρησιμοποιήσουμε την εντολή du (disk usage). Η σημαντικότερη επιλογή της εντολής είναι η -s, που τυπώνει τη συνολική κατανάλωση χώρου των αρχείων ή καταλόγων που δίνουμε ως παραμέτρους στη du. Άλλες επιλογές περιλαμβάνουν:

Επιλογές

Λειτουργία

-B, --block-size=SIZE

Εμφανίζει το μέγεθος σε blocks μεγέθους SIZE.

-k

Χρησιμοποιεί την επιλογή --block-size=1K (1 kilobyte = 1024 bytes).

-h
--human-readable

Εμφανίζει το μέγεθος χρησιμοποιώντας πιο ευανάγνωστη μορφή (1G, 23M, 543K).

-c, --total

Εμφανίζει ένα συνολικό μέγεθος όλων των παραμέτρων της εντολής.

-s, --summarize

Εμφανίζει ένα συνολικό μέγεθος για κάθε παράμετρο της εντολής.

-x, --one-file-system
              

Αγνοεί καταλόγους που βρίσκονται σε διαφορετικά συστήματα αρχείων.

--exclude=PATTERN

Αγνοεί αρχεία που ταιριάζουν στην κανονική παράσταση PATTERN.



Για παράδειγμα, για να δούμε το συνολικό μέγεθος του καταλόγου /etc και /boot μπορούμε να δώσουμε:

# du -s -c /etc /boot
17275   /etc
3049    /boot
20324   total

Τα μεγέθη αυτά απεικονίζονται σε KB, δηλαδή το σύνολικό μέγεθος των καταλόγων /etc και /boot είναι περίπου 17 MB και 3 MB, αντίστοιχα.

Το Debian παρέχει και πακέτα που παρέχουν πιο γραφική απεικόνιση των εντολών df και du, όπως τα kdf (εικόνα 83) και kdirstat (εικόνα 84).




Εικόνα 83 Το εργαλείο kdf





Εικόνα 84 Το εργαλείο kdirstat




Υπάρχει περίπτωση να χρειαστεί να περιορίσουμε τον αποθηκευτικό χώρο που είναι διαθέσιμος σε κάποιο χρήστη για αποφυγή της σπατάλης χώρου. Ειδικά σε συστήματα που χρησιμοποιούνται από πολλούς χρήστες (Πανεπιστήμια, εταιρείες, οργανισμοί) τέτοια συστήματα περιορισμού διαθέσιμου χώρου (disk quota systems) είναι απαραίτητα. Στο Linux η χρήση των περιορισμών αυτών γίνεται αν καταρχάς υπάρχει υποστήριξη στον πυρήνα (βλ. Παράρτημα VI, σελ. 275). Έπειτα, χρησιμοποιείται το πρόγραμμα quota, στο οποίο δε θα αναφερθούμε περισσότερο.

Χρήσιμα πακέτα: xdiskusage, kdf, kdirstat, quota, quotatool.

  1. Διαχείριση Δίσκων

Για να μάθουμε περισσότερες πληροφορίες για τα ίδια τα διαμερίσματα (και όχι τόσο για τα συστήματα αρχείων που φιλοξενούν) μπορούμε να χρησιμοποιήσουμε είτε τις εντολές fdisk και cfdisk είτε το σύστημα αρχείων /proc.

Για παράδειγμα εκτελώντας την fdisk στο σύστημα του παραδείγματος της df θα μας έδινε το εξής αποτέλεσμα:

# fdisk -l
Disk /dev/ide/host0/bus0/target0/lun0/disc: 15.1 GB, 15103033344 bytes
255 heads, 63 sectors/track, 1836 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

                                Device Boot Start   End    Blocks   Id  System
/dev/ide/host0/bus0/target0/lun0/part1   *      1    31    248976   83  Linux
/dev/ide/host0/bus0/target0/lun0/part2         32  1836  14498662+  8e  Linux LVM



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

Παρόμοιες πληροφορίες μπορούμε να μάθουμε εκτελώντας το πρόγραμμα cfdisk, στο οποίο όμως θα αναφερθούμε διεξοδικά στο Παράρτημα IIΙ (σελ. 265).

Επίσης, όπως ήδη αναφέραμε, το εικονικό σύστημα /proc μας παρέχει πολύτιμες πληροφορίες για τους σκληρούς δίσκους και τα διαμερίσματα που φιλοξενούν. Συγκεκριμένα, μπορούμε να χρησιμοποιήσουμε τα εξής αρχεία και καταλόγους:

/proc/partitions
/proc/ide/
/proc/scsi/

Αν και οι πληροφορίες που δίνονται στα αρχεία αυτά είναι αρκετά πιο τεχνικές από ότι τα αποτελέσματα των εντολών όπως η fdisk, εντούτοις μπορούν να παρέχουν μια καλή εικόνα της κατάστασης ενός δίσκου ή ακόμη και ολοκλήρου του διαύλου IDE ή SCSI (αντίστοιχα στους καταλόγους /proc/ide και /proc/scsi).

Εμβαθύνοντας λίγο περισσότερο, μπορούμε με διάφορα προγράμματα να επέμβουμε στα τεχνικά χαρακτηριστικά της ίδιας της συσκευής, π.χ. την ταχύτητα επικοινωνίας με τον υπολογιστή, την κατάσταση DMA της συσκευής ή ακόμη και την δυνατότητα αυτοελέγχου της συσκευής με συστήματα όπως το S.M.A.R.T. Ένας εξαντλητικός κατάλογος αυτών των εντολών είναι πέρα από τους σκοπούς αυτού του βιβλίου, αλλά θα αναφέρουμε τις σημαντικότερες.

Η εντολή hdparm είναι ένα πολύ χρήσιμο εργαλείο που επιτρέπει την διαχείριση ορισμένων παραμέτρων που επηρεάζουν την απόδοση κάποιου σκληρού δίσκου, π.χ. την ενεργοποίηση της κατάστασης DMA, τη ρύθμιση της ταχύτητας με τον υπολογιστή, την ενεργοποίηση των cache, την προσωρινή απενεργοποίηση (standby) του σκληρού δίσκου, και άλλα. Βέβαια, ένα τέτοιο εργαλείο είναι και αρκετά επικίνδυνο, με λίγη προσοχή και μελέτη των οδηγιών (man hdparm), το πιο πιθανόν είναι ότι δε θα αντιμετωπίσετε πρόβλημα.

# hdparm /dev/hda

/dev/hda:
 multcount    = 16 (on)
 IO_support   =  3 (32-bit w/sync)
 unmaskirq    =  0 (off)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 readonly     =  0 (off)
 readahead    =  8 (on)
 geometry     = 1836/255/63, sectors = 29498112, start = 0

Όλες αυτές οι πληροφορίες είναι αρκετά τεχνικές και θα χρειαστεί οπωσδήποτε αναφορά στις οδηγίες για την επεξήγησή τους, όμως αρκεί να παρατηρήσουμε ότι ο σκληρός δίσκος λειτουργεί με ενεργοποιημένη την επικοινωνία με DMA και με 32-bit μεταφορά δεδομένων (IO_support).

Αν μας απασχολεί η ασφάλεια των δεδομένων μας και αν ο δίσκος υποστηρίζει το σύστημα αυτοελέγχου S.M.A.R.T. μπορούμε να ελέγχουμε τακτικά την καλή κατάστασή του, με το πακέτο smartmontools. Το πακέτο αυτό παρέχει ένα δαίμονα για συνεχή παρακολούθηση των σκληρών δίσκων και ένα εργαλείο για τον περιστασιακό έλεγχο. Αν θέλουμε για παράδειγμα να μάθουμε τα αποτελέσματα των αυτοελέγχων που έχει περάσει ο σκληρός δίσκος, μπορούμε να δώσουμε την ακόλουθη εντολή:

# smartctl -H -l selftest /dev/hda
smartctl version 5.1-14 Copyright (C) 2002-3 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

=== START OF READ SMART DATA SECTION ===
SMART Self-test log, version number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short off-line      Completed                     00%      3922         -

Βλέπουμε ότι ο δίσκος είναι σε καλή κατάσταση κάτι που είναι τουλάχιστον καθησυχαστικό.

Χρήσιμα πακέτα: parted, hdparm, sg3-utils, smartmontools, scsitools, scsiadd, lvm10, lvm2, evms.

  1. Δίκτυο

Το UNIX χρησιμοποιείται αυτή τη στιγμή ως η σπονδυλική στήλη (backbone) ολόκληρου του Internet, καθώς όλες σχεδόν οι ζωτικής σημασίας υπηρεσίες παρέχονται από τέτοια συστήματα. Στην πραγματικότητα το Internet αναπτύχθηκε για την επικοινωνία και ανταλλαγή δεδομένων μεταξύ συστημάτων UNIX. Είναι επόμενο λοιπόν, να περιμένουμε ότι ένα σύστημα UNIX και κατά συνέπεια και το Linux, θα παρέχει μεγάλη ευελιξία στην διαχείριση των παραμέτρων ενός δικτύου. Το Linux, ως πυρήνας, έχει τη δυνατότητα υποστήριξης πολλών πρωτοκόλλων επικοινωνίας, πέρα από το βασικό TCP/IP (και τη νέα υλοποίηση με IPv6) που χρησιμοποιείται στο Internet. Ανάμεσα σε άλλα υποστηρίζει IPX, Appletalk, DECnet, X.25. Αυτό πρακτικά σημαίνει ότι το Linux μπορεί να επικοινωνήσει ακόμη και με τα πιο εξωτικά και εξειδικευμένα συστήματα, όπως αναδρομολογητές (routers), συσκευές RIP, συστήματα VAX, κλπ.

Το Debian εκμεταλλεύεται την υποστήριξη αυτή του Linux και παρέχει μια πληθώρα λογισμικού για διαχείριση δικτύου, το οποίο έρχεται να καλύψει όλες τις ανάγκες ακόμη και του πιο απαιτητικού διαχειριστή δικτύου. Άλλωστε, αυτός είναι και ο λόγος που το Debian θεωρείται μία από τις πιο δυνατές διανομές Linux για χρήση διακομιστή ή αναδρομολογητή.

Στον οδηγό αυτό θα αναφερθούμε μόνο στην διαχείριση δικτύου που βασίζεται στο πρωτόκολλο TCP/IP, αφού είναι το πιο συνηθισμένο και απαραίτητο για σύνδεση στο Internet.

Για τη σύνδεση σε ένα δίκτυο TCP/IP, το πιθανότερο είναι ότι θα χρησιμοποιήσετε μια κάρτα δικτύου Ethernet ή μια σύνδεση PPP. Υπάρχουν και άλλοι τρόποι όπως (A)DSL modems, συνδέσεις Wireless και δορυφορικές, αλλά οι περισσότεροι τρόποι σύνδεσης ρυθμίζονται με παρόμοιο τρόπο. Η κάθε συσκευή δικτύου αποτελεί την διασύνδεση του υπολογιστή στο δίκτυο (το interface όπως αλλιώς λέγεται). Για τη ρύθμιση της κάθε διασύνδεσης το Debian χρησιμοποιεί ένα συνδυασμό εντολών, αρχείων ρυθμίσεων και σεναρίων κελύφους. Ο βασικός κορμός όμως όλων αυτών είναι η εντολή ifconfig (interface config). Η εντολή αυτή ρυθμίζει όλες τις παραμέτρους μιας διασύνδεσης όπως διεύθυνση IP, μάσκα δικτύου (netmask) και άλλες παραμέτρους εξειδικευμένες για κάθε συσκευή δικτύου (mtu, hw address, metrics, multicast, κλπ). Η πιο συνηθισμένη σύνταξή της είναι η εξής:

Ifconfig <device> up/down <IP ADDRESS> [netmask MASK]
ifconfig [-s] [device]

Η πρώτη σύνταξη ενεργοποιεί ή απενεργοποιεί μια διασύνδεση στο δίκτυο, η οποία χρησιμοποιεί τη συσκευή δικτύου device και θα έχει διεύθυνση IP την δοθείσα. Η μάσκα δικτύου είναι προαιρετική αλλά είναι σωστή πρακτική να παρέχεται για λόγους σαφήνειας.

Η δεύτερη σύνταξη εμφανίζει αναλυτικές ή περιεκτικές πληροφορίες για τις υπάρχουσες διασυνδέσεις. Η ifconfig δέχεται και άλλες επιλογές και παραμέτρους τις οποίες δε θα αναφέρουμε εδώ (man ifconfig).

Για παράδειγμα για να ορίσουμε την διασύνδεση της συσκευής eth0 με διεύθυνση IP 192.168.10.20 και μάσκα δικτύου 255.255.255.0, εκτελούμε την εντολή:

# ifconfig eth0 up 192.168.10.20 netmask 255.255.255.0

Το αποτέλεσμα της ρύθμισης μπορούμε να το διαπιστώσουμε ξανατρέχοντας την ifconfig χωρίς παραμέτρους:

# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:46:0F:39:BD
          inet addr:192.168.10.20  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:9 Base address:0xfcc0 Memory:fecff000-fecff038

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:2041732 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2041732 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1033911881 (986.0 MiB)  TX bytes:1033911881 (986.0 MiB)

Στην καταχώρηση eth0 βλέπουμε πολλές πληροφορίες για τη διασύνδεση σε αυτή τη συσκευή, όπως τον τύπο, την διεύθυνση υλικού (hardware address), την διεύθυνση IP, τις διευθύνσεις μάσκας και αναμετάδοσης (broadcast) αλλά και πιο τεχνικές πληροφορίες όπως σύνολο πακέτων και που έχουν μεταδοθεί από και προς την διασύνδεση αυτή, αριθμό λαθών και συνολικό μέγεθος μεταφοράς σε bytes.

Πέρα από τις πληροφορίες για την διασύνδεση eth0 που μόλις δημιουργήσαμε, η ifconfig μας παρέχει πληροφορίες και για μια άλλη διασύνδεση lo, (loopback). Αυτή δεν αντιστοιχεί σε κάποια συσκευή δικτύου αλλά είναι μια διασύνδεση σε επίπεδο λογισμικού και χρησιμοποιείται για τοπική επικοινωνία TCP/IP (δηλαδή στον ίδιο υπολογιστή) και για σκοπούς ελέγχου και ανάλυσης. Αντιστοιχεί πάντα στην διεύθυνση 127.0.0.1 και η ύπαρξή της είναι απαραίτητη καθώς πολλές εφαρμογές στηρίζονται σε αυτήν για εσωτερική επικοινωνία.

Κάποιες φορές ίσως χρειαστεί να ρυθμίσουμε την δρομολόγηση των δικτύων, κάτι που ισχύει ειδικά σε δίκτυα εταιρειών ή ακόμη και σε προσωπικά δίκτυα αν έχουμε περισσότερους από έναν υπολογιστές συνδεδεμένους μεταξύ τους. Συνήθως μόνο ο ένας έχει πρόσβαση στο Internet (μέσω π.χ. ISDN ή ADSL) και θέλουμε να χρησιμοποιήσουμε αυτόν ως πύλη (gateway) για τους υπόλοιπους. Η δρομολόγηση αυτή γίνεται είτε αυτόματα κατά τη ρύθμιση κατά την ενεργοποιήση, μέσω του αρχείου interfaces (που θα δούμε παρακάτω) είτε με την εντολή route.

Η εντολή route δίνει την δυνατότητα αρκετά περίπλοκων δρομολογήσεων, οι οποίες όμως έχουν εφαρμογή μόνο σε συνδέσεις τοπικών και μη τοπικών δικτύων (LAN-WAN, Local Area Networks - Wide Area Networks). Η δρομολόγηση ενός τοπικού οικιακού δικτύου σε μία σύνδεση PPP, γίνεται αυτόματα από το πρόγραμμα pppd (όταν αυτό έχει ενεργοποιημένο την επιλογή defaultroute).

Για την κατανόηση της δρομολόγησης δικτύων, παραθέτουμε το ακόλουθο παράδειγμα.

# route
10.10.1.0       *               255.255.255.0   U     0      0        0 eth4
10.0.0.0        *               255.255.0.0     U     0      0        0 eth2
10.1.0.0        *               255.255.0.0     U     0      0        0 eth3
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth1

Με βάση το αποτέλεσμα της route, μπορούμε να βγάλουμε τα εξής συμπεράσματα:

Τι ακριβώς σημαίνει αυτό; Το σύστημα γνωρίζει ότι οποιαδήποτε διεύθυνση IP της μορφής 10.0.x.y ανήκει στο δίκτυο που συνδέεται η eth2. Αντίστοιχα, για τις διευθύνσεις 10.1.x.y θα χρησιμοποιήσει την διασύνδεση eth3 και για τις διευθύνσεις 10.1.10.x την διασύνδεση eth4. Για οποιαδήποτε άλλη διεύθυνση το σύστημα χρησιμοποιεί την διασύνδεση eth1 και αποστέλει όλα τα πακέτα επικοινωνίας στην διεύθυνση 192.168.1.1 που είναι και η προκαθορισμένη πύλη του δικτύου.

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

Το βασικό αρχείο ρύθμισης των διασυνδέσεων ενός τυπικού συστήματος Debian (τουλάχιστον στις παρούσες διανομές woody, testing και unstable) είναι το /etc/network/interfaces. Αυτό το αρχείο περιγράφει με ποιον τρόπο θα ρυθμίζεται η κάθε διασύνδεση, αν θα ενεργοποιείται αυτόματα κατά την εκκίνηση, αν θα διευθυνσιοδοτείται αυτόματα μέσω κάποιου πρωτοκόλλου όπως BOOTP ή DHCP αλλά και θα επιτρέπει την απευθείας ρύθμιση της διεύθυνσης IP, της μάσκας και της πύλης του δικτύου της διασύνδεσης. Για παράδειγμα, ας υποθέσουμε ότι έχουμε ένα υπολογιστή που χρησιμοποιεί δυναμική σύνδεση ADSL για πρόσβαση στο Internet, η οποία συνδέεται στην κάρτα δικτύου eth0, ενώ συνδέεται και σε ένα τοπικό δίκτυο μέσω της κάρτας δικτύου eth1. Οι δυναμικές συνδέσεις DSL συνήθως διευθυνσιοδοτούνται μέσω του πρωτοκόλλου DHCP. Ακολουθεί ένα πιθανό αρχείο interfaces που περιγράφει μια τέτοια συνδεσμολογία:

auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
       address 192.168.10.1
       netmask 255.255.255.0

και το αρχείο interfaces ενός άλλου υπολογιστή που συνδέεται στο εσωτερικό δίκτυο μέσω της δικής του eth0:

auto eth0
iface eth0 inet static
       address 192.168.10.5
       netmask 255.255.255.0
       gateway 192.168.10.1

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

Χάρη σε αυτό το αρχείο, η ενεργοποίηση/απενεργοποίηση των διασυνδέσεων μπορεί πλέον εύκολα χρησιμοποιώντας τις εντολές ifup/ifdown με το όνομα της διασύνδεσης.

Δηλαδή στο προηγούμενο παράδειγμα η εντολή

# ifup eth0

ενεργοποιεί τη σύνδεση ADSL στον πρώτο υπολογιστή ή την τοπική σύνδεση δικτύου στον δεύτερο. Για περισσότερες πληροφορίες για τις αποδεκτές παραμέτρους των εντολών ifup, ifdown και του αρχείου interfaces παραπέμπουμε στις αντίστοιχες σελίδες οδηγιών.

Στην περίπτωση που χρησιμοποιείτε κάρτα δικτύου PCMCIA, η διαδικασία είναι λίγο διαφορετική. Αρκεί να δηλώσετε τα αντίστοιχα χαρακτηριστικά του δικτύου (διεύθυνση IP, μάσκα, πύλη, DHCP/BOOTP, κλπ) στο αρχείο /etc/pcmcia/network.opts. Χάρη σε αυτό το αρχείο η ρύθμιση του δικτύου θα ενεργοποιείται κάθε φορά που συνδέετε την κάρτα δικτύου PCMCIA στον υπολογιστή σας (αν φυσικά έχετε εγκατεστημένα τα πακέτα PCMCIA).

Έπειτα, η ενεργοποίηση/απενεργοποιήση της αντίστοιχης διασύνδεσης είναι απλώς θέμα εκτέλεσης του σεναρίου κελύφους /etc/pcmcia/network, ως εξής:

/etc/pcmcia/network start|stop|restart devicename

όπου devicename το όνομα της διασύνδεσης (π.χ. eth0).

Διαχείριση ονομάτων και τομέων δικτύου

Κατά την εγκατάσταση είχαμε δηλώσει κάποιο όνομα στον υπολογιστή και πιθανόν και κάποιον τομέα δικτύου στον οποίο ανήκει ο υπολογιστής. Το όνομα του υπολογιστή, το hostname όπως λέγεται μπορούμε να το μάθουμε και να το αλλάξουμε προσωρινά με την ομώνυμη εντολή:

# hostname
silmaril

ενώ με την παράμετρο -i τυπώνει την διεύθυνση IP που αντιστοιχεί στο όνομα αυτό (κάθε διεύθυνση IP μπορεί να αντιστοιχεί σε διαφορετικό hostname, ώστε να είναι δυνατόν ένας υπολογιστής να χαρακτηρίζεται από περισσότερα hostnames).

# hostname -i
10.0.1.150

Μπορούμε επίσης να ορίσουμε προσωρινά ένα διαφορετικό hostname δίνοντάς το ως παράμετρο ή από κάποιο αρχείο ως εξής:

# hostname newhost
# hostname -F hostfile

(Το hostfile πρέπει να περιέχει μόνο τη λέξη newhost)

Οι δύο εντολές είναι ισοδύναμες. Για πιο μόνιμη αλλαγή του hostname, θα πρέπει να αλλάξουμε το αρχείο /etc/hostname.

Αντίστοιχα με τη εντολή hostname, υπάρχει και η εντολή dnsdomainname που εμφανίζει τον τομέα ή το πλήρως δηλωμένο όνομα τομέα (Fully Qualified Domain Name, FQDN) του υπολογιστή:

# dnsdomainname -f
computer.somedomain.company.com

Η αλλαγή του τομέα γίνεται αν ο υπολογιστής δεν είναι συνδεδεμένος σε δίκτυο με δηλωμένο όνομα τομέα (π.χ. ένας οικιακός υπολογιστής). Αν είναι συνδεδεμένος σε τέτοιο δίκτυο για τη σωστή σύνδεσή του στο δίκτυο θα πρέπει να χρησιμοποιήσει το κατάλληλο όνομα τομέα (που θα πρέπει να το παρέχει ο διαχειριστής αυτού του δικτύου). Για οικιακή ή απομονωμένη από δίκτυο χρήση μπορούμε να ορίσουμε ένα τυπικό όνομα τομέα με το αρχείο /etc/domainname.

Επίσης, σε ένα μικρό δίκτυο μπορούμε να αντιστοιχίσουμε ονόματα υπολογιστών με διευθύνσεις IP στο αρχείο /etc/hosts. Αυτό το αρχείο θα πρέπει να υπάρχει σε κάθε υπολογιστή και να είναι συνεπές, δηλαδή να μην υπάρχουν διαφορετικές καταχωρήσεις για τον ίδιο υπολογιστή. Παραπέμπουμε στη σελίδα οδηγιών του αρχείου hosts για περισσοτερες πληροφορίες.

Για μεγαλύτερα δίκτυα υπάρχουν διαφορετικά συστήματα όπως το NIS (Network Information Services) ή το DNS (Domain Name Service) τα οποία χρησιμοποιούν έναν κεντρικό διακομιστή που διατηρεί μια βάση δεδομένων ονομάτων hostnames και διευθύνσεων IP (στην πραγματικότητα το NIS είναι κάτι περισσότερο, βλ. σχετικές οδηγίες στο αντίστοιχο πακέτο). Η διαχείριση αυτών των συστημάτων αποτελεί αντικείμενο εξειδικευμένων βιβλίων και ξεφεύγει από τα όρια αυτού του οδηγού. Θα αναφέρουμε όμως ορισμένες βασικές πληροφορίες για το σύστημα DNS καθώς είναι το πλέον διαδεδομένο σύστημα ονοματολογίας στο Internet.

Για να μάθετε το όνομα ενός υπολογιστή στο Internet γνωρίζοντας την διεύθυνση IP του, ή αντίστροφα, για να βρείτε σε ποια διεύθυνση αντιστοιχεί ένα συγκεκριμένο όνομα (για την ακρίβεια είναι απαραίτητη η χρήση ενός FQDN) μπορείτε να χρησιμοποιήσετε μια από τις εντολές nslookup, host και dig. Η nslookup θεωρείται ξεπερασμένη και τείνει να αντικατασταθεί από τις host και dig. Η host χρησιμοποιείται για μια γρήγορη αναζήτηση χωρίς να δίνει έμφαση σε τεχνικές λεπτομέρειες. Για πιο τεχνική ανάλυση μιας αναζήτησης στο σύστημα DNS η dig παρέχει πληθώρα πληροφοριών που είναι όμως χρήσιμες μόνο στους διαχειριστές συστημάτων. Για κατανόηση της διαφοράς των εντολών παραθέτουμε την αναζήτηση της διεύθυνσης www.google.org και με τις τρείς εντολές:

# nslookup www.google.org
Note:  nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead.  Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
Server:         195.66.112.1
Address:        195.66.112.1#53

Non-authoritative answer:
www.google.org  canonical name = www.google.com.
Name:   www.google.com
Address: 216.239.51.99

Η nslookup παρέχει αρκετές βασικές και χρήσιμες πληροφορίες στο χρήστη, όπως την διεύθυνση του διακομιστή DNS που χρησιμοποιήθηκε, και πληροφορίες για το όνομα που αναζητήθηκε (το οποίο στη συγκεκριμένη περίπτωση είναι ένα ψευδώνυμο για το www.google.com και κατευθύνει στην διεύθυνση IP 216.239.32.10).

# host www.google.org
www.google.org is an alias for www.google.com.
www.google.com has address 216.239.51.99

Η host παρέχει μόνο τις πιο βασικές πληροφορίες για το όνομα και αγνοεί – στον βασικό τρόπο κλήσης της εντολής – τις πληροφορίες για τους διακομιστές DNS ή άλλες πιο τεχνικές πληροφορίες.

silmaril:~# dig www.google.org

; <<>> DiG 9.2.2 <<>> www.google.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33223
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;www.google.org.                        IN      A

;; ANSWER SECTION:
www.google.org.         345559  IN      CNAME   www.google.com.
www.google.com.         259     IN      A       216.239.51.99

;; AUTHORITY SECTION:
google.com.             132037  IN      NS      ns1.google.com.
google.com.             132037  IN      NS      ns2.google.com.
google.com.             132037  IN      NS      ns3.google.com.
google.com.             132037  IN      NS      ns4.google.com.

;; ADDITIONAL SECTION:
ns1.google.com.         131769  IN      A       216.239.32.10
ns2.google.com.         131769  IN      A       216.239.34.10
ns3.google.com.         131769  IN      A       216.239.36.10
ns4.google.com.         131769  IN      A       216.239.38.10

;; Query time: 75 msec
;; SERVER: 195.66.112.1#53(195.66.112.1)
;; WHEN: Fri Jul 11 02:03:12 2003
;; MSG SIZE  rcvd: 212

Τα σχόλια είναι περιττά για τη dig. Προσφέρει όλες τις πληροφορίες που πιθανόν να χρειαστεί ένας διαχειριστής συστημάτων, αν και για απλή χρήση ίσως κάτι τέτοιο να είναι υπερβολικό. Σε αυτήν την περίπτωση προτιμήστε τη host.

Για την επιτυχή αναζήτηση με οποιαδήποτε από τις εντολές nslookup, host, dig ή οποιοδήποτε άλλο εργαλείο αναζήτησης DNS θα πρέπει να έχουμε δηλώσει κάποιον προκαθορισμένο διακομιστή ονομάτων DNS. Αυτή η δήλωση γίνεται στο αρχείο ρυθμίσεων /etc/resolv.conf και έχει την εξής απλή μορφή:

nameserver <IP address>

Είναι δυνατή η δήλωση και όνοματος hostname αντί για διεύθυνση IP αλλά θα πρέπει να έχετε δηλώσει το όνομα και την αντίστοιχη διεύθυνση IP στο αρχείο /etc/hosts, διαφορετικά δε θα είναι επιτυχείς οι αναζητήσεις DNS.

Ασφάλεια και παρακολούθηση δικτύου

Η διαχείριση ενός δικτύου πέρα από ρυθμίσεις διασυνδέσεων και δρομολογήσεων περιλαμβάνει και παρακολούθηση της κυκλοφορίας σε αυτό, καθώς και την πρόληψη και αντιμετώπιση πιθανών προσπαθειών παραβίασης της ασφαλείας του (security breach). Το Debian θεωρείται από τις πιο ασφαλείς διανομές Linux και κάτι τέτοιο δεν είναι τυχαίο, καθώς παρέχει συνεχή ανανέωση των πακέτων με τις τελευταίες διορθώσεις σε προβλήματα ασφαλείας (security patches) αλλά και μια πληθώρα εργαλείων σχετικά με παρακολούθηση δικτύων, ανίχνευση παραβίασης ασφάλειας και αντιμετώπισής της. Μια απλή αναζήτηση με την εντολή apt-cache με λέξη-κλειδί security θα σας δώσει μια εικόνα της σημασίας που έχει η ασφάλεια στο Debian.

Για λόγους πληρότητας, θα αναφερθούμε σε ορισμένα από τα σημαντικότερα από τα πακέτα του Debian, που χρησιμοποιούνται στη διαχείριση ενός δικτύου.

Για απλή παρακολούθηση του δικτύου, από την κυκλοφορία σε επίπεδο διασύνδεσης έως τη φιλτραρισμένη παρακολούθηση της επικοινωνίας με ένα συγκεκριμένο ή μια ομάδα διευθύνσεων IP ή ακόμη και για συγκεκριμένη θύρα TCP/IP, ένα εργαλείο σαν το iptraf είναι πραγματικά απαραίτητο. Πέρα από τις λειτουργίες που αναφέραμε, το iptraf πραγματοποιεί καταμέτρηση σε πραγματικό χρόνο όλων των συνδέσεων TCP/IP καθώς και της κυκλοφορίας των πακέτων UDP ενώ εμφανίζει και μετρητές συνολικού μεγέθους δεδομένων που έχουν μεταδοθεί σε μια ή σε όλες τις διασυνδέσεις (βλ. εικόνες 85 και 86). Η iptraf τρέχει σε περιβάλλον κονσόλας.


Εικόνα 85 Η οθόνη παρακολούθησης συνδέσεων της iptraf




Για απλή αναφορά της κατάστασης του δικτύου μπορούμε να χρησιμοποιήσουμε την εντολή netstat, η οποία παρέχει παρόμοιες πληροφορίες με την iptraf αλλά σε περιβάλλον γραμμής εντολών (για χρήση σε σενάρια κελύφους ή για γρήγορη πληροφόρηση).


Εικόνα 86 Η οθόνη στατιστικών της iptraf για τις συνδέσεις δικτύου




Πολλές φορές είναι απαραίτητο να γνωρίζουμε αν η σύνδεσή μας όντως λειτουργεί, γιατί, π.χ. ενώ είναι ενεργή δεν έχουμε πρόσβαση στο δίκτυο. Για το σκοπό αυτό υπάρχουν ειδικά εργαλεία όπως οι εντολές ping και traceroute (ή μια πιο χρήσιμη έκδοση της traceroute, η mtr).

Η ping ελέγχει τη σύνδεση μεταξύ δύο υπολογιστών οπουδήποτε και αν βρίσκονται αυτοί στο Internet και δίνει και ένα μέσο χρόνο απόκρισης, μια χρήσιμη πληροφορία ειδικά αν αναζητούμε κάποιο WWW ή FTP site με γρήγορη σύνδεση. Πολλές φορές η ping δείχνει ότι ο απομακρυσμένος υπολογιστής δεν απαντά ενώ γνωρίζουμε με άλλον τρόπο ότι δεν υπάρχει πρόβλημα με τη σύνδεση ούτε με τον υπολογιστή. Αυτό γιατί συμβαίνει γιατί σε κάποιο σημείο στη διαδρομή τα πακέτα τύπου ICMP που χρησιμοποιεί η ping, απορρίπτονται από κάποιο σύστημα ασφαλείας firewall. Στην περίπτωση αυτή θα πρέπει να χρησιμοποιήσουμε κάποιο άλλο εργαλείο όπως το nmap (για οποίο θα μιλήσουμε παρακάτω). Ακολουθεί ένα παράδειγμα της χρήσης της εντολής ping:

# ping www.forthnet.gr
PING www.forthnet.gr (193.92.150.50): 56 data bytes
64 bytes from 193.92.150.50: icmp_seq=0 ttl=243 time=207.3 ms
64 bytes from 193.92.150.50: icmp_seq=1 ttl=243 time=213.0 ms
64 bytes from 193.92.150.50: icmp_seq=2 ttl=243 time=231.3 ms
64 bytes from 193.92.150.50: icmp_seq=3 ttl=243 time=211.3 ms

--- www.forthnet.gr ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 207.3/215.7/231.3 ms

Η εντολή traceroute εμφανίζει την διαδρομή ενός πακέτου από τον υπολογιστή μας έως την διεύθυνση που θα του δώσουμε ως παράμετρο. Για παράδειγμα, αν είμαστε στο Internet από μια απλή σύνδεση dialup, η διαδρομή που κάνει ένα πακέτο για να φτάσει στον υπολογιστή που χειρίζεται τη διεύθυνση www.kernel.org (που είναι το επίσημο site φιλοξενίας του πηγαίου κώδικα του πυρήνα του Linux) είναι η εξής:

# traceroute www.kernel.org
traceroute to zeus-pub.kernel.org (204.152.189.116), 30 hops max, 38 byte packets
 1  -- DELETED--  110.186 ms  57.099 ms  40.391 ms
 2  -- DELETED--  99.239 ms  56.281 ms  39.729 ms
 3  gip-ath-4-s0-5.globalone.gr (195.119.130.5)  79.741 ms  76.734 ms  79.914 ms
 4  57.66.64.1 (57.66.64.1)  139.948 ms  178.502 ms  179.842 ms
 5  blcy326-pos-5-0-0.global-one.co.uk (212.167.0.174)  199.982 ms  158.008 ms  160.613 ms
 6  ge3-0.pr1.lhr1.uk.mfnx.net (195.66.224.76)  139.654 ms  150.622 ms  159.613 ms
 7  pos8-0.mpr2.lhr1.uk.above.net (208.184.231.73)  139.892 ms  137.708 ms  140.834 ms
 8  so-4-1-0.cr2.lhr3.uk.mfnx.net (208.185.156.2)  159.189 ms  197.172 ms  159.954 ms
 9  so-7-0-0.cr2.lga1.us.above.net (64.125.31.182)  220.175 ms  236.809 ms  219.974 ms
10  so-1-0-0.cr2.iad1.us.mfnx.net (208.184.233.65)  219.281 ms  237.998 ms so-1-0-0.cr1.lga1.us.mfnx.net (208.185.0.233)  239.752 ms
11  so-1-0-0.cr1.iad1.us.mfnx.net (208.184.233.61)  257.274 ms  236.612 ms  219.718 ms
12  so-1-0-0.cr1.dca2.us.mfnx.net (208.184.233.125)  261.211 ms  218.685 ms  219.642 ms
13  so-3-0-0.mpr3.sjc2.us.mfnx.net (208.184.233.133)  300.054 ms  357.976 ms  339.308 ms
14  pos5-0.mpr1.pao1.us.mfnx.net (208.184.233.142)  300.579 ms  398.004 ms  300.600 ms
15  isc-above-oc3.pao.isc.org (216.200.0.10)  298.789 ms  297.269 ms  299.921 ms
16  r8-pao1.r3.sfo2.isc.org (192.5.4.233)  300.014 ms  457.189 ms  420.235 ms
17  zeus-pub.kernel.org (204.152.189.116)  300.167 ms  294.637 ms  299.943 ms

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




Εικόνα 87 Η γραφική έκδοση της mtr.




Για πιο εξειδικευμένη ανίχνευση ή σάρωση ενός δικτύου, τα εργαλεία satan, nmap, netcat και nessus χρησιμοποιούνται από επαγγελματίες και ειδικούς στην ασφάλεια δικτύων για την ανίχνευση πιθανών τρωτών σημείων (vulnerabilities) σε ένα δίκτυο ή ένα υπολογιστή.

Πέρα από την ενεργητική προστασία δηλαδή την ανίχνευση για τρωτά σημεία με ένα από τα προανεφερθέντα εργαλεία, υπάρχει και η παθητική προστασία, που δίνει αναφορά για μη πιστοποιημένη πρόσβαση σε έναν υπολογιστή (non-authenticated access), δηλαδή όταν κάποιος συνδεθεί στο σύστημα χωρίς να δικαιούται. Αυτοί οι χρήστες λέγονται hackers και η διαδικασία hacking. Αντίθετα με την κοινή πεποίθηση, οι hackers δεν προκαλούν ζημιές στους υπολογιστές τους οποίους “σπάνε”, αλλά το κάνουν καθαρά για λόγους κύρους και αναγνώρισης από τους ομοίους τους. Συνήθως οι hackers προσφέρουν και τις υπηρεσίες τους σε μεγάλες εταιρείες, οργανισμούς ή κρατικές υπηρεσίες ώστε να βεβαιωθούν αυτές για την ασφάλεια των δικτύων τους. Πιο επικίνδυνοι είναι οι crackers, ή freakers που μοναδικό σκοπό έχουν την καταστροφή δεδομένων και τη δημιουργία πανικού.

Ανεξαρτήτως της ονομασίας τους όμως όλοι είναι ανεπιθύμητοι, όσον αφορά την πρόσβαση σε έναν υπολογιστή. Για την αποφυγή της ενδεχόμενης παραβίασης του υπολογιστή σας, το Debian προσφέρει και αρκετά πακέτα για ανίχνευση παράνομης εισβολής στο σύστημα (Intrusion Detection Systems, IDS), όπως το LIDS, aide, idsa, snort, harden-nids, samhain.

Επίσης, ο πυρήνας του Linux προσφέρει μεγάλη παραμετροποίηση στην επιτρεπόμενη κυκλοφορία των πακέτων επικοινωνίας TCP/IP, UDP, ICMP και IGMP μέσω των εντολών ipchains ή iptables στους νεώτερους πυρήνες (2.4.x), δημιουργώντας ένα firewall. Οι εντολές αυτές είναι αρκετά περίπλοκες στη χρήση τους και συχνά χρησιμοποιούνται άλλα προγράμματα που λειτουργούν ως wrappers και πιθανώς να εμφανίζουν κάποιο γραφικό περιβάλλον. Παραδείγματα τέτοιων προγραμμάτων είναι το fwbuilder, guarddog, knetfilter, shorewall.




Εικόνα 89 Το πρόγραμμα knetfilter



Drawing 88Το πρόγραμμα fwbuilder




Εικόνα 90 Το πρόγραμμα guarddog




Χρήσιμα πακέτα: nis, iptraf, etherconf, ethereal, nessus, satan, nmap, mtr, iptraf, traceroute, host, tcpdump, netkit-ping, dnsutils, ipchains, iptables, fwbuilder, guarddog, knetfilter, shorewall, lidstools-2.2, lidstools-2.4, aide, idsa, snort, harden-nids, samhain.

  1. Περιφερειακά PCI, ISA, USB, PCMCIA, IEEE 1394

Η διαχείριση των περιφερειακών συσκευών είναι επίσης ένα σημαντικό θέμα που θα σας απασχολήσει, ειδικά στην αρχή, όταν δηλαδή θα χρειαστεί να ρυθμίσετε τις συσκευές και να τις ενεργοποιήσετε στο Linux. Το Linux, όπως και κάθε λειτουργικό σύστημα, για να επικοινωνήσει και να χρησιμοποιήσει με μια συσκευή χρειάζεται ένα ειδικό λογισμικό, τον οδηγό της συσκευής (device driver). Μετά την εγκατάσταση και για τις πρώτες εκκινήσεις, θα χρησιμοποιήσετε τον προκαθορισμένο πυρήνα του Debian που έχει υποστήριξη για τα περισσότερα είδη συσκευών που κυκλοφορούν στην αγορά. Κάποια στιγμή όμως, θα κατασκευάσετε τον δικό σας πυρήνα (με τον τρόπο που θα δούμε στο Παράρτημα VI (σελ. 275) και τότε θα χρειαστεί να επιλέξετε προσεκτικά τους οδηγούς που θέλετε να φορτώσετε στον πυρήνα σας.

Το πρώτο βήμα για την επιλογή αυτή είναι η αναγνώριση των συσκευών του συστήματος σας. Αυτή η αναγνώριση πιθανόν να έγινε πριν την εγκατάσταση, όπως προτείνεται στο κεφ. 2 (σελ. 17), αλλά υπάρχει περίπτωση να χρειαστεί να γίνει και μια δεύτερη, γιατί π.χ. έχει προστεθεί ή αφαιρεθεί νέο υλικό στον υπολογιστή σας. Για την ακρίβεια, με κάθε αλλαγή στο υλικό του υπολογιστή σας, θα πρέπει να ελέγχετε μήπως είναι απαραίτητη η κατασκευή νέου πυρήνα για την υποστήριξη του νέου υλικού.

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

Τα περιφερειακά που αλλάζουν πιο συχνά είναι οι συσκευές PCI/AGP (σε παλαιότερους υπολογιστές ίσως και να υπάρχουν και συσκευές ISA), ενώ με την εμφάνιση των διαύλων USB και Firewire (IEEE 1394 ή i.Link) η σύνδεση αντίστοιχων περιφερειακών μπορεί να γίνεται πλέον κατά την διάρκεια λειτουργίας του υπολογιστή και πρέπει να υπάρχει ένας τρόπος για την ανίχνευσή τους.

Όσον αφορά τα περιφερειακά PCI και AGP, είδαμε ήδη έναν τρόπο ανίχνευσής τους κατά την εγκατάσταση, με την εντολή lspci (σελ. 54). Η εντολή αυτή μας δίνει όλες τις συσκευές που είναι συνδεδεμένες στον δίαυλο PCI ή AGP του υπολογιστή. Σε αυτήν την περίπτωση αρκεί μόνο να επιλέξουμε τους αντίστοιχους οδηγούς στη ρύθμιση του πυρήνα για να έχουμε υποστήριξη και λειτουργία των συσκευών.

Συνήθως, η lspci θα μας δώσει κατευθείαν ένα όνομα της συσκευής, μοντέλο και κατασκευαστή, αλλά υπάρχει περίπτωση, π.χ. με μία ολοκαίνουρια συσκευή, να μην έχει ενσωμματωθεί ο οδηγός της για το Linux στον πυρήνα που έχετε εγκατεστημένο. Σε αυτήν την περίπτωση θα πρέπει ή να μεταφορτώσετε νέο πυρήνα (αφού ελέγξετε πρώτα για υπάρχουσα έκδοση στο ίδιο το Debian με την apt-cache) που πιθανόν να υποστηρίζει τη συσκευή αυτή ή να αναγνωρίσετε με κάποιον τρόπο τη συμβατότητά της με κάποια άλλη για την οποία ο πυρήνας έχει αντίστοιχο οδηγό.

Για την δεύτερη περίπτωση η lspci μπορεί να βοηθήσει δίνοντας τον κωδικό ταυτότητας της συσκευής.

Για παράδειγμα, μια νέα κάρτα οθόνης ATI που δεν έχει καταχωρηθεί ακόμη στις λίστες των συσκευών PCI του πυρήνα θα εμφανιζόταν ως εξής (σε αναλυτική μορφή με την επιλογή -v):

# lspci -v

00:00.0 Host bridge: ATI Technologies Inc: Unknown device cab0 (rev 13)
	Flags: bus master, 66Mhz, medium devsel, latency 64
	Memory at f4000000 (32-bit, prefetchable) [size=64M]
	Memory at f0800000 (32-bit, prefetchable) [size=4K]
	I/O ports at a010 [disabled] [size=4]
	Capabilities: [a0] AGP version 2.0

Παρόμοια πληροφορία μπορούμε να λάβουμε χρησιμοποιώντας το εικονικό σύστημα αρχείων /proc και συσκεκριμένα το αρχείο /proc/pci και τον κατάλογο /proc/bus/pci. Ο κατάλογος /proc/bus/pci περιέχει όλο το δέντρο των συσκευών στους αντίστοιχους διάυλος (PCI ή AGP) αλλά τα δεδομένα των αρχείων είναι σε δυαδική μορφή και θα χρειαστείτε ειδικό λογισμικό για να χρησιμοποιήσετε την πληροφορία που περιέχουν. Αντίθετα το αρχείο /proc/pci είναι μια λίστα όλων των συσκευών PCI και AGP που είναι συνδεδεμένες στο σύστημα:

# cat /proc/pci
PCI devices found:
  Bus  0, device   0, function  0:
    Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 3).
      Master Capable.  Latency=64.
      Prefetchable 32 bit memory at 0x40000000 [0x40ffffff].
  Bus  0, device   1, function  0:
    PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 3).
      Master Capable.  Latency=128.  Min Gnt=140.
  Bus  0, device   7, function  0:
    ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 2).
  Bus  0, device   7, function  1:
    IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 1).
      Master Capable.  Latency=64.
      I/O at 0xfcb0 [0xfcbf].
...

Η lspci μπορεί να επιστρέψει και μια λίστα κωδικών των συσκευών για χρήση κυρίως αναζήτησης σε ειδικές βάσης δεδομένων, με την επιλογή -n:

# lspci -n
00:00.0 Class 0600: 8086:7190 (rev 03)
00:01.0 Class 0604: 8086:7191 (rev 03)
00:07.0 Class 0601: 8086:7110 (rev 02)
00:07.1 Class 0101: 8086:7111 (rev 01)
00:07.2 Class 0c03: 8086:7112 (rev 01)
00:07.3 Class 0680: 8086:7113 (rev 03)
00:08.0 Class 0c00: 104d:8039 (rev 02)
00:09.0 Class 0401: 1073:0010 (rev 02)
00:0a.0 Class 0780: 14f1:2443 (rev 01)
00:0b.0 Class 0200: 8086:1229 (rev 08)
00:0c.0 Class 0607: 1180:0475 (rev 80)
01:00.0 Class 0300: 1002:4c4d (rev 64)

Μια αναζήτηση στο Google με τον κωδικό 14f1:2443, θα μας δείξει γρήγορα ότι η συσκευή αυτή είναι ένα WinModem HSF της Conexant, οπότε γνωρίζουμε ποιον οδηγό πλέον θα χρειαστούμε (βλ. http://www.linmodems.org και http://www.linuxant.com).

Όσον αφορά τις συσκευές ISA, το Debian παρέχει ορισμένα εργαλεία για την ενεργοποίησή τους, τις isapnptools και sndconfig (ειδικά για ενεργοποίηση καρτών ήχου σε ISA). Δε θα ανεφερθούμε περισσότερο στο πρωτόκολλο αυτό, καθώς θεωρείται ξεπερασμένο.

Για τις συσκευές USB, μπορούμε να χρησιμοποιήσουμε ένα από τα πακέτα usbview ή usbutils που παρέχει μια αντίστοιχη με την εντολή lspci, την lsusb. Με την εντολή αυτή μπορούμε να μάθουμε αντίστοιχα ποιες συσκευές USB έχουμε συνδεδεμένες και να αναζητήσουμε, όπως και στην περίπτωση των συσκευών PCI, τους αντίστοιχους οδηγούς. Η usbview προσφέρει ένα γραφικό περιβάλλον σε παρόμοιες πληροφορίες με την lsusb (βλ. εικόνα 91). Για τη λειτουργία όλων αυτών των πακέτων είναι απαραίτητη η χρήση ενός πυρήνα 2.4.x και η ενεργοποίηση του εικονικού συστήματος αρχείων usbdevfs (βλ. Παράρτημα VI, σελ. 275), καθώς οι εντολές αυτές δεν κάνουν άλλο από την ερμηνεία των δεδομένων που ήδη προσφέρει ο πυρήνας μέσω του usbdevfs, στον κατάλογο /proc/bus/usb. Για την ενεργοποίηση του usbdevfs θα πρέπει να προσθέσετε και την ακόλουθη καταχώρηση στο αρχείο /etc/fstab:

none     /proc/bus/usb   usbdevfs        defaults         0       0

αμέσως μετά την κατάχώρηση για το procfs.

Με ενεργοποιημένο το usbdevfs, η εκτέλεση της lsusb θα μας επιστρέφει ένα αποτέλεσμα της μορφής:

# lsusb
Bus 001 Device 001: ID 0000:0000
Bus 001 Device 002: ID 04cc:1122 Philips Semiconductors Hub
Bus 001 Device 008: ID 054c:0032 Sony Corp. MemoryStick MSC-U01 Reader
Bus 001 Device 003: ID 04b4:6560 Cypress Semiconductor Corp.
Bus 001 Device 004: ID 0557:2008 ATEN International Co., Ltd UC-232A Serial Port [pl2303]
Bus 001 Device 005: ID 057b:0000 Y-E Data, Inc. FlashBuster-U Floppy
Bus 001 Device 006: ID 0bf1:0001 Intracom S.A.
Bus 001 Device 007: ID 03f0:1a11 Hewlett-Packard


Εικόνα 91 Το πρόγραμμα usbview




Με τον ίδιο τρόπο μπορούμε να διαχειριστούμε περιφερειακά που συνδέονται στη θύρα PCMCIA. Λόγω παλαιότερης αρχιτεκτονικής και τα εργαλεία είναι παλαιότερης φιλοσοφίας. Αν είχατε επιλέξει την υποστήριξη PCMCIA κατά την εγκατάσταση (σελ. 52) τότε θα έχει εγκατασταθεί το πακέτο pcmcia-cs που περιέχει τα κατάλληλα εργαλεία για την διαχείριση των συσκευών αυτών. Πληροφορίες για την κατάσταση των υποδοχών PCMCIA (Slots ή Sockets) μπορούμε να λάβουμε με την εντολή cardctl:

# cardctl status
Socket 0:
  5V 16-bit PC Card
  function 0: [ready]

ή με το γραφικό πρόγραμμα cardinfo.




Εικόνα 92 Το πρόγραμμα cardinfo.




Και για τις συσκευές PCMCIA, ο πυρήνας παρέχει έναν κατάλογο με περιορισμένες πληροφορίες στο /proc/bus/pccard. Οι εντολές όμως cardctl και cardinfo παρέχουν σαφώς πιο ολοκληρωμένη διάγνωση της κατάστασης του διαύλου PCMCIA.

Οι συσκευές Firewire ή IEEE 1394 ή i.Link, ακολουθούν το παράδειγμα των συσκευών USB, χωρίς όμως να χρειάζονται ειδικό εικονικό σύστημα αρχείων. Δεν υπάρχει εντολή αντίστοιχη της lsusb, μόνο ένα γραφικό περιβάλλον (gscanbus) που εμφανίζει τις αντίστοιχες συσκευές και τη συνδεσμολογία τους και ο κατάλογος /proc/bus/ieee1394. Ο κατάλογος αυτός προς το παρόν περιέχει μόνο ένα αρχείο, το devices που παρουσιάζει μια αναλυτική περιγραφή των συσκευών που είναι συνδεδεμένες στη θύρα Firewire.

# cat /proc/bus/ieee1394/devices
Node[00:1023]  GUID[0800460300bad042]:
  Vendor ID: `Linux OHCI-1394' [0x000000]
  Capabilities: 0x0083c0
  Bus Options:
    IRMC(1) CMC(1) ISC(1) BMC(0) PMC(0) GEN(0)
    LSPD(2) MAX_REC(2048) CYC_CLK_ACC(0)
  Host Node Status:
    Host Driver     : ohci1394
    Nodes connected : 3
    Nodes active    : 2
    SelfIDs received: 4
    Irm ID          : [00:1023]
    BusMgr ID       : [00:1023]
    In Bus Reset    : no
    Root            : no
    Cycle Master    : no
    IRM             : yes
    Bus Manager     : yes
Node[01:1023]  GUID[0010b920003d7ae3]:
  Vendor ID: `Maxtor' [0x0010b9]
  Capabilities: 0x0083c0
  Bus Options:
    IRMC(0) CMC(0) ISC(0) BMC(0) PMC(0) GEN(2)
    LSPD(2) MAX_REC(64) CYC_CLK_ACC(255)
  Unit Directory 0:
    Vendor/Model ID: Maxtor [0010b9] / 1394 Storage Front Panel* [005000]
    Software Specifier ID: 0010b9
    Software Version: ceb001
    Length (in quads): 5
  Unit Directory 1:
    Vendor/Model ID: Maxtor [0010b9] / 5000DV  v1.00.00 [005000]
    Software Specifier ID: 00609e
    Software Version: 010483
    Driver: SBP2 Driver
    Length (in quads): 11

Οι πληροφορίες αυτές είναι πολύ τεχνικές για να ενδιαφέρουν οποιονδήποτε από κάποιον προγραμματιστή του πυρήνα. Το πρόγραμμα gscanbus προσφέρει μια σαφώς πιο φιλική εικόνα της συνδεσμολογίας των συσκευών αυτών.

Στο σημείο αυτό πρέπει να αναφέρουμε ότι με τη σύνδεση μιας συσκευής USB, Firewire, κλπ κατά την διάρκεια της λειτουργίας του υπολογιστή, θα πρέπει να φορτώνουμε τις λογισμικές μονάδες οδηγών (driver modules) χειροκίνητα, εκτός αν είναι ενσωματωμένες στον πυρήνα. Επειδή η ενσωμάτωση όλων των οδηγών στον πυρήνα είναι τακτική που γενικά αποτρέπεται, έχουν κατασκευαστεί προγράμματα που αναλαμβάνουν να ανιχνεύουν οποιαδήποτε συσκευή συνδεθεί σε μία από αυτές τις θύρες και ταυτόχρονα φορτώνουν τον σωστό οδηγό. Από τους hotplug managers, όπως λέγονται, ο πιο πλήρης είναι ο murasaki καθώς υποστηρίζει όλα τα πρωτόκολλα (PCI, Ethernet, PCMCIA, USB, Firewire) και είναι εύκολος στην ρύθμισή του. Εναλλακτικά το Debian προσφέρει το λογισμικό usbmgr και hotplug που έχει παρόμοια λειτουργία με το murasaki.




Εικόνα 93 Το πρόγραμμα gscanbus




Χρήσιμα πακέτα: gscanbus, usbview, usbmgr, usbutils, isapnptools, sndconfig, hotplug, murasaki.

  1. Διαχείριση διεργασιών

Περί διεργασιών

Έχουμε ήδη χρησιμοποιήσει τον όρο “διεργασία” αρκετές φορές, χωρίς να τον τεκμηριώσουμε ικανοποιητικά. Τί ακριβώς είναι οι διεργασίες και πως τις αντιλαμβάνεται το λειτουργικό συστημα και ο επεξεργαστής;

Στα παλαιότερα λειτουργικά συστήματα (MS-DOS, CP/M) αλλά και σε οικιακούς υπολογιστές που δεν είχαν κάποιο ξεχωριστό λειτουργικό σύστημα (Spectrum, Amstrad, Commodore, κλπ), το κάθε πρόγραμμα που έτρεχε είχε πλήρη έλεγχο του υπολογιστή, δηλαδή του επεξεργαστή και του συνδεδεμένου υλικού, και δεν ήταν δυνατή η εκτέλεση δύο προγραμμάτων ταυτόχρονα στον ίδιο τον υπολογιστή. Το πρόγραμμα δε μοιραζόταν το χρόνο του επεξεργαστή και έτσι είχε τη δυνατότητα να κάνει αρκετές υποθέσεις και παραδοχές όσον αφορά τις απαιτήσεις του και την αρχιτεκτονική του υπολογιστή.

Η εξέλιξη των υπολογιστών, η εμφάνιση γρήγορών επεξεργαστών και οι αυξημένες απαιτήσεις οδήγησαν στην εμφάνιση πολυδιεργαστικών λειτουργικών συστήματων (multi-tasking operating systems) τα οποία επέτρεπαν την παράλληλη εκτέλεση πολλών προγραμμάτων. Αυτά τα προγράμματα που εκτελούνται παράλληλα σε ένα τέτοιο λειτουργικό σύστημα αποτελούν τις διεργασίες. Στην πραγματικότητα δεν τρέχουν πραγματικά παράλληλα, το λειτουργικό σύστημα μοιράζει το χρόνο του επεξεργαστή έτσι που κάθε στιγμή τρέχει μόνο μια διεργασία, και για εκείνη τη στιγμή έχει το σχεδόν πλήρη έλεγχο του επεξεργαστή. Το λειτουργικό σύστημα πραγματοποιεί μερικές εκατοντάδες ώς χιλιάδες εναλλαγές το δευτερόλεπτο, έτσι που στο χρήστη φαίνεται ότι εκτελούνται παράλληλα. Ακόμη και έτσι όμως, ο χρόνος που είναι διαθέσιμος από τον επεξεργαστή εξαρτάται από το φόρτο του, ή για την ακρίβεια από την απαίτηση της κάθε διεργασίας για επεξεργαστική ισχύ.

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

Σε όλα τα πολυδιεργαστικά λειτουργικά συστήματα, όπως τα συστήματα UNIX και Linux, την όλη διαχείριση των διεργασιών την αναλαμβάνει ο πυρήνας. Για το σκοπό αυτό, κρατά μια λίστα διεργασών, από την οποία λαμβάνει με τη σειρά κάθε διεργασία και την εκτελεί για ένα χρονικό διάστημα (συνήθως κάποια χιλιοστά του δευτερολέπτου). Στη συνέχεια θέτει την διεργασία αυτή σε νάρκη (sleep mode) και εκτελεί την επόμενη, κ.ο.κ. Οι ίδιες οι διεργασίες δεν έχουν έλεγχο πόσο χρόνο θα δεσμεύσουν από τον επεξεργαστή και πότε. Παλαιότερα, κάθε διεργασία είχε ίση μεταχείριση από τον πυρήνα, δηλαδή δέσμευε τον ίδιο χρόνο με τις άλλες διεργασίες. Κάτι τέτοιο όμως δεν είναι ιδιαίτερα αποδοτικό, αφού συχνά κάποιες διεργασίες βρίσκονται σε κατάσταση αναμονής (wait mode) ενώ κάποιες άλλες χρειάζονται όσο το δυνατόν περισσότερη επεξεργαστική ισχύ (π.χ. κάποιο πρόγραμμα rendering). Αντίστροφα, σε ορισμένες διεργασίες ο χρόνος απόκρισης είναι ιδιαίτερα σημαντικός (π.χ. η διεργασία που χειρίζεται το πληκτρολόγιο ή τους δίσκους) ενώ σε άλλες δεν παίζει ρόλο.

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

Αφού δώσαμε μια εξήγηση για τις διεργασίες στο Linux και γενικότερα, στο UNIX, μπορούμε να προχωρήσουμε στον τρόπο διαχείρισής τους.

Είδη διεργασιών

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

Η εντολή ps

Για την εμφάνιση των διεργασιών που τρέχουν σε κάθε στιγμή στο σύστημα μπορούμε να χρησιμοποιήσουμε την εντολή ps, η οποία μπορεί να εμφανίσει ένα πλήθος πληροφοριών για την κάθε διεργασία, όπως το χρόνο εκτέλεσης, το συνολικό ποσοστό του χρόνου του επεξεργαστή που έχει χρησιμοποιήσει (CPU usage), το ποσό της μνήμης που καταναλώνει (memory usage), κλπ.

Η σύνταξη της ps είναι κάπως διαφορετική από των άλλων εντολών, για ιστορικούς λόγους. Το BSD UNIX ακολούθησε διαφορετική σύνταξη από το System V και η ps που περιλαμβάνεται στο Linux υποστηρίζει και τις δύο συντάξεις καθώς και μια ακόμη συμβατή με τα πρότυπα GNU. Οι διαφορές είναι ότι η σύνταξη BSD δε χρησιμοποιεί την παύλα “-” για τον ορισμό επιλογών, ενώ η σύνταξη System V χρησιμοποιεί. Η σύνταξη GNU χρησιμοποιεί δύο παύλες “--”.

Γενικά, οι επιλογές που μπορούν να χρησιμοποιηθούν είναι πάρα πολλές, αλλά η αναφορά όλων των επιλογών της ps δεν είναι στους σκοπούς του παρόντος βιβλίου, θα αναφέρουμε όμως τις σημαντικότερες:

Επιλογές

Λειτουργία

-A
-e

Εμφανίζει όλες τις διεργασίες του συστήματος.

a

Εμφανίζει όλες τις διεργασίες που είναι συνδεδεμένες σε κάποιο τερματικό, ακόμη και άλλων χρηστών.

r

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

x

Εμφανίζει τις διεργασίες που δεν είναι συνδεδεμένες σε κάποιο τερματικό.

-C cmd

Εμφανίζει την διεργασία που αντιστοιχεί στην εντολή cmd.

u user
-u user
--user user

Εμφανίζει τις διεργασίες που αντιστοιχούν στο χρήστη user. Δέχεται όνομα χρήστη ή uid.

g group
-g group
--group group

Εμφανίζει τις διεργασίες που αντιστοιχούν στην ομάδα group. Δέχεται όνομα ομάδας ή gid.

p pid
-p pid
--pid pid

Εμφανίζει τις διεργασίες που αντιστοιχούν στα δοσμένα pid. Λειτουργεί και δίνοντας απευθείας το pid χωρίς επιλογή, δηλαδή με 322, θα εμφανίσει πληροφορίες για την διεργασία με process id 322.

t tty
-t tty
--tty tty

Εμφανίζει τις διεργασίες που αντιστοιχούν στο τερματικό tty.

--ppid pid

Εμφανίζει τις διεργασίες που έχουν γονική διεργασία την pid.

l
-l

Εμφανίζει εκτεταμένες πληροφορίες για κάθε διεργασία.

-f

Η εμφάνιση να γίνει με όλες τις πληροφορίες για κάθε διεργασία.

-F

Εμφανίζει επιπλέον πληροφορίες από τη -f.

F
--forest
-H

Εμφανίζει τις διεργασίες ιεραρχικά, με τρόπο που να φαίνεται η σχέση γονικών-θυγατρικών διεργασιών.

--sort

Ταξινομεί τη λίστα με βάση τα δεδομένα στοιχεία-κλειδιά. Δέχεται δύο μορφές: τη σύντομη και την πλήρη. Μερικά από αυτά είναι (σε παρένθεση η σύντομη μορφή):

  • cmd(c) : όνομα εντολής (μόνο το όνομα της εντολής)

  • cmdline(C) : όνομα εντολής (πλήρης)

  • pid(p) : το process id

  • ppid(P) : το process id της γονικής διεργασίας

  • utime(k) : πραγματικός χρονος επεξεργασίας

  • stime(K) : χρόνος επεξεργασίας συστήματος

  • size(s) : μέγεθος κατανάλωσης μνήμης της διεργασίας (σε kilobytes)

  • user(u) : όνομα χρήστη

  • uid(U) : αριθμός ταυτότητας χρήστη.

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

$ ps -HeF

εμφανίζει όλες τις διεργασίες με πλήρη πληροφόρηση και ιεραρχική δομή.

$ ps -fC syslogd
UID        PID  PPID  C STIME TTY          TIME CMD
root       280     1  0 Jul12 ?        00:00:02 /sbin/syslogd

Εμφανίζει μόνο την εντολή syslogd.

$ ps -FC syslogd
UID        PID  PPID  C    SZ  RSS PSR STIME TTY          TIME CMD
root       280     1  0   325  540   0 Jul12 ?        00:00:02 /sbin/syslogd

Η ίδια αλλά με την επιλογή -F, που εμφανίζει περισσότερες πληροφορίες.

Το δέντρο ιεραρχίας των εντολών μπορούμε να το λάβουμε και με την εντολή pstree (περιέχεται στο πακέτο psmisc). Παράδειγμα:

$ pstree
init─┬─acpid
     ├─alarmd
     ├─apache───5*[apache]
     ├─atd
     ├─atop
     ├─bash───startx───xinit─┬─XFree86
     │                       └─x-session-manag─┬─ksmserver
     │                                         └─ssh-agent
     ├─bdflush
     ├─cron
     ├─cupsd
     ├─devfsd
     ├─5*[getty]
     ├─inetd
     ├─kdeinit─┬─artsd
     │         ├─kdeinit
     │         ├─kdeinit─┬─2*[bash]
     │         │         ├─bash───pstree
     │         │         ├─bash───bash───man───sh───pager
     │         │         └─bash───bash───tail
     │         ├─kghostview───gs
     │         └─soffice.bin───soffice.bin───4*[soffice.bin]

Το σύστημα αρχείων /proc και οι διεργασίες

Η έκδοση της ps που χρησιμοποιεί το Debian βρίσκεται στο πακέτο procps, γιατί η ίδια η εντολή χρησιμοποιεί τις πληροφορίες που προσφέρει ο ίδιος ο πυρήνας του Linux για τις διεργασίες σε ειδικά αρχεία στο σύστημα αρχείων /proc. Κάθε διεργασία απεικονίζεται στο /proc με ένα κατάλογο του οποίου το όνομα είναι το pid της διεργασίας. Για παράδειγμα:

# ls -l /proc/6755
total 0
-r--r--r--    1 feanor   users           0 Jul 13 23:41 cmdline
lrwxrwxrwx    1 feanor   users           0 Jul 13 23:41 cwd -> /home/feanor
-r--------    1 feanor   users           0 Jul 13 23:41 environ
lrwxrwxrwx    1 feanor   users           0 Jul 13 23:41 exe -> /usr/OpenOffice.org1.1/program/soffice.bin
dr-x------    2 feanor   users           0 Jul 13 23:41 fd
-r--r--r--    1 feanor   users           0 Jul 13 23:41 maps
-rw-------    1 feanor   users           0 Jul 13 23:41 mem
-r--r--r--    1 feanor   users           0 Jul 13 23:41 mounts
lrwxrwxrwx    1 feanor   users           0 Jul 13 23:41 root -> /
-r--r--r--    1 feanor   users           0 Jul 13 23:41 stat
-r--r--r--    1 feanor   users           0 Jul 13 23:41 statm
-r--r--r--    1 feanor   users           0 Jul 13 23:41 status



Τα αρχεία αυτά παρέχουν όλες τις απαραίτητες πληροφορίες για την διεργασία, όπως το όνομα της εντολής με το οποίο καλέστηκε (cmdline), τον τρέχων κατάλογο της διεργασίας (cwd), τις μεταβλητές περιβάλλοντος που υιοθέτησε η διεργασία (environ), τα ανοιχτά αρχεία που χειρίζεται (file descriptors στον κατάλογο fd), πληροφορίες κατανάλωσης μνήμης της διεργασίας (στα αρχεία stat, statm και status) ακόμη και τις διευθύνσεις των θέσεων μνήμης που καταναλώνει η διεργασία (maps). Οι πληροφορίες αυτές είναι χρήσιμες μόνο σε κάποιον πολύ έμπειρο διαχειριστή συστήματος, τις περισσότερες φορές αρκεί η χρήση της εντολής ps.

Η εντολή top

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


Εικόνα 94 Η εντολή top εν δράση




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


Εικόνα 95 Μια ακόμη μορφή της ksysguard




Το KDE και το GNOME, προσφέρουν γραφικές εναλλακτικές της top, που μάλιστα προσφέρουν αρκετά περισσότερες λειτουργίες, στα προγράμματα ksysguard και gtop αντίστοιχα. Το ksysguard περιλαμβάνεται στην βασική διανομή του KDE (πακέτο kdebase) και μάλιστα εμφανίζει τη λίστα των διεργασιών με πάτημα των πλήκτρων [CTRL]-[ESC] οποιαδήποτε στιγμή, σε περιβάλλον KDE.




Drawing 96Η εντολή gtop




Τερματισμός εργασίας

Αρκετές φορές θα χρειαστεί να τερματίσουμε μια διεργασία, είτε γιατί δεν αποκρίνεται πια ή καταναλώνει όλους τους πόρους του συστήματος καθιστώντας αδύνατη τη λειτουργία του. Για το σκοπό αυτό χρησιμοποιούμε μια από τις εντολές kill και killall. Η kill δέχεται ως παράμετρο το process id της διεργασίας (ή των διεργασιών) θέλουμε να τερματίσουμε και το σήμα το οποίο θα στείλει στην διεργασία (βλ. επόμενη παράγραφο για περιγραφή των σημάτων). Αν δεν δώσουμε κάποιο σήμα, το προκαθορισμένο είναι το TERM (σήμα τερματισμού διεργασίας). Δέχεται μια επιλογή την -l, η οποία εμφανίζει λίστα των αποδεκτών σημάτων.

Η killall είναι μια βοηθητική εντολή που τερματίζει ή αποστέλει ένα συγκεκριμένο σήμα σε όλες τις διεργασίες με το δοσμένο όνομα. Από τις παραμέτρους που δέχεται, πιο χρήσιμες είναι οι -w, που περιμένει έως τον τερματισμό των διεργασιών, και η -i, που ζητάει επιβεβαίωση για κάθε διεργασία που πρόκειται να τερματίσει. Περιέχεται στο πακέτο psmisc.

Το Debian διαθέτει και αρκετά πακέτα με χρήσιμες εντολές για διαχείριση διεργασιών, ένα εκ των οποίων είναι η εντολή slay. Η εντολή αυτή τερματίζει όλες τις διεργασίες ενός χρήστη. Είναι αρκετά χρήσιμη εντολή ειδικά για συστήματα με πολλούς χρήστες.

Ακολουθούν μερικά παραδείγματα της χρήσης των εντολών:

# ps -ef|grep apache
root       822     1  0 Jul12 ?        00:00:00 /usr/sbin/apache
www-data  5589   822  0 Jul13 ?        00:00:00 /usr/sbin/apache
www-data  5590   822  0 Jul13 ?        00:00:00 /usr/sbin/apache
www-data  5591   822  0 Jul13 ?        00:00:00 /usr/sbin/apache
www-data  5592   822  0 Jul13 ?        00:00:00 /usr/sbin/apache
www-data  5593   822  0 Jul13 ?        00:00:00 /usr/sbin/apache
root     10894  1067  0 02:45 pts/4    00:00:00 grep apache
# kill  5589  5590  5591  5592  5593

Το ίδιο αποτέλεσμα μπορούμε να επιτύχουμε με την killall:

# killall /usr/sbin/apache

Προσοχή: Η χρήση της killall δε θα πρέπει να γίνεται χωρίς την απαραίτητη προσοχή. Το ότι προσφέρει ευκολία στον τερματισμό μιας διεργασίας δεν αντισταθμίζει το γεγονός ότι μπορείτε να τερματίσετε μια ολόκληρη ομάδα διεργασιών απλώς και μόνο επειδή έχουν το ίδιο όνομα. Παράδειγμα προς αποφυγή:

# killall bash

Για προφανείς λόγους...

Σήματα (Signals)

Τα σήματα αποτελούν τον κύριο τρόπο επικοινωνίας μεταξύ των διεργασιών. Οι διεργασίες που βρίσκονται σε κατάσταση αναμονής, έχουν ορίσει κάποιο σήμα το οποίο περιμένουν για να ξυπνήσουν και να το επεξεργαστούν. Αυτό το σήμα μπορεί να είναι ειδοποίηση για κάποιο αρχείο που έχει μεταβληθεί, νέα σύνδεση σε κάποιον υποδοχέα TCP/IP (socket) ή έχει μηδενιστεί κάποιο χρόνομετρο (timer). Πέρα από αυτά τα σήματα που είναι εξειδικευμένα για κάθε διεργασία, υπάρχουν και ορισμένα προκαθορισμένα σήματα που χρησιμοποιεί το σύστημα.

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

Σήμα

Κωδικός

Δράση

HUP
1

Τερματισμός διεργασίας (Hang Up), αν και συνήθως χρησιμοποιείται για επαναφόρτωση των ρυθμίσεων του προγράμματος. Μπορεί να γίνει ο χειρισμός από την ίδια την διεργασία.

INT
2

Διακοπή του προγράμματος (Interrupt). Το προγραμμα καλείται να τερματίσει και να ελευθερώσει τους πόρους. Αντιστοιχεί στο συνδυασμό πλήκτρων [CTRL]-C. Μπορεί να γίνει ο χειρισμός από την ίδια την διεργασία.

QUIT
3

Το πρόγραμμα καλείται να τερματίσει. Αν είναι ενεργοποιημένο, καταγράφεται το αποτύπωμα μνήμης της διεργασίας (core dump). Μπορεί να γίνει ο χειρισμός από την διεργασία.

TERM
15

Απότομος τερματισμός (Termination). Το πρόγραμμα ζητείται να ελευθερώσει όλους τους πόρους και να τερματίσει αμέσως. Ισοδύναμο με το συνδυασμό πλήκτρων [CTRL]-\. Μπορεί να γίνει ο χειρισμός από την ίδια την διεργασία.

KILL
9

Άμεσος Τερματισμός. Ο πυρήνας άμεσα ελευθερώνει όλους τους πόρους του προγράμματος και τερματίζει την εκτέλεσή του. Δε μπορεί να το χειριστεί η διεργασία.

STOP

						

Παύση της διεργασίας. Σταματά προσωρινά η εκτέλεση της διεργασίας. Δε μπορεί να το χειριστεί η διεργασία.

CONT

						

Συνέχιση της διεργασίας. Αν είχε παύσει η λειτουργία της, με το σήμα STOP συνεχίζει, διαφορετικά το αγνοεί. Δε μπορεί να το χειριστεί η διεργασία.

Παράδειγμα χρήσης σημάτων:

# killall -HUP inetd

Επανεκκινεί τον δαίμονα inetd, φορτώνοντας τις νέες ρυθμίσεις από το αρχείο /etc/inetd.conf.

# killall -KILL quake2

Τερματίζει άμεσα το παιχνίδι quake2. Καιρός για δουλειά!

Πόροι που ανήκουν σε διεργασίες

Μια αρκετά χρήσιμη δυνατότητα είναι η εύρεση των διεργασιών που χειρίζονται ένα συγκεκριμένο αρχείο ή έχουν δεσμεύσει ένα συγκεκριμένο υποδοχέα TCP ή UDP.

Αυτήν την πληροφορία μπορούμε να την αποκτήσουμε με την εντολή fuser (που βρίσκεται επίσης στο πακέτο psmisc). Η fuser χρησιμοποιεί την παρακάτω σύνταξη:

fuser [options] file...

Επιλογές

Λειτουργία

-k

Τερματίζει τις διεργασίες που χρησιμοποιούν τα δοσμένα αρχεία ή τους υποδοχείς TCP/UDP. Εναλλακτικά, μπορεί να δεχτεί το σήμα που θα στείλει στις διεργασίες με το όνομα ή τον κωδικό του σήματος με μια παύλα, π.χ. -HUP.

-i

Σε συνδυασμό με την -k, ζητάει επιβεβαίωση πρίν από τον τερματισμό.

-m

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

-v

Εμφανίζει αναλυτικό αποτέλεσμα.



$ fuser -vm /var/log/

                     USER        PID ACCESS COMMAND
/var/log/            root      11348 ....m  pppd
                     root      11552 ....m  apt-get
                     root     kernel mount  /var/tmp

Παρόμοια λειτουργία και με περισσότερες δυνατότητες προσφέρει η εντολή lsof (list open files), που παρέχεται με το ομώνυμο πακέτο.

Κωδικοί τερματισμού διεργασιών

Κάθε διεργασία μπορεί να καταλήξει σε τρεις διαφορετικές καταστάσεις: να τερματίσει κανονικά