Επόμενο
Προηγούμενο
Περιεχόμενα
Για να μπορούμε να μετρήσουμε το όφελος των
βελτιστοποιήσεων μας, χρειαζόμαστε ένα σύστημα αναφοράς.
Ξεκινάμε λοιπόν κατεβάζοντας ένα πυρήνα 2.6.5 από το
gr.kernel.org. Καθώς θέλουμε το ελάχιστο δυνατό μέγεθος
για το bzImage του, (ώστε να φορτώνει γρήγορα στη μνήμη
κατά την εκκίνηση), θα μεταγλωττίσουμε μόνο την
απαραίτητη λειτουργικότητα για την εκκίνηση και την
προσάρτηση του θεμελιώδους (root) partition στον πυρήνα.
Όλη η υπόλοιπη λειτουργικότητα (δηλ. οι δυνατότητες που
δεν θα χρησιμοποιούνται συνέχεια και ταυτόχρονα), θα
μεταγλωττιστεί ως modules. Έτσι πετυχαίνουμε γρήγορη
εκκίνηση χωρίς να θυσιάζουμε λειτουργικότητα (δεν
φορτώνουμε modules κατά την εκκίνηση παρά μόνο τη στιγμή
που θα χρειαστούν).
Στην περίπτωσή μου, έκανα τις εξής επιλογές: (όποιο μενού
δεν αναφέρω, σημαίνει ότι τα αφήνουμε όλα ως έχουν):
-
Στο μενού General Setup: Επιλέγουμε μόνο την υποστήριξη
για swap και System V IPC. Επίσης μπαίνουμε στο μενού
Remove kernel features και αφήνουμε επιλεγμένα μόνο τον
deadline I/O scheduler και το futex support. Δεν
επιλέγουμε το optimize for size γιατί θέλουμε να
αρχίσουμε με ένα vanilla (και όσο το δυνατόν πιο
σταθερό) kernel.
-
Στο μενού Loadable module Support: Επιλέγουμε μόνο τα
"Enable loadable module support" και "Module
unloading".
-
Στο Μενού Processor type and features: Επιλέγουμε μόνο
τον τύπο του επεξεργαστή μας (σε εμένα pc-compatible
και 386), το "preemptible kernel" και το math emulation
(εκτός αν ο υπολογιστής μας έχει FPU - από 486dx και
πάνω δηλαδή)
-
Στο Μενού Power management options: Αποεπιλέγουμε τα
πάντα (προσοχή γιατί το ACPI είναι επιλεγμένο).
-
Στο Μενού Bus Options: Αφήνουμε μόνο το ISA Support
(καθώς οι 386 έχουν μόνο ISA slots).
-
Στο Executable File Formats: Αφήνουμε μόνο το elf.
-
Στο device drivers: Επιλέγουμε μόνο τα ATA/ATAPI/κλπ
support, Old hard disk driver, Networking support,
Network device support, TCP Networking, i8042 PC
Keyboard controller, keyboards, AT Keyboard support,
Virtual Terminal, console on virtual terminal και
Unix98 PTY Support.
-
Στο μενού file systems, επιλέγουμε μόνο το minix (ή το
ext2) filesystem και το /proc filesystem.
-
Αποεπιλέγουμε όλες τις επιλογές των υπόλοιπων μενού.
(Ότι χρειαζόμαστε, το διαλέγουμε ως module)
Για να μην πληκτρολογείτε άσκοπα, μπορείτε να βρείτε το
.config που χρησιμοποίησα
εδώ. Για να το χρησιμοποιήσετε, απλώς το τοποθετείτε
στον κύριο κατάλογο του κώδικα του Linux και το ονομάζετε
.config. Μετά κάνετε: make oldconfig
Ονομάζουμε τον πυρήνα που προέκυψε από αυτή τη διαδικασία
(με make bzImage) "kernel-initial". Ο πυρήνας αυτός έχει
τα ακόλουθα χαρακτηριστικά:
Μέγεθος vmlinux: 1.5Mb
Μέγεθος system: 604kb
Μέγεθος bzImage: 612kb
Ελεύθερη μνήμη: 1484kb
Χρόνος εκκίνησης: 32s
Για τη μεταγλώττιση του παραπάνω πυρήνα χρησιμοποιήσαμε
τη gcc-2.95.3 που συνιστά η ομάδα ανάπτυξης του πυρήνα,
για μέγιστη δυνατή σταθερότητα. Αν και όπως παρατηρούμε ο
πυρήνας που προέκυψε (στο εξής θα αναφερόμαστε σε αυτόν
ως kernel-initial) είναι ήδη αρκετά μικρός, θα
προσπαθήσουμε για ακόμα καλύτερα αποτελέσματα, δεδομένου
ότι στον 386 κάθε βελτίωση είναι αισθητή.
Επόμενο
Προηγούμενο
Περιεχόμενα