To ...δικό μας Linux. Γιατί και πως: Βήμα 1ο: Προετοιμασία του συστήματος.
Description: This is issue 26 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #26
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Επόμενο Προηγούμενο Περιεχόμενα ### 4. Βήμα 1ο: Προετοιμασία του συστήματος. Η διαδικασία του Gerard Beekmans είναι απλή (στη σύλληψη) αλλά και ταυτόχρονα δύσκολη (στην εφαρμογή). Ο Gerard μας έκανε τη χάρη να μας το κάνει λίγο πολύ τυφλοσούρτη. Να πως έχει: Πρέπει στο μηχάνημα που θα χτίσουμε το Linux, να υπάρχει ήδη ένα Linux προεγκατεστημένο (θυμάστε; χρειαζόμαστε έναν compiler). Αφού φτιάξουμε λοιπόν ένα partition (το οποίο τελικά θα είναι το root partition του τελικού μας συστήματος) ξεκινάμε να κάνουμε compile εκεί μέσα κάποια προγράμματα. Όλα statically linked (γιατί κάποια στιγμή θα αποκοπούν από το παλιό σύστημα) εκτός από ένα. Ναι σωστά μαντέψατε, τη glibc. Εγώ προετοίμαζα (αρχικά) το linux μου για ένα μηχανάκι K6-200. Επειδή φαντάστηκα (και δεν είχα άδικο :-) ότι η διαδικασία σε αυτό το μηχάνημα θα ήταν αρκετά αργή, αποφάσισα να την κάνω σε ένα άλλο μηχάνημα που έχω, έναν Athlon-500. Δημιουργούμε ένα ψευτο-σύστημα στο οποίο δεν μπορούμε να κάνουμε boot (γιατί θα λείπουν κάποια βασικά πράγματα όπως η εντολή mount και το lilo) μπορούμε όμως να κάνουμε chroot σε αυτό και να δουλέψουμε σαν να είναι πραγματικό σύστημα. Εδώ, σε περίπτωση που κάνετε κάτι παρόμοιο με μένα, θα πρέπει να προσέξετε το εξής: Αν και ο Gerard δεν το αναφέρει πουθενά, καλό είναι να χρησιμοποιηθούν compiler directives για compilation το οποίο να μπορεί να μεταφερθεί σε χαμηλότερο σύστημα. Αν άφηνα το compile να ακολουθήσει την πορεία του, θα έπαιρνα ένα σύστημα optimized για i686, το οποίο βέβαια σε έναν K6 θα "έσκαγε" με invalid instruction. Χρησιμοποίησα λοιπόν την παράμετρο -mcpu=i486 στον gcc και έδωσα και την παράμετρο --host=i486-pc-linux στο configure οποιουδήποτε προγράμματος εγκαθιστούσα (όχι ότι έχει σημασία σε αυτό το στάδιο, μια που όλα θα αντικατασταθούν εκτός από την glibc. Για αυτήν πρέπει υποχρεωτικά να χρησιμοποιηθεί η παράμετρος αυτή). Το αποτέλεσμα (ναι, ακολουθήστε τα βήματα του Gerard, τα λέει πολύ αναλυτικά, δεν θα ξαναμπω στην ίδια διαδικασία) είναι ένα mini-σύστημα το οποίο μπορεί να κάνει μόνο compile. Και μπορεί να τρέξει σε οποιοδήποτε μηχάνημα κλάσης 486 και πάνω (άρα και στον ταπεινό μου Κ6). Άφησα κάποια πακέτα του Gerard έξω από την διαδικασία (όπως ας πούμε το bzip2) αν και αυτό δεν είναι απαραίτητο. Θα έλεγα μάλλον ότι είναι μη-προτεινόμενο :-) Στο σημείο αυτό, παίρνω ένα backup του συστήματος. Τι είναι; ένα 200 Mb (περίπου) tar file το οποίο άν συμπιεστεί (bzip2) πέφτει στα 40 Mb. Ας το κρατήσουμε σε μία άκρη λοιπόν. Αν αύριο θελήσουμε να φτιάξουμε ένα σύστημα optimized για 686 μπορούμε να ξεκινήσουμε από αυτό, και συγκεκριμένα από το σημείο που εγκαθίσταται η glibc και κάτω. Αν και, να παρατηρήσουμε, ότι το README της glibc λέει ότι κανένα optimization δεν θα κάνει διαφορά στην απόδοση, άρα μπορούμε να αποσυμπιέσουμε απλά αυτό το tar και να συνεχίσουμε από το επόμενο στάδιο, χωρίς να χάσουμε τίποτα. Μόλις έχουμε γλιτώσει 2 με 3 ώρες από την επόμενη εγκατάστασή μας (ανάλογα με το μηχάνημα στο οποίο κάνουμε το compile). Επειδή λοιπόν κρατάω αυτό το αρχείο ως "βάση", κάνω στον εαυτό μου μία χάρη και κάνω strip όλα τα debugging symbols από τα static binaries (τα οποία ούτως ή άλλως θα αντικατασταθούν) για να μικρύνω ακόμα περισσότερο το αρχείο που θα κρατήσω. Επίσης, κάνω compile με -O3 (εκτός από την glibc που την προτιμώ unoptimised εφόσον την κάνω compile σε άλλη CPU). Επόμενο Προηγούμενο Περιεχόμενα