Как я могу удалить скомпилированное ядро?

21

Я установил 14.10 на свой ноутбук Lenovo E455.

И скомпилированное ядро ​​3.19 в следующем порядке

так как казалось, что 14.10 не хочет работать с моим (я видел медленные движения)

Скачанное текущее ядро ​​с http://www.kernel.org/

make oldconfig
make
sudo make install

Наконец, не удалось загрузиться с новым ядром.

Как я могу удалить скомпилированное ядро ​​из grub и получить восстановление?

Ohmygirl
источник
Что вы до сих пор пытались удалить, и где это пошло не так? Где там какие-либо предупреждения или сообщения об ошибках?
Дэвид Фёрстер,
Благодаря вашей помощи Восстановился и ждал Ubuntu 15.XX.
Ohmygirl

Ответы:

33

Простой способ:

Если скомпилировано с помощью метода debian, вы можете увидеть установленное ядро ​​со следующим:

dpkg --list | grep kernel-image

А затем удалите нужный пакет ядра с помощью apt-get:

sudo apt-get remove kernel-image-your-kernel-image

Сложный метод:

Если вы скомпилировали и установили через make install, вам нужно будет вручную удалить следующие записи:

/boot/vmlinuz*KERNEL-VERSION*
/boot/initrd*KERNEL-VERSION*
/boot/System-map*KERNEL-VERSION*
/boot/config-*KERNEL-VERSION*
/lib/modules/*KERNEL-VERSION*/
/var/lib/initramfs/*KERNEL-VERSION*/

Затем обновите конфигурацию grub:

sudo update-grub2
Мудит капил
источник
1
У меня нет каталога / var / lib / initramfs /, но это потому, что в моей системе нет скомпилированных ядер?
Ярно
1
/var/lib/initramfs-tools/*KERNEL-VERSION*на Debian
Чаба Тот
1
Рассмотрим редактирование для более новых ядер (год 2018), содержащее: /boot/abi*KERNEL-VERSION*и/boot/retpoline*KERNEL-VERSION*
WinEunuuchs2Unix
9

Благодаря вопросу Ярно здесь я разработал способ реализации ответа Мудит Капил, который требует очень мало печатать и ловит любые лишние биты, лежащие вокруг

Так как все, что нужно для удаления ядра, - это удалить все его файлы и каталоги, и все эти файлы и каталоги будут иметь строку выпуска ядра в своих путях, мы можем использовать, locateчтобы найти все файлы со строкой выпуска ядра и удалить их удалить ядро.

(Сначала проверьте, uname -rчтобы найти имя запущенного в данный момент ядра и не удаляйте его)

Скажем, вы хотите удалить ядро ​​с именем 4.4.6-my-kernel. Вы можете найти все существующие файлы и каталоги (без перечисления файлов во всех названных каталогах) с помощью locate -b -e 4.4.6-my-kernel. Добавление rm -rк этому xargsпозволяет также удалять файлы. Я добавляю -pдля xargsотображения целей и запрашиваю подтверждение перед выполнением

locate -b -e 4.4.6-my-kernel | xargs -p sudo rm -r

затем введите yдля выполнения rm -rна показанных целях. Он будет жаловаться, что файлы, которые не являются каталогами, не существуют, потому что вы пытаетесь удалить их рекурсивно ( -r), но это нормально, они все равно будут удалены вместе с каталогами и их содержимым. Когда закончите, просто запустите

sudo update-grub

и вуаля.

Занна
источник
+1, потому что это ловит больше файлов, чем принятый ответ. Например, все dkmsвещи. Я бы запустил его сначала без rmопции, чтобы увидеть все, что будет удалено.
WinEunuuchs2Unix
Почему я не должен удалить работающее в данный момент ядро? Что если это ядро, которое я хочу удалить? Можно ли удалить работающее в данный момент ядро, не перезагружая машину другим ядром?
Лиран Фунаро
1
@LiranFunaro это возможно, да. Смотрите мой ответ Как мне удалить работающее ядро ​​только по команде? что также объясняет, почему это, вероятно, не очень хорошая идея
Занна