Jump to content



SUSE 10 Kernel Compilation


Dr.Paneas

Recommended Posts

Παιδια εδω και καιρο κανω compile τον kernel μεσω YaST. Δηλαδή γίνεται αυττοματα και εγω δεν "πειράζω" τιποτα. Μου ειπαν οτι αν κανω μονος μου compile χωρίς το Yast θα με βοηθήσει να "στρώσει" καλυτερα ο μηχανημα και να ανεβει η αποδοσή του.

Μπορειτε να με βοηθησετε να κανω compile τον καινουριο kernel στο SuSE ; Μου ειπαν να παω στο kernel.org αλλα εχω χαθει εκει περα. Τοσα πολλα πακετα, χαος.

Εχω διαβασει το κεφαλαιο Compile Kernel απο ενα βιβλιο για Linux που έχω, αλλα δεν βγαζω ακρη γιατι ολα αυτα ειναι πολυ θεωριτητα και απεχουν απο την πραξη.

Αν μπορει καποιος που το έχει κανει (σιγουρα το εχετε κανει οσοι ασχολειστε) να με βοηθησει βημα βημα.

:)

Link to comment
Share on other sites

Μην βάλεις kernel που είναι διαφορετικός από αυτόν που δίνει η διανομή σου,γιατί η Suse έχει βάλει κι άλλα πράγματα μέσα τα οποία στον kernel που δίνουν στο www.kernel.org δεν υπάρχουν. Αν θες να κάνεις compile κάποιον kernel και να τον βελτιστοποιήσεις, κάνε μόνο αυτόν του Suse, αλλά να ξέρεις ότι μπορεί να καταστρέψεις και την εγκατάσταση του συστήματος έτσι και να αναγκαστείς στο τέλος να κάνεις και format, αν δεν είσαι προσεκτικός. Αν είσαι έτοιμος για τόσο ρίσκο, τότε κοίτα αυτό το HOW-TΟ και καλή επιτυχία στην πρώτη σου απόπειρα...

http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO.html

Link to comment
Share on other sites

Το προσπάθησα ήδη να βάλω το τελευταίο σταθερό Kernel στο SUSE 10 και μάλιστα προχώρησα αρκετά.

Τη διαδικασία την κατάλαβα κάπως.

Δηλαδή κατάφερα να φτιάξω το compilation αλλά δεν το εγκατέστησα.

Ο λόγος είναι οτι υπήρχε ήδη έτοιμο το τελευταίο kernel σε source RPM μορφή για SUSE 10 και 10.1 (http://software.opensuse.org/download/Kernel/)

Δοκίμασα λοιπόν να εγκαταστήσω το έτοιμο kernel που ήταν όμως για 10.1 και διαπίστωσα οτι πάρα πολλά πακέτα και ιδίως το glib που είχα ήταν ασύμβατο με το τελευταίο kernel. Οι ασυμβατότητες ήταν εκατοντάδες και μου ήταν σχεδόν αδύνατο να καταφέρω να βρω ένα ένα όλα τα σωστά πακέτα.

ΤΟ σημαντικότερο όμως είναι οτι το glib δεν γίνεται να αναβαθμιστεί χωρίς να υπάρχει το τελευταίο kernel και το τελευταίο kernel δεν μπαίνει χωρίς το κατάλληλο glib.

Η κότα έκανε το αυγό ή το αυγό την κότα?

Ο μόνος τρόπος να το πετύχει κανείς αυτό είναι να φτιάξει δική του διανομή.

Με λίγα λόγια νομίζω οτι οι διανομές αυτή τη δουλειά κάνουν.

Να επιλέγουν στοιχεία και οδηγούς που ταιριάζουν μεταξύ τους.

Η αναβάθμιση του kernel δεν είναι απλό πράγμα.

Παρ' όλα αυτά σκέφτομαι να ετοιμάσω έναν οδηγό σχετικά με τον kernel

Προς το παρόν σήμερα έβαλα το SUSE 10.1 κάνοντας αναβάθμιση του SUSE 10 και δούλεψε μια χαρά. Τίποτα δεν έχασα. Ούτε αρχεία ούτε ρυθμίσεις.

Για την πληροφόρηση μου σχετικά με το kernel επέλεξα τις παρακάτω διευθύνσεις.

Πιστεύω οτι θα σε βοηθήσουν πολύ.

http://www.digitalhermit.com/linux/Kernel-Build-HOWTO.html

http://www.kernel.org/pub/linux/docs/lkml/

Επίσης χρήσιμες είναι και αυτές.

http://www.kernel.org/links.html

http://www.linuxlots.com/~fawcett/Bootdisk-HOWTO/index.html

http://www.tldp.org/HOWTO/HOWTO-INDEX/categories.html

Το πιο χρήσιμο στοιχείο στη διαδικασία compilation του ίδιου kernel με αυτό που έχουμε από το source kernel (οπότε δεν υπάρχουν ασυμβατότητες), είναι οι εντολές

cd/usr/src/linux

make menuconfig

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

Μπορούμε να επιλέξουμε ποια στοιχεία θα είναι ενσωματωμένα σταθερά και ποια θα είναι σε modules.

Επίσης μπορούμε να αφαιρέσουμε ότι δεν χρειαζόμαστε.

Αξίζει πραγματικά να το προσπαθήσουμε.

Ξεκίνα την προσπάθεια προς αυτή την κατεύθυνση.

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

Link to comment
Share on other sites

To SUSE δεν έχει καθόλου καλό package manager για αυτό και τα προβληματα με τις εξαρτήσεις glibc + kernel. Αν θες διανομή με καλό package manager θα πρέπει να πας σε debian/ubuntu ή gentoo.

Αν έχεις τα sources του πυρήνα σου εγκατεστημένα στο σύστημα τότε είναι πιο εύκολο να κάνεις compile. Το πρώτο που θα κάνεις είναι να "καρφώσεις" στο grub το παλιό πυρήνα οπότε αν κάτι δε πάει καλά να μπορείς να επιστρέψεις και να bootάρεις με τον παλιό πυρήνα. Κάνε copy τα αρχεία /boot/vmlinuz και /boot/initrd (αν υπάρχει) , στα αρχεία /boot/vmlinuz-xxx-pre και /boot/initrd-xxx-pre ,όπου xxx βάλε την έκδοση του πυρήνα. Μετά κάνε edit το /boot/grub/menu.list και βρες το entry για τον πυρήνα που έχεις (/boot/vmlinuz) κάντο copy-paste λίγο πιο κάτω και άλλαξε το όνομα του entry καθώς και τα ονόματα στα αρχεία vmlinuz και initrd σε vmlinuz-xxx-pre και initrd-xxx-pre και κάνε save το αρχείο. Αν κάνεις reboot θα δείς το νέο entry και θα πρέπει να bootαρεις κανονικά με τον ίδιο πυρήνα με πριν.

Αφου τελειώσεις με το grub τότε πας στο /usr/src/linux-xxx (xxx είναι η έκδοση) και κάνεις make xconfig (για γραφική παραμετροποίηση) ή make menuconfig (για παραμετροποίηση σε κονσόλα). Θα πρέπει να έχεις καταγράψει το hardware που διαθέτεις και θα πρέπει σιγά σιγά να ξεκινήσεις την παραμετροποίηση. Στη γραφική παραμετροποίηση σε όποια παράμετρο και να πατάς σου βγάζει σχόλια κάτω δεξιά (help) στη κονσόλα θα πρέπει να πατάς help. Αφου τελείωσεις με την παραμετροποίηση κάνε save as και σώστη σε ένα αρχείο για να μπορείς να τη ξαναφορτώσεις όποτε θες. Μετά κάνε και save για να στη σώσει στο /usr/src/linux-xxx για να μπορείς να κάνεις compile.

Για να κάνεις compile πρέπει να γράψεις make και να περιμένεις. Όταν τελειώσεις πατάς make install για να σου εγκαταστήσει τον καινούργιο πυρήνα στο /boot και μετά make modules_install για να εγκαταστήσει τα modules. Μετά μπορείς να κάνεις boot με τον καινούργιο σου πυρήνα.

Καλό είναι στη παραμετροποίηση ότι δεν ξέρεις να το βάζεις σαν module για να μπορείς μετά να το χρησιμοποιήσεις χωρίς να χρειάζεται πάλι compile o πυρήνας.

Με μια καλή παραμετροποίηση (όσον αφορά τα bult-in) θα δεις μεγάλη αύξηση της απόδοσης του συστήματος.

PS το config του πυρήνα που έχεις μπορείς να το δεις κάνοντας edit το /proc/config.gz αν το υποστηρίζει ο πυρήνας σου...

Link to comment
Share on other sites

Δοκιμασα να κανω recompile αλλα...

linux:/usr/src/linux-2.6.13-15.8 # make xconfig

*

* Unable to find the QT installation. Please make sure that the

* QT development package is correctly installed and the QTDIR

* environment variable is set to the correct location.

*

make[1]: *** [scripts/kconfig/.tmp_qtcheck] Error 1

make: *** [xconfig] Error 2

Link to comment
Share on other sites

Αρχική απάντηση από sotiris

Δίκαιο και ουχί δίκιο, α ρε πανέα πρωτοπόρε της ελληνικής :p

E, καλα τωρα.. saimon says δικιο :hehe

Μουφα παλι ερορ που πεταει στο make ... ανωμαλιες SUSE...

Link to comment
Share on other sites

Αρχική απάντηση από Dr.Paneas [Σήμερα, στις 00:11]

E, καλα τωρα.. saimon says δικιο :hehe

Μουφα παλι ερορ που πεταει στο make ... ανωμαλιες SUSE...

Τα error στο make (compilation) μπορεί να οφείλονται στη παραμετροποίηση που έχεις κάνει. Για πες το error.

Link to comment
Share on other sites

Μπορείς να ακολουθήσεις τα βήματα που έχει το link που σου έδωσα.

Σημασία έχει οτι το SUSE χρησιμοποιεί sym links και γενικά είναι παράξενο.

Δηλαδή έχει σημασία το που θα κάνεις extract το source πακέτο και να προσέξεις που παραπέμπουν τα sym links.

Για παράδειγμα το αρχείο /boot/inird είναι link που παραπέμπει στο /boot/initrd-2.6.16.13-4-smp.

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

Πολύ μου άρεσε το ποστ του backgman

Με λίγα λόγια λέει ωραία πράγματα.

Κάνε αυτό που σου λέει για το Grub.

Επίσης υπάρχει και ένα αρχείο backup_mbr που εμένα με έσωσε πριν από λίγες μέρες.

Έχω και μια απορία.

Είδα στο Grub οτι μπορούμε να βάλουμε ένα γενικό κώδικα στο mbr και να έχουμε το kernel αλλού ή να γράψουμε το kernel στο mbr.

Έτσι έχουν τα πράγματα? Γίνεται αυτό?

Σε ένα δίσκο έχουμε ένα mbr ή έχουμε ένα mbr σε κάθε partition?

Link to comment
Share on other sites

Το SUSE 10.1 (το κατέβασα και το έκαψα σε DVD) έχει πολύ δυνατό package management και γενικά το βρίσκω τέλειο.

Πάντως στο SUSE 10 που προσπάθησα να βάλω νέο kernel υπήρχαν πραγματικές ασυμβατότητες όπως έγραψα και πριν και γι αυτό καλό είναι να μην προσπαθήσει κανείς να αλλάξει kernel.

Δηλαδή το Gentu όταν βρίσκει ασυμβατότητες στην προσπάθεια αναβάθμισης του kernel τι κάνει?

Κατεβάζει από το Internet πακέτα και τα εγκαθιστά?

Γιατί αν δεν τα βρει ήδη εγκατεστημένα πώς θα λύσει τις ασυμβατότητες.

Link to comment
Share on other sites

Ο kernel δεν έχει ασυμβατότητες με πακέτα. Το μόνο που έχω δει όσον αφορά "ασυμβατότητα" ήταν όταν αναβάθμισα gcc και πήγα να κάνω compile τα nvidia modules, ενώ ο kernel είχε γίνει compile με την παλιά gcc. Βέβαια όταν στη suse αρχίζουν και πειράζουν χίλια μύρια πράγματα στον kernel κάπου χάνεται η μπάλα.

Εγώ κατεβάζω kernel από το kernel.org και τον κάνω compile, άντε να κατεβάσω από το slackware-current τον τελευταίο έτοιμο με source-headers-modules και να τον φέρω στα μέτρα μου. Όμως δε διαφέρει από τον kernel του Torvalds σε κάτι φοβερό.

Link to comment
Share on other sites

Στο gentoo κατεβάζεις τις περισσότερες φορές sources και τα κάνει compile. Όταν θες να εγκαταστήσεις κάποιο πρόγραμμα κοιτάει πρώτα τις εξαρτήσεις απο άλλα πακέτα, τα κατεβάζει και είναι το πρώτα που κάνει compile. Πρώτα φτιάχνουμε τις εξαρτήσεις και μετά βάζουμε το εξαρτώμενο πακέτο.

Ο πυρήνας γενικά δεν εξαρτάται απο κάποιο πακέτο. Για να κάνεις compile τον πυρήνα θες αρκετά πακέτα. Το καλύτερο βέβαια είναι να κατεβάζεις τα kernel-sources απο τη διανομή σου γιατί συνήθως προσθέτουν κάποια παραπάνω πράγματα ή αφαιρούν κάποια άλλα. Το βασικό είναι οτι η κάθε έκδοση kernel-sources που σου δίνουν έχει τεσταριστεί με τη διανομή και σου εγγυάται η εταιρία οτι δουλεύει. Αν βγουν κάποια λάθη κατα το compilation του πυρήνα, αυτά συνήθως οφείλονται στη παραμετροποίηση και όχι σε κάποιο πακέτο που λείπει. Στη παραμετροποίηση έχει και εκεί κάποιες εξαρτήσεις. Για παράδειγμα δε μπορείς να βάλεις και το libata και το scsi-sata για να έχεις υποστήριξη για συσκευές sata, σου προτείνει το scsi-sata και αυτό πρέπει να βάλεις.

Για μένα το SuSE είναι απο τις χειρότερες διανομές που έχω δει. Είναι βέβαια πολύ εύκολο για κάποιον αρχάριο που δεν έχει ασχολήθεί με το linux αλλα αν θες να κάνεις παραπάνω πράγματα (όπως για παράδειγμα kernel compilation) τότε σου "δένει τα χέρια...".

Αποψή μου είναι να αλλάξεις διανομή και να περάσεις σε κάποια άλλη. Προτείνω Ubuntu ή Debian (λίγο πιο δύσκολη). Με τις συγκεκριμένες διανομές θα χρειαστεί να έχεις dsl για να μπορείς να κάνεις τα updates. Μπορείς αν έχεις χώρο στο δίσκο, να περάσεις το Ubuntu χωρίς να βγάλεις το Suse (χρησιμοποίησε το ίδιο swap) κα να πειραματιστεί λίγο με το ubuntu και αν σε δυσκολεύει γύρνα πίσω στο suse.

Αν δεν έχεις χώρο στο δίσκο μπορείς να κάνει ένα bz2 όλο το λειτουργικό να το γράψεις σε DVD-RW και μετά να το αποσυμπιέσεις και θα έχεις το λειτουργικό που είχες.

PS Αν θες πες το λάθος που σου βγάζει στο compilation για να δούμε τι φταίει.

Link to comment
Share on other sites

Αρχική απάντηση από mariosalice [14-06-2006 02:00]

Μπορείς να ακολουθήσεις τα βήματα που έχει το link που σου έδωσα.

Σημασία έχει οτι το SUSE χρησιμοποιεί sym links και γενικά είναι παράξενο.

Δηλαδή έχει σημασία το που θα κάνεις extract το source πακέτο και να προσέξεις που παραπέμπουν τα sym links.

Για παράδειγμα το αρχείο /boot/inird είναι link που παραπέμπει στο /boot/initrd-2.6.16.13-4-smp.

Τα sources γίνονται πάντα extract στο /usr/src/linux-2.x.xx-x και δεν εξαρτώνται απο symbolic links. Αφού κάνεις compile (με το make) στο τέλος σου φτιάχνει στον ίδιο φάκελο τα αρχεία vmlinuz-2.x.xx-x (πυρήνας) και αν το επιλέξεις το initrd-2.x.xx-x. Με την εντολή make install αντιγράφονται τα αρχεία αυτά στο /boot και δημιουργούνται τα symbolic links στα αρχεία vmlinuz και initrd. Τα symbolic links γίνονται για το grub για να μη χρειάζεται να το πειράζεις (μιας και στο menu.list είναι περασμένα τα αρχεία vmlinuz και initrd για να είναι ανεξάρτητα της έκδοσης). Τέλος η εντολή make modules_install εγκαθηστα τα modules στο /lib32/modules/2.x.xx-x ή /lib64/modules/2.x.xx-x ανάλογα με την έκδοση του λειτουργικού (32bit ή 64bit).

Αρχική απάντηση από mariosalice [14-06-2006 02:00]

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

Αν βγάλει error κατα το compilation σταματάει το compile και δεν δημιουργείται εκτελέσιμο (πυρήνας στην προκειμένη περίπτωση). Αυτά που λες είναι τα warnings και όντως τα περισσότερα δεν έχουν σημασία.

Αρχική απάντηση από mariosalice [14-06-2006 02:00]

Επίσης υπάρχει και ένα αρχείο backup_mbr που εμένα με έσωσε πριν από λίγες μέρες.

Έχω και μια απορία.

Είδα στο Grub οτι μπορούμε να βάλουμε ένα γενικό κώδικα στο mbr και να έχουμε το kernel αλλού ή να γράψουμε το kernel στο mbr.

Έτσι έχουν τα πράγματα? Γίνεται αυτό?

Σε ένα δίσκο έχουμε ένα mbr ή έχουμε ένα mbr σε κάθε partition?

Σε ένα δίσκο έχουμε ένα MasterBootRecord και πολλά (ανάλογα με τα partiotions) ΒοοtRecords. Το grub μπαίνει στο mbr (συνήθως για ευκολία). Στο menu.list του γράφεις που βρίσκονται οι πυρήνες που έχεις ανεξάρτητα με το που έχεις τα λειτουργικά (αυτό το περνάς παράμετρο στο πυρήνα με το πχ root=/dev/sda4) και πως θες να φορτώνονται. Το mbr είναι πολύ μικρό για να φορτώσεις τον πυρήνα. Μόλις bootάρεις βλέπει το mbr του πρώτου δίσκου που κοιτάει το bios. Θα δει το grub και θα το φορτώσει. Το grub με τη σειρά του θα δει το menu.list και θα σου βγάλει το μενού με τους πυρήνες/λειτουργικά. Με το που πατήσεις κάποιο πυρήνα θα πάει εκεί που του έχεις γράψει στο menu.list για να τον φορτώσει όπως του λες και θα ξεκινήσει το boot του λειτουργικού. Επειδή το menu.list δεν είναι στο mbr αλλα σε κάποιο partition του δίσκου όποτε το πειράζουμε δε χρειάζεται να ξαναγράφουμε το mbr (το grub δηλαδή). Απλά ένα reboot θέλει για να το διαβάσει το grub.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

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

Important Information

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