SSD Nodes Learn Hosting plans →
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-08-30

Ubuntu-வில் /boot partition-ஐ சுத்தம் செய்வது எப்படி?

/boot partition நிரம்பியதால் apt error ஏற்படுகிறதா? தற்போது இயங்கும் kernel-ஐ நீக்காமல், பழைய linux-image packages-ஐ பாதுகாப்பாக அகற்றி இடவசதியை உருவாக்குவது எப்படி என்பதை அறியுங்கள்.

/boot partition பழைய kernels-ஆல் நிரம்பும்போது ஏன் apt வேலை செய்வதை நிறுத்துகிறது

Ubuntu-வில், ஒவ்வொரு kernel update-ன் போதும் புதிய கோப்புகள் /boot-ல் எழுதப்படுகின்றன. பழைய கோப்புகள் அங்கேயே இருப்பதால், சிறிய அளவிலான /boot partition நிரம்பிவிடுகிறது. இதனால் apt-ஆல் புதிய நிறுவல்கள் (installations) எதையும் முடிக்க முடிவதில்லை. இதைச் சரிசெய்ய இரண்டு படிகள் உள்ளன. முதலில், கணினியில் உள்ள எந்தெந்த packages kernels என்பதை கண்டறிய வேண்டும்; தற்போது நீங்கள் பயன்படுத்தும் kernel எது என்பதையும் உறுதிப்படுத்த வேண்டும். அதன் பிறகு, மற்ற பழைய kernels-ஐ apt autoremove --purge மூலம் நீக்க வேண்டும்.

இங்கு வரிசைமுறை முக்கியமானது. தற்போது இயங்கிக்கொண்டிருக்கும் kernel-ஐ ஒருபோதும் நீக்கக்கூடாது. சில நேரங்களில், apt கட்டளையை இயக்க முடியாத அளவுக்கு கணினி ஏற்கனவே பாதிக்கப்பட்டிருக்கலாம். எனவே, முதலில் பிரச்சினையை முறையாகக் கண்டறியவும்.

தோல்வி எவ்வாறு வெளிப்படுகிறது

ஒரு kernel பதிப்பு இரண்டு பெரிய கோப்புகளை /boot-ல் நிறுவுகிறது: சுருக்கப்பட்ட kernel (vmlinuz-<version>) மற்றும் initramfs (initial RAM filesystem, initrd.img-<version>, இது உண்மையான root-ஐ mount செய்வதற்கு முன்பு kernel பிரித்தெடுக்கும் சிறிய archive ஆகும்). நிறுவலின் போது உங்கள் கணினியிலேயே initramfs உருவாக்கப்படுகிறது, இதனால்தான் நிறுவலுக்கு பதிவிறக்க வேகம் மட்டுமல்லாமல், போதிய அளவு காலி இடமும் (free space) தேவைப்படுகிறது. போதிய இடம் இல்லாதபோது, இந்த உருவாக்கம் தோல்வியடைந்து, அந்த package-ம் தோல்வியடைகிறது.

update-initramfs: Generating /boot/initrd.img-6.8.0-64-generic
gzip: stdout: No space left on device
E: mkinitramfs failure gzip 1
update-initramfs: failed for /boot/initrd.img-6.8.0-64-generic with 1.
dpkg: error processing package linux-image-6.8.0-64-generic (--configure):
 installed linux-image-6.8.0-64-generic package post-installation script subprocess returned error exit status 1

பதிப்பு சரம் (version string) உங்களுடையதாக இருக்கும். /etc/initramfs-tools/initramfs.conf-ல் உள்ள COMPRESS=-லிருந்து compressor பெயர் வருகிறது, எனவே புதிய image-ல் zstd என்றும், பழைய ஒன்றில் gzip என்றும் இருக்கலாம். இந்தப் சிக்கலை அடையாளம் காணும் இரண்டு வரிகள் No space left on device மற்றும் அதற்கு கீழே உள்ள dpkg: error processing package வரியாகும்.

அதன்பிறகு, அந்த package முழுமையற்ற நிலையில் (half-configured) இருக்கும். அதன் பிறகு இயக்கப்படும் ஒவ்வொரு apt-ம் அதை மீண்டும் configure செய்ய முயற்சிக்கும், அதே வழியில் தோல்வியடையும், மற்றும் E: Sub-process /usr/bin/dpkg returned an error code (1)-உடன் முடிவடையும். வட்டு இடத்தைத் தாண்டி கவனிக்க வேண்டிய பகுதி இதுதான்: unattended-upgrades அதன் கால அட்டவணையில் இயங்கும்போது, அதே பிழையைச் சந்தித்து நின்றுவிடும். server ஆரோக்கியமாக இருப்பது போலத் தோன்றும், ஆனால் பாதுகாப்பு patches-ஐப் பதிவேற்றுவது அமைதியாக நின்றுவிடும். மேலும், நீங்கள் முயற்சிக்கும் எந்தவொரு தொடர்பற்ற நிறுவலும் அதே வரியுடன் தோல்வியடையும், அந்த நேரத்தில் நீங்கள் எதைச் சேர்க்க முயன்றீர்களோ அதன் மீது பழி விழும். இதனால்தான் Ubuntu-வில் தோல்வியடையும் Tailscale நிறுவல் என்பதை முதலில் ஒரு apt பிழையாகப் படிப்பது பயனுள்ளது. நீங்கள் இந்த நிலையை அடைவதற்கு முன்பே apt update தோல்வியடைந்தால், அது ஒரு தனிப் பிரச்சினை, பெரும்பாலும் deb822 sources migration-க்கு பிறகு ஏற்படும் நகல் உள்ளீடு (duplicate entry) காரணமாக இருக்கலாம்.

/boot ஒரு தனி partition-ஆ என்பதைச் சரிபார்த்தல்

எதையும் நீக்கும் முன், நீங்கள் உண்மையில் எவ்வளவு இடத்தை விடுவிக்கிறீர்கள் என்பதைக் கண்டறியவும்.

findmnt /boot
findmnt -T /boot
df -h /boot /

/boot அதன் சொந்த mount point-ஆக இருந்தால் மட்டுமே முதல் கட்டளை ஒரு வரியை அச்சிடும். இரண்டாவது கட்டளை எப்போதும் அச்சிடும், மேலும் /boot-ஐக் கொண்டிருக்கும் filesystem-ன் பெயரைத் தெரிவிக்கும். அவை /-ன் அதே filesystem-ஐக் குறிப்பிட்டால், /boot என்பது root filesystem-ல் உள்ள ஒரு directory மட்டுமே; அது தானாகவே நிறையாது: உங்கள் root filesystem முழுமையாக உள்ளது, பழைய kernels அதில் ஒரு பங்களிப்பு மட்டுமே. அந்தச் சூழலில், /var/cache/apt/archives-ன் கீழ் உள்ள தரவிறக்கம் செய்யப்பட்ட .deb கோப்புகளை நீக்கும் sudo apt clean, உங்களுக்குச் சிறிது இடத்தை உருவாக்கிக் கொடுக்கும். உண்மையான /boot partition கொண்ட கணினியில், apt clean அங்கு எதையும் விடுவிக்காது, ஏனெனில் cache வேறு ஒரு filesystem-ல் உள்ளது.

இப்போது நீங்கள் கையாள வேண்டிய எண்ணைப் பெறவும்.

df -h /boot
ls -lh /boot/vmlinuz-$(uname -r) /boot/initrd.img-$(uname -r)

Avail நெடுவரிசையை அந்த இரண்டு கோப்புகளின் அளவுடன் ஒப்பிடவும். initrd என்பது பெரிய கோப்பாகும். அடுத்த kernel update-க்கு அதே அளவுள்ள மற்றொரு ஜோடி கோப்புகளுக்கு இடம் தேவைப்படும், எனவே Avail தற்போதைய initrd-ஐ விடச் சிறியதாக இருந்தால், அடுத்த update தோல்வியடையும்.

தற்போது இயங்கும் kernel-ஐக் கண்டறிதல்

uname -r
cat /var/run/reboot-required.pkgs

uname -r தற்போது நினைவகத்தில் (memory) இயங்கிக்கொண்டிருக்கும் kernel-ன் release string-ஐ அச்சிடும். அந்த string-ஐ எங்காவது நகலெடுத்துக் கொள்ளவும். அது நீங்கள் மாற்றக்கூடாத ஒரே version ஆகும்.

ஒரு package reboot செய்யக் கோரும்போது மட்டுமே இரண்டாவது கோப்பு உருவாகும். அதில் உள்ள linux-image வரி, வட்டில் (disk) புதிய kernel நிறுவப்பட்டு, இன்னும் பயன்படுத்தப்படாமல் இருப்பதைக் குறிக்கிறது; ஏனெனில், அது நிறுவப்பட்ட பிறகு கணினி reboot செய்யப்படவில்லை. முடிந்தால், சுத்தம் செய்வதற்கு முன் reboot செய்யவும். apt தற்போது இயங்கும் kernel மற்றும் மிகப்புதிய kernel ஆகிய இரண்டையும் பாதுகாக்கும். எனவே, நீங்கள் பழைய kernel-ஐ இயக்கும்போது சுத்தம் செய்தால், தேவைக்கு அதிகமாக ஒரு version கூடுதலாகத் தக்கவைக்கப்படும்.

Kernel தொகுப்புகளைப் பட்டியலிட்டு அவற்றின் நிலையைச் சரிபார்த்தல்

dpkg --list | grep -E 'linux-(image|modules|headers|tools)' | awk '{print $1, $2}'

முதல் புலம் dpkg-ன் நிலை குறியீட்டைக் குறிக்கிறது. ii என்பது தொகுப்பு நிறுவப்பட்டு கட்டமைக்கப்பட்டுவிட்டது என்று பொருள். iF என்பது தொகுப்பு நிறுவப்பட்டாலும் பாதியிலேயே கட்டமைக்கப்பட்டுள்ளது என்று பொருள்; மேலே குறிப்பிட்ட தோல்வியுற்ற மேம்படுத்தலுக்குப் பிறகு இதுவே நிகழ்கிறது. rc என்பது தொகுப்பு நீக்கப்பட்டுவிட்டது, ஆனால் அதன் கட்டமைப்பு கோப்புகள் வட்டில் இன்னும் உள்ளன என்று பொருள்; இது /boot-ல் எந்த இடத்தையும் அடைத்துக்கொள்ளாது, எனவே இதை தாராளமாக purge செய்யலாம்.

இரண்டாவது புலம் அது என்ன வகையான தொகுப்பு என்பதைத் தெரிவிக்கிறது. linux-image-6.8.0-64-generic போன்ற பதிப்பு எண் கொண்ட பெயர் ஒரு குறிப்பிட்ட kernel-ஐக் குறிக்கும். linux-image-generic, linux-headers-generic அல்லது linux-generic போன்ற பதிப்பு எண் இல்லாத பெயர்கள் meta package-களைக் குறிக்கும். இதில் kernel இருக்காது. இதன் முக்கியப் பணி, மிகப்புதிய பதிப்புள்ள kernel-ஐச் சார்ந்திருப்பது மட்டுமே; இதன் மூலம் apt upgrade புதிய kernel-களைத் தானாகவே பதிவிறக்கும். ஒரு meta package-ஐ நீக்கினால், அந்த இயந்திரத்திற்கு இனி kernel மேம்படுத்தல்கள் கிடைக்காது, இதைப் பற்றி எந்த எச்சரிக்கையும் வராது.

குடும்பங்கள் பின்வருமாறு பிரிக்கப்படுகின்றன. linux-image-* என்பது /boot-ல் உள்ள சுருக்கப்பட்ட kernel-ஐக் கொண்டுள்ளது. linux-modules-* மற்றும் linux-modules-extra-* ஆகியவை /lib/modules-ன் கீழ் உள்ள drivers-களைக் கொண்டுள்ளன. linux-headers-* என்பது /usr/src-ன் கீழ் உள்ள build headers-களைக் கொண்டுள்ளது; எனவே headers-களை purge செய்வது root கோப்பு முறைமையில் (filesystem) இடத்தைச் சேமிக்குமே தவிர, /boot-ல் அல்ல. உங்கள் பிரச்சினை /boot partition முழுமையாக நிரம்பியிருப்பது என்றால், நீங்கள் image தொகுப்புகளைத்தான் நீக்க வேண்டும்.

ls -1 /boot/vmlinuz-*
ls -1 /lib/modules/

இந்த இரண்டு பட்டியல்களும் ஒன்றுக்கொன்று மற்றும் dpkg --list வெளியீட்டுடன் ஒத்துப்போக வேண்டும். /lib/modules-ல் உள்ள ஒரு கோப்பகம் (directory), நிறுவப்பட்ட தொகுப்பு பட்டியலில் இல்லை என்றால், அது யாரோ கோப்புகளை நேரடியாக நீக்கியதால் எஞ்சியிருக்கும் கோப்பாகும்.

apt எந்தெந்த kernels-ஐ வைத்திருக்க வேண்டும் என்பதை எவ்வாறு தீர்மானிக்கிறது

apt autoremove பாதுகாக்கப்பட்டதாகக் கருதும் எந்தவொரு kernel-ஐயும் நீக்காது, மேலும் நீங்கள் தற்போது இயக்கும் kernel அந்தப் பாதுகாக்கப்பட்ட தொகுப்பில் அடங்கும். Ubuntu releases-க்கு இடையே இந்த retention policy மாறியுள்ளதால், எங்கோ எழுதப்பட்டிருக்கும் ஒரு எண்ணை நம்புவதை விட, உங்கள் கணினியில் உள்ள அமைப்பைப் படிப்பதே சிறந்தது.

apt-config dump | grep -i -e neverautoremove -e versionedkernel
ls -l /etc/apt/apt.conf.d/01autoremove /etc/apt/apt.conf.d/01autoremove-kernels

APT::NeverAutoRemove என்பது apt autoremove நீக்க மறுக்கும் package name patterns-ன் பட்டியல் ஆகும். APT::VersionedKernelPackages என்பது apt முதலில் versioned kernel packages என்று கருதும் name prefixes-ன் பட்டியல் ஆகும். /etc/apt/apt.conf.d/01autoremove-kernels-ஐ உருவாக்கும் releases-ல், ஒவ்வொரு முறை kernel package நிறுவப்படும்போதும் /etc/kernel/postinst.d/apt-auto-removal அந்த file-ஐ மீண்டும் எழுதும், எனவே அதை நீங்களாகத் திருத்துவதால் எந்தப் பயனும் இல்லை: அடுத்த முறை kernel நிறுவும்போது உங்கள் திருத்தம் மேலெழுதப்படும். அந்த file இல்லாத releases-ல், apt அதே பாதுகாப்பை உள்ளமைவாகச் செயல்படுத்துகிறது. எப்படியிருப்பினும், apt-config dump உங்கள் கணினியில் நடைமுறையில் உள்ள விதிகளைக் காட்டும், அந்த output-தான் உங்கள் release-க்குச் சரியான விடையாகும்.

பாதுகாப்பாகச் செய்யக்கூடிய சுத்தம் செய்தல்

sudo apt update
sudo apt autoremove --purge --dry-run

--dry-run வட்டில் எதையும் மாற்றாது, உண்மையான செயல்பாட்டின் போது எவை நீக்கப்படுமோ அவற்றை மட்டும் பட்டியலிடும். அந்தப் பட்டியலை கவனமாகப் படிக்கவும். இரண்டு விஷயங்கள் உங்களை நிறுத்த வேண்டும். நீக்கப்பட வேண்டிய பட்டியலில் linux-generic அல்லது linux-image-generic போன்ற meta package இருந்தால், ஏதோ ஒன்று அதை automatic என்று குறித்துள்ளது என்று பொருள்; அதை நீக்கினால் உங்கள் kernel updates நின்றுவிடும். நீக்கப்பட வேண்டிய பட்டியலில் uname -r-லிருந்து வரும் string இருந்தால், தற்போது இயங்கும் kernel பாதுகாக்கப்படவில்லை என்று பொருள்; இது நடக்கக்கூடாது, எனவே மேலும் தொடரும் முன் இதை ஆராய வேண்டும்.

பட்டியல் சரியாக இருந்தால், அதை உண்மையாக இயக்கவும்.

sudo apt autoremove --purge
df -h /boot

--purge பாதியானது, package-ஐ நீக்குவதுடன் சேர்த்து எஞ்சியிருக்கும் configuration-களையும் நீக்கும். இது கூடுதல் இடத்தை மிகச் சிறிதளவே விடுவிக்கும், மேலும் dpkg --list-ல் rc வரிகள் குவிவதைத் தடுத்து, அடுத்த முறை தணிக்கை (audit) செய்யும்போது எளிதாக இருக்கும்.

பிறகு, boot menu மீண்டும் உருவாக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும். ஒரு kernel package-ஐ நீக்கும்போது அது உங்களுக்காக update-grub-ஐ இயக்கும், எனவே menu-வில் தற்போது இருக்கும் கோப்புகள் மட்டுமே இடம்பெற்றிருக்க வேண்டும்.

sudo grep -o 'vmlinuz-[^ ]*' /boot/grub/grub.cfg | sort -u
ls -1 /boot/vmlinuz-*

முதல் வெளியீட்டில் உள்ள ஒவ்வொரு version-ம் இரண்டாவது வெளியீட்டிலும் இருக்க வேண்டும். இல்லாத ஒரு கோப்பைச் சுட்டிக்காட்டும் menu entry இருந்தால், இயங்கிக்கொண்டிருக்கும் server GRUB prompt-ல் நின்றுவிடும். இது kernel update-க்குப் பிறகு boot ஆகாத VPS-க்கு ஒரு வழியாகும். இதைத் தவிர்க்காமல் விடுவதை விட, rescue console மூலம் சரிசெய்வது மிகவும் கடினமானது.

apt autoremove சில நேரங்களில் எதையும் நீக்காததற்கான காரணங்கள்

apt autoremove கட்டளையானது, தானாகவே (automatic) நிறுவப்பட்ட தொகுப்புகளை மட்டுமே நீக்கும். அதாவது, வேறொரு மென்பொருளின் சார்புத் தொகுப்பாக (dependency) நிறுவப்பட்டவை மட்டுமே நீக்கப்படும். நீங்கள் apt install linux-image-6.8.0-40-generic மூலம் நீங்களாகவே நிறுவிய ஒரு kernel, 'manual' என அடையாளப்படுத்தப்பட்டிருக்கும். எவ்வளவு பழையதாக இருந்தாலும், autoremove அதை நீக்காது.

apt-mark showmanual | grep -E '^linux-'

அந்தப் பட்டியலில் உள்ள எந்தவொரு versioned kernel-ம் autoremove-க்குத் தெரியாது. உங்கள் பட்டியலில் உள்ள version strings-ஐப் பயன்படுத்தி, அதை மீண்டும் manual நிலைக்கு மாற்றவும்:

sudo apt-mark auto linux-image-6.8.0-40-generic linux-modules-6.8.0-40-generic
sudo apt autoremove --purge --dry-run

Meta packages-ஐ manual நிலையிலேயே வைத்திருக்கவும். அவை நீங்கள் கோரியவை என்பதால், அவை manual என அடையாளப்படுத்தப்பட்டிருப்பதுதான் சரி.

குறிப்பிட்ட ஒரு kernel-ஐ நீக்குதல்

சில நேரங்களில், கொள்கை (policy) அனுமதிக்கும் வரை காத்திருக்காமல், ஒரு குறிப்பிட்ட kernel பதிப்பை உடனடியாக நீக்க வேண்டியிருக்கும். image package-ன் பெயரை மட்டும் குறிப்பிட்டால் போதும், மீதமுள்ளவற்றை apt கவனித்துக்கொள்ளும்.

sudo apt purge linux-image-6.8.0-40-generic

apt நீக்கப்பட வேண்டியவற்றின் பட்டியலைச் செயலுக்கு முன்பே காட்டும். ஏனெனில், linux-modules-extra-* அந்த image package-ஐச் சார்ந்துள்ளதால், ஒரே பரிவர்த்தனையில் (transaction) அவை நீக்கப்பட வேண்டும். காட்டப்படும் அந்தப் பட்டியல் உங்கள் பாதுகாப்பை உறுதி செய்வதற்கானது; நீங்கள் நீக்க விரும்பிய பதிப்புடன் சேர்த்து ஏதேனும் meta package-ம் நீக்கப்படுகிறதா என்பதை அதில் சரிபார்க்கலாம். எதிர்பாராத ஏதேனும் இருந்தால் n என்று பதிலளிக்கவும். அதன் பிறகு, தேவையற்றதாகிவிட்ட module மற்றும் header packages-ஐ நீக்க sudo apt autoremove --purge கட்டளையைப் பயன்படுத்தவும்.

இயங்கும் kernel-ஐ ஏன் ஒருபோதும் நீக்கக்கூடாது

கோப்புகள் நீக்கப்பட்ட பிறகும், நினைவகத்தில் (memory) ஏற்கனவே உள்ள kernel தொடர்ந்து இயங்கும், எனவே முதலில் எந்தப் பாதிப்பும் தெரிவதில்லை. ஆனால், kernel இதுவரை ஏற்றாத (load செய்யாத) அனைத்தும் பாதிக்கப்படும். linux-modules-$(uname -r)-ஐ நீக்குவது /lib/modules/$(uname -r)/-ஐ அழித்துவிடும், இதனால் அடுத்த முறை module ஏற்றப்படும்போது தோல்வியடையும்:

modprobe: FATAL: Module nf_tables not found in directory /lib/modules/6.8.0-64-generic

அந்த நிலையிலிருந்து firewall-ஐ மீண்டும் ஏற்ற (reload) முடியாது, அதேபோல் இந்த kernel இதுவரை அணுகாத ஒரு filesystem வகையை mount செய்யவும் முடியாது. இதற்கிடையில் /boot/vmlinuz-$(uname -r) நீக்கப்பட்டுவிட்டதால், boot menu-வில் நீங்கள் தற்போது இயக்கும் kernel காட்டப்படாது, அடுத்த முறை reboot செய்யும்போது கணினி வேறு ஏதோ ஒரு நிலைக்குச் சென்றுவிடும். கணினி தொடர்ந்து traffic-ஐக் கையாண்டாலும், அது ஏற்கனவே boot செய்ய முடியாத நிலைக்குத் தள்ளப்பட்டுவிட்டது. ஒவ்வொரு முறையும் நீக்க வேண்டிய பட்டியலைச் சரிபார்க்கும்போது uname -r-ஐ ஒப்பிட்டுப் பார்க்கவும்.

/boot partition முழுமையாக நிரம்பி apt இயங்க முடியாத நிலை

இந்தச் சூழலில்தான் பயனர்கள் இந்தத் பக்கத்தைத் தேடி வருகிறார்கள். apt autoremove, பாதியில் நின்ற kernel package-ன் கட்டமைப்பை முடிக்க dpkg-ஐக் கோருகிறது. அந்தச் செயல்முறை ஒரு initramfs-ஐ மீண்டும் உருவாக்க வேண்டும், அதற்கு /boot-ல் போதிய இடம் தேவை, ஆனால் அங்கே இடம் இல்லை. இந்தச் சுழற்சியை ஒருமுறை கைமுறையாக உடைக்க வேண்டும்.

uname -r
ls -1 /boot/initrd.img-*

uname -r வழங்கிய பதிப்பு அல்லாத ஒரு initrd-ஐத் தேர்ந்தெடுத்து, அந்த ஒரு கோப்பை மட்டும் நீக்கவும்.

sudo rm /boot/initrd.img-6.8.0-40-generic
sudo apt --fix-broken install
sudo apt autoremove --purge
sudo update-grub

ஒவ்வொரு வரிக்கும் ஒரு காரணம் உள்ளது. rm என்பது ஒரு திட்டமிட்ட விதிவிலக்கு; இது ஒரு கோப்பு இருப்பதாக dpkg-ஐ நம்ப வைக்கிறது, ஆனால் உண்மையில் அது இல்லை. apt --fix-broken install, initramfs-க்குத் தேவையான இடம் கிடைத்தவுடன், தோல்வியடைந்த கட்டமைப்பை நிறைவு செய்கிறது. autoremove --purge, நீங்கள் நீக்கிய கோப்புடன் தொடர்புடைய பழைய பதிப்புகளை நீக்குகிறது, இது dpkg-ஐ வட்டுடன் மீண்டும் ஒருங்கிணைக்கிறது. update-grub, தற்போதுள்ள கோப்புகளைக் கொண்டு menu-வை மீண்டும் உருவாக்குகிறது. rm மற்றும் update-grub-க்கு இடையில் reboot செய்ய வேண்டாம், ஏனெனில் அந்த இடைவெளியில் menu நீங்கள் நீக்கிய கோப்பைச் சுட்டிக்காட்டக்கூடும். dpkg குறுக்கிடப்பட்டதாகத் தெரிவித்தால், apt --fix-broken install செய்வது போலவே sudo dpkg --configure -a-வும் அதே பழுதுபார்ப்பைச் செய்யும்.

dnf சிஸ்டம்களில் அதே பணி

உங்கள் VPS-ல் Fedora அல்லது Rocky Linux போன்ற RHEL அடிப்படையிலான OS இயங்கினால், இதற்கான செயல்முறை தலைகீழாக இருக்கும். Debian மற்றும் Ubuntu சிஸ்டம்கள் apt autoremove விதிகள் மூலம் kernels-ஐப் பாதுகாக்கின்றன; சுத்தம் செய்யும் பணியை உங்களிடமோ அல்லது unattended-upgrades-விடமோ விட்டுவிடுகின்றன. ஆனால், dnf ஆனது installonly_limit எனப்படும் எண்ணிக்கையை அமல்படுத்துகிறது. புதிய kernel நிறுவப்படும்போது, அந்த எண்ணிக்கை மீறப்பட்டால், பழைய kernel தானாகவே நீக்கப்படும். தற்போதுள்ள மதிப்பை grep installonly_limit /etc/dnf/dnf.conf மற்றும் man 5 dnf.conf மூலம் சரிபார்க்கலாம். தேங்கியுள்ள பழைய கோப்புகளை sudo dnf remove --oldinstallonly மூலம் நீக்கலாம். இயங்கிக்கொண்டிருக்கும் kernel அங்கேயும் பாதுகாக்கப்படுகிறது. இரண்டு package managers-க்கும் இடையிலான விரிவான ஒப்பீட்டிற்கு, dnf மற்றும் apt கட்டளைகளின் ஒப்பீடு பகுதியைப் பார்க்கவும்.

மீண்டும் இது நிகழாமல் தடுத்தல்

நினைவில் வைத்துக்கொண்டு செய்யும் சுத்தம் செய்தல் ஒரு கட்டத்தில் தோல்வியடையும், எனவே kernel-களை நிறுவும் அமைப்பிலேயே இதைச் சேர்க்கவும். /etc/apt/apt.conf.d/50unattended-upgrades-ஐத் திறந்து, ஏற்கனவே comment செய்யப்பட்ட வரிகளாக உள்ள இந்த keys-ஐத் தேடவும்:

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

கோப்பின் இறுதியில் இரண்டாவது நகலைச் சேர்ப்பதற்குப் பதிலாக, ஏற்கனவே உள்ளவற்றை uncomment செய்யவும். apt configuration-ல் ஒரு key-க்கு கடைசியாக வழங்கப்படும் மதிப்பிற்கு முன்னுரிமை அளிக்கப்படும், எனவே நகல் இருந்தால் கோப்பில் முரண்பாடு ஏற்பட்டு, எந்த மதிப்பு உண்மையானது என்பது தெரியாமல் போகும். parser எதை இறுதி செய்துள்ளது என்பதைச் சரிபார்க்கவும், எதையும் மாற்றாத ஒரு run-ஐக் கவனிக்கவும்:

apt-config dump | grep -i 'Unattended-Upgrade::Remove'
sudo unattended-upgrade --dry-run --debug
sudo tail -n 40 /var/log/unattended-upgrades/unattended-upgrades.log

log கோப்பே இதற்கான சான்று. இது ஒவ்வொரு run-ஐயும் பதிவு செய்கிறது, எனவே இடப்பற்றாக்குறையால் தோல்வியடைந்த upgrade, கணினியில் patches நிலுவையில் இருப்பது யாருக்கும் தெரிவதற்கு முன்பே அதில் பதிவாகிவிடும். அந்த configuration-ன் மீதமுள்ள பகுதிகள் Ubuntu-வில் தானியங்கி பாதுகாப்பு மேம்படுத்தல்கள் பகுதியில் விளக்கப்பட்டுள்ளன.

அடுத்த kernel வருவதற்கு முன்பு சரிபார்க்க வேண்டிய ஒரு எண் உள்ளது, அது இந்த வழிகாட்டியின் தொடக்கத்தில் பயன்படுத்திய அதே இரண்டு கட்டளைகள்தான்:

df -h /boot
ls -lh /boot/initrd.img-$(uname -r)

Avail-ன் அளவு அந்த கோப்பை விட கணிசமாக அதிகமாக இல்லையென்றால், அடுத்த kernel மேலே குறிப்பிட்டது போலவே தோல்வியடையும், எனவே upgrade-ன் போது அல்லாமல் இப்போதே அதைச் சரிசெய்யவும். இந்தச் சரிபார்ப்பை உங்கள் பிற VPS வட்டு ஆரோக்கியச் சோதனைகளுடன் சேர்த்து ஒரு நிமிடம் செலவிடுவது பயனுள்ளது. இது ஒரு release upgrade-க்கு முன்னால் மிக முக்கியமானது, ஏனெனில் Ubuntu 24.04-லிருந்து 26.04-க்கு மாறுதல் செயல்முறையின் தொடக்கத்திலேயே புதிய kernel-ஐ நிறுவும், அப்போது /boot-ல் இடப்பற்றாக்குறை இருந்தால் do-release-upgrade தொடர மறுத்துவிடும். உங்கள் LTS server-க்கு இன்னும் அந்த upgrade வழங்கப்படவில்லை என்றால், அதற்குத் தவறு என்று அர்த்தமல்ல, அது நேரத்தைப் பொறுத்தது; ஏனெனில் Ubuntu, LTS-லிருந்து LTS-க்கான upgrade-களை 26.04.1 point release வெளியாகும் வரை நிறுத்தி வைக்கும். அந்த இடைப்பட்ட காலம், /boot-ஐச் சரியாகச் சீரமைக்க உங்களுக்குக் கிடைக்கும் வாய்ப்பாகும்.

FAQ

Ubuntu ஏன் பழைய kernel-களை நீக்காமல் வைத்திருக்கிறது?

ஏனெனில், boot ஆகாத ஒரு kernel-ஐ நீங்கள் வைத்திருந்தால், தேர்வு செய்ய வேறு எதுவும் இருக்காது. முந்தைய பதிப்பை வைத்திருப்பது, ஒரு தவறான update-ஐ GRUB menu மூலம் சரிசெய்ய வழிவகுக்கிறது; இல்லையெனில் நீங்கள் provider rescue console-ஐ நாட வேண்டியிருக்கும். apt எனவே, ஒரு குறிப்பிட்ட kernel தொகுப்புகளை தானாக நீக்கப்படாமல் பாதுகாக்கிறது, இதில் நீங்கள் தற்போது இயக்கும் kernel எப்போதும் அடங்கும். உங்கள் release-ல் கொள்கை மாறியிருக்கலாம் என்பதால், எவை பாதுகாக்கப்படுகின்றன என்பதைப் பார்க்க apt-config dump | grep -i neverautoremove கட்டளையை இயக்கவும்.

Production server-ல் apt autoremove --purge-ஐ இயக்குவது பாதுகாப்பானதா?

ஆம், நீங்கள் முதலில் dry run-ஐ சரிபார்த்தால் அது பாதுகாப்பானது. எதையும் நீக்காத sudo apt autoremove --purge --dry-run கட்டளையை இயக்கி, பட்டியலைச் சரிபார்க்கவும். அதில் linux-generic அல்லது linux-image-generic போன்ற meta package-கள் இருந்தால் நிறுத்தவும், ஏனெனில் அவற்றை நீக்கினால் எதிர்கால kernel update-கள் நின்றுவிடும். uname -r காட்டும் version string அதில் இருந்தாலும் நிறுத்தவும். இவை எதுவும் இல்லை என்றால், நீக்கப்படுபவை பழைய kernel-கள் மற்றும் தேவையற்ற dependencies மட்டுமே.

apt autoremove எதையும் நீக்கவில்லை, ஆனால் /boot இன்னும் நிரம்பியுள்ளது. இப்போது என்ன செய்வது?

பழைய kernel-கள் பெரும்பாலும் manual என்று குறிக்கப்பட்டிருக்கலாம், autoremove என்பது automatic என்று குறிக்கப்பட்ட தொகுப்புகளை மட்டுமே நீக்கும். apt-mark showmanual | grep -E '^linux-' கட்டளையை இயக்கவும். அதில் பட்டியலிடப்பட்டுள்ள எந்தவொரு versioned kernel-ம் ஏதோ ஒரு கட்டத்தில் கைமுறையாக நிறுவப்பட்டிருக்கலாம். அதை sudo apt-mark auto linux-image-<version> மூலம் automatic என்று மாற்றவும், பின் மீண்டும் dry run-ஐ இயக்கவும் அல்லது sudo apt purge linux-image-<version> மூலம் அந்த குறிப்பிட்ட version-ஐ நேரடியாக நீக்கவும்.

/boot-ல் உள்ள கோப்புகளை நான் கைமுறையாக நீக்கலாமா?

/boot முழுமையாக நிரம்பி, apt-ஆல் பழுதடைந்த kernel தொகுப்பை configure செய்ய முடியாத சூழலில் மட்டுமே, ஒருமுறை மட்டும் இதைச் செய்யலாம். uname -r வெளியீட்டில் இல்லாத ஒரு version-க்கு சொந்தமான ஒற்றை initrd.img-<version> கோப்பை நீக்கவும். பின் உடனடியாக sudo apt --fix-broken install, sudo apt autoremove --purge மற்றும் sudo update-grub ஆகிய கட்டளைகளை இயக்கவும். இந்த தொடர் நடவடிக்கைகள் இன்றி கோப்புகளை நீக்கினால், dpkg ஏற்கனவே நீக்கப்பட்ட கோப்புகளைப் பதிவு செய்திருக்கும், மேலும் GRUB menu-வில் இல்லாத கோப்புகளைச் சுட்டிக்காட்டும். இதனால் அடுத்தமுறை reboot செய்யும்போது கணினி இயங்காமல் போகும்.