இந்த இடுகையின் நோக்கம் டெபியன்/உபுண்டுவில் "ஆதாரத்தைக் கண்டறிதல்" தொடர்பான பிழைத்திருத்த நுட்பத்தை கணினி உள்ளமைவு கோப்பில் காண்பிப்பதாகும்.
சோதனை எடுத்துக்காட்டு: நிறுவப்பட்ட OS இன் tar.gz நகலை மிகவும் கேலி செய்த பிறகு, அதை மீட்டமைத்து புதுப்பிப்புகளை நிறுவிய பிறகு, நாங்கள் செய்தியைப் பெறுகிறோம்:
update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
W: initramfs-tools configuration sets RESUME=/dev/mapper/U1563304817I0-swap
W: but no matching swap device is available.
I: The initramfs will attempt to resume from /dev/dm-1
I: (/dev/mapper/foobar-swap)
I: Set the RESUME variable to override this.
இலக்கு: இந்த மதிப்பு (U1563304817I0) எங்கிருந்து வந்தது மற்றும் அதை எவ்வாறு சரியாக மாற்றுவது என்பதைப் புரிந்து கொள்ளுங்கள். இதுவே முதலில் வந்த உதாரணம், குறிப்பாக சுவாரஸ்யமாக இல்லை, ஆனால் Linux உடன் பணிபுரியும் நடைமுறை முறைகளைக் காட்ட வசதியானது.
படி எண் 1: ரெஸ்யூம் எங்கிருந்து வந்தது?
# cd /etc
# grep -r RESUME
initramfs-tools/conf.d/resume:RESUME=/dev/mapper/U1563304817I0-swap
நாங்கள் மீண்டும் மீண்டும் (-r
) /etc கோப்பகத்தில் (பெரும்பாலான கட்டமைப்புகள் இருக்கும்) இந்த மாறியின் குறிப்பைப் பார்க்கவும். conf.d துணுக்கைக் காண்கிறோம், இது initramfs-tools தொகுப்பால் தெளிவாகப் பயன்படுத்தப்படுகிறது.
இந்த துணுக்கு எங்கிருந்து வருகிறது?
மூன்று விருப்பங்கள் உள்ளன:
- மேஜிக் கலைப்பொருள் (யாரோ அதை வைத்து மறந்துவிட்டார்கள்)
- தொகுப்பிலிருந்து கட்டமைப்பு
- கணினி தொகுப்புகளில் இருந்து சில ஸ்கிரிப்ட் மூலம் உருவாக்கப்பட்ட கட்டமைப்பு
எண். 2 ஐச் சரிபார்ப்போம் (எளிமையானது):
dpkg -S initramfs-tools/conf.d/resume
dpkg-query: no path found matching pattern *initramfs-tools/conf.d/resume*
dpkg -S
நிறுவப்பட்ட கோப்புகளின் தரவுத்தளத்தைத் தேடவும் மற்றும் கோப்பு எந்த தொகுப்பைச் சேர்ந்தது என்பதைக் கண்டறியவும் அனுமதிக்கிறது. வெற்றிகரமான தேடலுக்கான எடுத்துக்காட்டு இங்கே:
dpkg -S resolv.conf
manpages: /usr/share/man/man5/resolv.conf.5.gz
systemd: /lib/systemd/resolv.conf
எங்கள் பணிக்கு திரும்புவோம்: கோப்பு initramfs-tools/conf.d/resume
தொகுப்பிலிருந்து கணினியில் நிறுவப்படவில்லை. தொகுப்பின் postinst/preinst ஸ்கிரிப்ட்டில் இது உருவாக்கப்படுமா? பதிப்பு எண் 3 ஐப் பார்ப்போம்.
# cd /var/lib/dpkg/info/
# grep -r initramfs-tools/conf.d/resume *
initramfs-tools-core.postrm: rm -f /etc/initramfs-tools/conf.d/resume
பட்டியலில் /var/lib/dpkg/info/
தொகுப்புகளின் அனைத்து "மெட்டாஃபைல்களின்" தொகுக்கப்படாத பதிப்புகள் உள்ளன (நிறுவல்/அகற்றுதல் ஸ்கிரிப்டுகள், தொகுப்பு விளக்கங்கள் போன்றவை). ஆச்சரியப்படும் விதமாக, இந்த கோப்பு initramfs-tools-core தொகுப்பின் postrm (நிறுவல் நீக்கம்) இல் அகற்றப்பட்டது. அதன் postinst இன் உள்ளடக்கங்களைப் பார்ப்போம்... conf.d கோப்பகத்துடன் தொடர்புடையது எதுவுமில்லை.
தொகுப்பில் சேர்க்கப்பட்டுள்ள கோப்புகளைப் பார்ப்போம் initramfs-tools-core
.
# dpkg -L initramfs-tools-core
...
/usr/share/initramfs-tools/hooks/resume
...
அணி dpkg -L
கணினியில் உள்ள அனைத்து கோப்புகளையும் குறிப்பிட்ட தொகுப்பிலிருந்து பார்க்க உங்களை அனுமதிக்கிறது. படிப்பதற்கு சுவாரஸ்யமான ஒரு கோப்பை நான் முன்னிலைப்படுத்தியுள்ளேன். கோப்பை ஆய்வு செய்வது இந்த மாறி எவ்வாறு பயன்படுத்தப்படுகிறது என்பதைக் காட்டுகிறது, ஆனால் அது எங்கிருந்து வருகிறது என்பதைக் கூறவில்லை.
டெப்கான்ஃப்
இது யாரோ ஒருவரின் கலைப்பொருள் என்று மாறிவிடும். யாருடைய? நிறுவிக்குள் நுழைவதற்கு முன், மற்றொரு முக்கியமான டெபியன் உள்கட்டமைப்பைப் பார்ப்போம் - கேள்விகளுக்கான பதில்கள். ஒவ்வொரு முறையும் ஒரு தொகுப்பு ஒரு கேள்வியைக் கேட்கும் போது, மேலும் பல சமயங்களில் அது கேள்வியைக் கேட்காமல், இயல்புநிலை விருப்பத்தைப் பயன்படுத்தும் போது, கேள்வி மற்றும் பதில் இரண்டும் Debconf எனப்படும் Debian இல் உள்ள ஒரு சிறப்பு தரவுத்தளத்தில் பதிவு செய்யப்படும். பதில்களின் தரவுத்தளத்தை நாம் பார்க்கலாம் (மேலும் தொகுப்பை நிறுவும் முன் அவற்றை அமைக்கவும் - debconf-set-selections
), இதற்கு நமக்கு ஒரு பயன்பாடு தேவை debconf-get-selections
கலவை இருந்து debconf-utils
. துரதிர்ஷ்டவசமாக, சுவாரஸ்யமான எதுவும் கிடைக்கவில்லை :(debconf-get-selections |grep -i resume
காலியாக திரும்பியது).
டெபியன்-நிறுவி
நிறுவி கேள்விகளுக்கான பதில்களின் சொந்த தரவுத்தளத்தைக் கொண்டுள்ளது: /var/log/installer/cdebconf/questions.dat
. துரதிர்ஷ்டவசமாக, எங்கள் விண்ணப்பத்தைப் பற்றி ஒரு வார்த்தை கூட இல்லை.
ஆனால் அருகில் பதிவுகள் உள்ளன, உட்பட. syslog, அங்கு முழு நிறுவல் பதிவு எழுதப்பட்டுள்ளது. அடிப்படை நிறுவி தொகுப்பு அங்கும் அதில் குறிப்பிடப்பட்டுள்ளது
அவற்றில் உள்ள கேள்விக்கான பதிலை எளிதாகக் காணலாம்:
resume="$(mapdevfs "$resume_devfs")"; then
...
if [ "$do_initrd" = yes ]; then
...
resumeconf=$IT_CONFDIR/resume
....
echo "RESUME=$resume" >> $resumeconf
mapdevfs என்பது தெளிவான நோக்கத்துடன் கூடிய ஒரு பயன்பாடாகும், மேலும் நாம் ஆர்வமாக உள்ள செயல்பாடு get_resume_partition
, இது /proc/swaps ஐப் படித்து, அங்கு பெரியதைத் தேர்ந்தெடுக்கிறது. ஸ்வாப் பார்ட்மேனிடமிருந்து வருகிறது.
எங்கள் சோதனை பணிக்கான பதில்: நிறுவலின் போது / இலக்கில் நிறுவியரால் கோப்பு உருவாக்கப்பட்டது, அதாவது. நாங்கள் நன்கு அறியப்பட்ட, ஆனால் ஒரு கலைப்பொருளைப் பற்றி பேசுகிறோம். இந்த கோப்பை மாற்றக்கூடிய கணினியில் இருக்கும் தொகுப்புகளில் எதுவும் அல்லது எதுவும் இல்லை.
சுருக்கமாக
- dpkg மற்றும் debconf ஆகியவை கோப்பு வழங்குநர்களைக் கண்டுபிடிப்பதற்கான முக்கிய முறைகள்.
- /var/lib/dpkg/info இல் தேடுவது நிறுவல் கட்டத்தில் கோப்புகளின் செயல்பாடுகளைக் காண உங்களை அனுமதிக்கிறது.
- நிறுவி யாராலும் (பயனர் தவிர) ஒருபோதும் மாற்றப்படாத கலைப்பொருள் கோப்புகளை உருவாக்க முடியும், மேலும் இதை நிறுவி குறியீட்டில் காணலாம்.
ஆதாரம்: www.habr.com