Eski çekirdekleri silmek neden güvenli değildir?


36

Önyükleme sürücümde boş alan kalmadı, bu yüzden eski çekirdekleri çıkarmaya karar verdim. Ne yapmam gerektiğini açıklayan bu sayfayı buldum: Lubuntu Belgeleri: Eski Çekirdekleri Kaldır .

En eski çekirdeği manuel olarak sildim ve şimdi sorun değil, ancak bir şeyi anlamıyorum: Makalenin sonunda tüm eski çekirdek sürümlerini silebilecek bir kod var, ancak yalnızca gelişmiş kullanıcılar için işaretlendi.

Burada tehlikenin ne olduğunu gerçekten anlamıyorum. Aptalca geliyor, ama aynı anda belirli bir makine tarafından kullanılan birden fazla çekirdek olabileceğini söylüyorlar.

Ubuntu makinemdeki farklı uygulamaların aynı anda farklı çekirdekleri kullanması mümkün mü? Neden tüm eski çekirdekleri otomatik olarak silmek tehlikeli olarak kabul edilir?


8
Aslında, makalede "tehlike" ve "güvensiz" kelimeleri yoktur. Bu kadar abartılı bir sonuca nasıl vardın?
mikewhatte

2
Birkaç kez en son çekirdeğe yükselttim ve yeniden başlatılmadan önce eski çekirdeğimi kaldırdım, yalnızca çekirdeğin işe yaramadığını ve sistemin önyüklemediğini bulmak için (özel sistemimde) buldum. Şimdi ilk önce yeniden başlatmayı yapıyorum ve sonra her şey yolundaysa eski çekirdeği çıkarın.
Matthew

Yanıtlar:


50

Eski çekirdekleri çıkarmak doğal olarak güvenli değildir, ancak tüm çekirdeğinizi çıkarır ve yeniden başlatırsanız, öfkeli Grub ekranında kalırsınız. Bunu düzeltmek önemli bir bilgi birikimi gerektirir (bunun gibi ancak apt-get install linux-genericsonunda).

Bunu ilk yaptığınızda oldukça heyecan vericidir, ancak Grub menülerini temizlemek veya disk alanlarını kurtarmak isteyen insanlar heyecan aramazlar.

Tehlike kullanıcıların kod bloğu yapıştırmayı kopya geliyor onlara ve geçerli değildir riskleri-kabul vermeden -unbeknownst söyledi. Eski çekirdekleri tespit etmenin pek çok örneği var ve çok azı mükemmel. En son çabamın bile, hala tuzakları var. Ve düzeltilebilecek bir konudan bahsediyoruz; Ubuntu askındaki çoğu mesaj yanlış kullanılırsa kalıcı veri kaybına neden olabilir.

Kullanıcıların olası sorunların farkında olma riskini belirterek hasara karşı korunmaya çalışıyoruz . En iyi senaryolarda, kullanıcı bir problemle başa çıkmak için hazırlanacak ve donatılmış olacaktır ve en kötü durumda, en azından uyarılmadıklarından şikayet edemezler.


11
Tüm çekirdeğinizi çıkarmayın (açıkçası), ancak henüz yeni güncellenmiş bir çekirdek yüklediyseniz ve henüz yeniden başlatılmadıysa, şu anda çalışan çekirdeği de kaldırmayın. Neden? Güncellenen çekirdekte bir şey koparsa, Grub'taki önceki çekirdeğinizi her zaman seçebilir ve işe geri dönebilirsiniz. Aksi takdirde, engellenemez bir sistemle takılıp kalırsınız ve "LiveCD oyunu" oynamak zorunda kalırsınız (eğlenceli bir oyun değil, BTW).
Nathan Osman,

1
Bu neredeyse kadar eğlenceli dd if=/dev/zero of=/dev/sda bs=512 count=1. Ne yapmaya çalıştığımı hatırlamıyorum (birden fazla açılış yöneticisinin hayatımı sinirlendirdiği bir şey). Bölüm tablolarımı tamir etmeye çalışırken bir LiveCD ile yaklaşık yedi saat geçirdim.
phyrfox

1
Sadece bu kadar kolay, test edilmiş ve kesinlikle çalışan bir çekirdeği saklayın. Birisi - @NathanOsman - aslında sanırım kelimelerin içine koymak zorunda kaldı. Burada öğrenilen ikinci önemli ders, sonuçlarını bilmediğiniz şeyleri yapma.
Nicolai

1
"Heyecan verici" kelimesini kullanmazdım ama bunu yaptığımda duygu yoğun bir duyguydu.
MDeBusk

Geçmişte çekirdek sorunları düzelttikten sonra, üç tane çekirdek bırakmaktan daha mutluyum. Genelde şu an çalışan çekirdeğe, en yeni çekirdeğe ve şu andaki çekirdeğin hemen öncesine giderim. Bu bana yeniden başlatma konusunda en son, çalışmakta olduğu bilinen ve önceki nedense başarısız olursa verir. Muhtemelen fazla abartılı, ancak CYA onaylandı.
flickerfly

4

Eski çekirdekler paketlerin bir parçasıdır. Sadece kaldırırsanız /boot/vmlinuz-3.13.0-44-genericher yerde paket kırıntıları bırakacaksınız.

İlk önce, hangi çekirdeği çalıştırdığınızı bulun. Bu değere sahip hiçbir şeyi silmeyin, adı:

$ uname -r  
3.13.0-49-generic  

YMMV. O zaman dpkgne bildiğini sor :

$ dpkg -l linux-*

Bu paketlerden bazıları kaldırılabilir, ancak başka ne var? Çıkışından (MY sisteminde) ekstrakte bir hattı kullanılarak 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

Şimdi diğer paketlerin -3.13.0-44adlarında neler olduğunu göreceğiz :

$ dpkg -l *-3.13.0-44*

Geçerli çekirdeğin ( uname -r) paket listesinde OLMADIĞINDAN emin olmak için son bir kontrol yaptıktan sonra , bunları seçtiğiniz paket yönetim sisteminden kaldırmaya başlayabilirsiniz.


0

Eski çekirdeğimi en son çıkardığımda eski bir kod parçasını ödünç aldım. Eh, bu kod parçacığı yeni çekirdeği yükledikten sonra yeniden başlatmamı gerektirdi, bu yüzden çekirdeksiz kaldı. Neyse ki, yeniden başlatmadan önce bunu yakalamıştım, ancak diğerlerinin dediği gibi "kızgın grub ekranından" kalmış olabilir.

Uzun lafın kısası, kolayca çözülebilecek bir şeydir ve kurtarılması zor bir tuğla sistemi ortaya çıkar.


0

Güvensiz değil. Linux kullanarak, doğru komutları biliyorsanız tam olarak ne isterseniz yapabilirsiniz.

In /bootdizinde, bir basit yapabilirsiniz ls -lauzun gibi herhangi bir gizli dosyaları veya dizinleri bulmak için de listeleme olması (eğer varsa orada olması gerekiyordu değil !!).

Bu bilgilerden tarihleri ​​ve eski sürümlerin dosyalarını değerlendirebilirsiniz. Hepsini kaldırmayın, aynı sürüme karşılık gelen en eski dosyaları kaldırın.

Bir noktada, çekirdeğinizi kaynaktan derlediyseniz, yeni bir tane çimdiklemeniz gerekebileceğini düşünüyordum. Düşünmediğim .configdosya açıklamanıza göre durum böyle olacak.

Öyleyse, tek bir sürüme karşılık gelen eski dosyaları sildikten ve makinenizi yeniden başlattıktan sonra, bir çekirdek panikiyle karşılaşmanız mümkün olabilir.

Basit çözüm, makineyi canlı bir USB veya CD / DVD Linux ile başlatmaktır. chrootiçine çekirdeği ve benzeri araçları kullanarak çekirdeği yeniden oluşturun dracut.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.