বুট মেনুটি পরিষ্কার করতে আমি কীভাবে পুরানো কার্নেল সংস্করণগুলি সরিয়ে ফেলব?


701

যতবারই আমি একটি নতুন লিনাক্স কার্নেল ইনস্টল করি, এটি grub_config এ চলে যায়, প্রতিটি বার বুট মেনুটি দীর্ঘ করে দেয়।

আমি জানি আমি ইনস্টল হওয়া প্যাকেজগুলির মাধ্যমে ম্যানুয়ালি অনুসন্ধান করতে এবং সেগুলি সরাতে পারি।

উবুন্টু কি এগুলি পরিষ্কার করার বা বুট তালিকায় প্রদর্শন থেকে বিরত রাখার সহজ কোনও উপায় সরবরাহ করে?


10
কাজটি করার জন্য একটি উবুন্টু কমান্ড রয়েছে পুরিজ-ওল্ড-কার্নেলস নামে কাজ করার জন্য। আরও তথ্যের জন্য আমার উত্তর দেখুন ।
জার্নো

29
sudo apt-get autoremoveউবুন্টু 14.04+ উপর কৌতুক করতে হবে
hobs

1
পুরানো কার্নেলগুলির সঞ্চিতি একটি বাগ যা ঠিক করার প্রক্রিয়া চলছে: bugs.launchpad.net/bugs/1357093 । ফিক্সটি প্রকাশিত হলে, পুরানো কার্নেলগুলি ডিফল্টরূপে স্বতঃস্থাপন করবে।
ব্যবহারকারী535733

1
@ হবস কমান্ডটি উবুন্টু স্টুডিও 14.04-এ আমার জন্য কৌশলটি কার্যকর করবে না, যদি কার্নেলগুলি স্বয়ংক্রিয়ভাবে ইনস্টল না করা হয়েছে তবে সফটওয়্যার আপডেটার দ্বারা।
জার্নো

1
আমি এই পৃষ্ঠাতে ফিরে রাখুন ... @hobs মন্তব্য কেবলমাত্র তখনই কাজ যদি আপনার কার্নেলের স্বয়ংক্রিয় ইনস্টল - তবে আপনি করতে sudo apt-get autoremove --purge উত্তর অনুসরণ করে apt-markপরামর্শ https://help.ubuntu.com/community/RemoveOldKernels
earcam

উত্তর:


602

16.04 এবং উবুন্টুর আরও নতুন সংস্করণ

sudo apt autoremove

নির্ভরতা সমাধানের জন্য এই কমান্ডটি স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া প্যাকেজগুলি সরিয়ে দেয়, কিন্তু এখন আর নির্ভর করে না। এর মধ্যে পুরানো সংস্করণ linux-headers-*এবং রয়েছে linux-image-*। (এটি এই প্রক্রিয়াটি সম্পর্কেও স্মার্ট, কার্নেলের একটি অতিরিক্ত সংস্করণকে ফ্যালব্যাক হিসাবে ছেড়ে দেয়!)

১১.১০ এবং উবুন্টুর নতুন সংস্করণ

GRUB2 এবং এর সমস্ত কার্নেলের প্রদর্শন

উবুন্টুতে ইনস্টল করা গ্রুব 2 এর সর্বশেষ সংস্করণগুলি স্বয়ংক্রিয়ভাবে সর্বশেষতম কার্নেলটি প্রদর্শন করে এবং আপনি যে পুরানো কার্নেলগুলি ইনস্টল করেছেন তা লুকিয়ে রাখে।

জিএনইউ গ্রাব

যদি আপনি আপনার গ্রাবটি না দেখেন - তবে Shiftবুট করার সময় টিপতে ভুলবেন না ।

আপনি দেখতে পাচ্ছেন, কেবল সর্বশেষতম কার্নেল প্রদর্শিত হবে।

যদি আপনি প্রদর্শিত বিকল্পটি (টিপুন Enter) নির্বাচন করেন তবে সমস্ত পুরানো কার্নেলগুলি দৃশ্যমান হয়ে যাবে এবং বুট করার জন্য উপলভ্য হবে।

GNU GRUB পূর্ববর্তী সংস্করণ

কীভাবে স্থায়ীভাবে পুরানো কার্নেলগুলি মুছবেন

সর্বশেষতম উপলব্ধ কার্নেল সহ প্রথম বুট করুন।

পুরানো কার্নেলগুলি মোছার বিভিন্ন উপায় রয়েছে। ব্যক্তিগতভাবে, আমি কম্পিউটার জিনেটরটিকে স্পর্শ করব না যেহেতু এটির পরামর্শগুলির সাথে আপনার কম্পিউটারটি ভেঙে ফেলার বিষয়টি স্বীকৃত।

Synaptic

একটি বিকল্প হ'ল সিন্যাপটিক ( sudo apt install synaptic)

লিনাক্স-চিত্রের জন্য অনুসন্ধান করুন, একটি কার্নেলকে ডান ক্লিক করুন এবং সম্পূর্ণ অপসারণ চয়ন করুন এবং শেষ পর্যন্ত কার্নেলটি মুছতে প্রয়োগ বোতামটি ক্লিক করুন

সিনাপটিক প্যাকেজ ম্যানেজার

অনুসন্ধানটি পুনরায় করুন তবে এবার লিনাক্স-শিরোলেখের জন্য - আপনি আগে নির্বাচিত কার্নেল চিত্রের জন্য সম্পর্কিত শিরোনামগুলি মুছতে পারেন।

সিনাপটিক যদিও আপনি যা মুছে ফেলতে চাইছেন তা যাচাই করার চেষ্টা করবে না ... আপনি অজান্তেই আপনার নতুন কার্নেলটি মুছে ফেলতে পারেন - বা এমনকী আপনার সমস্ত কার্নেল মুছে ফেলতে পারবেন এই সরঞ্জামের সাহায্যে আপনাকে একটি আনবুটু উবুন্টু রেখে !

আপনি কোন কার্নেলটি ব্যবহার করছেন তা পরীক্ষা করে দেখুন:

uname -r

ফলাফলটি এর মতো হবে:

টার্মিনাল <uname -r>

ফলাফল এবং নম্বরটি মনে রাখবেন - নিশ্চিত করুন যে আপনি সম্পর্কিত চিত্র বা শিরোলেখ মুছবেন না।

সুপারিশ

আমার সুপারিশটি সর্বশেষতম সহ কমপক্ষে দু'টি বা বেশি বেশি তিনটি কার্নেল রাখার জন্য। সুপারিশের কারণ হ'ল কমপক্ষে একটি / দু'জন কার্নেল বুট করার জন্য আপনার যদি প্রয়োজন হয় তবে যদি সর্বশেষতম কার্নেলের সাহায্যে আপনি বুট করতে পারবেন না বা ভাঙ্গা ওয়্যারলেস যেমন একটি রিসেপড সক্ষমতার পরিচয় দিতে পারেন।


3
পুরানো "লিনাক্স-চিত্র *" প্যাকেজগুলি সিনাপটিক ব্যবহার করে অপসারণ করা 10.04 এর সাথেও খুব ভাল কাজ করেছে। (আমি এটি উল্লেখ করেছি কারণ শিরোনাম প্রস্তাব দেয় এটি কেবল ১১.১০ এবং তার বেশি হতে পারে)
mivk

4
লাইনের -yশেষে থাকা স্যুইচটি apt-getপ্রয়োজনীয়, অন্যথায় অ্যাপ্লিকেশনটি কেবল নিশ্চিতকরণের জন্য জিজ্ঞাসা করে এবং ইনপুটটি যেহেতু পাইপ, তাই এটি কেবল বাতিল হয়ে যায়। সুতরাং এটি শেষ হওয়া উচিত:| xargs sudo apt-get purge -y
জোশ

37
আমার মেশিনে প্রায় 20 টি পুরানো সংস্করণ linux-imageএবং linux-headers4.5 গিগাবাইট স্থান মুক্ত করা হচ্ছে।
অ্যান্ড্রু মাও

16
এই পদ্ধতিটি ভালভাবে কাজ করে তবে প্রতিটি কার্নেল মোছার ফলে অতিরিক্তভাবে grub.cfg পুনরায় জেনারেট হয়, যা সময় নেয়। ব্যাচ মুছে ফেলার জন্য এটি নিষ্ক্রিয় করার কোনও উপায় আছে কি না, তবে একবার এটি পুনরায় তৈরি করা যায়?
স্পেসডিভার

15
@ স্পেসিডিভার থেকে আমি প্রশ্নটি দ্বিতীয় করে দিয়েছি - এটি যখন আপনার 38 টি অপরিশোধিত কার্নেল রয়েছে তখন এটি একটি পাগল-ধীর প্রক্রিয়া, যেহেতু প্রত্যেকটি আনইনস্টল না করে এটি একটি নতুন গ্রাব.সি.পি.জি. তৈরির সময় বাকি সমস্তগুলির মধ্য দিয়ে যায়। এটিকে আমরা একটি এন ^ 2 অপারেশন বলি - এটি একটি কার্নেলটি প্রায় (38 ^ 2/2) = 722 বার প্রসেস করে এবং এটি খুব ধীর গতির হয়। নিশ্চয় উবুন্টু আরও ভাল কিছু নিয়ে আসতে পারেন ....
nealmcb

384

প্রথমে আপনার সিস্টেমটি সর্বশেষতম কার্নেলটি ব্যবহার করছে তা নিশ্চিত হয়ে পুনরায় বুট করুন। তারপরে টার্মিনালটি খুলুন এবং আপনার বর্তমান কার্নেলটি পরীক্ষা করুন:

uname -r 

এই কার্নেলটি সরান না!

এর পরে, আপনার সিস্টেমে ইনস্টল করা সমস্ত কার্নেলগুলি দেখতে / তালিকা করতে নীচের কমান্ডটি টাইপ করুন।

dpkg --list 'linux-image-*'

আপনার বর্তমান কার্নেলের চেয়ে নীচে থাকা সমস্ত কার্নেলগুলি সন্ধান করুন। আপনি যখন জানেন যে কোন কার্নেলটি অপসারণ করতে হবে, এটি সরাতে নীচে চালিয়ে যান। আপনার নির্বাচিত কার্নেলটি অপসারণ করতে নীচের কমান্ডগুলি চালান।

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

অবশেষে, grub2 আপডেট করার জন্য নীচের কমান্ডগুলি চালান

sudo update-grub2 

আপনার সিস্টেমটি পুনরায় বুট করুন।


34
এটি 10.04 এবং 12.04-এ করার সময়, আমি খুঁজে পেলাম আপডেট-গ্রাব শুদ্ধ প্রক্রিয়া চলাকালীন স্বয়ংক্রিয়ভাবে চালিত হয়েছিল।
এইডান

93
ব্যাশ এর বক্রবন্ধনী সম্প্রসারণ ব্যবহৃত হতে পারে যেমন sudo apt-get purge linux-image-3.2.0-3{0..5}-generic(সরিয়ে ফেলা হবে 30,31, .., 35)
Ajo

12
পরে সিস্টেমটি পুনরায় বুট করার দরকার নেই। প্রকৃতপক্ষে, এই পদক্ষেপগুলি সম্পাদন করার আগে আপনার সিস্টেমটি পুনরায় বুট করা উচিত , আপনি সম্ভবত সর্বাধিক ডাউনলোড এবং ইনস্টল হওয়া সর্বশেষতম কার্নেল সংস্করণটি ব্যবহার করছেন তা নিশ্চিত করার জন্য (এটির আগে আপনি একটি অ্যাপ-গেট আপডেট && এপটি-আপ আপগ্রেড করেছেন, ঠিক ??)
রিকিট

4
আপনি linux-signed-imageইউইএফআই সিস্টেমগুলিতে ইনস্টল করা প্যাকেজগুলি আনইনস্টল করতেও পারেন : sudo apt-get purge linux-signed-image-3.11.0-{12,14,24}-genericযা 12, 14 এবং 24
ডিভাস

1
@ জার্নো আমি জানি না আমি স্বাক্ষরিত কার্নেলটি ব্যবহার করছি কিনা, তবে আমার সিস্টেমে uname -rকোনও signedস্ট্রিং নেই। আমি একটি স্বাক্ষরিত ইমেজ ইনস্টল এবং যে আউটপুট আছে বলে মনে হচ্ছে না lsকমান্ড: /boot/vmlinuz-3.19.0-16-generic.efi.signed
ডিভাইস

283

পুরানো কার্নেলগুলি অপসারণ করার জন্য আমার ওয়ান-লাইনার (এটি ডিস্কের স্থানও মুক্ত করে)

dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs sudo apt-get -y purge

ব্যাখ্যা (মনে রাখবেন, |পূর্ববর্তী কমান্ডের আউটপুটটিকে পরবর্তীটির ইনপুট হিসাবে ব্যবহার করে)

  • dpkg --list সমস্ত ইনস্টল প্যাকেজ তালিকাভুক্ত
  • grep linux-image ইনস্টল লিনাক্স ইমেজ সন্ধান করে
  • awk '{ print $2 }' মাত্র ২ য় কলাম (যা প্যাকেজের নাম) আউটপুট করে
  • sort -V আইটেমগুলি সংস্করণ সংখ্যা অনুসারে রাখে
  • sed -n '/'`uname -r`'/q;p' বর্তমান কার্নেলের আগে লাইনগুলি মুদ্রণ করে
  • xargs sudo apt-get -y purge পাওয়া কার্নেলগুলি শুদ্ধ করে

অনুরোধটি মুক্ত করা হচ্ছে না sed:

  • -nsedচুপ থাকতে বলে
  • `uname -r` বর্তমান ইনস্টল করা কার্নেল রিলিজ আউটপুট করে - এটি ব্যাকটিক্সে অন্তর্ভুক্ত করি যাতে কমান্ডের অংশ হিসাবে আউটপুট অন্তর্ভুক্ত হয় (আপনি এটি এটিকে দেখতেও পারেন) $(uname -r)
  • /something/qযখন আপনি 'কিছু' মেলে তখন থামুন বলে (এই ক্ষেত্রে, কোনও uname -rকিছুর আউটপুট ) - /একটি নিয়মিত প্রকাশকে ঘিরে
  • p প্রিন্ট হয়
  • ;কমান্ড separtor, তাই /something/q;pবলে যখন আপনি অন্য কিছু প্রিন্ট মেলে প্রস্থান

সামগ্রিকভাবে, sed -n '/'`uname -r`'/q;p'বর্তমান কার্নেলের নামের সাথে মিল না হওয়া পর্যন্ত লাইনগুলি মুদ্রণ করা হয়।

যদি আপনি প্যারানয়েড হন (আমার মতো) তবে আপনি শেষ অংশটি তৈরি করতে পারেন xargs echo sudo apt-get -y purgeযাতে পুরানো কার্নেলগুলি পরিষ্কার করার আদেশটি মুদ্রিত হয়, তবে আপনি এটি চালানোর আগে কোনও অপ্রত্যাশিত কিছুই অন্তর্ভুক্ত নেই তা পরীক্ষা করতে পারেন।


শিরোনামগুলি সরানোর জন্য সংশোধিত সংস্করণ:

dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo apt-get -y purge

দ্রষ্টব্য: sedঅনুরোধটি পরিবর্তিত হয়েছে। "$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")""জেনারিক" বা এর অনুরূপ ব্যতীত কেবল সংস্করণ (যেমন "3.2.0-44") বের করেuname -r


চিত্র এবং শিরোলেখগুলি অপসারণ করতে অল-ইন-ওয়ান সংস্করণ (উপরের দুটি সংস্করণকে একত্রিত করে):

echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs sudo apt-get -y purge

1
মনে রাখবেন যে বর্তমান কার্নেল সংস্করণটির সাথে নিয়মিত প্রকাশ হিসাবে এটি মিলানো কিছুটা বিপজ্জনক: বিন্দুগুলি কোনও চরিত্রের সাথে মেলে এবং ৩.১.২-২৩ ম্যাচগুলি ৩.১.২-২ (অথবা এটি অন্যভাবে হয়)। আমার উত্তরটিও দেখুন
জার্নো

19
এখানে একটি সুরযুক্ত সমস্ত-ইন-ওয়ান সংস্করণ: sudo apt-get purge $(for tag in "linux-image" "linux-headers"; do dpkg-query -W -f'${Package}\n' "$tag-[0-9]*.[0-9]*.[0-9]*" | sort -V | awk 'index($0,c){exit} //' c=$(uname -r | cut -d- -f1,2); done)আমার উত্তরটিও দেখুন
জার্নো

1
@ জার্নো যা আমাকে খুব প্রসারিত করতে সহায়তা করেছে ... আপনার এক লাইনের কাছে কুডোস
ক্লেইন ডিসিলভা

5
আনমেট নির্ভরতার কারণে আমার এর dkpg -Pপরিবর্তে এটি ব্যবহার করা দরকার । এখানে সম্পূর্ণ সংস্করণটি রয়েছে:dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs sudo dpkg -P
সেবাস্তিয়ান সাস্ট্রে

3
এটি করবেন না! "এই অনন্যকারীটি কিছুটা বিপজ্জনক বলে মনে হচ্ছে, তবে অবশ্যই 220 জন প্রচারক ভুল হতে পারে না!" আমি নিজেই ভাবলাম এবং অন্ধভাবে অনুলিপি করলাম। পুনরায় বুট করা হয়েছে, সরাসরি GRUB এ। এই কমান্ডটি আমি ব্যবহার করছি এমন একটি সহ আমার সমস্ত কার্নেলগুলি মুছে ফেলে। সম্ভবত আমি একটি রিয়েলটাইম কার্নেল চালাচ্ছিলাম, এমনকি মনে করতেও পারছি না। উবুন্টু লাইভ সিডি ইনস্টল করার জন্য বর্তমানে ইউএসবি স্টিকের জন্য আমার বাড়ির আশেপাশে খুঁজছেন :(
অ্যান্ড্রেস জ্যানসন

60

উবুন্টু 16.04+:

$ sudo apt autoremove
...
The following packages will be REMOVED:
  linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic linux-tools-4.4.0-57 linux-tools-4.4.0-57-generic

উবুন্টু 15.10 এবং নীচে:

আমি এটি সবচেয়ে সহজ এবং দ্রুততম উপায় বলে মনে করি। এটি সর্বশেষতম কার্নেল পাশাপাশি দুটি আরও রাখে:

sudo apt-get install bikeshed
sudo purge-old-kernels

রাখা অতিরিক্ত কার্নেলের সংখ্যা পরিবর্তন করতে:

sudo purge-old-kernels --keep 3

1
এই কমান্ডটি একটি শেল স্ক্রিপ্ট, এর অবস্থান যা আপনি সন্ধান করতে পারেন which purge-old-kernels
জার্নো

খুশি তারা 16.04 এ এটিকে অনেক সহজ করে দিয়েছে! আশা করি এই উত্তরটি এগিয়ে
টবি জে

উবুন্টুতে ১4.০৪-এ আমার কাছে purge-old-kernelsবাইকশেড ( এলোমেলো দরকারী সরঞ্জাম যার কাছে স্থায়ী বাড়ি নেই ) প্যাকেজ বা কোনও নির্দিষ্ট একটি নেই option apt-get -yবিকল্পটি ব্যবহার করে চোখ বন্ধ করা এবং সবকিছু ঠিকঠাক হবে আশা করার মতো। এছাড়াও এখানে কিভাবে এটা autoremove সিদ্ধান্ত নেয় কত পুরাতন কার্নেলের রাখা।
পাবলো এ

2
১.0.০৪ সালে পুরো-পুরাতন-কার্নেলগুলি বাইবো প্যাকেজ (ইঙ্গিত apt-file search purge-old-kernels:) সরবরাহ করে। রাজি apt-get -yহয়েছি, আমি এটি সরিয়ে ফেলব।
bmaupin

1
@ ড্যান যেহেতু আমি নন-এলটিএস সংস্করণ ব্যবহার করি না ঠিক কখন এটি শুরু হয়েছিল তা আমি নিশ্চিত ছিলাম না। তবে আমি নিশ্চিতভাবে বলতে পারি যে sudo apt-get autoremove14.04-এ কার্নেলগুলি সরিয়ে নেই। নির্দিষ্ট সংস্করণ সহ উত্তর আপডেট করতে নির্দ্বিধায় যদি আপনি জানেন তবে এটি কী!
bmaupin

43

গ্রুব 2 এন্ট্রি সরিয়ে ফেলা /etc/grub.d ফোল্ডারে ফাইলগুলি সম্পাদনা করে বা মুছে ফেলা উচিত। /Boot/grub/grub.cfg ফাইলটি কেবল পঠনযোগ্য এবং সাধারণত সম্পাদনার প্রয়োজন হয় না।

অনেকগুলি কার্নেল?

  • আপনি বর্তমানে যে কার্নেলটি ব্যবহার করছেন সে সম্পর্কে যদি আপনি নিশ্চিত না হন তবে একটি টার্মিনালটিতে আনম-র টাইপ করুন ।

  • এপিটি (সিনাপটিক, "অ্যাপট-গেট রিমুভ" ইত্যাদি) দ্বারা সরানো কার্নেলগুলি স্বয়ংক্রিয়ভাবে grub.cfg আপডেট করবে এবং কোনও ব্যবহারকারীর ক্রিয়া প্রয়োজন নেই।

  • কার্নেলগুলি অপসারণের একটি দুর্দান্ত সরঞ্জাম (এবং মেনু এন্ট্রি) হ'ল উবুন্টু-টুইক, একটি নিরাপদ এবং সহজেই ব্যবহারযোগ্য জিইউআই অ্যাপ্লিকেশন।

  • উবুন্টু টুইটটি ইনস্টল করুন

  • উবুন্টু-টুইটক অ্যাপ্লিকেশন> সিস্টেম সরঞ্জামের আওতায় পাওয়া যাবে।

পুরানো কার্নেল এন্ট্রিগুলি সরান

  • বামদিকে "প্যাকেজ ক্লিনার" এবং ডান প্যানেল থেকে "ক্লিন কার্নেল" নির্বাচন করুন।

  • নীচের ডানদিকে "আনলক" বোতাম টিপুন, আপনার পাসওয়ার্ড লিখুন।

  • আপনি মুছে ফেলতে চান কার্নেল চিত্র এবং শিরোনাম প্রদর্শিত তালিকা থেকে নির্বাচন করুন। ব্যবহৃত কার্নেলটি তালিকাভুক্ত নয়।

  • নির্বাচিত কার্নেল চিত্র এবং শিরোনামগুলি সরাতে নীচের ডানদিকে "ক্লিনআপ" বোতাম টিপুন।

গ্রাব মেনু থেকে অপারেটিং সিস্টেমগুলি সরান

  • কম্পিউটার থেকে অপসারণ করা অন্যান্য অপারেটিং সিস্টেমগুলি একবার "আপডেট-গ্রাব" রুট হিসাবে চালানো হলে মেনু থেকে সরানো হবে।

  • স্ক্রিপ্টগুলির মাধ্যমে মেনু আইটেমগুলি গ্রুব 2 মেনুতে রাখা হয়। আপনি যদি মেনুতে অন্যান্য অপারেটিং সিস্টেম প্রবেশ করতে না চান তবে /etc/grub.d/30_osprober অক্ষম করুন

  • স্ক্রিপ্টটি চলমান থেকে থামাতে এই কমান্ডটি চালান
    sudo chmod -x /etc/grub.d/30_os-prober

  • DISABLE_30_OS-PROBER = 'সত্য' ইন / ইত্যাদি / ডিফল্ট / গ্রাব

গ্রাব মেনু থেকে মেমেস্টেস্ট 86 + সরান
sudo chmod -x /etc/grub.d/20_memtest86+

  • পরিবর্তনগুলি grub.cfg- এ অন্তর্ভুক্ত করার জন্য আপডেট-গ্রাব কমান্ডটি চালান

উৎস

দ্রষ্টব্য: কার্নেল আপডেট হওয়ার পরে GRUB মেনুতে একটি নতুন এন্ট্রি যুক্ত করা হয়েছে you আপনি চাইলে পুরানোটি মুছে ফেলতে পারেন ow তবে, বেশিরভাগ অভিজ্ঞ ব্যবহারকারীরা আপনাকে আপগ্রেডে কিছু ভুল হলে কমপক্ষে একটি অতিরিক্ত প্রবেশ রাখতে পরামর্শ দেবেন এবং আপনি সমস্যা সমাধানের উদ্দেশ্যে পুরানো কার্নেল সংস্করণ বুট করা দরকার।

কার্নেল এন্ট্রিগুলি সরানোর বিকল্প উপায় (10.04 এর পূর্বে)

GRUB এর জন্য GRUB2 নয়

প্রারম্ভিক পরিচালক স্টার্টআপম্যানার ইনস্টল করুন

আপনি এটি সিস্টেম >> প্রশাসন >> এর অধীনে খুঁজে পেতে পারেন >> বিকল্প পাঠ
বিকল্প পাঠ
আপনি দ্বিতীয় স্ক্রিনশটে দেখতে পাবেন যে আপনি কতগুলি কার্নেল প্রদর্শন করবেন তা নির্বাচন করতে পারেন? আমি সাধারণত এটি 1 এ রাখি, তবে যখন আমি কার্নেল আপগ্রেড পাই তখন আমি পুনরায় চালু করার আগে সর্বদা এটি 2 এ পরিবর্তন করে রাখি যাতে নতুন কার্নেলটিতে যদি আমার হার্ডওয়্যারে সমস্যা হয় তবে আমি পুরানো কার্নেলটি নির্বাচন করতে পারি। আমি যখন জানলাম নতুন কার্নেলটি ভালভাবে কাজ করছে তখন আমি এটিকে আবার 1 এ পরিবর্তন করি।


2
প্রকৃতপক্ষে, স্টার্টআপ ম্যানেজারটি আমাকে উবুন্টু 10.04 এ এর ​​মতো একটি উইন্ডো দেয়, পরিবর্তে এটি কেবল দুটি ট্যাব -> বুট বিকল্প এবং অ্যাডভান্সড .. সহ একটি উইন্ডো দিয়েছে এবং অগ্রণীতে এটিতে কার্নেলের সংখ্যা সীমিত করার বিকল্প রয়েছে। সুতরাং দয়া করে উবুন্টু 10.04-র উত্তর আপডেট করুন ((এবং কেন এটি আমি নীচে ভোট দিয়েছি ..)
সেন

কোনও ধারণাই কীভাবে "রাখার মতো কার্নেলগুলির সংখ্যা" এমন কোনও মেশিনে সংজ্ঞায়িত করা যায় যা কোনও জিইআইআই ইনস্টলড (সার্ভার) নেই?
sylvainulg

স্টার্টআপম্যানার পুরানো। দেখুন Grup-customizer
muhasturk

39

খাঁটি কমান্ডলাইন, এটি বর্তমান এবং দ্বিতীয় সর্বাধিক বর্তমান (নীচের প্রধান কমান্ডের "-2" এর মাধ্যমে) বাদ দিবে:

OLD=$(ls -tr /boot/vmlinuz-* | head -n -2 | cut -d- -f2- |
    awk '{print "linux-image-" $0 " linux-headers-" $0}' )
if [ -n "$OLD" ]; then
    apt-get -qy remove --purge $OLD
fi
apt-get -qy autoremove --purge

9
সেখান থেকে ওয়ান-লাইনার :dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e `uname -r | cut -f1,2 -d"-"` | grep -e [0-9] | xargs sudo apt-get -y purge
দিমিত্রি ভারখোটুরভ

@ দিমিত্রিপাসকল, আপনার এটি একটি নতুন উত্তর হিসাবে যুক্ত করা উচিত।
saji89

10
@ দিমিত্রিপস্কাল সর্বদা হিসাবে, এগুলি না বুঝে কেবল কপি-পেস্ট করবেন না। আমার মেশিনে এই ওয়ান-লাইনারটিও মেলে linux-libc-dev:amd64যা অপসারণ করা উচিত নয়।
jamesadney

1
@ কিস কুক, অজস্র যুক্তিটি কি কেবল একক-কোটকে ঘিরে থাকা উচিত নয়? যদি আপনার উদ্দেশ্যটি পাইপযুক্ত রেখাগুলিতে "লিনাক্স-চিত্র-" প্রিপেন্ড করা হয় তবে আপনি যদি এটি ব্যবহার করেন তবে এটি কেবল কাজ করবে বলে মনে হচ্ছে awk '{print "linux-image-" $0}'
চিহ্নিত করুন

এটি আমার পক্ষে কাজ করে না, এতে আমার কাস্টম ইনস্টল করা কার্নেল রয়েছে (উবুন্টু 14.04 সহ 3.17)
অ্যালেক্স আর

35

আপডেট করুন: purge-old-kernelsহয় অবচিত আজকাল।

আমি জটিল পরিস্থিতিতে এমনকি কার্নেলগুলি পরিষ্কার করার জন্য একটি স্ক্রিপ্ট তৈরি করেছি। এটি বলা হয় linux-purgeএবং আপনি এটি এখানে খুঁজে পেতে পারেন ।

সিস্টেমটি ভাঙ্গা না থাকলে আপনি যদি বর্তমানে ব্যবহৃত কর্নেলের চেয়ে পুরানো কার্নেলগুলি (এবং সম্পর্কিত প্যাকেজগুলি) মুছতে চান তবে আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন ।

এখানে একটি ওবুন্টু ডকুমেন্টেশন পৃষ্ঠাও রয়েছে যা আমি এখানে পুরানো কার্নেলগুলি সরিয়ে দেওয়ার বিষয়ে অবদান রেখেছি ।


দেখে মনে হচ্ছে purge-old-kernelsবাইকশেডের সুনির্দিষ্ট সংস্করণে (1.22) নেই। সুনির্দিষ্ট জন্য আরও সাম্প্রতিক বাইকশেড পাওয়ার কি কোনও যুক্তিসঙ্গত / নিরাপদ উপায় আছে? অথবা কেবল স্ক্রিপ্টটি ইনস্টল করা সহজ / নিরাপদ হবে? নির্ভরতার দীর্ঘ তালিকা থাকা সত্ত্বেও আমি একটি রেপো ব্যবহার করতে পছন্দ করতাম ..
ড্রেভিকো

1
@ ড্রেভিকো এখানে দেখুন ।
জার্নো

1
@ ড্রেভিকো, নিশ্চিত,dlocate -lsbin bikeshed
জার্নো

1
@ ড্রেভিকো, আরও একটি প্রশ্ন দেখুন
জার্নো

1
@ ক্রিসডাব্লু হ্যাঁ আছে আমি স্ক্রিপ্টে কেবলমাত্র একটি ছোট উন্নতি করেছি, তাই সর্বশেষতম সংস্করণটি ব্যবহার করা ভাল।
জার্নো

29

আপনি অনুসরণ করতে পারেন "সঙ্গিহীন-আপগ্রেড" প্যাকেজ অধ্যায় ব্যবহার এর স্বয়ংক্রিয় নিরাপত্তা সংক্রান্ত আপডেট এই সম্পাদন করতে উবুন্টু উইকি নিবন্ধ।

আপনাকে নিম্নলিখিত রেখাটি /etc/apt/apt.conf.d/50unattended-upgrades ফাইলে পরিবর্তন করতে হবে;

//Unattended-Upgrade::Remove-Unused-Dependencies "false";

সঙ্গে

Unattended-Upgrade::Remove-Unused-Dependencies "true";

কার্নেল সহ পুরানো প্যাকেজগুলি স্বয়ংক্রিয়ভাবে অপসারণ করতে।

লাইনটি মুছে ফেলুন বা মন্তব্য করুন

"^linux-image.*"; 

/etc/apt/apt.conf.d/01autoremove ফাইলের "নেভারআউটআউটমোভ" বিভাগে


2
আমি এটি করেছি তবে এটি এখনও 100+ এমবি ব্যবহার করে 3+ পুরানো কার্নেল সংগ্রহ করছে। সুতরাং আমি apt-get autoremoveআমার দৈনিক ক্রোন জবটিতে যুক্ত করেছি যা আসলে আপগ্রেডগুলি করে, কারণ এটি সর্বদা অন্তর্নির্মিত আপডেট-ম্যানেজারের মধ্য দিয়ে যায় না।
মার্কোস

আমি মনে করি এটি কেবলমাত্র স্বয়ংক্রিয়ভাবে ইনস্টল হওয়া কার্নেলগুলির জন্য ট্রাস্টিতে কাজ করে।
জার্নো

স্বয়ংক্রিয়ভাবে প্যাকেজগুলি আপগ্রেড করার সময় পুরানো কার্নেলগুলি তৈরির রোধ করতে এটি দুর্দান্ত rad তবে আপনি যদি রিবুট না করেন তবে আপনি দেখতে পাচ্ছেন যে বর্তমানে চলমান কার্নেলের জন্য প্যাকেজটি আনইনস্টল করা হয়েছে! এটির কারণ হতে পারে: আপনি যে নতুন ডিভাইসগুলি প্লাগ ইন করেন সেগুলি নাও কার্যকর হতে পারে কারণ তাদের জন্য মডিউলটি হট-লোড হতে পারে না কারণ এটি আপনার ডিস্কে আর নেই। (এর দ্রুত সমাধান হ'ল কেবল কার্নেল প্যাকেজটি আবার ইনস্টল করা এবং তারপরে ডিভাইসটি প্লাগ-ইন করে প্লাগ করা))
জোয়েটউইডল

আমি পূর্বোক্ত সমস্যাটির একটি স্বয়ংক্রিয় সমাধান তৈরি করেছি । আপনি যদি মনে করেন এটি একটি ভাল পদ্ধতি, তবে এটিকে কিওয়ার্টির উত্তরের সাথে নির্দ্বিধায় যোগ করুন।
জোয়েটউইডল

27

দ্রুততম / সহজ উপায় (প্রযোজ্য অন্তত যেহেতু 12.04) সম্ভব ইতিমধ্যে উবুন্টু সঙ্গে আসে apt-get। নিম্নলিখিতটি ব্যবহার করুন যদি আপনি ব্যবহার না করা সমস্ত পুরানো কার্নেল সংস্করণগুলি মুছে ফেলতে চান (আপনি যে ব্যবহার করছেন না তার পূর্ববর্তীটি ব্যতীত This বর্তমান কার্নেল সংস্করণটি যদি কোনওভাবে ব্যর্থ হয় তবে আপনার যাওয়ার উপায় আছে পূর্ববর্তী অবস্থায় ফিরে আসুন)। নিম্নলিখিতগুলি করুন:

sudo apt-get autoclean

এটি আপনার যে কোনও পুরানো ফাইল (কার্নেল সংস্করণ সহ) মুছে ফেলবে। মনে রাখবেন যে আপনার যদি অনেক পুরানো সংস্করণ থাকে তবে এটি কিছুক্ষণ সময় নেবে যেহেতু এটি নিশ্চিত করতে হবে যে কার্নেল সংস্করণ অপসারণে কোনও সমস্যা নেই। আমার জন্য, শেষ 12 কার্নেল সংস্করণগুলি সরাতে প্রায় 2 মিনিট সময় লেগেছে। আপনি নিম্নলিখিতগুলি করতে পারেন:

sudo apt-get clean

যা অ্যাপ্টির ক্যাশে ফোল্ডারে ডাউনলোড এবং সঞ্চিত সমস্ত কিছুকে দূর করবে। শেষ পর্যন্ত আপনার কাছে:

sudo apt-get autoremove

যা কোনও অব্যবহৃত প্যাকেজগুলির জন্য পরীক্ষা করে এবং প্রয়োজনে সেগুলি সরিয়ে ফেলবে। এটি সেই লাইব্রেরি এবং নির্ভরতা প্যাকেজগুলির জন্য দুর্দান্ত যা কোনও অ্যাপ্লিকেশন ইনস্টল করে বাইটের দরকার নেই।


1
আমি মনে করি এটি 14.04-র হিসাবে নতুন রিলিজে পরিবর্তিত হয়েছে এটি কেবল প্যাকেজ ক্যাশে সাফ করে এবং ইনস্টল করা প্যাকেজগুলি বা গ্রাবকে প্রভাবিত করে না।
জার্নো

2
আমি নিশ্চিত করতে পারি যে sudo apt-get autoremove14.04-এ পুরানো (একাধিক সংস্করণ আগে) কার্নেলগুলি মুছে ফেলা হয়েছে। আপনার কার্নেলটি আপগ্রেড করার আগে এবং পরে এটি চালাতে হতে পারে। যখন আমি আপগ্রেড করার আগে দৌড়েছি, এটি কেবলমাত্র পুরানো কার্নেলের জেনেরিক সংস্করণটি সরিয়ে দিয়েছে। তারপরে, আমার কার্নেলটি আপগ্রেড করার পরে এটি পুরানো কার্নেলের নিম্নচিকিত্সার সংস্করণটিও সরিয়ে ফেলল।
টেকনোহর

আমি হুকুম বুঝিয়েছি sudo apt-get autoclean। @ টেকনোরাহ আমি কয়েকটি পুরানো কার্নেল ইনস্টল করেছি এবং তারপরে sudo apt-get autoremoveউবুন্টু স্টুডিওতে 14.04 এ চলেছি। এটি কোনও কার্নেল সরিয়ে দেয়নি। আমি কেবলমাত্র স্বল্প কার্নেলগুলি ইনস্টল করেছি। আপনি উভয়-জেনেরিক এবং-লভেন্তি কার্নেল ইনস্টল করেছেন কেন?
জার্নো

5
হ্যাঁ, এটি আমার জন্য খুব সুন্দরভাবে কাজ করেছে, সমস্ত পুরানো কার্নেলগুলি সঠিকভাবে পরিষ্কার করেছে এবং পাগল এক-লাইন স্ক্রিপ্টগুলিতে নির্ভর করে না! প্রস্তাবিত, আশা করি আমি একাধিকবার এটি উত্সাহ দিতে পারতাম!
জেফ

1
@ জেফএটউড ভাল, এটি নিরাপদ যে আরও কার্নেলগুলি সরিয়ে ফেলতে পারে। বাগের প্রতিবেদনটি

25

10.04 জিইউআই পদ্ধতি

কম্পিউটার জেনেটর পুরানো কার্নেলগুলি পরিষ্কার করতে পারে এবং আমি বিশ্বাস করি উবুন্টুতে ডিফল্টরূপে ইনস্টল করা আছে (তবে কুবুন্টু নয়)।

GRUB 1, যদি আপনি এটি ব্যবহার করে থাকেন তবে /boot/grub/menu.lstসর্বোচ্চ কতটি কার্নেল প্রদর্শন করা উচিত তা নির্দিষ্ট করার জন্য একটি বিকল্প রয়েছে । GRUB 2, যতদূর আমি বলতে পারি, না।


4
কম্পিউটার জেনিটর ব্যবহার করা উচিত নয় - এটি বগি এবং এখন ন্যাটি / ওনারিক / সুনির্দিষ্টভাবে ডিফল্ট অ্যাপ্লিকেশন হিসাবে বাদ দেওয়া হয়েছে।
ফসফ্রিডম

2
পরিবর্তে, "উবুন্টু টুইক" ইনস্টল করুন অন্য একটি উত্তরে বর্ণিত (এটির নিজস্ব পিপিএ), যার নিজস্ব "কম্পিউটার দরজা" রয়েছে (অস্থায়ীভাবে পুরানো উবুন্টু সংস্করণগুলিতে উপলব্ধ ছিল "কম্পিউটার জ্যানিটর" দিয়ে বিভ্রান্ত হবেন না)
মাইকেল

25

কী কার্নেল এবং শিরোনাম ইনস্টল করা হয় তা নির্ধারণ করতে

dpkg -l | grep linux-image

dpkg -l | grep linux-headers

তারপরে আপনি এগুলি একে একে মুছে ফেলতে পারবেন বা একসাথে করতে পারেন, সর্বাধিক সাম্প্রতিক রাখার বিষয়টি নিশ্চিত করুন।

অপসারণটি স্বয়ংক্রিয় করার জন্য কয়েকটি হ্যান্ডি কমান্ড এবং স্ক্রিপ্ট রয়েছে।

http://ubuntuforums.org/showthread.php?t=1658648

নিম্নলিখিত সমস্ত অব্যবহৃত কার্নেল এবং শিরোনামগুলি মুছে ফেলার দাবি করেছে:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | grep -v hwe | xargs sudo apt-get purge

( apt-get -yপ্রশ্ন ছাড়াই অপসারণ ব্যবহার করুন )

18.04.1 এ রান করার পরে যা ঘটে তা এখানে:

~$ dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]

\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'|grep -E "(image|headers|modules)" | xargs sudo apt-get -y purge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.15.0-33* linux-headers-4.15.0-33-generic* linux-headers-4.15.0-34* linux-headers-4.15.0-34-generic* linux-image-4.15.0-33-generic* linux-image-4.15.0-34-generic*
  linux-modules-4.15.0-33-generic* linux-modules-4.15.0-34-generic* linux-modules-extra-4.15.0-33-generic* linux-modules-extra-4.15.0-34-generic*
0 upgraded, 0 newly installed, 10 to remove and 1 not upgraded.
After this operation, 671 MB disk space will be freed.
(Reading database ... 227403 files and directories currently installed.)
Removing linux-headers-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-headers-4.15.0-33 (4.15.0-33.36) ...
Removing linux-headers-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-headers-4.15.0-34 (4.15.0-34.37) ...
Removing linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-image-4.15.0-33-generic (4.15.0-33.36) ...
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-33-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Found linux image: /boot/vmlinuz-4.15.0-34-generic
Found initrd image: /boot/initrd.img-4.15.0-34-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Removing linux-image-4.15.0-34-generic (4.15.0-34.37) ...
I: /vmlinuz.old is now a symlink to boot/vmlinuz-4.15.0-36-generic
I: /initrd.img.old is now a symlink to boot/initrd.img-4.15.0-36-generic
/etc/kernel/postrm.d/initramfs-tools:
update-initramfs: Deleting /boot/initrd.img-4.15.0-34-generic
/etc/kernel/postrm.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-36-generic
Found initrd image: /boot/initrd.img-4.15.0-36-generic
Adding boot menu entry for EFI firmware configuration
done
Removing linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
Removing linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
(Reading database ... 156180 files and directories currently installed.)
Purging configuration files for linux-image-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-4.15.0-33-generic (4.15.0-33.36) ...
dpkg: warning: while removing linux-modules-4.15.0-33-generic, directory '/lib/modules/4.15.0-33-generic' not empty so not removed
Purging configuration files for linux-modules-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-image-4.15.0-33-generic (4.15.0-33.36) ...
Purging configuration files for linux-modules-extra-4.15.0-34-generic (4.15.0-34.37) ...
Purging configuration files for linux-modules-extra-4.15.0-33-generic (4.15.0-33.36) ...
~$ uname -r
4.15.0-36-generic

ফোরামে আপনি যে স্ক্রিপ্টটি পেয়েছেন তা ত্রুটিযুক্ত। এটি কিছু পছন্দসই শিরোলেখ প্যাকেজটি সরিয়ে ফেলতে পারে না (যদি আপনি কিছু পুরানো পি-কার্নেল ব্যবহার করেন) এবং অন্যদিকে এটি আপনার রাখতে চান এমন কিছু প্যাকেজ (গুলি) সরিয়ে ফেলতে পারে।
জার্নো

মন্তব্য করার জন্য আপনাকে ধন্যবাদ. স্ক্রিপ্টটি নিখুঁত নাও হতে পারে, তবে আমি বছরের পর বছর ধরে এটি ব্যবহার করে চলেছি, মূলত 12.04 এবং 14.04, 32 এবং 64 বিটগুলিতে, এবং কোনও সমস্যা হয়নি। ... এবং হ্যাঁ, linux-libc-devইনস্টল করা আছে।
মাইকওয়েজ যা কিছু

আমি মনে করি ভার্সনের সংখ্যাটি linux-libc-devমিলিয়ে ভার্শনাল নম্বরটি বর্তমান কার্নেলের সাথে মিলবে। এখানে dpkg -l linux-libc-dev | sed '/^ii/!d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'লিনাক্স-লিবিসি-ডেভ:
এমডি

আমি এখনও আপনার অনুসন্ধানগুলি পুনরুত্পাদন করতে পারি না, তবে নিরাপদ দিকে থাকতে, আমি অতিরিক্ত ফিল্টার যুক্ত করে কমান্ডটি সংশোধন করেছি - grep -E "(image|headers)"
মাইকেউ যাই হ'ল

1
প্রথমে শুদ্ধি দিয়ে -yপতাকা চেষ্টা করে দেখুন ..!
বিপদ 89

16

পুরানো লিনাক্স চিত্রের কার্নেলগুলি অপসারণ করতে, আপনার যে কার্নেল রাখতে চান তার মধ্যে প্রথমে বুট করুন।

আপনি কমান্ডটি ব্যবহার করে কার্নেল সংস্করণটিও পরীক্ষা করতে পারেন uname -rযাতে আপনি ভুলটিকে ভুল দ্বারা মুছে ফেলেন না।

এখন সিনাপটিক প্যাকেজ ম্যানেজারে যান এবং linux-imageউপরের কমান্ডের পরিবর্তে পুরানো সংস্করণগুলি সন্ধান এবং সরিয়ে ফেলুন। সাধারণত আমি সর্বশেষতমের সাথে যেতে পছন্দ করি।

এখন যখন আপনি পুনরায় চালু করবেন আপনি আরও পরিষ্কার ক্লাব মেনু দেখতে পাবেন।


সম্ভবত এটি সবচেয়ে বেসিক পদ্ধতি যা ব্যবহারকারীরা ডাব্লু / ও কম্পিউটার জেনেটর ইনস্টল করেছেন তাদের জন্য will
ব্রোম

1
উবুন্টু ১১.০৪ থেকে গ্রাব মেনু কেবল ডিফল্টরূপে বর্তমান কার্নেলটি দেখায়, পুরানো কার্নেলগুলি 'পূর্ববর্তী কার্নেলগুলি' মেনুতে লুকানো থাকে। এই পদ্ধতিটি এখনও পুরানোগুলি পরিষ্কার করার জন্য কাজ করবে।
অ্যান্ডি

14

আপনি উবুন্টু-টুইঙ্ক ইনস্টল করতে পারেন এবং তারপরে অ্যাপ্লিকেশনগুলিতে যান -> সিস্টেম সরঞ্জাম -> উবুন্টু টুইট এবং

এখানে চিত্র বর্ণনা লিখুনপ্যাকেজ ক্লিনার এবং পরিষ্কার কার্নেল ক্লিক করুন। এটি বর্তমানে ব্যবহৃত কার্নেলটি দেখায় না তাই আপনি সর্বদা নিরাপদ থাকবেন।


8

ব্যক্তিগতভাবে, আমি ব্যবহার পছন্দ করি Synaptic। এটি আমাকে কী চলছে সে সম্পর্কে আরও সুরক্ষিত বোধ করে। আমি একমাত্র অ্যাপ্লিকেশন ব্যবহার করেছি যার মধ্যে পুরানো কার্নেলগুলি অপসারণের বিকল্প রয়েছে হ'ল উবুন্টু টুইক

আপনি যে কার্নেলগুলি ব্যবহার করছেন না তা কীভাবে সরিয়ে ফেলবেন:

  • উবুন্টুউইক খুলুন
  • বাম-হাতের ফলকে 'অ্যাপ্লিকেশনগুলি' এর অধীনে 'প্যাকেজ ক্লিনার' এ ক্লিক করুন
  • 'ক্লিয়ারিং ভিউ' এর ডান দিকে 'ক্লিন কার্নেলস' টিপুন
  • সমস্ত কার্নেল নির্বাচন করুন - আমি মনে করি যে এটি ব্যবহার করা হয় তা তালিকাভুক্ত নয় তবে কেবলমাত্র uname -aটার্মিনালে চলমান আছে কিনা তা পরীক্ষা করে দেখুন

সিনাপটিক এ আপনি 'উপাদানগুলি' -> 'কার্নেল এবং মডিউল' এ ফিল্টার করতে পারেন, যার মধ্যে সমস্ত কার্নেল রয়েছে। এবং প্রথম কলাম অনুসারে বাছাই করুন: 'এস' (স্থিতি), যাতে আপনি সমস্ত ইনস্টল করা কার্নেলকে শীর্ষে পান। অবশ্যই update-grubউপদেশ দেওয়া হয়।
বিপদ 89

6

আপনি linux-image-...সিন্যাপটিক ব্যবহার করে পুরানো কার্নেলগুলি ( প্যাকেজগুলি) আনইনস্টল করতে পারেন এবং এটি বুট মেনু থেকে সরিয়ে ফেলবে। চলমান কার্নেলটি অপসারণ না করার বিষয়ে সতর্কতা অবলম্বন করুন (এর সাথে আপনি এর সংস্করণটি পরীক্ষা করতে পারেন uname -r)।

মনে রাখবেন যে একটি বা দুটি পুরানো সংস্করণ থাকা আপনাকে সমস্যা সমাধানে সহায়তা করতে পারে, যদি কিছু ভুল হয়ে যায়।

বিকল্পভাবে, আপনি ম্যানুয়ালি এন্ট্রিগুলি সম্পাদনা / মুছে ফেলতে পারেন ( gksu gedit /boot/grub/grub.cfg), তবে আপনি যখন নতুন কার্নেলটিতে আপডেট করবেন তখন সেগুলি পুনরায় তৈরি করা হবে। আপনি যদি recovery modeঅপশনগুলি অপসারণের বিষয়ে ভাবছেন - করবেন না। আপনি যদি এমন কোনও কিছু ভাঙেন যা আপনাকে বুট করা থেকে বিরত রাখে তবে সেগুলি কার্যকর হতে পারে।


পড়ুন এই পাতা।


নতুন প্রতিটি কার্নেল ইনস্টল হওয়ার পরে গ্রুব 2 এখন এটি গ্রাব এন্ট্রি তৈরি করে। update-grubযার সাহায্যে সেই সমস্ত কার্নেলগুলি পুনরায় লিখবে।
মার্কো সেপ্পি

4

এটি একটি খাঁটি কমান্ড লাইন সমাধান।

প্রথমে বর্তমানে চলমান কার্নেল ব্যতীত ইনস্টল করা কার্নেল সংস্করণগুলির একটি তালিকা তৈরি করুন:

dpkg-query -W -f='${Package}\n' |
  grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
    grep -v $(uname -r | cut -d- -f1,2))

বিকল্পভাবে শেষ দুটি ব্যতীত সমস্ত ইনস্টল করা কার্নেল সংস্করণের একটি তালিকা তৈরি করুন:

dpkg-query -W -f='${Package}\n' |
  grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
    sort -V | head -n -2)

তালিকা পরীক্ষা করুন। নিশ্চিত করুন যে আপনি যে কার্নেল সংস্করণগুলি রাখতে চান তা তালিকার অংশ নয়। uname -rবর্তমানে চলমান কার্নেলের সংস্করণটি দেখতে কমান্ডটি ব্যবহার করুন ।

আপনি যদি ফলাফলগুলি নিয়ে সন্তুষ্ট হন তবে আপনি apt-getপ্যাকেজগুলি সরাতে ব্যবহার করতে পারেন।

প্রথমে একটি শুকনো রান (উদাহরণস্বরূপ প্রথম জেনারেটর ব্যবহার করে):

sudo apt-get --dry-run purge $(
  dpkg-query -W -f='${Package}\n' |
    grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
      grep -v $(uname -r | cut -d- -f1,2)))

তারপরে আসল রান:

sudo apt-get purge $(
  dpkg-query -W -f='${Package}\n' |
    grep -f <(ls -1 /boot/vmlinuz* | cut -d- -f2,3 |
      grep -v $(uname -r | cut -d- -f1,2)))

আপনি যদি প্রক্রিয়াটি স্বয়ংক্রিয় করতে চান তবে --yesপ্যারামিটারটি যুক্ত করুন:

sudo apt-get --yes purge $(
  ...)

@ জারানো আমার কমান্ড লাইনটি একত্রিত করতে এবং অনুকূলিত করার জন্য আপনার প্রচেষ্টাকে আমি প্রশংসা করি। আমি আপনার কমান্ড লাইনটি সরিয়েছি কারণ আমি পঠনযোগ্যতা এবং সরলতা পছন্দ করি। পাঠযোগ্যতা এবং সরলতার জন্য আমি আমার কমান্ডটি ইচ্ছাকৃতভাবে তৈরি করেছি। আমার মস্তিষ্কের জন্য কমপক্ষে পাঠযোগ্য এবং সহজ। একটি মন্তব্য হিসাবে বা আপনার নিজের উত্তরে আপনার কমান্ড লাইন পোস্ট করুন।
লেসমানা

1
এটি দুটি উদ্দেশ্য একত্রিত করে: শেষ দুটি কার্নেল রাখুন এবং কার্নেলগুলি বর্তমানের চেয়ে নতুন রাখুন sudo apt-get purge -- $(ls -1U /boot/vmlinuz* | cut -d- -f2,3 | sort -uV | head -n -2 | awk -v c=$(uname -r | cut -d- -f1,2) '($0==c){exit} //' | sed -r -e 's/\./\\./g' -e 's/.*/-&($|-)/')। নিয়মিত এক্সপ্রেশন পরিচালনা করতে পারে dpkg-queryযেহেতু প্রয়োজন নেই apt-get। দয়া করে নোট করুন আমি কীভাবে বিন্দুগুলি থেকে রক্ষা পাই এবং নিয়মিত অভিব্যক্তিতে উপসর্গ এবং প্রত্যয় যুক্ত করব। আমার নিজের উত্তরে স্ক্রিপ্টটি ব্যবহার করে আপনি বর্তমানের চেয়ে পুরানো কিছু কার্নেলও রাখতে পারেন।
জার্নো

4

এই উত্তরের সুবিধাটি হ'ল দেশীয় উবুন্টু বাশ তৃতীয় পক্ষের অ্যাপ্লিকেশন ইনস্টল না করে ব্যবহৃত হয়। কাস্টম কার্নেলের ব্যবহারকারীরা যারা তাদের প্রয়োজন অনুসারে এই ব্যাশ স্ক্রিপ্টটি ব্যবহার করেন না aptবা dpkgপরিবর্তন করতে পারেন। এই উত্তরটির উপর ভিত্তি করে ( কীভাবে নির্বাচিতভাবে পুরানো কার্নেলগুলি একবারে একসাথে পরিষ্কার করতে হয় )।

Zenity ভিত্তিক সমাধান

জেনিটি একটি তালিকা প্রক্রিয়া করতে এবং রেডিও-বোতামের সাহায্যে আইটেম নির্বাচন করার জন্য টার্মিনালে একটি দুর্দান্ত জিইউআই ইন্টারফেস সরবরাহ করে :

আরএম-কার্নেলগুলি 1

শিরোনামটি বর্তমান কার্নেলটি দিয়ে বোঝায় যে আপনি বুট করেছেন সেটিকে সরানো যাবে না এবং তালিকায় অন্তর্ভুক্ত করা হবে না। রিপোর্ট করা আকারটি /bootডিরেক্টরিতে কতটা সংরক্ষণ করা হবে তা । আপনার ডিস্কে আরও সংরক্ষণ করা হয়েছে কারণ কার্নেল বাইনারিগুলি অন্যান্য অঞ্চলেও থাকে। জুলাই 27, 2017 নোট: ডিরেক্টরিগুলি /usr/src/*kernel_version*এবং /lib/modules/*kernel_version*এখন পাশাপাশি অন্তর্ভুক্ত করা হয়েছে।

সংশোধিত তারিখ ব্যবহার আবিষ্কৃত হয় statকমান্ড। আমার সিস্টেমে প্রতিবার কার্নেলটি বুট করার পরে এই তারিখটি "স্পর্শ" করা হয়েছে ( নির্দিষ্ট কার্নেল সংস্করণটি সর্বশেষ বুট করার সময় আপনি কীভাবে আবিষ্কার করবেন? ) ক্রোন রিবুট স্ক্রিপ্টটি। তবে, আপনার সিস্টেমে তারিখটি কার্নেল মুক্তির তারিখ হবে, এটি বুট করার সময় আপনি শেষবারের মতো নয়।

apt-get purge আপনাকে গর্ভপাতের সুযোগ দেয়

আপনাকে শুদ্ধ হয়ে যাওয়া সমস্ত কিছু দেখার এবং পুনরুদ্ধার করা মোট ডিস্কের স্থান (কিছুটা বিভ্রান্তিমূলক) দেখার চূড়ান্ত সুযোগ দেওয়া হবে:

The following packages will be REMOVED:
  linux-headers-4.7.1-040701* linux-headers-4.7.1-040701-generic*
  linux-headers-4.7.2-040702* linux-headers-4.7.2-040702-generic*
  linux-headers-4.7.3-040703* linux-headers-4.7.3-040703-generic*
  linux-headers-4.8.1-040801* linux-headers-4.8.1-040801-generic*
  linux-headers-4.8.10-040810* linux-headers-4.8.10-040810-generic*
  linux-headers-4.8.11-040811* linux-headers-4.8.11-040811-generic*
  linux-headers-4.8.4-040804* linux-headers-4.8.4-040804-generic*
  linux-headers-4.8.5-040805* linux-headers-4.8.5-040805-generic*
  linux-image-4.7.1-040701-generic* linux-image-4.7.2-040702-generic*
  linux-image-4.7.3-040703-generic* linux-image-4.8.1-040801-generic*
  linux-image-4.8.10-040810-generic* linux-image-4.8.11-040811-generic*
  linux-image-4.8.4-040804-generic* linux-image-4.8.5-040805-generic*
0 upgraded, 0 newly installed, 24 to remove and 2 not upgraded.
After this operation, 2,330 MB disk space will be freed.
Do you want to continue? [Y/n] 

কোড

একটি এক্সিকিউটেবল নামের ফাইল করার জন্য এই কোড কপি করুন rm-kernelsমধ্যে /usr/local/bin:

#!/bin/bash

# NAME: rm-kernels
# PATH: /usr/local/bin
# DESC: Provide zenity item list of kernels to remove

# DATE: Mar 10, 2017. Modified Jul 28, 2017.

# NOTE: Will not delete current kernel.

#       With 10 kernels on an SSD, empty cache from sudo prompt (#) using:
#       # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
#       First time for `du` 34 seconds.
#       Second time for `du` 1 second.

# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
#       By default `du` is not used and estimated size is displayed.

# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
    zenity --error --text "root access required. Use: sudo rm-kernels"
    exit 99
fi

OLDIFS="$IFS"
IFS="|"
choices=()

current_version=$(uname -r)

for f in /boot/vmlinuz*
do
    if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
    [[ $f =~ vmlinuz-(.*) ]]
    v=${BASH_REMATCH[1]}        # example: 4.9.21-040921-generic
    v_main="${v%-*}"            # example: 4.9.21-040921

    # Kernel size in /boot/*4.9.21-040921-generic*
    s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')

    if [[ $# -ne 0 ]] ; then    # Was a parameter passed?
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             # Kernel headers size in /usr/src/*4.9.21-040921*
             s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
        else
             s2="0M"            # Linux Headers are not installed
        fi
        # Kernel image size in /lib/modules/4.9.21-040921-generic*
        s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
    else
        # Estimate sizof of optional headers at 125MB and size of image at 220MB
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             s2="125M"
        else
             s2="0M"            # Linux Headers are not installed
        fi
        s3="220M"
    fi

    # Strip out "M" provided by human readable option of du and add 3 sizes together
    s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
    t=$(( t + s ))
    s=$s" MB"
    d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
    choices=("${choices[@]}" false "$v" "$d" "$s")
done

# adjust width & height below for your screen 640x480 default for 1920x1080 HD screen
# also adjust font="14" below if blue text is too small or too large

choices=(`zenity \
        --title "rm-kernels - Total: $t MB excluding: $current_version" \
        --list \
        --separator="$IFS" \
        --checklist --multiple \
        --text '<span foreground="blue" font="14">Check box next to kernel(s) to remove</span>' \
        --width=640 \
        --height=480 \
        --column "Select" \
        --column "Kernel Version Number" \
        --column "Modified Date" \
        --column " Size " \
        "${choices[@]}"`)
IFS="$OLDIFS"

i=0
list=""
for choice in "${choices[@]}" ; do
    if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
    ((i++))

    short_choice=$(echo $choice | cut -f1-2 -d"-")
    header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)

    # If -lowlatency and -generic are purged at same time the _all header directory
    # remains on disk for specific version with no -generic or -lowlatency below.
    if [[ $header_count -lt 3 ]]; then
        # Remove all w.x.y-zzz headers
        list="$list""linux-image-$choice- linux-headers-$short_choice"
    else
        # Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
        list="$list""linux-image-$choice- linux-headers-$choice" 
    fi

done

if [ "$i" -gt 0 ] ; then
     apt-get purge $list
fi

দ্রষ্টব্য: আপনার ফাইল তৈরি করতে sudo অনুমতি প্রয়োজন তাই ব্যবহার করুন:

gksu gedit /usr/local/bin/rm-kernels

ফাইল এক্সিকিউটেবল ব্যবহার করতে:

sudo chmod +x /usr/local/bin/rm-kernels

সার্ভার সংস্করণ

rm-kernels-serverএকসাথে সমস্ত কার্নেলগুলি নির্বাচন করে মুছতে সার্ভার সংস্করণ। জিইউআই (গ্রাফিকাল) ডায়ালগ বক্সের পরিবর্তে শোধন করার জন্য কার্নেল নির্বাচন করতে একটি পাঠ্য-ভিত্তিক ডায়ালগ বাক্স ব্যবহার করা হয়।

  • স্ক্রিপ্টটি চালানোর আগে আপনার ডায়ালগ ফাংশনটি ইনস্টল করতে হবে :

    sudo apt install dialog

ডায়ালগটি ডিফল্ট উবুন্টু ডেস্কটপ ইনস্টলেশনতে রয়েছে তবে উবুন্টু সার্ভারে নেই।

নমুনা পর্দা

আরএম-কার্নেলস-সার্ভার 1

rm-kernels-server বাশ কোড

#!/bin/bash

# NAME: rm-kernels-server
# PATH: /usr/local/bin
# DESC: Provide dialog checklist of kernels to remove
#       Non-GUI, text based interface for server distro's.

# DATE: Mar 10, 2017. Modified Jul 28, 2017.

# NOTE: Will not delete current kernel.

#       With 10 kernels on an SSD, empty cache from sudo prompt (#) using:
#       # free && sync && echo 3 > /proc/sys/vm/drop_caches && free
#       First time for `du` 34 seconds.
#       Second time for `du` 1 second.

# PARM: If any parm 1 passed use REAL kernel size, else use estimated size.
#       By default `du` is not used and estimated size is displayed.

# Must be running as sudo
if [[ $(id -u) != 0 ]]; then
    echo "root access required. Use: sudo rm-kernels-server"
    exit 99
fi

# Must have the dialog package. On Servers, not installed by default
command -v dialog >/dev/null 2>&1 || { echo >&2 "dialog package required but it is not installed.  Aborting."; exit 99; }

OLDIFS="$IFS"
IFS="|"
item_list=() # Deviate from rm-kernels here.

current_version=$(uname -r)
i=0
for f in /boot/vmlinuz*
do
    if [[ $f == *"$current_version"* ]]; then continue; fi # skip current version
    [[ $f =~ vmlinuz-(.*) ]]
    ((i++)) # Item List
    v=${BASH_REMATCH[1]}        # example: 4.9.21-040921-generic
    v_main="${v%-*}"            # example: 4.9.21-040921

    # Kernel size in /boot/*4.9.21-040921-generic*
    s=$(du -ch /boot/*-$v* | awk '/total/{print $1}')

    if [[ $# -ne 0 ]] ; then    # Was a parameter passed?
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             # Kernel headers size in /usr/src/*4.9.21-040921*
             s2=$(du -ch --max-depth=1 /usr/src/*-$v_main* | awk '/total/{print $1}')
        else
             s2="0M"            # Linux Headers are not installed
        fi
        # Kernel image size in /lib/modules/4.9.21-040921-generic*
        s3=$(du -ch --max-depth=1 /lib/modules/$v* | awk '/total/{print $1}')
    else
        # Estimate sizof of optional headers at 125MB and size of image at 220MB
        if [[ -d "/usr/src/linux-headers-"$v_main ]] ; then
             s2="125M"
        else
             s2="0M"            # Linux Headers are not installed
        fi
        s3="220M"
    fi

    # Strip out "M" provided by human readable option of du and add 3 sizes together
    s=$(( ${s//[^0-9]*} + ${s2//[^0-9]*} + ${s3//[^0-9]*} ))
    t=$(( t + s ))
    s=$s" MB"
    d=$(date --date $(stat -c %y $f) '+%b %d %Y') # Last modified date for display
    item_list=("${item_list[@]}" "$i" "$v ! $d ! $s" off)
done

cmd=(dialog --backtitle "rm-kernels-server - Total: $t MB excluding: $current_version" \
    --title "Use space bar to toggle kernel(s) to remove" \
    --column-separator "!" \
    --separate-output \
    --ascii-lines \
    --checklist "         Kernel Version --------- Modified Date  Size" 20 60 15)

selections=$("${cmd[@]}" "${item_list[@]}" 2>&1 >/dev/tty)

IFS=$OLDIFS

if [ $? -ne 0 ] ; then
    echo cancel selected
    exit 1
fi

i=0
choices=()

for select in $selections ; do
    ((i++))
    j=$(( 1 + ($select - 1) * 3 ))
    choices[i]=$(echo ${item_list[j]} | cut -f1 -d"!")
done

i=0
list=""
for choice in "${choices[@]}" ; do
    if [ "$i" -gt 0 ]; then list="$list- "; fi # append "-" from last loop
    ((i++))

    short_choice=$(echo $choice | cut -f1-2 -d"-")
    header_count=$(find /usr/src/linux-headers-$short_choice* -maxdepth 0 -type d | wc -l)

    # If -lowlatency and -generic are purged at same time the _all header directory
    # remains on disk for specific version with no -generic or -lowlatency below.
    if [[ $header_count -lt 3 ]]; then
        # Remove all w.x.y-zzz headers
        list="$list""linux-image-$choice- linux-headers-$short_choice"
    else
        # Remove w.x.y-zzz-flavour header only, ie -generic or -lowlatency
        list="$list""linux-image-$choice- linux-headers-$choice" 
    fi

done

if [ "$i" -gt 0 ] ; then
    apt-get purge $list
fi

দ্রষ্টব্য:dialog ডাইরেক্টিভের কলটিতে বক্সগুলি আঁকার জন্য "+ ----- +" দিয়ে --ascii-linesলাইন-ড্র বর্ধিত অক্ষর সেট (যা sshপছন্দ নয়) প্রতিস্থাপন করার জন্য পাস করা হয়েছে । আপনি যদি এই চেহারাটি পছন্দ করেন না তবে আপনি --no-linesকোনও বাক্সের জন্য নির্দেশটি ব্যবহার করতে পারবেন না।


জুলাই 28, 2017 আপডেট

প্রতিটি কার্নেলের গণনা করা আকার নেওয়া হয়েছিল /boot/*kernel_version*যা থেকে 5 50 এমবি মোট 5 ফাইল ছিল। সূত্রে ফাইল অন্তর্ভুক্ত পরিবর্তিত হয়েছে /usr/src/*kernel_version*এবং /lib/modules/*kernel_version*। প্রতিটি কার্নেলের জন্য গণনা করা আকারটি এখন 400 এমবি। জন্য উপরের কোড rm-kernelsএবং rm-kernels-serverআপডেট করা হয়েছে। তবে উপরে বর্ণিত নমুনা পর্দা এই পরিবর্তনগুলি প্রতিফলিত করে না।

ডিফল্টটি হল লিনাক্স-শিরোলেখগুলির জন্য 125 এমবি এবং লিনাক্স-চিত্রের 220 এমবিতে ফাইলের আকারের অনুমান করা কারণ duফাইলগুলি ক্যাশে না থাকলে যন্ত্রণাদায়কভাবে ধীর হতে পারে। duস্ক্রিপ্টের কোনও প্যারামিটার ব্যবহার করে আসল আকার পেতে ।

মোট কার্নেল আকার (বর্তমান চলমান সংস্করণ বাদ দিয়ে যা সরানো যায় না) এখন শিরোনাম বারে প্রদর্শিত হবে।

প্রতিটি কার্নেলের শেষ অ্যাক্সেসের তারিখ প্রদর্শন করতে ডায়ালগ বাক্স ব্যবহৃত হয় । এই তারিখটি ব্যাকআপ বা অনুরূপ ক্রিয়াকলাপের সময়ে সমস্ত কার্নেলের জন্য ভর ওভাররাইট করতে পারে। ডায়ালগ বাক্সে পরিবর্তে পরিবর্তিত তারিখটি দেখায় ।


2

অপ্রচলিত কার্নেলগুলির সাথে প্রায় সমস্ত অপ্রচলিত প্যাকেজগুলি, প্যাকেজগুলি আর কোনও প্যাকেজ তালিকায় নেই of

dpkg --purge $(aptitude search ?obsolete)

তবে এটি অন্যান্য প্যাকেজগুলির দ্বারা সুপারিশকৃত প্যাকেজগুলি মিস করবে এবং -R / - ছাড়াই প্রস্তাবিত যুক্তি এই সমস্যার সমাধান করে না।

'ও' দিয়ে বাছাই মোডে স্যুইচ করার পরে নির্বাচন নির্বাচন না করা সহ প্রচ্ছন্নতা প্যাকেজগুলি সহ সমস্ত অপ্রচলিত প্যাকেজ দেখাবে, তবে কিছু লোক এটি ব্যবহার করতে পছন্দ করে না।


প্রদত্ত কমান্ডটি পুরানো কার্নেলগুলি শুদ্ধ করে না বা আমার অভিজ্ঞতায় গ্রাব মেনুকে প্রভাবিত করে না।
জার্নো

2

sedপুরানো কার্নেলগুলি স্থায়ীভাবে অপসারণ করতে স্বীকৃত উত্তরের কিছু ত্রুটি রয়েছে, কার্নেল আপগ্রেড করার পরে যদি কেউ কম্পিউটারটি পুনরায় চালু না করে থাকে তবে কমান্ডটি আরও নতুন কার্নেলটি সরিয়ে ফেলবে।

এখানে একটি বিকল্প সমাধান রয়েছে যা কেবলমাত্র পুরানো কার্নেলগুলি সরাতে সমস্ত পরিস্থিতি বিবেচনা করবে:

#!/bin/bash
kernels=( $(grep -Po "^linux-image-[^-]+-[^-]+-generic\b" < <(dpkg --get-selections)) )
cur_rel=$(grep -Po ".*(?=-[a-z]*$)" < <(uname -r))

for kernel in "${kernels[@]}"; do
    ker_rel=$(grep -Po "[0-9].*(?=-[a-z]*)" <<< "$kernel")
    dpkg --compare-versions "$ker_rel" gt "$cur_rel" && echo "Please Restart your computer first" && break
    dpkg --compare-versions "$ker_rel" lt "$cur_rel" && sudo apt-get remove "$kernel"
done

আপনার যদি বর্তমানের তুলনায় নতুন কোনও সংস্করণ থাকে তবে এটি আপনাকে প্রথমে কম্পিউটার পুনরায় চালু করার জন্য একটি সতর্কতা দেবে। আরও মনে রাখবেন যে কোনও পুরানো কার্নেলগুলি কোনও ভাল কারণে সংরক্ষণ করা হয়েছে যার কারণ আপনি যদি কোনওরকমভাবে আপনার বর্তমান কার্নেলটিকে বিশৃঙ্খল করে ফেলেন তবে আপনার কোনও পুরানো কার্নেলটি বুট করতে সক্ষম হবে।


এটি জেনেরিকের চেয়ে স্বল্প কার্নেল বা অন্য কোনও স্বাদের কার্নেলগুলি সরিয়ে ফেলবে না।
জার্নো

আমি মনে করি আপনি এই sed সমাধানগুলি উল্লেখ করেছেন।
জার্নো

@jarno: কিভাবে সম্পর্কে প্রতিস্থাপন grep -Po "^linux-image-[^-]+-[^-]+-generic\b"সঙ্গে grep -Eo "^linux-(image|headers|tools)-[^-]+-[^-]+(|-generic)\s" | sed -e "s/\s//g"এবং grep -Po ".*(?=-[a-z]*$)"সঙ্গে grep -Eo "^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+"এবং grep -Po "[0-9].*(?=-[a-z]*)"সঙ্গে grep -Eo "[0-9]+\.[0-9]+\.[0-9]+-[0-9]+"?
সাদি

@ সাদি, ওয়েল, এল যে নীচু কার্নেলগুলিও খুঁজে পাবে না।
জার্নো

1
ধন্যবাদ। অন্যান্য পদ্ধতিগুলি আমার পক্ষে কার্যকর হয়নি। আপনার কাজটি করেছেন।
ফিলিপ ডেল্টিল

1

আইলরাসটিতে পুরানো কার্নেলগুলি অপ্রয়োজনীয় কনফিগারেশনগুলি মুছে ফেলার বৈশিষ্ট্য রয়েছে। আমি ব্যক্তিগতভাবে এটি সিন্যাপটিক থেকে ম্যানুয়ালি সরিয়ে ফেলি। আপনি এর থেকে লাল ইনস্টল করতে পারেন getdeb সেইসাথে পিপিএ


"আইলুরাস ইনস্টল করা সফ্টওয়্যারটির একটি নাম তালিকার ব্যাকআপ নেওয়ার একটি সরঞ্জাম ... ... অতীতে আইলুরাসের অনেকগুলি ফাংশন রয়েছে Now এখন এটির একটি মাত্র কার্যকারিতা রয়েছে Because কারণ আমি মনে করি যে কয়েকটা কম দরকারী কার্যকারিতার চেয়ে সত্যই কার্যকর একটি কার্যকারিতা ভাল।"
জার্নো

1

আমার এটির জন্য একটি স্ক্রিপ্ট রয়েছে যাতে খুব অভিনব স্ট্রিং পার্সিংয়ের প্রয়োজন হয় না।

স্থানটি প্রকাশের জন্য বর্তমানের বাদে শিরোনাম এবং চিত্রগুলি সরান

sudo apt-get autoremove --purge 'linux-headers-[0-9].*' linux-headers-$(uname -r)+ linux-headers-$(uname -r | cut -d- -f1,2)+ 'linux-image-[0-9].*' linux-image-$(uname -r)+

1

পুরানো কার্নেলগুলি আপডেট করতে এবং মুছতে আপনি ইউকিউ ব্যবহার করতে পারেন - এটি সমস্ত জিইউআই। আমার জন্য কাজ কর!

কেবলমাত্র শেষ 2 টি ইনস্টল করা এবং স্পষ্টতই 'চলমান' কার্নেলটি মনে রাখবেন।

আপনি কেবল মূললাইন প্রকাশগুলি, এমনকি আরসি কার্নেলগুলি, পয়েন্ট রিলিজগুলি লুকানোর জন্য ইউকুও সেট করতে পারেন।

ukuu

আপনি সিনাপটিক এ ইউকু খুঁজে পেতে পারেন বা নির্দেশাবলী এখানে রয়েছে:

ওএমজি! উবুন্টু ইনস্টল নির্দেশাবলী


1

ডেভিড কেম্পের পূর্ববর্তী উত্তরের ভিত্তিতে, নিম্নলিখিত স্ক্রিপ্টটি শেষ 2 সংস্করণ ব্যতীত সমস্ত শিরোনাম এবং চিত্রগুলিকে শুদ্ধ করবে ।

#!/bin/sh
# This script assumes that the installed linux-image and linux-headers packages
# share the same versions (i.e. if a linux-image version number is installed,
# the corresponding linux-headers package will also be installed, and vice
# versa.)

SECONDTOLASTVER=$(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -r -n | sed '/^[^0-9]\+$/d' | sed 's/^.*-\([0-9\.]\+-[0-9]\+\).*/\1/' | uniq | sed -n 2p)

# get a list of package names matching the argument passed to the function, and
# return only those package names which should be removed
get_pkgs_to_remove_matching () {
    if [ -n "$SECONDTOLASTVER" ]; then
        echo $(dpkg --list | grep $1 | awk '{ print $2 }' | sort | sed -n '/'"$SECONDTOLASTVER"'/q;p')
    fi
}

echo $(get_pkgs_to_remove_matching linux-image) $(get_pkgs_to_remove_matching linux-headers) | xargs sudo apt-get purge

( apt-get -yপ্রশ্ন ছাড়াই অপসারণ ব্যবহার করুন )


এটিকে কেন হ্রাস করা গেল? এটি কারও পক্ষে কার্যকর হয়নি? অনুলিপি / আটকানোর সময় নিশ্চিত করুন যে আপনি পেস্ট করার সময় আপনি দীর্ঘ-লাইনগুলি মোড়ানো করছেন না। এটি কাজ করতে আমার কোনও সমস্যা হয়নি।
চিহ্নিত করুন

আমার মেশিনে সর্বাধিক নতুন কার্নেল রিলিজটি 3.13.0-43-লোলাটেন্সি। এই স্ক্রিপ্টটি লিনাক্স-শিরোলেখ -3.313.0-43-লোলেটেন্সি মুছে ফেলবে।
জার্নো

@ জার্নো আপনি কীভাবে এটি নির্ধারণ করলেন? আসলে কিছু না করেই এটি চেষ্টা করে দেখতে, এপ-গেট কমান্ডটিতে "-s" পতাকা যুক্ত করুন (বা কেবল | xargs sudo apt-get -y purgeপুরোপুরি মুছে ফেলুন )। যদি এটি ৩.১13.০-৪৩-লোলাটেন্সি প্রিন্ট করে তবে সম্ভবত আপনার সিস্টেমে ইনস্টল থাকা চেয়ে কিছু পরে সংস্করণ রয়েছে।
চিহ্নিত করুন

আমি সিমুলেশন চেষ্টা করেছিলাম। না, তবে আমার কিছু পূর্ববর্তী কার্নেল সংস্করণ মুছে ফেলা হয়েছিল, তবে তা শুদ্ধ হয়নি, এবং সম্পর্কিত শিরোনাম প্যাকেজগুলি শুদ্ধ।
জার্নো

যাইহোক, আমি সঙ্কল্পের উত্তরের ধারণার ভিত্তিতে একটি স্ক্রিপ্ট তৈরি করছি।
জার্নো

0

এখানে আমি যা করেছি তার একটি মোটামুটি রূপরেখা, আমি লিনাক্সের বিশেষজ্ঞ না হওয়ায় সাবধান, আপনি কী করছেন তা জানেন এবং আপনি যে কোনও ফাইল সংশোধন করছেন তা ব্যাক আপ করেছেন তা নিশ্চিত হয়ে নিন।

gedit /boot/grub/grub.cfg

তারপরে আপনি রাখতে চান এমন এন্ট্রিগুলি সন্ধান করুন, আমরা সেগুলি হাইলাইট করব এবং অনুলিপি করব

cd /etc/grub.d
ls

আপনি 10_linux এবং 30_os-prober এর মতো ফাইলগুলির একটি তালিকা দেখতে পাবেন

sudo chmod -x 10_linux

এটি গ্রাব বুট মেনুতে সমস্ত লিনাক্স এন্ট্রি যুক্ত ফর্ম অটো বন্ধ করবে।

gksudo gedit 40_custom

কাস্টম বুট মেনু ফাইলটি খুলুন, তারপরে grub.cfg এ ফিরে যান (যা এখনও জিডিটে খোলা থাকা উচিত), এবং আপনি রাখতে চান এমন এন্ট্রিগুলি অনুলিপি করুন ... যেমন

menuentry "My Default Karmic" {
  set root=(hd0,1)
  search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8
  linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash
  initrd /boot/initrd.img-2.6.31-11-generic
}

এগুলিতে 40_customআটকে দিন এবং তারপরে এটি সংরক্ষণ করুন।

sudo chmod 755 40_custom

এটি কার্যকর করার যোগ্য করে তোলে, তারপরে অবশেষে আমরা গ্রাব আপডেট করি যা grub.cfg ফাইল পরিবর্তন করবে:

sudo update-grub

এখন, সাবধান, আপনি যদি কার্নেল বা ওএস আপডেট করেন তবে আপনার বুট মেনুটি সম্ভবত আপডেট হবে না ... আপনাকে এটি ম্যানুয়ালি করতে হবে। তবে এই পদ্ধতিটি করা আপনাকে বুট মেনুটিকে আরও কিছুটা কাস্টমাইজ করতে দেয়, যেমন কার্নেল সংস্করণটি সরিয়ে ফেলুন এবং উবুন্টু নামটি রাখুন ... যেমন উবুন্টু লুসিড 10.04 ইত্যাদি ...

আশা করি কেউ এই সহায়ক হিসাবে খুঁজে পেয়েছেন, কারণ এটি বের করতে আমার কিছুটা সময় লেগেছে ... কোথাও এই সমাধানটি দেখেনি ...


3
এই উত্তরটি ওভারকিলের মতো বলে মনে হচ্ছে। পুরানো কার্নেলগুলি সরিয়ে ফেলা ভাল।
স্কট সিভেরেন্স

আমি পড়েছিলাম যে পুনরুদ্ধারের পরিস্থিতিতে অতিরিক্ত কার্নেলগুলি কার্যকর হতে পারে। এছাড়াও, এটি বুট এন্ট্রিটির পাঠ্য সম্পাদনা করার একটি সহজ উপায়। সুতরাং "উবুন্টু, লিনাক্স কার্নেল xxxx-yy --text1 -text2 -t3 -t4 --t5 ইত্যাদি ইত্যাদি ইত্যাদি বলার চেয়ে" (যেখানে --text এন্ট্রিগুলি কিছু বিকল্প / প্যারামিটারগুলি বোঝে না যা বোঝায় না) আপনি পরিবর্তন করতে পারবেন এটি "উবুন্টু এক্সএক্স.আইআই" - এর কাছে যদিও আমার একটি "{" বন্ধনী ছিল আমি মুক্তি পেতে পারিনি।
জো

1
সর্বাধিক বর্তমান কার্নেলটি সঠিকভাবে কাজ করে না যাব না হওয়া অবধি তত্ক্ষণিক পূর্ববর্তী কর্নেলটি প্রায় রাখছি। যদি এটি কাজ করে তবে এটি কাজ করা বন্ধ করবে না। সুতরাং, আমি সর্বাধিক সাম্প্রতিক কার্নেলটি যাচাই করার পরে (এক সপ্তাহ বা তার বেশি পরে), আমার কাছে পুরানো কার্নেলটি প্রায় রাখার কোনও কারণ নেই। যদি এটি কাজ না করে, তবে আমার কাছে ফিরে আসার জন্য সর্বশেষতম জ্ঞাত-ভাল কার্নেল রয়েছে। প্রকৃতপক্ষে, বর্তমান কার্নেলগুলিতে শোস্টোপার বাগের কারণে আমি বর্তমানে একটি পুরানো কার্নেল চালাচ্ছি। কিন্তু এটি আমার সামগ্রিক নীতি পরিবর্তন করে না। আপনার কেবলমাত্র একটি পরিচিত ভাল কার্নেল প্রয়োজন।
স্কট সিভেরেন্স

0

সিনাপটিক প্যাকেজ ম্যানেজারটি ইনস্টল করুন এবং ফিল্টার ট্যাবে নীচে যান (আমার মনে হয় ফিল্টারগুলি, সমস্ত 5 চেষ্টা না করে) এবং "স্থানীয়" নির্বাচন করুন। এটি আপনাকে আপনার সিস্টেমে অনাথ প্যাকেজগুলি যেমন কার্নেলগুলি প্রদর্শন করবে। এগুলি আনইনস্টল করার পরে, চালান update-grub। এই কমান্ডটি গ্রাবের বুট বিকল্পগুলির তালিকা আপডেট করে।

যদি এটি ব্যর্থ হয় তবে আপনি সর্বদা চেষ্টা করতে পারেন apt-get remove linux-image-version-generic


সিনাপটিক এ আপনি 'উপাদানগুলি' -> 'কার্নেল এবং মডিউল' এ ফিল্টার করতে পারেন, যার মধ্যে সমস্ত কার্নেল রয়েছে। এবং প্রথম কলাম অনুসারে বাছাই করুন: 'এস' (স্থিতি), যাতে আপনি সমস্ত ইনস্টল করা কার্নেলকে শীর্ষে পান। অবশ্যই update-grubউপদেশ দেওয়া হয়।
বিপদ 89

0

কোন সংস্করণটি রাখতে হবে তার উপরে আরও কিছুটা নিয়ন্ত্রণ রাখতে আপনি মুছে ফেলতে চান তা স্পষ্টভাবে নির্বাচন করুন। উদাহরণস্বরূপ আপনি যদি কার্নেল সংস্করণ 3.2.0 মুছে ফেলতে চান তবে [49-53], একটি সাধারণ forলুপ ব্যবহার করুন :

for k in 49 51 52 53 ; do aptitude remove --purge linux-image-3.2.0-${k}-generic ; done

ফিট করতে কার্নেল সংস্করণগুলির তালিকাটি সামঞ্জস্য করুন।


0

এটা চেষ্টা কর. এটি রুট হিসাবে চালান।

এই স্ক্রিপ্টটি সংরক্ষণ করুন, বলুন ./keep-n-kernels.sh

কমান্ড লাইন আর্গুমেন্ট হিসাবে পাস করুন, আপনি সংরক্ষণ করতে চান এমন সাম্প্রতিকতম কার্নেলের সংখ্যা।

    
#! / বিন / ব্যাশ

কমান্ড লাইন আর্গুমেন্ট হিসাবে # পাস এন, এবং এটি সমস্ত ইনস্টলড দেখতে পাবে
# কার্নেলগুলি রাখুন এবং কেবলমাত্র সর্বশেষতম এন => সমস্ত পুরানোগুলি আনইনস্টল করুন

# dpkg -l 'লিনাক্স- *' | সেড '/ ^ আইআই /! ডি; / "" $ (আনমে -আর | সেড "এস /\(.*\)-\( ^-৯]] \ + \) / \ 1 /") "' / ডি; এস / ^ [^] * [^] * \ ([[^] * \))। * / \ 1 /; / [0-9] /! ডি '
# এই কমান্ডটি সর্বশেষ কার্নেলের জন্য সমস্ত প্যাকেজগুলির তালিকা ছাড়াই EXCEPT দেয়।
# উত্স: https://help.ubuntu.com/commune/Lubuntu/ ডকুমেন্টেশন / সরানো ওল্ড কার্নেলস

এন = $ 1

# ইনস্টল করা কার্নেল সংস্করণগুলি সন্ধান করুন:
# dpkg-query -W -f = '$ {সংস্করণ \ \ n' 'লিনাক্স-চিত্র- *' | গ্রেপ | সাজান -n
# প্রতিটি লাইনে একটি করে সংস্করণ নম্বর দেয়
# dpkg-query -W -f = '$ {সংস্করণ \ \ n' 'লিনাক্স-চিত্র- *' | গ্রেপ | সেড 's /\...$// জি' | গ্রেপ-ভি '\ ... $' | সাজান -u
# কেবলমাত্র লিনাক্স-চিত্রটিতে উপস্থিত রয়েছে

# প্রত্যয়, যেমন-জেনারিক-পা
# আপনি যে ধরণের কার্নেল বুট করেন
প্রত্যয় = $ (আনম-আর | সেডস এর: ^ [0-9] \। [0-9] \। [0-9] \ - [0-9] \ {2 \} :: জি ')

কমান্ড = "আপ্ট-গেট purge"

সংস্করণে $ (dpkg-query -W -f = '$ {সংস্করণ \ \ n' 'লিনাক্স-চিত্র- *' | গ্রেপ। | সেড 's /\...$// জি' | গ্রেপ-ভি ' \ ... $ '| বাছাই-আপনি | মাথা-এন - n {n})
করা
    কমান্ড = $ {কমান্ড} "^ লিনাক্স-চিত্র - $ {সংস্করণ} $ {প্রত্যয়}"
সম্পন্ন

$ কমান্ড

নমুনা ব্যবহার:

# ./keep-n-kernels.sh 4 # অতি সাম্প্রতিক 4 টি কার্নেল ছাড়া সমস্ত অপসারণের জন্য অ্যাপট-গেট কমান্ড চালু করুন

আপনি যদি [এবং আপনার নিজের ঝুঁকিতে] চান তবে আপনি অ্যাপ-গেট কমান্ডে একটি -y (বা একটি ফোর্স ফ্ল্যাগ) যুক্ত করতে পারেন এবং এটি অ-ইন্টারেক্টিভ করতে পারেন।


এটি চালিয়ে গেলে সমস্ত কার্নেলগুলি সরিয়ে দেয় /। / কেপ- এন-kernels.sh ০. প্রত্যয় স্ট্রিং সনাক্তকরণ কাজ করে না; আমার মনে হয় প্রত্যয় = $ (একচেটিয়া | সেড-আর 's / ^ [0-9।] * (- [[0-9।] +) * //') বা প্রত্যয় = $ (একচেটিয়া -আর | উদাহরণস্বরূপ - -আপনার সাথে মিলে যাওয়া - '- [[: আলফা:] -] + $') করবে।
জার্নো

তবে আমি ধারণাটি দুর্দান্ত। আমি স্ক্রিপ্টটি উন্নত করার জন্য কাজ করছি এবং সম্ভবত আমি এটি এখানে পোস্ট করব, যখন আমি মনে করি এটি যথেষ্ট প্রস্তুত।
jarno

দয়া করে শেয়ার করুন, @ জার্নো। ধারণাটি জেনে খুশি মনে হয়েছে দরকারী seems
সঙ্কল্প

ঠিক আছে, এটি এখানে রয়েছে: লিঙ্ক
জার্নো

0

আমি একটি কেডিপি ডেস্কটপ ব্যবহার করছি, এবং সবচেয়ে সহজ বিকল্পটি হ'ল এখানে প্রস্তাবিত হিসাবে kde-config-grub2 অ্যাপ্লিকেশনটি ব্যবহার করছিলাম: https://www.kubuntuforums.net/showthread.php?58075-remove-old-linux-versions (যা আমি ইতিমধ্যে পটভূমি চিত্র, ডিফল্ট বুট বিকল্প এবং এই জাতীয় সেট করার জন্য ইনস্টল করেছি)। ড্রপ-ডাউন বাক্সের পাশে যেখানে আপনি ডিফল্ট এন্ট্রি চয়ন করতে পারেন সেখানে একটি "পুরানো এন্ট্রি সরান" বোতাম রয়েছে। এই বোতামটি ক্লিক করা আপনাকে সমস্ত ইনস্টল করা কার্নেলের একটি তালিকা সরবরাহ করে এবং কোনটি অপসারণ করতে হবে তা নির্বাচন করতে পারেন। আপনি যখন পরিবর্তনগুলি প্রয়োগ করেন তখন এটি ডিপি কেজি ব্যবহার করবে প্রকৃতপক্ষে গ্রাট মেনু থেকে সিস্টেম থেকে সেগুলি সরাতে।


0

শুধু চিম ইন করতে, আপনি ইস্যুও করতে পারেন

apt-get remove linux-{image,headers}-x.y.z-{1,2,...,n}

রুট হিসাবে, এবং কাজ সম্পন্ন করা হবে।


0

আপনি যদি মেশিনগুলিকে নিয়ন্ত্রণ করতে জবাবদিহিতা ব্যবহার করেন তবে এই প্লেবুকটি সহায়ক হতে পারে।

---
 - hosts: all
   become: yes
   tasks:
    - name: "Run apt-get autoremove"
      apt: 
        name: linux-image-generic
        autoremove: yes
        state: present 
        update_cache: yes
        cache_valid_time: 3600
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.