Сегментационная ошибка (сброс ядра) выходила на любую команду, которую я вводил после “yum install kernel-devel”

Вопрос или проблема

Я собирался установить драйвер NVIDIA NVIDIA-Linux-x86_64-565.77.run, и он показал

Не удается найти дерево исходных кодов ядра для текущего работающего ядра. Пожалуйста, убедитесь, что вы установили файлы исходных кодов ядра для вашего ядра и что они правильно настроены; в системах Red Hat Linux, например, убедитесь, что у вас установлен RPM пакет ‘kernel-source’ или ‘kernel-devel’. Если вы знаете, что правильные файлы исходных кодов ядра установлены, вы можете указать путь к ним с помощью параметра командной строки ‘–kernel-source-path’.

точно так же, как это произошло в https://blog.csdn.net/chris_pei/article/details/79203033.

Следуя инструкции, я попробовал выполнить простую команду yum install kernel-devel:

...
  Installing : 1:perl-parent-0.225-244.el7.noarch                                                                                                                                                              45/72 
  Installing : perl-HTTP-Tiny-0.033-3.el7.noarch                                                                                                                                                               46/72 
  Installing : perl-podlators-2.5.1-3.el7.noarch                                                                                                                                                               47/72 
  Installing : perl-Pod-Perldoc-3.20-4.el7.noarch                                                                                                                                                              48/72 
  Installing : 1:perl-Pod-Escapes-1.04-293.el7.noarch                                                                                                                                                          49/72 
  Installing : perl-Encode-2.51-7.el7.x86_64                                                                                                                                                                   50/72 
  Installing : perl-Text-ParseWords-3.29-4.el7.noarch                                                                                                                                                          51/72 
  Installing : perl-Pod-Usage-1.63-3.el7.noarch                                                                                                                                                                52/72 
  Installing : 4:perl-macros-5.16.3-293.el7.x86_64                                                                                                                                                             53/72 
  Installing : perl-Storable-2.45-3.el7.x86_64                                                                                                                                                                 54/72 
  Installing : perl-Exporter-5.68-3.el7.noarch                                                                                                                                                                 55/72 
  Installing : perl-constant-1.27-2.el7.noarch                                                                                                                                                                 56/72 
  Installing : perl-Time-Local-1.2300-2.el7.noarch                                                                                                                                                             57/72 
  Installing : perl-Socket-2.010-4.el7.x86_64                                                                                                                                                                  58/72 
  Installing : perl-Carp-1.26-244.el7.noarch                                                                                                                                                                   59/72 
  Installing : 4:perl-Time-HiRes-1.9725-3.el7.x86_64                                                                                                                                                           60/72 
  Installing : perl-PathTools-3.40-5.el7.x86_64                                                                                                                                                                61/72 
  Installing : perl-Scalar-List-Utils-1.27-248.el7.x86_64                                                                                                                                                      62/72 
  Installing : 1:perl-Pod-Simple-3.28-4.el7.noarch                                                                                                                                                             63/72 
  Installing : perl-File-Temp-0.23.01-3.el7.noarch                                                                                                                                                             64/72 
  Installing : perl-File-Path-2.09-2.el7.noarch                                                                                                                                                                65/72 
  Installing : perl-threads-shared-1.43-6.el7.x86_64                                                                                                                                                           66/72 
  Installing : perl-threads-1.87-4.el7.x86_64                                                                                                                                                                  67/72 
  Installing : perl-Filter-1.49-3.el7.x86_64                                                                                                                                                                   68/72 
  Installing : 4:perl-libs-5.16.3-293.el7.x86_64                                                                                                                                                               69/72 
  Installing : perl-Getopt-Long-2.40-3.el7.noarch                                                                                                                                                              70/72 
  Installing : 4:perl-5.16.3-293.el7.x86_64                                                                                                                                                                    71/72 
  Installing : kernel-devel-3.10.0-957.el7.x86_64                                                                                                                                                              72/72 
Non-fatal POSTIN scriptlet failure in rpm package kernel-devel-3.10.0-957.el7.x86_64
Non-fatal POSTTRANS scriptlet failure in rpm package p11-kit-trust-0.23.5-3.el7.x86_64
Non-fatal POSTTRANS scriptlet failure in rpm package centos-release-7-6.1810.2.el7.centos.x86_64

Installed:
  kernel-devel.x86_64 0:3.10.0-957.el7                                                                                                                                                                               

Dependency Installed:
  basesystem.noarch 0:10.0-7.el7.centos                bash.x86_64 0:4.2.46-31.el7                        centos-release.x86_64 0:7-6.1810.2.el7.centos         findutils.x86_64 1:4.5.11-6.el7                    
  gawk.x86_64 0:4.0.2-4.el7_3.1                        gdbm.x86_64 0:1.10-8.el7                           glibc.x86_64 0:2.17-260.el7                           glibc-common.x86_64 0:2.17-260.el7                 
  gmp.x86_64 1:6.0.0-15.el7                            grep.x86_64 0:2.20-3.el7                           groff-base.x86_64 0:1.22.2-8.el7                      info.x86_64 0:5.1-5.el7                            
  keyutils-libs.x86_64 0:1.5.8-3.el7                   krb5-libs.x86_64 0:1.15.1-34.el7                   libacl.x86_64 0:2.2.51-14.el7                         libattr.x86_64 0:2.4.46-13.el7                     
  libcap.x86_64 0:2.22-9.el7                           libcom_err.x86_64 0:1.42.9-13.el7                  libffi.x86_64 0:3.0.13-18.el7                         libgcc.x86_64 0:4.8.5-36.el7                       
  libselinux.x86_64 0:2.5-14.1.el7                     libsepol.x86_64 0:2.5-10.el7                       libstdc++.x86_64 0:4.8.5-36.el7                       libtasn1.x86_64 0:4.10-1.el7                       
  libverto.x86_64 0:0.2.5-4.el7                        ncurses.x86_64 0:5.9-14.20130511.el7_4             ncurses-base.noarch 0:5.9-14.20130511.el7_4           ncurses-libs.x86_64 0:5.9-14.20130511.el7_4        
  nspr.x86_64 0:4.19.0-1.el7_5                         nss-softokn-freebl.x86_64 0:3.36.0-5.el7_5         nss-util.x86_64 0:3.36.0-1.el7_5                      p11-kit.x86_64 0:0.23.5-3.el7                      
  p11-kit-trust.x86_64 0:0.23.5-3.el7                  pcre.x86_64 0:8.32-17.el7                          perl.x86_64 4:5.16.3-293.el7                          perl-Carp.noarch 0:1.26-244.el7                    
  perl-Encode.x86_64 0:2.51-7.el7                      perl-Exporter.noarch 0:5.68-3.el7                  perl-File-Path.noarch 0:2.09-2.el7                    perl-File-Temp.noarch 0:0.23.01-3.el7              
  perl-Filter.x86_64 0:1.49-3.el7                      perl-Getopt-Long.noarch 0:2.40-3.el7               perl-HTTP-Tiny.noarch 0:0.033-3.el7                   perl-PathTools.x86_64 0:3.40-5.el7                 
  perl-Pod-Escapes.noarch 1:1.04-293.el7               perl-Pod-Perldoc.noarch 0:3.20-4.el7               perl-Pod-Simple.noarch 1:3.28-4.el7                   perl-Pod-Usage.noarch 0:1.63-3.el7                 
  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7         perl-Socket.x86_64 0:2.010-4.el7                   perl-Storable.x86_64 0:2.45-3.el7                     perl-Text-ParseWords.noarch 0:3.29-4.el7           
  perl-Time-HiRes.x86_64 4:1.9725-3.el7                perl-Time-Local.noarch 0:1.2300-2.el7              perl-constant.noarch 0:1.27-2.el7                     perl-libs.x86_64 4:5.16.3-293.el7                  
  perl-macros.x86_64 4:5.16.3-293.el7                  perl-parent.noarch 1:0.225-244.el7                 perl-podlators.noarch 0:2.5.1-3.el7                   perl-threads.x86_64 0:1.87-4.el7                   
  perl-threads-shared.x86_64 0:1.43-6.el7              popt.x86_64 0:1.13-16.el7                          sed.x86_64 0:4.2.2-5.el7                              setup.noarch 0:2.8.71-10.el7                       
  tzdata.noarch 0:2018e-3.el7                          zlib.x86_64 0:1.2.7-18.el7                        

Failed:
  ca-certificates.noarch 0:2018.2.22-70.0.el7_5        chkconfig.x86_64 0:1.7.4-1.el7        coreutils.x86_64 0:8.22-23.el7        filesystem.x86_64 0:3.2-25.el7        openssl-libs.x86_64 1:1.0.2k-16.el7       

Complete!

(Полная версия в https://blog.csdn.net/Sakura_no_ame/article/details/145215254?sharetype=blogdetail&sharerId=145215254&sharerefer=PC&sharesource=Sakura_no_ame&spm=1011.2480.3001.8118)

Однако после этого большинство команд начали завершаться с ошибкой segment fault (core dumped), даже простые команды как ls, rm, cp и mv, за исключением некоторых встроенных команд оболочки, таких как cd, ulimit и history.

Есть два важных момента, которые, как я думаю, могут быть причиной:

  1. Моя версия ядра Linux — 3.10.0-1160.42.2.el7.x86_64, которая, по-видимому, не соответствует версии, которую я установил как kernel-devel.x86_64 0:3.10.0-957.el7.

  2. Я запустил код в состоянии путаницы, следуя https://blog.csdn.net/chris_pei/article/details/79203033:

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300_4.13.0-041300.201709031731_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-headers-4.13.0-041300-generic_4.13.0-041300.201709031731_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.13/linux-image-4.13.0-041300-generic_4.13.0-041300.201709031731_amd64.deb
sudo dpkg -i *.deb

Но я никогда не делал никаких настроек для загрузки, потому что я считал это ненужным.

Поэтому я очень хочу узнать:

  1. Что вызвало Segment fault (core dumped).
  2. Что мне делать, чтобы восстановить компьютер без инструментов, таких как cp, rm и mv.

Что я пробовал: я могу загружать и загружать файлы в /workspace, потому что я использую Jupyter для доступа к своему компьютеру. Я пытался загрузить простую программу, чтобы поймать core файл, чтобы я мог проанализировать причину с помощью gdb program core. К сожалению, я не знаю, как предоставить программе разрешения на выполнение, потому что при вводе команды chmod по-прежнему показывалась ошибка Segment fault (core dumped).

Я буду признателен за любую помощь или совет, потому что это очень важно для меня. Большое вам спасибо.


Я предоставлю все команды, которые я ввел из history:

https://blog.csdn.net/Sakura_no_ame/article/details/145215241?sharetype=blogdetail&sharerId=145215241&sharerefer=PC&sharesource=Sakura_no_ame&spm=1011.2480.3001.8118

Ответ или решение

Сегментация памяти (или "segmentation fault") и сброс ядра ("core dumped") — это распространённая ошибка в Linux-системах, сигнализирующая о проблемах с памятью. В большинстве случаев такая ошибка указывает на то, что программа пытается получить доступ к памяти, к которой она не должна иметь доступ. Причины такой ошибки могут быть разнообразными, и в вашем случае отладка требует тщательного анализа.

Теоретическая часть

  1. Концепция сегментации памяти в Linux: Linux, как и большинство современных операционных систем, использует концепцию виртуальной памяти и сегментации для обеспечения безопасности и изоляции памяти. Когда программа обращается к памяти вне отведённого ей сегмента, ядро генерирует ошибку "segmentation fault", предотвращая доступ программы к чужой памяти и возможные последствия этого.

  2. Роль пакетных систем (например, yum) и зависимости: Пакетные системы, такие как yum, предназначены для управления установками и обновлениями пакетов. Они следят за зависимостями между различными пакетами, что упрощает управление системой. Однако в случае несоответствия версий ядра и пакетов ядра может происходить нарушение функционирования системы, как случилось в вашем случае.

  3. Важность совпадения версий ядра: Для корректной работы драйверов и модулей критично, чтобы версии ядра и установленных пакетов ядра были согласованы. В вашем случае, разница в версиях установленного ядра (3.10.0-1160.42.2.el7.x86_64) и ядра, для которого были установлены пакеты (3.10.0-957.el7), могла вызвать ошибку сегментации.

Примеры проблемы

В вашем описании проблемы упоминается, что при установке пакета kernel-devel обнаружились нефатальные ошибки в post-install скриптах и нарушении работы пакетов. После этой установки простейшие команды (ls, rm, cp, mv) начали приводить к сегментации. Это указывает на возможные проблемы с библиотеками или основными системными компонентами, необходимыми для выполнения этих команд.

По вашим словам, вы также пытались установить заголовки и образы ядра версии 4.13, предназначенной для Ubuntu, в CentOS, что может привести к серьезным несовпадениям и сбоям в системе. Эти действия могли перемешать конфигурацию загрузки ядра, что также может быть причиной сегментации.

Применение решений

Теперь рассмотрим, как именно можно решить возникшую проблему, используя минимальные доступные инструменты:

  1. Выяснение причины ошибки:

    • Попробуйте использовать dmesg для получения сообщений от ядра, которые могут пролить свет на причину ошибок сегментации.
    • Если возможно, запустите систему в режиме восстановления или однопользовательский режим (single-user mode), чтобы исследовать состояние системы.
  2. Восстановление системы:

    • Резервное копирование данных: Если у вас есть доступ к Jupyter и вы можете загружать/выгружать файлы, скопируйте все важные данные перед дальнейшими действиями.
    • Обновление ядра и пакетов: Установите правильную версию kernel-devel, которая соответствует установленной версии ядра. Используйте rpm вручную, если yum не работает.
    • Удаление конфликтующих пакетов: Удалите пакеты, которые вы устанавливали вручную, такие как Ubuntu-специфичные заголовки и образы ядра.
  3. Используйте доступные инструменты:

    • Поскольку у вас работают команды cd, ulimit и history, вы можете попытаться выстроить инструменты для восстановления через скрипты и конфигурацию системы.
  4. Перезагрузка загрузчика (GRUB):

    • Проверьте и, если нужно, отредактируйте файл конфигурации GRUB, чтобы убедиться, что система загружается с правильным ядром и параметрами.
    • Используйте grub2-mkconfig -o /boot/grub2/grub.cfg для обновления конфигурации загрузчика.
  5. Переустановка»:

    • Если исправить систему не удается, рассмотрите возможность полной переустановки ОС, восстановив данные из резервной копии после стабильной установки.

В итоге, ваша проблема требует комплексного подхода к устранению, начиная от анализа системных журналов и заканчивая возможной переустановкой системы. Правильное соблюдение процедур установки пакетов и конфликтного разрешения версий поможет избежать таких проблем в будущем.

Оцените материал
Добавить комментарий

Капча загружается...