Чому видаляти старі ядра небезпечно?


36

На завантажувальному диску у мене не вистачає місця, тому я вирішив видалити старі ядра. Я знайшов цю сторінку, яка точно описує, що я повинен робити: Документація на Lubuntu: Видалити старі ядра .

Я видалив найдавніше ядро ​​вручну, і тепер це нормально, але я не розумію одного: в кінці статті є якийсь код, який може видалити всі старі версії ядра, але він позначений як для досвідчених користувачів.

Я не дуже розумію, в чому небезпека. Це звучить нерозумно, але, здається, вони говорять, що може бути більше одного ядра, яке використовується певною машиною одночасно.

Чи можливо, що різні програми на моїй машині Ubuntu можуть використовувати різні ядра одночасно? Чому видалення всіх старих ядер автоматично вважається небезпечним?


8
Власне, у статті немає в ній слів "небезпека" та "небезпечно". Як ви дійшли до такого грубо перебільшеного висновку?
mikew незалежно від

2
Кілька разів я оновив до останнього ядра і видалив своє старе ядро ​​перед перезавантаженням, лише щоб виявити, що (у моїй конкретній системі) ядро ​​не працювало, і система не завантажиться. Тепер я спочатку перезавантажуюсь, а потім видаляю старе ядро, якщо все добре.
Метью читайте

Відповіді:


50

Видалення старих ядер по суті не є небезпечним, але якщо ви видалите всі ядра та перезавантажте, ви залишитеся на розгніваному екрані Grub. Виправлення, що вимагає значних ноу-хау (як, але з apt-get install linux-genericкінцем).

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

Небезпека виходить від користувачів копіювати-вставити блок коду , який -unbeknownst до них і без визнання risks- не застосовується. Існує безліч прикладів виявлення старих ядер, а кілька ідеальних. Навіть у моїх останніх зусиль все-таки є свої підводні камені. І ми говоримо про проблему, яку можна виправити; багато публікацій на Ask Ubuntu при неправильному використанні можуть призвести до постійної втрати даних.

Ми намагаємося захистити від пошкоджень шляхом підписання ризику, щоб зрозуміти користувачів про можливі проблеми . У найкращих сценаріях користувач буде готовий і забезпечений для вирішення проблеми, а в гіршому - принаймні, вони не можуть скаржитися на те, що про них не попередили.


11
Не видаляйте всі ваші ядра (очевидно), але також не видаляйте поточно запущене ядро, якщо ви тільки що встановили оновлене ядро ​​і ще не перезавантажилися. Чому? Якщо щось оновлено в оновленому ядрі, ви завжди можете вибрати попереднє ядро ​​в Grub і повернутися до роботи. В іншому випадку вам доведеться застрягти з незавантаженою системою і вам доведеться грати в «гру LiveCD» (не весела гра, BTW).
Натан Осман

1
Це майже так само весело dd if=/dev/zero of=/dev/sda bs=512 count=1. Я не пам’ятаю, що я намагався зробити (щось про багаторазових менеджерів завантаження, що дратують моє життя). Я провів близько семи годин з LiveCD, намагаючись відремонтувати свої таблиці розділів.
фірфокс

1
Це просто так, зберігайте (принаймні) одне ядро, яке перевірено і безумовно працює. Хтось - @NathanOsman - повинен був насправді викласти це словами, я думаю. Другий важливий урок, засвоєний тут, не робіть те, що не знаєте наслідків.
Миколай

1
Я б не вживав слова "хвилююче", але почуття було інтенсивним, коли я це робив.
MDeBusk

Виправивши проблеми з ядром у минулому, я набагато щасливіше залишити три ядра. Як правило, я працюю з поточним ядром, найновішим ядром і тим, що знаходиться безпосередньо перед поточним. Це дає мені останнє про перезавантаження, те, що відомо, що працює, і попереднє, якщо це не вдається з якихось причин. Це, мабуть, перевищення, але це затверджено CYA.
мерехтіння

4

Старі ядра є частиною пакетів. Якщо ви просто виймете, /boot/vmlinuz-3.13.0-44-genericви залишите пакетикові крихти.

Спочатку з’ясуйте, яке ядро ​​у вас працює. НЕ видаляйте нічого із цим значенням, це його назва:

$ uname -r  
3.13.0-49-generic  

YMMV. Потім запитайте, dpkgщо це знає:

$ dpkg -l linux-*

Деякі з цих пакетів можна видалити, але що ще є? Використовуючи один рядок, витягнутий (у системі MY) з висновку dpkg -l linux-*:

 ii  linux-image-3.13.0-44-generic       3.13.0-44.73           amd64                  Linux kernel image for version 3.13.0 on 64 bit x86 SMP

Тепер ми побачимо, які ще пакети мають -3.13.0-44у своїх назвах:

$ dpkg -l *-3.13.0-44*

Після того, як ви зробите остаточну перевірку, щоб переконатися, що поточне ядро ​​( uname -r) НЕ є у списку пакетів, ви можете почати їх видалення через обрану вами систему управління пакетами.


0

Востаннє, коли я видалив свої старі ядра, я позичив старий фрагмент коду. Ну, цей фрагмент коду вимагав від мене перезавантажитись після встановлення нового ядра, тому я залишився без ядра. На щастя, я зловив це перед перезавантаженням, але, як казали інші, я, можливо, залишився з "екраном розлюченого груба".

Коротше кажучи, це просто те, що можна легко зіпсувати, в результаті чого цегляна система, яку важко відновити.


0

Це не небезпечно. Використовуючи Linux, ви можете робити саме те, що хочете, якщо знаєте правильні команди.

У /bootкаталозі ви можете зробити простий ls -laдовгий список, а також знайти будь-які приховані файли чи каталоги (яких не повинно бути там, якщо таких є !!).

З цієї інформації ви можете оцінити дати та файли старих версій. Не видаляйте їх усіх, але найдавніші файли, які відповідають одній версії.

У якийсь момент я подумав, що можливо, що якщо ви склали своє ядро ​​з джерела, вам потрібно буде налаштувати нове. .configФайл, який я не думаю , що це залежить від відповідність з вашим поясненням, буде залишатися там.

Отже, якщо трапилося, що після видалення старих файлів, що відповідають одній версії, та після перезавантаження машини, можливо, у вас виникне паніка ядра.

Просте рішення - це завантаження машини за допомогою живого USB або CD / DVD Linux. chrootв неї, і заново побудуйте ядро ​​з такими інструментами dracut.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.