Удалить новые ядра / загрузиться полностью

8

У нас есть несколько серверов Ubuntu 16.04. unattended-upgradesавтоматически включаются с 16.04, и загрузочный раздел находится на отдельном разделе. Из-за автоматических обновлений безопасности в загрузочном разделе не хватает места с новыми ядрами.

Мы не можем просто перезагрузить системы, поэтому машина все еще использует предпоследнее ядро.

Какие ядра я должен удалить? Все, кроме текущего, самого старого и самого нового?

У вас есть рекомендации?

Я также заметил, что новейшее ядро ​​имеет статус «Полуконфигурированный». Это ядро, вероятно, не будет работать, поэтому я должен удалить это и использовать более старое ядро.

Выход dpkg -l | grep linux image:

    ii  linux-image-4.4.0-21-generic --> old kernel
    ii  linux-image-4.4.0-34-generic --> current kernel
    ii  linux-image-4.4.0-36-generic --> new kernel
    ii  linux-image-4.4.0-38-generic --> new kernel
    ii  linux-image-4.4.0-42-generic --> new kernel
    ii  linux-image-4.4.0-45-generic --> new kernel
    ii  linux-image-4.4.0-47-generic --> new kernel
    ii  linux-image-4.4.0-51-generic --> new kernel
    ii  linux-image-4.4.0-53-generic --> new kernel
    iF  linux-image-4.4.0-57-generic --> new kernel
user83026
источник

Ответы:

7

Чтобы очистить старое ядро, вы можете использовать purge-old-kernelsинструмент командной строки.

Эта программа удалит старые пакеты ядра и заголовка из системы, освободив дисковое пространство. Он никогда не удалит работающее ядро. По умолчанию он сохраняет как минимум последние 2 ядра, но пользователь может переопределить это значение с помощью параметра --keep. Любые дополнительные параметры будут переданы непосредственноapt-get

Чтобы установить purge-old-kernels, запустите:

sudo apt install byobu

или

sudo apt install bikeshed

Чтобы сохранить последнюю nверсию ядра:

sudo purge-old-kernels --keep n

е, г: п = 2

sudo purge-old-kernels --keep 2

Обновление grub:

sudo update-grub
GAD3R
источник
2
byobuэто, вероятно, пакет, который вы хотите для 16.04 Xenuial: purge-old-kernelsон переместился bikeshedв byobuнекоторое время между Trusty и Xenial, хотя bikeshedтеперь рекомендует, byobuтак что вы все равно получите программу, если у вас нет no-install-рекомендует.
Вольфганг
4

Для Ubuntu Grub2 автоматически отображает последнее ядро ​​и скрывает старые ядра. Если вы хотите их увидеть, вы можете нажать Shift во время загрузки.

Итак, перед удалением старых ядер загрузитесь с последним доступным ядром (grub2 загружает его по умолчанию при загрузке). Чтобы проверить, какое ядро ​​вы используете, вы можете использовать команду:

uname -r

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

Чтобы удалить старые ядра, откройте терминал и проверьте текущее ядро:

uname -r 

Затем перечислите все установленные ядра в вашей системе.

dpkg --list | grep linux-image 

Найдите все ядра, которые ниже вашего текущего ядра. Запустите команды ниже, чтобы удалить ядро, которое вы выбрали:

sudo apt-get purge linux-image-x.x.x.x-generic 

Наконец, выполните команды ниже, чтобы обновить grub2

sudo update-grub2 

И перезагрузите вашу систему.

Dababi
источник
1
Из вопроса: «мы не можем просто перезагрузить системы» . Ваш ответ требует сделать это дважды.
Гонки легкости на орбите
3

apt-get autoremove, запускаемый периодически, должен быть в состоянии помочь вам выполнить то, что вы хотите. Действующего ядра, предыдущего ядра и двух последних ядер должно быть достаточно.

schaiba
источник
1
Учитывая список установленных ядер и тот факт, что работающее ядро ​​старое, я бы сказал «работающее ядро, предыдущее ядро ​​и два последних ядра».
Стивен Китт
2

Загрузите одно из предыдущих ядер.

Первая попытка apt autoremove --purge

Если это не работает dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Управляйте тем, что будет деинсталлировано.

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo dpkg -P Это удалит ядро ​​списка из команды ниже.

sudo apt -f install

и наверняка

 sudo update-grub

источник