Λήψη, διαμόρφωση, μεταγλώττιση και εγκατάσταση του πυρήνα Linux βήμα προς βήμα

Τελευταία ενημέρωση: 17/12/2025
Συγγραφέας: Ισαάκ
  • Η μεταγλώττιση του δικού σας πυρήνα σάς επιτρέπει να βελτιστοποιήσετε την απόδοση, την ασφάλεια και την υποστήριξη. υλικού προσαρμογή ενοτήτων, συστημάτων αρχείων και συγκεκριμένων επιλογών.
  • Η τυπική διαδικασία περιλαμβάνει την εγκατάσταση εξαρτήσεων, τη λήψη πηγαίων κωδικών από το kernel.org, την επαναχρησιμοποίηση της τρέχουσας διαμόρφωσης και τη διαμόρφωση με make menuconfig ή xconfig.
  • Είναι απαραίτητο να μεταγλωττίσετε και να εγκαταστήσετε τον πυρήνα και τις ενότητες, να δημιουργήσετε σωστά τα initramfs και να ενσωματώσετε τον νέο πυρήνα στο GRUB για να διασφαλίσετε ένα εκκίνηση καθαρίζεται.
  • Η συντήρηση παλαιότερων πυρήνων και η γνώση του τρόπου επαναφοράς ή αφαίρεσης ενός προβληματικού πυρήνα είναι το κλειδί για την ασφαλή πειραματισμό σε οποιαδήποτε διανομή.

Οδηγός για τη λήψη, τη μεταγλώττιση και την εγκατάσταση του πυρήνα του Linux

Μεταγλώττιση του πυρήνα του Linux Είναι μια από εκείνες τις εργασίες που διαχωρίζει τον περίεργο χρήστη από αυτόν που θέλει να εμβαθύνω στο λειτουργικό σύστημαΔεν είναι υποχρεωτικό για τη χρήση του GNU/Linux σε καθημερινή βάση, αλλά είναι ένας εξαιρετικός τρόπος για να κατανοήσετε καλύτερα πώς λειτουργεί το μηχάνημά σας, να αξιοποιήσετε στο έπακρο το υλικό και να βελτιώσετε το σύστημα σύμφωνα με τις προτιμήσεις σας.

Σε αυτόν τον οδηγό θα δείτε, βήμα προς βήμα, πώς Λήψη, διαμόρφωση, μεταγλώττιση και εγκατάσταση ενός πυρήνα Linux από την αρχή. Θα καλύψουμε διανομές που βασίζονται στο Debian (Debian, Ubuntu, Mint και παράγωγα), καθώς και γενικές έννοιες που εφαρμόζονται σε άλλες οικογένειες όπως το Fedora ή το CentOS. Θα διερευνήσουμε επίσης γιατί μπορεί να θέλετε να το κάνετε αυτό, ποια εργαλεία θα χρειαστείτε, πώς να επαναχρησιμοποιήσετε την τρέχουσα διαμόρφωση του πυρήνα σας, πώς να προσαρμόσετε τις επιλογές για το Docker ή συγκεκριμένο υλικό και πώς να κάνετε επαναφορά σε περίπτωση που κάτι πάει στραβά.

Γιατί μπορεί να σας ενδιαφέρει να μεταγλωττίσετε τον δικό σας πυρήνα

Πριν αγγίξετε οτιδήποτε, είναι σημαντικό να είστε σαφείς για το τι θέλετε: Η μεταγλώττιση του πυρήνα δεν είναι πάντα απαραίτητηΥπάρχουν όμως αρκετοί πειστικοί λόγοι για να το κάνετε αυτό.

  • απόδοση και αποτελεσματικότηταΗ κατάργηση προγραμμάτων οδήγησης και λειτουργιών που δεν χρησιμοποιείτε ποτέ μπορεί να κάνει το σύστημά σας να εκκινείται πιο γρήγορα, να χρησιμοποιεί λιγότερη μνήμη RAM και να μειώνει την καθυστέρηση σε ορισμένα φόρτα εργασίας.
  • ασφάλειαΗ απενεργοποίηση λειτουργιών ή ενοτήτων που δεν χρειάζεστε μειώνει την επιφάνεια επίθεσης. Ένας πιο μινιμαλιστικός πυρήνας είναι, σε πολλά πλαίσια, ένας πιο ασφαλής πυρήνας.
  • Υποστήριξη για συγκεκριμένο υλικόΜερικές φορές η διανομή σας δεν περιλαμβάνει ακόμη το πρόγραμμα οδήγησης που χρειάζεστε ή είναι απενεργοποιημένο. Μεταγλωττίζοντας τον δικό σας πυρήνα μπορείτε ενεργοποιήστε την υποστήριξη ειδικά για το υλικό σας (κάρτες δικτύου, RAID, συσκευές αποθήκευση ασυνήθιστο, κ.λπ.).
  • Ειδικές λειτουργίεςΊσως θελήσετε να δοκιμάσετε ένα νέο χρονοπρογραμματιστή εργασιών, συγκεκριμένες λειτουργίες για εικονικοποίηση, Docker, κοντέινερ, BPF, io_uring ή οποιεσδήποτε άλλες προηγμένες λειτουργίες που δεν είναι ενεργοποιημένες από προεπιλογή.
  • Μάθηση και πειραματισμόςΗ μεταγλώττιση του πυρήνα είναι ένας πολύ απλός τρόπος για να Μάθετε πώς είναι οργανωμένο εσωτερικά ένα σύστημα GNU/Linux, πώς αρχικοποιείται το υλικό και πώς ενσωματώνονται οι ενότητες.

Ωστόσο, για έναν οικιακό χρήστη που θέλει απλώς να ανοίξει τον υπολογιστή, να περιηγηθεί στο διαδίκτυο και να κάνει ελάχιστα άλλα, Η μεταγλώττιση του πυρήνα με το χέρι είναι σαν να χρησιμοποιείς ένα κανόνι για να σκοτώσεις μύγες.Είναι μια μακρά, λεπτή διαδικασία και είναι φυσιολογικό να φάτε λίγο φαγητό στην πορεία. πυρήνα πανικού Πριν το βελτιώσετε. Αν σας αρέσει η μικροδιόρθωση, κάντε το. Αν όχι, είναι καλύτερο να μείνετε με τα επίσημα πακέτα για τη διανομή σας.

Τι ακριβώς είναι ο πυρήνας του Linux;

Ο πυρήνας του Linux είναι το κεντρικό στοιχείο του συστήματος: το λογισμικό που βρίσκεται ανάμεσα στο υλικό και τα υπόλοιπα προγράμματαΕίναι υπεύθυνο για τη διαχείριση της μνήμης, των διεργασιών, των συστημάτων αρχείων, των συσκευών εισόδου/εξόδου, του δικτύου, της ασφάλειας και πολλών άλλων.

Το Linux ξεκίνησε το 1991 ως ένα προσωπικό έργο του Linus Torvalds να δημιουργήσουν έναν δωρεάν πυρήνα. Από τότε έχει αναπτυχθεί τρομερά: σήμερα μιλάμε για δεκάδες εκατομμύρια γραμμές κώδικα, που συντηρούνται από χιλιάδες προγραμματιστές βάσει της άδειας GPLv2Το σύστημα που συνήθως ονομάζουμε "Linux" είναι στην πραγματικότητα ένας συνδυασμός... Πυρήνας Linux + εργαλεία GNU και άλλα στοιχεία που συναρμολογούν την διανομή.

Όταν μεταγλωττίζετε έναν προσαρμοσμένο πυρήνα, αυτό που κάνετε είναι να δημιουργείτε ένα δυαδικό αρχείο (συνήθως /boot/vmlinuz-έκδοση) συν ένα σύνολο ενοτήτων στο /lib/modules/version, συνοδευόμενο από αρχεία όπως Σύστημα.χάρτη, Η config με τη διαμόρφωση που χρησιμοποιήθηκε και την αρχική εικόνα εκκίνησης (initrd ή initramfs).

Βασικά εργαλεία που απαιτούνται για τη μεταγλώττιση του πυρήνα

Για να μεταγλωττίσετε έναν πυρήνα Linux από τον πηγαίο κώδικα, χρειάζεστε ένα πλήρες περιβάλλον ανάπτυξης. Σε συστήματα Debian, Ubuntu και Mint, αυτό συνήθως περιλαμβάνει την εγκατάσταση απαραίτητο για την κατασκευή και μια σειρά από πρόσθετες βιβλιοθήκες και βοηθητικά προγράμματα.

Πολλοί κλασικοί οδηγοί προτείνουν σετ όπως τα ακόλουθα (Μπορείτε να τα προσαρμόσετε ανάλογα με τη διάταξή σας.):

  • Ελάχιστο σύνολο σε Debian/Ubuntu για έναν σχετικά σύγχρονο πυρήνα:sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev libudev-dev libpci-dev libiberty-dev dkms openssl bc autoconf
  • Περιβάλλον συσκευασίας Debian για να δημιουργήσετε πακέτα kernel .deb:sudo apt install autoconf automake autotools-dev bison build-essential dh-make debhelper debmake devscripts dpkg fakeroot file gfortran git gnupg fp-compiler lintian patch pbuilder perl quilt xutils-dev

Σε Fedora, CentOS και παράγωγαΗ προσέγγιση αλλάζει ελαφρώς, αλλά η ιδέα παραμένει η ίδια: εγκαταστήστε ένα σύνολο εργαλείων ανάπτυξης και βιβλιοθήκες για διεπαφές διαμόρφωσης (κειμένου και γραφικών). Για παράδειγμα, οι ακόλουθες χρησιμοποιούνται συνήθως εντολές του στυλ:

su -c 'yum groupinstall "Development Tools"'
su -c 'yum install ncurses-devel qt-devel unifdef'

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

Πού να κατεβάσετε τον πηγαίο κώδικα του πυρήνα του Linux

Η επίσημη πηγή για την απόκτηση του κώδικα πυρήνα είναι kernel.orgΑπό εκεί μπορείτε να επιλέξετε ανάμεσα σε εκδόσεις mainline, stable και long-term support (LTS). Κάθε μία έχει τον δικό της φάκελο και έναν σύνδεσμο προς ένα tarball συμπιεσμένο.

  Συντομεύσεις πληκτρολογίου για επισκευή παγωμένου φορητού υπολογιστή

Μερικά παραδείγματα descargas που συχνά παρατηρούνται Τα σεμινάρια είναι:

  • Σταθερός πυρήνας 6.6 για πρόσφατες δοκιμές:
    wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz
  • Πυρήνας 6.0.11 (κλάδος v6.x):
    wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.0.11.tar.xz
  • Πυρήνας 5.10.13 (κλάδος v5.x):
    wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.13.tar.xz

Μπορείτε επίσης να κατεβάσετε τις γραμματοσειρές από το αποθετήρια της διανομής σαςΣτο Debian/Ubuntu, για παράδειγμα, υπάρχει το πακέτο πηγή-linux:

sudo apt-get install linux-source

Αυτό αφήνει ένα αρχείο τύπου linux-source-xxxtar.bz2 en / usr / srcτο οποίο μπορείτε να αποσυμπιέσετε με παρόμοιο τρόπο όπως το αρχείο tarball του kernel.org.

Προετοιμασία του δέντρου πηγαίου κώδικα και του χώρου στο δίσκο

Μόλις κατεβάσετε το αρχείο tarball του πυρήνα, πρέπει να το εξαγάγετε σε μια τοποθεσία όπου έχετε επαρκής χώρος και δικαιώματα γραφήςΔεν είστε υποχρεωμένοι να χρησιμοποιήσετε το /usr/src, αν και είναι ένα κλασικό πρόγραμμα. Μπορείτε να δημιουργήσετε, για παράδειγμα, έναν κατάλογο όπως ~/Λήψεις/οι-πυρήνες-μου.

Λάβετε υπόψη ότι, όταν είναι αποσυμπιεσμένο, το δέντρο πηγής μπορεί να βρίσκεται γύρω από 1,5 GBκαι κατά τη διάρκεια της μεταγλώττισης, τα πράγματα εύκολα ξεπερνούν το 7 GBΑφήστε λοιπόν άφθονο περιθώριο για λάθη.

Κάποιοι τυπικά παραδείγματα αποσυμπίεσης ήχου:

  • Με tar.xz:
    tar avxf linux-6.6.tar.xz
  • Με tar.bz2:
    tar jxvf linux-2.6.36.tar.bz2 -C /usr/src
  • Με tar.gz:
    tar zxvf linux-x.x.x.x.tar.gz -C /usr/src

Μετά την αποσυμπίεση, θα έχετε έναν κατάλογο όπως linux-6.6 o linux-5.10.13Μπορείτε να δημιουργήσετε έναν γενικό συμβολικό σύνδεσμο που ονομάζεται linux για να μην τρελαθείτε με τις διαδρομές:

cd /usr/src
sudo ln -s linux-6.0.11 linux

Δεν είναι υποχρεωτικό να τοποθετήσετε τις πηγές / usr / src, αν και πολλοί οδηγοί το κάνουν από παράδοση. Η μεταγλώττιση και η εγκατάσταση θα λειτουργήσουν με τον ίδιο τρόπο αν τις κάνετε στον φάκελο χρήστη σας.εφόσον έχετε τον χώρο και τις κατάλληλες άδειες.

Επαναχρησιμοποίηση της τρέχουσας διαμόρφωσης πυρήνα

Η διαμόρφωση ενός πυρήνα από την αρχή, επιλογή προς επιλογή, είναι μια ατελείωτη εργασία ακόμη και για πολύ έμπειρους ανθρώπους. Η συνήθης πρακτική είναι επαναχρησιμοποιήστε τη διαμόρφωση του πυρήνα που χρησιμοποιείτε ήδη ως σημείο εκκίνησης.

Για να γίνει αυτό, είναι απαραίτητο πρώτα να γνωρίζουμε ποιον πυρήνα έχεις φορτώσει; τώρα αμέσως:

uname -r

Το αποτέλεσμα θα είναι κάτι σαν 6.1.0-13-πμ64 o 4.19.0-6-πμ64Με αυτές τις πληροφορίες, μπορείτε να αντιγράψετε την τρέχουσα διαμόρφωση από /μπότα στον κατάλογο των πρόσφατα αποσυμπιεσμένων πηγών:

cd linux-6.6
cp /boot/config-$(uname -r) .config

Αυτό το αρχείο .config Αυτό θα είναι αυτό που θα χρησιμοποιεί το σύστημα δημιουργίας πυρήνα ως βάση. Σε νεότερες εκδόσεις, κατά την εκτέλεση των εργαλείων διαμόρφωσης, θα σας ζητηθεί μόνο επιλογές που δεν υπήρχαν στον προηγούμενο πυρήνα σαςκάτι που εξοικονομεί τεράστιο χρόνο.

Πώς να προσαρμόσετε τις ρυθμίσεις στο πραγματικό υλικό

Εκτός από την επαναχρησιμοποίηση του τρέχοντος αρχείου .config, μπορείτε να το βελτιστοποιήσετε ακόμη περισσότερο χρησιμοποιώντας τα εργαλεία που παρέχονται από το ίδιο το δέντρο πυρήνα. Ένα ιδιαίτερα χρήσιμο εργαλείο είναι δημιουργήστε το localmodconfig, το οποίο επιχειρεί να δημιουργήσει μια διαμόρφωση προσαρμοσμένη στις ενότητες που έχετε φορτώσει εκείνη τη στιγμή.

Μέσα στον κατάλογο πηγαίου κώδικα, απλώς εκτελέστε:

make localmodconfig

Αυτή η εντολή ελέγχει τις ενεργές ενότητες και Απενεργοποιεί πολλά πράγματα που δεν χρησιμοποιεί το σύστημά σας.Αυτό είναι ιδανικό εάν ρυθμίζετε έναν πυρήνα για αυτό το συγκεκριμένο μηχάνημα. Εάν σκοπεύετε να μεταγλωττίσετε έναν γενικό πυρήνα για άλλα μηχανήματα ή διακομιστές, θα πρέπει να τον ελέγξετε προσεκτικά στη συνέχεια για να βεβαιωθείτε ότι δεν παραλείπετε υλικό που δεν υπάρχει στο σύστημα όπου μεταγλωττίζετε.

Λειτουργίες διαμόρφωσης πυρήνα: περιβάλλοντα κειμένου και γραφικών

Η διαμόρφωση του πυρήνα μπορεί να γίνει με διάφορους τρόπους. Όλοι αυτοί καταλήγουν στη δημιουργία ή την τροποποίηση του αρχείου .configΑλλά η εμπειρία είναι πολύ διαφορετική ανάλογα με τη λειτουργία:

  • δημιουργία διαμόρφωσηςΈνα ερωτηματολόγιο βασισμένο αποκλειστικά σε κείμενο, ερώτηση προς ερώτηση. Σήμερα θεωρείται πρακτικό μόνο για πολύ συγκεκριμένες περιπτώσεις. αργό, κουραστικό και εύκολο να κάνεις λάθη.
  • Κάντε menuconfigΔιεπαφή μενού που βασίζεται σε κείμενο (ncurses), πολύ συνηθισμένη σε διακομιστές ή όταν δεν έχετε γραφικό περιβάλλον. Πλοηγείστε με τα πλήκτρα βέλους, το Tab και το πλήκτρο διαστήματος.
  • δημιουργία xconfigΓραφική διεπαφή βασισμένη σε Qt, άνετη για χρήση με ποντίκι. Ιδανική για εργασία από πλήρη επιφάνεια εργασίας.
  • δημιουργία gconfigΓραφική διεπαφή βασισμένη σε GTK, σχεδιασμένη για περιβάλλοντα τύπου GNOME.

Στην πράξη, Κάντε menuconfig Είναι το αστέρι σχεδόν σε κάθε οδηγό επειδή λειτουργεί σχεδόν σε οποιοδήποτε περιβάλλον. Ξεκινώντας με το αντιγραμμένο αρχείο .config, το μόνο που χρειάζεται να κάνετε είναι:

make menuconfig

Θα δείτε ένα κύριο μενού με κατηγορίες όπως "Τύπος και δυνατότητες επεξεργαστή", "Προγράμματα οδήγησης συσκευών", "Συστήματα αρχείων", "Υποστήριξη δικτύωσης", "Εικονική διαμόρφωση" κ.λπ. Σε κάθε μία από αυτές, θα μπορείτε να ενεργοποίηση, απενεργοποίηση ή σήμανση ως ενότητας Οι διαφορετικές επιλογές. Κανονικά:

  • [*] Σημαίνει «ενσωματωμένο».
  • [Μ] Υποδεικνύει ότι "έχει μεταγλωττιστεί ως φορτώσιμη ενότητα".
  • [] Είναι «απενεργοποιημένο».

Η ιδέα είναι να ενσωματωθούν στον πυρήνα ό,τι είναι απαραίτητο για την εκκίνηση του συστήματος (για παράδειγμα, υποστήριξη root δίσκου) και να χρησιμοποιηθούν ενότητες για λιγότερο κρίσιμα χαρακτηριστικά ή χαρακτηριστικά που δεν χρησιμοποιούνται πάνταέτσι ώστε ο κύριος πυρήνας να είναι ελαφρύτερος.

Κάθε στοιχείο μενού συνήθως έχει μια επιλογή για Βοήθεια Αυτό εξηγεί ακριβώς τι κάνει και μερικές φορές παρέχει μια προεπιλεγμένη σύσταση. Εάν δεν είστε σίγουροι για κάτι πολύ συγκεκριμένο, είναι καλύτερο να μείνετε στην προτεινόμενη τιμή ή σε αυτήν που ήταν ήδη ενεργοποιημένη στην προηγούμενη διαμόρφωση.

Χρήσιμες ρυθμίσεις: συστήματα αρχείων, εικονικοποίηση και Docker

Ένα σημαντικό μέρος της προσαρμογής του πυρήνα είναι η σωστή επιλογή Ποια συστήματα αρχείων, μηχανισμοί κοντέινερ και επιλογές δικτύου; Θα το χρειαστείτε. Για παράδειγμα, αν σκοπεύετε να χρησιμοποιήσετε διαμερίσματα NTFS Κατά την εγγραφή, θα χρειαστεί να ενεργοποιήσετε την αντίστοιχη υποστήριξη (συνήθως βρίσκεται στα "Συστήματα αρχείων → Συστήματα αρχείων DOS/FAT/EXFAT/NT").

  Πλήρης οδηγός για την εξαγωγή άδειας χρήσης των Windows 10 από το BIOS

Αν σκοπεύετε να εργαστείτε με εικονικοποίηση ή κοντέινερ, υπάρχουν ορισμένα μπλοκ επιλογών που είναι ζωτικής σημασίας να εξετάσετε. Για παράδειγμα, για το Docker και το Docker Swarm, υπάρχουν ορισμένα συναρτήσεις ονομάτων, cgroups και δικτύου που πρέπει να είναι ενεργό:

  • ιεραρχία cgroup.
  • CONFIG_NAMESPACES, CONFIG_NET_NS, CONFIG_PID_NS, CONFIG_IPC_NS, CONFIG_UTS_NS.
  • CONFIG_CGROUPS και υποεπιλογές όπως CONFIG_CGROUP_CPUACCT, CONFIG_CGROUP_DEVICE, CONFIG_CGROUP_FREEZER, CONFIG_CGROUP_SCHED, CONFIG_CPUSETS, CONFIG_MEMCG.
  • Βασική υποστήριξη (CONFIG_KEYS).
  • Επιλογές δικτύου όπως CONFIG_VETH, CONFIG_BRIDGE, CONFIG_BRIDGE_NETFILTER, CONFIG_NF_NAT_IPV4, CONFIG_IP_NF_FILTER, CONFIG_IP_NF_TARGET_MASQUERADE, CONFIG_NETFILTER_XT_MATCH_ADDRTYPE, CONFIG_NETFILTER_XT_MATCH_CONNTRACK, CONFIG_NETFILTER_XT_MATCH_IPVS, CONFIG_IP_NF_NAT, CONFIG_NF_NAT, CONFIG_NF_NAT_NEEDED.
  • Υποστήριξη ουράς POSIX (CONFIG_POSIX_MQUEUE).
  • Επιλογές όπως CONFIG_IPVLAN για ορισμένες διαμορφώσεις δικτύου που χρησιμοποιούνται από το Docker.

Πολλές από αυτές τις λειτουργίες μπορούν να μεταγλωττιστούν ως ενότητα χωρίς πρόβλημα, αλλά Συνιστάται να ελέγξετε την τεκμηρίωση του Docker ή να χρησιμοποιήσετε σενάρια δοκιμών.Υπάρχουν βοηθητικά προγράμματα όπως check-config.sh που αναλύουν το αρχείο .config του πυρήνα και σας ενημερώνουν για το τι λείπει για πλήρη συμβατότητα με τα κοντέινερ.

Οι βασικοί μηχανισμοί θα ήταν:

chmod +x check-config.sh
./check-config.sh .config

Η έξοδος θα σας δείξει ποιες επιλογές είναι εντάξει, ποιες λείπουν ή ποιες έχουν ρυθμιστεί λανθασμένα. Εάν εντοπίσετε κάποια κρίσιμη επιλογή απενεργοποιημένη, μπορείτε να την εκτελέσετε ξανά. Κάντε menuconfig o δημιουργία xconfig, διορθώστε το, αποθηκεύστε και επαναλάβετε την επαλήθευση.

Ενδιαφέρουσες βελτιώσεις στις πρόσφατες εκδόσεις του πυρήνα

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

Για παράδειγμα, στο Πλαίσιο 6.6 Έχουν αναφερθεί βελτιώσεις όπως:

  • Αξιοσημείωτη αύξηση απόδοσης στο EXT4, με αυξήσεις έως και 34% σε ορισμένα ταυτόχρονα φορτία εγγραφής.
  • Βελτιώσεις στην υποστήριξη GPU NVIDIA χρησιμοποιώντας το δωρεάν πρόγραμμα οδήγησης Nouveau, προετοιμάζοντας το έδαφος για τον οδηγό της NVK (Vulkan).
  • Επιλογές για διαμορφώστε πτυχές του BIOS από εξοπλισμό HP απευθείας από Linux.
  • Ρυθμίσεις προγραμματισμού συμπλέγματος για υβριδικούς επεξεργαστές Intel (Λίμνη Άλντερ, Λίμνη Ράπτορ και αργότερα).
  • Βελτιστοποίηση άμεσης ασύγχρονης εισόδου/εξόδου με io_uring, με αυξήσεις απόδοσης περίπου 37% σε ορισμένες δοκιμές.
  • Ένας νέος σχεδιαστής εργασιών, EEVDF (Πρώτη η πιο πρώιμη επιλέξιμη εικονική προθεσμία), το οποίο βελτιώνει την κατανομή της CPU μεταξύ των διεργασιών.

Όλα αυτά έρχονται "έξω από το κουτί" στις σύγχρονες εκδόσεις, αλλά η διανομή σας μπορεί να χρειαστεί χρόνο για να τα συσκευάσει ή να τα ενεργοποιήσει, γι' αυτό και πολλοί άνθρωποι καταφεύγουν σε χειροκίνητη μεταγλώττιση ενός νεότερου πυρήνα.

Μεταγλώττιση του πυρήνα: δημιουργία, ενότητες και νήματα μεταγλώττισης

Μόλις έχετε τη διαμόρφωση όπως την θέλετε, ήρθε η ώρα να θέσετε την CPU σε λειτουργία. Εδώ μπαίνουν οι εντολές. κάνω Κλασική μεταγλώττιση πυρήνα. Η μεταγλώττιση μπορεί να διαρκέσει από μερικά λεπτά έως και πάνω από μία ώρα, ανάλογα με το υλικό και τον αριθμό των ενοτήτων που δημιουργείτε.

Στην ουσία, το βασική ροή Στο Debian/Ubuntu (ή σε άλλες διανομές) συνήθως είναι:

  • Μεταγλώττιση του πυρήνα (κύρια εικόνα):
    make -j$(nproc)
    Ή, αν θέλετε να χρησιμοποιεί μόνο έναν πυρήνα:
    make
  • Μεταγλώττιση και εγκατάσταση των ενοτήτων:
    sudo make modules_install

η επιλογή -j$(nproc) Λέει στο make να χρησιμοποιήσει όσες παράλληλες διεργασίες έχει και ο αριθμός των πυρήνων της CPU σας, κάτι που εξοικονομεί πολύ χρόνο στα σύγχρονα μηχανήματα. Εάν δείτε σφάλματα κατά τη μεταγλώττιση, θα πρέπει να τα ελέγξετε στο σημείο όπου αποτυγχάνουν. Θα μπορούσαν να οφείλονται σε ελλείπουσες εξαρτήσεις, διενέξεις στις ρυθμίσεις ή συγκεκριμένα σφάλματα σε αυτήν την έκδοση πυρήνα.

Μερικές πιο προηγμένες συνταγές χρησιμοποιούν το εργαλείο Debian make-kpkg και το πακέτο πακέτο πυρήνα για να συσκευάσετε τον πυρήνα σε αρχεία .deb. Αυτό σας επιτρέπει στη συνέχεια να εγκαταστήσετε και να απεγκαταστήσετε τον προσαρμοσμένο πυρήνα σαν να ήταν απλώς ένα άλλο πακέτο, με κάτι σαν:

fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
cd /usr/src
sudo dpkg -i *.deb

Σε αυτό το σενάριο, είναι επίσης σύνηθες να εμφανίζονται σφάλματα που σχετίζονται με πιστοποιητικά πυρήναΠολλοί οδηγοί επιλύουν συγκεκριμένα προβλήματα απενεργοποιώντας τα αξιόπιστα κλειδιά στο αρχείο .config με μια γραμμή όπως αυτή:

sed -i '/CONFIG_SYSTEM_TRUSTED_KEYS/s/^/#/g' .config

Εγκαταστήστε τον πρόσφατα μεταγλωττισμένο πυρήνα και ενημερώστε τον bootloader

Αν δεν χρησιμοποιείτε συσκευασία .deb και χρησιμοποιείτε "bareback" τα τυπικά εργαλεία δέντρου πυρήνα, το Η εγκατάσταση γίνεται απευθείας από τον πηγαίο κατάλογοΗ πιο συνηθισμένη ακολουθία μετά τη μεταγλώττιση είναι:

  • Εγκαταστήστε τις μονάδες (αν δεν το έχετε κάνει ήδη):
    sudo make modules_install
  • Εγκαταστήστε τον πυρήνα:
    sudo make install

Το σύστημα scripting του πυρήνα θα αντιγράψει το δυαδικό αρχείο bzΕικόνα που δημιουργείται στο /boot, μαζί με το System.map και το αρχείο ρυθμίσεων. Στο Debian/Ubuntu, τα σενάρια συνήθως ενεργοποιούνται στο /etc/kernel/postinst.d που δημιουργούν το initramfs και να ενημερώνει αυτόματα τον διαχειριστή εκκίνησης (GRUB).

Ακόμα κι έτσι, ποτέ δεν βλάπτει να εκτελέσετε ρητά:

sudo update-initramfs -u
sudo update-grub
sudo update-grub2

Με αυτό Βεβαιωθείτε ότι η αρχική εικόνα εκκίνησης έχει αναδημιουργηθεί σωστά. για τη νέα έκδοση πυρήνα, και ότι το GRUB το λαμβάνει υπόψη στο μενού του. Σε άλλες διανομές, όπως μερικές που βασίζονται στο Red Hat, μπορεί να χρησιμοποιηθεί mkinitrd o δράκος αντί για update-initramfs, αλλά ο στόχος είναι ο ίδιος: δημιουργήστε μια εικόνα initrd/initramfs κατάλληλη για τον νέο πυρήνα.

Ο ρόλος των initrd/initramfs και πιθανά προβλήματα

Το initrd ή initramfs είναι ένα εικόνα συστήματος αρχείων που φορτώνεται στη μνήμη πολύ νωρίς στη διαδικασία εκκίνησηςΠεριέχει τα ελάχιστα απαραίτητα προγράμματα οδήγησης για την προσάρτηση του πραγματικού συστήματος αρχείων root (για παράδειγμα, υποστήριξη για τον ελεγκτή SATA ή NVMe όπου βρίσκεται το διαμέρισμα /).

  Τι μπορώ να κάνω για να αποκλείσω την πρόσβαση στο Facebook; Πώς να αφαιρέσετε την περιορισμένη πρόσβαση στο Facebook;

Εάν η initrd σας δημιουργηθεί εσφαλμένα ή δεν περιέχει τις απαραίτητες ενότητες, ο πυρήνας θα εκκινήσει αλλά δεν θα είναι δυνατή η προσάρτηση. / και θα καταλήξεις με ένα πυρήνα πανικού παραπονιέται ότι δεν μπορεί να βρει ρίζα σύστημα αρχείων. Αυτό είναι ένα τυπικό σφάλμα όταν οι κρίσιμες επιλογές πυρήνα είναι απενεργοποιημένες ή το initramfs ξεχνιέται μετά την αλλαγή έκδοσης.

Στο Debian/Ubuntu, η εντολή αναφοράς σήμερα είναι ενημέρωση-initramfs:

sudo update-initramfs -c -k x.x.x

Παράμετρος -c δημιουργεί μια νέα εικόνα και -k υποδεικνύει την ακριβή έκδοση του πυρήνα. Σε παλαιότερες διανομές (ή με διαφορετικά εργαλεία) χρησιμοποιούνταν mkinitrd με παρόμοια σύνταξη:

cd /boot
mkinitrd -o initrd.img-2.6.36 2.6.36

Σε κάθε περίπτωση, εάν μετά την εγκατάσταση του προσαρμοσμένου πυρήνα σας δείτε σφάλματα που σχετίζονται με το /lib/modules ή με την προσάρτηση του root, Αρχικά, ελέγξτε το initramfs/initrd και τη διαμόρφωση του GRUB. πριν αγγίξετε οτιδήποτε άλλο.

Επαληθεύστε ότι ο νέος πυρήνας λειτουργεί σωστά

Αφού όλα τα στοιχεία είναι εγκατεστημένα και ο διαχειριστής εκκίνησης είναι ενημερωμένος, ήρθε η ώρα να κάνετε επανεκκίνηση για να ελέγξετε το σύστημα. Κατά την εκκίνηση, παρακολούθηση μηνυμάτων εκκίνησης GRUB και πυρήνα σε περίπτωση που εμφανιστούν σφάλματα από ενότητες, συστήματα αρχείων ή συσκευές που δεν αναγνωρίζονται.

Μόλις εισέλθετε στο σύστημα, μπορείτε να ελέγξετε ποια έκδοση πυρήνα χρησιμοποιείτε:

uname -a

Το αποτέλεσμα θα πρέπει να αντικατοπτρίζει την πρόσφατα μεταγλωττισμένη έκδοσηΑπό εκεί και πέρα, είναι θέμα δοκιμής των συνηθισμένων υπηρεσιών σας: διακομιστής ιστού, βάσεις δεδομένων, Docker, εικονικές μηχανέςπρογράμματα επιφάνειας εργασίας, κ.λπ. Εάν όλα λειτουργούν σωστά, μπορείτε να αφήσετε αυτόν τον πυρήνα ως τον κύριο και να διατηρήσετε παλαιότερες εκδόσεις ως αντίγραφα ασφαλείας.

Πώς να επιστρέψετε σε έναν προηγούμενο πυρήνα και να απεγκαταστήσετε τον νέο

Αν κάτι πάει στραβά (κάτι που μπορεί να συμβεί, ειδικά τις πρώτες φορές), το σημαντικό είναι ότι Μην πανικοβάλλεστεΕφόσον το GRUB σας παραθέτει άλλους ενεργούς πυρήνες, μπορείτε να ανακτήσετε το σύστημα χωρίς πολύ κόπο.

Η διαδικασία τυπικό επιθυμών να φαίνεται ώς:

  1. Επανεκκινήστε το σύστημα.
  2. Στην οθόνη GRUB, μετακινηθείτε με τα βέλη και εισαγάγετε την ενότητα τύπου "Προηγμένες επιλογές για…".
  3. Επιλέξτε μια παλαιότερη έκδοση πυρήνα που γνωρίζετε ότι λειτουργεί καλά.
  4. Εκκινήστε με αυτόν τον πυρήνα και, μόλις μπείτε μέσα, προχωρήστε στη διαγραφή του προβληματικού πυρήνα.

Εάν εγκαταστήσατε τον πυρήνα χειροκίνητα, χωρίς πακέτα .deb, η αφαίρεση συνήθως περιλαμβάνει διαγράψτε τα αντίστοιχα αρχεία στο /boot και στο /lib/modulesΓια παράδειγμα, για να καταργήσετε μια έκδοση 6.6.0, θα μπορούσατε να κάνετε τα εξής:

cd /boot
sudo rm config-6.6.0 initrd.img-6.6.0 System.map-6.6.0 vmlinuz-6.6.0

Και στη συνέχεια, διαγράψτε τις ενότητες του:

cd /lib/modules
sudo rm -rf 6.6.0

Όταν τελειώσετε, ενημερώστε το GRUB έτσι ώστε να μην προσφέρει πλέον αυτόν τον πυρήνα στο μενού και επανεκκινήστε:

sudo update-grub
sudo update-grub2
sudo reboot

Αν εγκαταστήσατε τον πυρήνα σε μορφή .deb, είναι πιο καθαρός. Χρησιμοποιήστε το όπως οποιοδήποτε άλλο πακέτο Χρησιμοποιήστε το apt ή το dpkg για να το απεγκαταστήσετε, διατηρώντας έτσι την κατάσταση του συστήματος υπό καλύτερο έλεγχο.

Σημειώσεις για άλλες διανομές: Fedora, CentOS και άλλες

Παρόλο που αυτός ο οδηγός εστιάζει σε μεγάλο βαθμό στα Debian/Ubuntu/Mint, η γενική λογική είναι παρόμοια σε διανομές που βασίζονται στο Red Hat, όπως το Fedora ή το CentOS. Ποιες είναι οι αλλαγές; εργαλεία διαχείρισης πακέτων, ορισμένα ονόματα εξαρτήσεων και πώς να αποκτήσετε πρόσβαση στον διαχειριστή εκκίνησης.

Στο Fedora/CentOS, για παράδειγμα, μια βασική ροή εργασίας για τη μεταγλώττιση ενός πυρήνα από το kernel.org θα μπορούσε να είναι:

  • Εγκαταστήστε τα εργαλεία ανάπτυξης:
    su -c 'yum groupinstall "Development Tools"'
    su -c 'yum install ncurses-devel qt-devel unifdef'
  • Κατεβάστε μια σταθερή έκδοση (όπως την 2.6.36 στα κλασικά παραδείγματα):
    cd /tmp
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2
  • Αποσυμπιέστε και προετοιμάστε το δέντρο πηγαίου κώδικα:
    mkdir /usr/src/linux
    tar -xjvf linux-2.6.36.tar.bz2 -C /usr/src/linux
    cd /usr/src/linux
  • Ρυθμίστε τον πυρήνα χρησιμοποιώντας menuconfig, xconfig ή gconfig.
  • Μεταγλώττιση και εγκατάσταση:
    make
    make modules
    make modules_install
    make install

Στη συνέχεια, θα πρέπει να ελέγξετε και να επεξεργαστείτε /boot/grub/grub.conf (ή το αντίστοιχο αρχείο, ανάλογα με το αν χρησιμοποιείτε GRUB Legacy, GRUB2, κ.λπ.) για να προσθέσετε μια καταχώρηση για τον νέο πυρήνα με την αντίστοιχη initrd, δίνοντας μεγάλη προσοχή στις διαδρομές του ρίζα = και αναφορές σε λογικούς τόμους εάν χρησιμοποιείτε LVM.

Η μεταγλώττιση, η διαμόρφωση και η εγκατάσταση ενός προσαρμοσμένου πυρήνα Linux είναι μια μακρά αλλά απίστευτα διδακτική διαδικασία: σας αναγκάζει να κατανοήσετε ποιες ενότητες χρειάζεστε για εκκίνηση, ποιες επιλογές είναι απαραίτητες για τις υπηρεσίες σας (όπως το Docker ή το virtualization), πώς ενσωματώνονται τα initramfs και το GRUB στη διαδικασία εκκίνησης και πώς να διατηρείτε πάντα μια επιλογή εφεδρείας για να επιστρέψετε σε έναν προηγούμενο πυρήνα εάν κάτι πάει στραβά. Εάν αφιερώσετε χρόνο για να εξετάσετε κάθε ενότητα, επαναχρησιμοποιήσετε έξυπνα την τρέχουσα διαμόρφωση του πυρήνα σας και συνηθίσετε να δοκιμάζετε σταδιακά τις αλλαγές, μπορείτε να καταλήξετε να απολαμβάνετε ένα πραγματικά ισχυρό σύστημα. πιο βελτιστοποιημένο, προσαρμοσμένο στο υλικό σας και ευθυγραμμισμένο με τις πραγματικές σας ανάγκες από αυτήν που παρέχεται από τους γενικούς πυρήνες των περισσότερων διανομών.