Nucleul cu care porniți nu este cel pe care l-ați instalat. Pe scurt, modulele pe care le-ați instalat sunt pentru un alt nucleu - posibil mai vechi sau mai nou, așa cum a fost selectat de bootloader, care probabil nu a fost actualizat.
Puteți verifica acest lucru cu cat /proc/version
. Aceasta va afișa nucleul care rulează în prezent. apt install --reinstall linux-modules-`cut -d\ -f3 /proc/version`
ar trebui să instaleze versiunea corectă.
Poți să folosești dpkg -l|grep linux-
pentru a vedea ce este instalat.
În ceea ce privește ca bootloader-ul să nu mai repornească în aceeași versiune veche, sudo update-grub
ar putea rezolva asta. Alternativ, puteți vizualiza /boot/grub/grub.cfg
pentru mai multe informații, sau țineți Schimb sau apăsați ESC la pornire și selectați nucleul corespunzător. (Vedea https://askubuntu.com/questions/281119/how-do-you-run-update-grub pentru mai multe depanare)
Chiar dacă Linux urmează un design „monolitic” în care majoritatea funcționalității pot fi încorporate în nucleul însuși, există atât de multe funcționalități disponibile în zilele noastre încât este mai logic să mutați cât mai mult din această funcționalitate - cum ar fi iptables - în „module de nucleu încărcate ". Are o caracteristică grozavă în care „încarcă automat” aceste module după cum este necesar - dar aceste module sunt de obicei foarte specifice versiunii de kernel - și nu le găsește - vezi ls /usr/lib/modules/*
- este ceea ce ți-a dat mesajul de eroare.
Puteți vedea cu ce module sunt încărcate în prezent lsmod
. De asemenea, puteți încărca module cu insmod
si le descarca cu rmmod
. (Vedea om insmod
și așa mai departe.)
Calculatoarele s-au schimbat atât de mult în ultimii 30 de ani, încât în loc să stocheze modulele pe partiția principală, acestea trebuie să fie stocate pe un disc RAM temporar initrd
deoarece uneori acele module sunt necesare pentru a accesa hard disk-ul sau sistemul de fișiere real. update-grub
se ocupă de stocarea copiilor modulelor necesare în documentele relevante initrd
pentru nucleele Linux relevante.
În general, atâta timp cât un nucleu poate citi sistemul de fișiere rădăcină cumva, puteți porni orice sistem de fișiere rădăcină Linux folosind orice nucleu. Deci, de obicei, puteți repara cu ușurință - sau face backup pentru sistemul dvs. pornind de pe un Linux bootabil live, apoi instalând sistemul de fișiere principal. (Pentru a-l găsi vezi lsblk
și montură
) Pentru a lucra pe sistemul dvs. actual, chiar dacă ați pornit de pe altul, vedeți chroot
. De exemplu, dacă porniți în timp real și hard disk-ul apare ca /dev/sdb1
atunci poti fsck /dev/sdb
și apoi montați /dev/sdb1 /mnt
, și apoi sudo mount -t proc - /mnt/sdb1/proc; sudo mount -o bind /dev /mnt/sdb1/dev; sudo chroot /mnt/sdb1
și apoi poți fugi instalare apt
sau update-grub
și Ieșire
și sudo reboot
.)
Fișierele pot fi corupte sau lipsă din cauza multor factori - spațiu redus pe disc, cabluri slăbite, hardware deteriorat, întreruperi de curent, EMF, raze cosmice. Software-ul modern este bun la o mare parte din acest lucru. Lucrul grozav despre Linux, spre deosebire de alte sisteme, este că vă oferă mult mai multe oportunități de a-l repara, spre deosebire de simpla reinstalare - și de a afla mai multe despre cum funcționează în acest proces.