Προς το περιεχόμενο

Ερώτηση για τα modules του πυρήνα.


firewalker

Προτεινόμενες αναρτήσεις

Γενικά τι είναι "καλύτερο", τα modules που δεν είναι απαραίτητα για την εκκίνηση του συστήματος να είναι ενσωματωμένα στον kernel ή όχι; Πλεονεκτήματα και μειονεκτήματα; Εσείς τι προτιμάτε;

 

Και κάτι άλλο λίγο άσχετο. Με το file system (WinFs νομίζω) του νέου λειτουργικού Windows Vista υπάρχει "επικοινωνία" με τον πυρήνα; Για ανάγνωση έστω.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Γενικώς προτιμώ να τα έχω όλα όσα μου χρειάζονται built in στον kernel. Κάνει λίγο μεγαλύτερο τον kernel αλλά, θεωρητικώς τουλάχιστον, όταν bootαρει δεν θα χρειαστεί να καθυστερήσει με loading κάποιου module όταν το χρειαστώ. Τώρα βέβαια δεν έχω δει κανένα benchmark σε pc για normal χρήση ώστε να έχω και αποδείξεις για αυτά που λέω απλώς είναι θέμα... συνήθειας.

Τα πλεονεκτήματα του να έχεις τα modules να φορτώνουνε on demand είναι το μικρότερο boot time και λιγότερη μνήμη που θα χρειαστεί να δεσμεύσει ο kernel.

 

Το WinFS απ' όσο θυμάμαι από κάποια Knowledge base στο site της MS δεν έχει καμμία σχέση με τον kernel, τουλάχιστον δεν υπάρχει ανάγκη για τέτοια απ' ότι προκύπτει από τα specifications του project. Το filesystem αυτό ΘΑ φτιαχτεί (δεν θα υπάρχει σε πρώτη φάση στα Vista) ώστε να παρέχει μια "βάση δεδομένων" που θα κάθεται πάνω από το NTFS και θα προσφέρει ευκολότερη και γρηγορότερη πρόσβαση στα data που υπάρχουν στο FS και επιπλέον να δίνει δυνατότητες όπως αναζήτηση "on the fly" για π.χ. emails που περιέχουν μιά λέξη την οποία ορίζεις ώς κριτήριο αναζήτησης.

Για να το κάνω πιό λιανά, αν θυμάσαι ότι κάποιος φίλος σου σου είχε στείλει ένα mail που έγραφε μέσα για την καινούργια FX100000 της nvidia και δεν θυμάσαι ούτε τον τίτλο του mail ούτε έχεις όρεξη να ψάχνεις όλα τα mail που σου έστειλε αυτός, κάνεις ένα search για "FX100000" και το mail που θέλεις εμφανίζεται σαν αποτέλεσμα. Το ίδια ισχυεί και για ID3 tags, όλων των ειδών documents, MPEG αρχεία κτλ κτλ.

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

Όλα τα παραπάνω βασίζονται σε πολύ αρχικά papers που είχα διαβάσει μόλις είχε ανακοινωθεί το WinFS. Άν έχει αλλάξει κάτι διορθώστε με, άλλωστε δεν πολυπαρακολουθώ τις εξελίξεις στην MS τελευταία...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

Το mkinitcpio εκτός από το να φορτώνει τα modules που χρειάζεται το σύστημά σου για να δουλέψει κάνει και άλλα πράγματα. Το σημαντικότερο είναι ότι το σύστημα όταν ξεκινάει, πρέπει να περάσει από ένα στάδιο ανεύρεσης του root filesystem ώστε να ξεκινήσει. Επείδη πλέον αυτό το filesystem Μπορεί να είναι στην κυριολεξία οτιδήποτε και οπουδήποτε, το initramfs αναλαμβάνει να φτιάξει ένα "ram drive" σύστημα να ζεί εκεί μέσα μέχρι να βρεί που είναι το root filesystem.

Το θέμα είναι πολύ μεγαλύτερο βέβαια γιατί υπάρχουν θέματα performance, security, scalability αλλά για να μην το κουράζουμε, το mkinitcpio που είναι μιά εξελιγμένη μορφή initramfs δέν μπορεί να λείπει από το σύστημά σου.

 

Με κάθε επιφύλαξη...

 

EDIT: όλα τα παραπάνω ισχύουν για το 2.6 branch του kernel

EDIT2: ... 2.5 αν λάβουμε υπ' όψιν και τα development branches...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Θα διαφωνισω με τον nullscan....

 

Η εγγραφη για το root device υπαρχει μεσα στον kernel.

Αν εχει build-in και το module, ειναι ολα ΟΚ.

 

Εγω γενικα δεν συμπαθω τα initrd kai ramfs και πρασινα αλογα (παντα για την εκκινηση) και σε οσες μηχανες εχω φτιαξει δικο μου kernel, το initrd και οι ομοιοι του, εχουν παρει ποδι.

 

:-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όντως, ο πυρήνας στο compile time αποθηκεύει το root device του. Σε κάθε περίπτωση βέβαια μπορείς να το παρακάμψεις, δίνοντας το όρισμα root= στον bootloader (π.χ. kernel /boot/vmlinuz root=/dev/sda5 ro).

 

Όσον αφορά τα modules, προσωπικά ακολουθώ την εξής πρακτική: οτιδήποτε απλά θα φόρτωνα κάθε φορά στην εκκίνηση, συνήθως το βάζω built-in. Π.χ. κάρτα δικτύου, filesystems, IDE/SATA controllers κλπ. Όχι τίποτα άλλο, αλλά έτσι είμαι σίγουρος ότι όσο μπορεί να φορτώσει ο πυρήνας, θα δουλεύει το hardware, ακόμα και αν σβήσω όλα τα modules από το δίσκο καταλάθος. Από 'κει και έπειτα, πράγματα που χρησιμοποιώ περιστασιακά (π.χ. loopback device module, κάποια άλλα μυστήρια πραγματάκια, universal TUN/TAP driver) τα αφήνω ως modules. Σημειώνω ότι η μόνη διαφορά είναι ενδεχομένως στο χρόνο εκκίνησης: άπαξ και κάνεις insmod, ο πυρήνας δεν έχει κανένα overhead.

 

Όσον αφορά στα initrd/initramfs, το κάθε πράγμα έχει τη χρήση του. Ναι, όταν φτιάχνεις έναν custom πυρήνα γενικά δεν υπάρχει λόγος να αφήσεις πράγματα εκτός που να φορτώνονται μέσω initramfs και σε αυτήν την περίπτωση το initramfs μένει για «ειδικές» λειτουργίες, όπως π.χ. να αρχικοποιεί το root device σε περίπτωση που αυτό είναι κρυπτογραφημένο, ή σε RAID0/RAID5/RAID6 ή σε κάποιο LVM volume. Ωστόσο το initramfs σαφώς και βολεύει τους διανομείς linux, αφού μπορούν να κάνουν τον πυρήνα πιο ελαφρύ και να φορτώνει μόνο αυτά που χρειάζεται, παρέχοντας ταυτόχρονα υποστήριξη για πρακτικά όλο το hardware. Ειδάλλως θα έπρεπε να φτιάχνουν έναν τεράστιο μονομπλόκ πυρήνα με ενσωματωμένα όλα τα filesystems, όλους τους IDE controllers κλπ.

 

@firewalker: Η ανάπτυξη του WinFS όπως υποτίθεται ότι θα ήταν έχει ματαιωθεί και ήδη από το 2004 είχε αποφασιστεί ότι δε θα ενσωματωθεί στα Vista. Οπότε καλά είμαστε :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ωραία, πάλι έμαθα αρκετά πραγματάκια. Ο κώδικας του πυρήνα που υπάρχει σε μερικές διανομές στο /usr/src/linux-2.x.xx είναι λειτουργικός; Μπορεί να γίνει compile από εκεί; Ή μήπως είναι ο custom kernel που τρέχει στο σύστημα με τα περιττά να έχουν σβηστεί (μου φαίνεται μικρός σε μέγεθος ~20 mbytes στο Arch); Για recompile μπορούν να χρησιμοποιηθούν για να γίνει ένα module buildin; Υπάρχει εντολή που να δίνει τι είναι buildin και τι module, ή πρέπει να "ξεψαχνίσω" το .config; Θα το μελετήσω λίγο ακόμη το θέμα και θα δοκιμάσω το πρώτο μου kernel compile.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ναι, ο κώδικας που υπάρχει στο /usr/src είναι ο κώδικας του kernel. Υπάρχει βέβαια περίπτωση να είναι μόνο τα kernel headers. Συνήθως υπάρχει ένα symbolic link μέσα στο /usr/src/ που ονομάζεται linux και δείχνει στον current kernel.

Από εκεί και τον κάνεις compile. Για να κάνεις recompile ή θα ανοίξεις το .config και θα το πειράξεις αλλά για να αποφύγεις το Δαφνί τρέχεις κάποιο πρόγραμμα που κάνει την ζωή σου εύκολη όπως make xconfig ή make gconfig.

Αυτό σου ανοίγει ένα παράθυρο που έχει όλα τα options του kernel και από εκεί διαλλέγεις ποιά θα κάνεις Modules, ποιά θα κάνεις built in και ποιά θα κάνεις disable εντελώς. Για να κάνεις το compile σου μετά κάνεις make bzImage && make modules && make modules_install και θα σου φτιάξει και το image του kernel (bzImage) και τα modules.

Για να δείς ποιά modules υπάρχουν διαθέσιμα στο σύστημά σου για loading κάνε modprobe -l.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Λοιπόν, χθες ολοκλήρωσα με επιτυχία το πρώτο μου kernel compile σε ArchLinux με την βοήθεια του ABS όμως. Έβαλα στον πυρήνα και κάτι που έλεγε για logo αλλά στο boot δεν εμφανίζει κάτι. Προφανώς πρέπει να περάσω κάτι επιπλέον στον grub στο σημείο που φορτώνει τον kernel. Πρέπει να βάλω για παράδειγμα vga=733;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Kapoia epoxi oloi skizontousan na bgazoun lighter kernel.

 

Pia omws den briskw logo na skizontai toso. Bazw ola ta standard modules pou 8a xreiastw included, kai mono auta pou mporei na xreiastw i mporei kapote na agorasw se modules.

 

An kai prin polla xronia tin eixa patisei giati eixa pesei se ena module to opoio den fortwne an epaize ena allo module loaded (to opoio itan included ston kernel). Apo tote omws den 3anapetyxa kati tetoio.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

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

  • Δημιουργία νέου...