Dr.Paneas Δημοσιεύτηκε Ιούνιος 11, 2006 #1 Κοινοποίηση Δημοσιεύτηκε Ιούνιος 11, 2006 Παιδια εδω και καιρο κανω compile τον kernel μεσω YaST. Δηλαδή γίνεται αυττοματα και εγω δεν "πειράζω" τιποτα. Μου ειπαν οτι αν κανω μονος μου compile χωρίς το Yast θα με βοηθήσει να "στρώσει" καλυτερα ο μηχανημα και να ανεβει η αποδοσή του. Μπορειτε να με βοηθησετε να κανω compile τον καινουριο kernel στο SuSE ; Μου ειπαν να παω στο kernel.org αλλα εχω χαθει εκει περα. Τοσα πολλα πακετα, χαος. Εχω διαβασει το κεφαλαιο Compile Kernel απο ενα βιβλιο για Linux που έχω, αλλα δεν βγαζω ακρη γιατι ολα αυτα ειναι πολυ θεωριτητα και απεχουν απο την πραξη. Αν μπορει καποιος που το έχει κανει (σιγουρα το εχετε κανει οσοι ασχολειστε) να με βοηθησει βημα βημα. Link to comment Share on other sites More sharing options...
xaxa1982 Ιούνιος 11, 2006 #2 Κοινοποίηση Ιούνιος 11, 2006 Μην βάλεις 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 More sharing options...
schumifer Ιούνιος 11, 2006 #3 Κοινοποίηση Ιούνιος 11, 2006 Φορμάτ στο λινουξάκι? Γιατί? Αν δεν πετύχει θα δώσει στο grub να ξεκινήσει το σύστημα με το άλλον πυρήνα που θα δουλεύει και που θα έχει φυσικά κρατήσει Link to comment Share on other sites More sharing options...
mariosalice Ιούνιος 11, 2006 #4 Κοινοποίηση Ιούνιος 11, 2006 Το προσπάθησα ήδη να βάλω το τελευταίο σταθερό 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.htmlhttp://www.kernel.org/pub/linux/docs/lkml/Επίσης χρήσιμες είναι και αυτές.http://www.kernel.org/links.htmlhttp://www.linuxlots.com/~fawcett/Bootdisk-HOWTO/index.htmlhttp://www.tldp.org/HOWTO/HOWTO-INDEX/categories.htmlΤο πιο χρήσιμο στοιχείο στη διαδικασία compilation του ίδιου kernel με αυτό που έχουμε από το source kernel (οπότε δεν υπάρχουν ασυμβατότητες), είναι οι εντολέςcd/usr/src/linuxmake menuconfigΜε αυτές μπορούμε να ρυθμίσουμε σωστά το σύστημα μας να το ελαφρύνουμε και να το κάνουμε πιο σταθερό και γρήγορο.Μπορούμε να επιλέξουμε ποια στοιχεία θα είναι ενσωματωμένα σταθερά και ποια θα είναι σε modules.Επίσης μπορούμε να αφαιρέσουμε ότι δεν χρειαζόμαστε.Αξίζει πραγματικά να το προσπαθήσουμε.Ξεκίνα την προσπάθεια προς αυτή την κατεύθυνση.Αν μπορείς γράφε εδώ την πορεία σου και τα στάδια που είχες επιτυχία ή όπου κολλάς. Link to comment Share on other sites More sharing options...
backgman Ιούνιος 12, 2006 #5 Κοινοποίηση Ιούνιος 12, 2006 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 More sharing options...
Dr.Paneas Ιούνιος 12, 2006 Author #6 Κοινοποίηση Ιούνιος 12, 2006 Δοκιμασα να κανω 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 1make: *** [xconfig] Error 2 Link to comment Share on other sites More sharing options...
backgman Ιούνιος 12, 2006 #7 Κοινοποίηση Ιούνιος 12, 2006 Αρχική απάντηση από Dr.Paneas [Σήμερα, στις 13:11] Δοκιμασα να κανω recompile αλλα... Πρέπει να εγκαταστήσεις το QT...Μπορείς να δοκιμάσεις με τη κονσόλα make menuconfig Link to comment Share on other sites More sharing options...
Dr.Paneas Ιούνιος 12, 2006 Author #8 Κοινοποίηση Ιούνιος 12, 2006 Δοκιμασα και με τοmenuconfig αλλα παλι τα ιδια με το QT. Που μπορώ να το βρω αυτο ;googlα-αρα αλλα δεν βρηκα τιποτα... στο Yast εχει πολλα QT , να τα κανω Install ολα ; Link to comment Share on other sites More sharing options...
Dr.Paneas Ιούνιος 12, 2006 Author #9 Κοινοποίηση Ιούνιος 12, 2006 Οκ τωρα δεν μου βγαζει προβλημα το QT το εκανα install μεσω Yast. Εδωσε make xconfig και εκανα καποιες αλλαγες. Μετα τι κανω ; Link to comment Share on other sites More sharing options...
backgman Ιούνιος 13, 2006 #10 Κοινοποίηση Ιούνιος 13, 2006 Σου έγραψα παραπάνω τι πρέπει να κάνεις μετά την παραμετροποίηση... Link to comment Share on other sites More sharing options...
Dr.Paneas Ιούνιος 13, 2006 Author #11 Κοινοποίηση Ιούνιος 13, 2006 Αρχική απάντηση από backgman Σου έγραψα παραπάνω τι πρέπει να κάνεις μετά την παραμετροποίηση... Ok τωρα το προσεξα, εχεις δικαιο. Link to comment Share on other sites More sharing options...
sotiris Ιούνιος 13, 2006 #12 Κοινοποίηση Ιούνιος 13, 2006 Αρχική απάντηση από Dr.Paneas Ok τωρα το προσεξα, εχεις δικαιο. Δίκαιο και ουχί δίκιο, α ρε πανέα πρωτοπόρε της ελληνικής Link to comment Share on other sites More sharing options...
Dr.Paneas Ιούνιος 13, 2006 Author #13 Κοινοποίηση Ιούνιος 13, 2006 Αρχική απάντηση από sotiris Δίκαιο και ουχί δίκιο, α ρε πανέα πρωτοπόρε της ελληνικής E, καλα τωρα.. saimon says δικιο :hehe Μουφα παλι ερορ που πεταει στο make ... ανωμαλιες SUSE... Link to comment Share on other sites More sharing options...
backgman Ιούνιος 13, 2006 #14 Κοινοποίηση Ιούνιος 13, 2006 Αρχική απάντηση από Dr.Paneas [Σήμερα, στις 00:11] E, καλα τωρα.. saimon says δικιο :heheΜουφα παλι ερορ που πεταει στο make ... ανωμαλιες SUSE... Τα error στο make (compilation) μπορεί να οφείλονται στη παραμετροποίηση που έχεις κάνει. Για πες το error. Link to comment Share on other sites More sharing options...
mariosalice Ιούνιος 13, 2006 #15 Κοινοποίηση Ιούνιος 13, 2006 Μπορείς να ακολουθήσεις τα βήματα που έχει το 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 More sharing options...
mariosalice Ιούνιος 13, 2006 #16 Κοινοποίηση Ιούνιος 13, 2006 Το SUSE 10.1 (το κατέβασα και το έκαψα σε DVD) έχει πολύ δυνατό package management και γενικά το βρίσκω τέλειο.Πάντως στο SUSE 10 που προσπάθησα να βάλω νέο kernel υπήρχαν πραγματικές ασυμβατότητες όπως έγραψα και πριν και γι αυτό καλό είναι να μην προσπαθήσει κανείς να αλλάξει kernel.Δηλαδή το Gentu όταν βρίσκει ασυμβατότητες στην προσπάθεια αναβάθμισης του kernel τι κάνει?Κατεβάζει από το Internet πακέτα και τα εγκαθιστά?Γιατί αν δεν τα βρει ήδη εγκατεστημένα πώς θα λύσει τις ασυμβατότητες. Link to comment Share on other sites More sharing options...
trendy Ιούνιος 15, 2006 #17 Κοινοποίηση Ιούνιος 15, 2006 Ο 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 More sharing options...
backgman Ιούνιος 18, 2006 #18 Κοινοποίηση Ιούνιος 18, 2006 Στο 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 More sharing options...
backgman Ιούνιος 18, 2006 #19 Κοινοποίηση Ιούνιος 18, 2006 Αρχική απάντηση από 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 More sharing options...
mariosalice Ιούνιος 18, 2006 #20 Κοινοποίηση Ιούνιος 18, 2006 Χμμ ... πολύ ωραία είναι αυτά που έγραψες Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.