මෙම වින්‍යාසය පැමිණෙන්නේ කොහෙන්ද? [ඩේබියන්/උබුන්ටු]

මෙම පෝස්ටුවෙහි අරමුණ වන්නේ පද්ධති වින්‍යාස ගොනුවේ "මූලාශ්‍රය සොයා ගැනීම" සම්බන්ධව debian/ubuntu හි දෝෂහරණ තාක්‍ෂණයක් පෙන්වීමයි.

පරීක්ෂණ උදාහරණය: ස්ථාපිත මෙහෙයුම් පද්ධතියේ 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) පැමිණියේ කොහෙන්ද සහ එය නිවැරදිව වෙනස් කරන්නේ කෙසේද යන්න තේරුම් ගන්න. මෙය හමු වූ පළමු උදාහරණයයි, එයම විශේෂයෙන් සිත්ගන්නා සුළු නොවේ, නමුත් ලිනක්ස් සමඟ වැඩ කිරීමේ ප්‍රායෝගික ක්‍රම පෙන්වීමට පහසුය.

පියවර අංක 1: RESUME පැමිණියේ කොහෙන්ද?

# cd /etc
# grep -r RESUME
initramfs-tools/conf.d/resume:RESUME=/dev/mapper/U1563304817I0-swap

අපි නැවත නැවතත් (-r) මෙම විචල්‍යය පිළිබඳ සඳහනක් /etc නාමාවලියෙහි (බොහෝ වින්‍යාසයන් ඇති) සොයන්න. initramfs-tools පැකේජය මගින් පැහැදිලිව භාවිතා කරන conf.d ස්නිපටය අපට හමු වේ.

මේ කොටස කොහෙන්ද?

විකල්ප තුනක් ඇත:

  1. මැජික් කෞතුක වස්තුව (යමෙකු එය දමා අමතක වී ඇත)
  2. පැකේජයෙන් වින්‍යාස කරන්න
  3. පද්ධති පැකේජ වලින් සමහර ස්ක්‍රිප්ට් මගින් ජනනය කරන ලද වින්‍යාසය

අපි අංක 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

මෙය කාගේ හෝ කෞතුක භාණ්ඩයක් බව පෙනී යයි. කාගේද? ස්ථාපකය තුළට කිමිදීමට පෙර, අපි තවත් වැදගත් ඩේබියන් යටිතල ව්‍යුහයක් දෙස බලමු - ප්‍රශ්නවලට පිළිතුරු. පැකේජයක් ප්‍රශ්නයක් අසන සෑම අවස්ථාවකම, සහ බොහෝ අවස්ථාවලදී එය ප්‍රශ්නයක් අසන්නේ නැති නමුත් පෙරනිමි විකල්පය භාවිතා කරන විට, ප්‍රශ්නය සහ පිළිතුර යන දෙකම Debconf නම් Debian හි විශේෂ දත්ත ගබඩාවක සටහන් වේ. අපට පිළිතුරු වල දත්ත සමුදාය දෙස බැලිය හැකිය (සහ පැකේජය ස්ථාපනය කිරීමට පෙර ඒවා සකසන්න - debconf-set-selections), මේ සඳහා අපට උපයෝගීතාවයක් අවශ්ය වේ debconf-get-selections සංයුතියෙන් debconf-utils. අවාසනාවට, රසවත් කිසිවක් හමු නොවීය :(debconf-get-selections |grep -i resume හිස් ආපසු).

ඩෙබියන්-ස්ථාපකය

ස්ථාපකයට ප්‍රශ්න වලට පිළිතුරු සඳහා ඔහුගේම දත්ත සමුදායක් ඇත: /var/log/installer/cdebconf/questions.dat. අවාසනාවට, අපගේ ජීව දත්ත පත්‍රය ගැන ද වචනයක් නැත.
නමුත් අසල ලොග ඇත, ඇතුළුව. syslog, එහිදී සම්පූර්ණ ස්ථාපන ලොගය ලියා ඇත. මූලික-ස්ථාපක පැකේජය එහි සඳහන් කර ඇත, සහ එය මත පිටුව අපි raws වෙත සබැඳිය බලන්න පුළුවන්.

ඔවුන් තුළ අපගේ ප්‍රශ්නයට පිළිතුර පහසුවෙන් සොයාගත හැකිය:

  resume="$(mapdevfs "$resume_devfs")"; then
...
    if [ "$do_initrd" = yes ]; then
     ...
            resumeconf=$IT_CONFDIR/resume
....
                echo "RESUME=$resume" >> $resumeconf

mapdevfs යනු පැහැදිලි අරමුණක් සහිත උපයෝගීතාවයක් වන අතර, අප උනන්දු වන කාර්යය වන්නේ get_resume_partition, එය /proc/swaps කියවන අතර එහි ඇති විශාලතම එක තෝරා ගනී. Swap එන්නේ partman ගෙන්.

අපගේ පරීක්ෂණ කර්තව්‍යයට පිළිතුර: ගොනුව ස්ථාපනය කරන අවස්ථාවේදී / ඉලක්කය තුළ ස්ථාපකය විසින් නිර්මාණය කර ඇත, i.e. අපි කතා කරන්නේ සුප්රසිද්ධ, නමුත් කෞතුක වස්තුවක් ගැන ය. මෙම ගොනුව වෙනස් කළ හැකි කිසිවක් හෝ කිසිවක් පද්ධතියේ පවතින පැකේජ වල නොමැත.

සාරාංශ කිරීමට

  1. dpkg සහ debconf ගොනු සපයන්නන් සොයා ගැනීම සඳහා ප්රධාන ක්රම වේ.
  2. /var/lib/dpkg/info හි සෙවීම මඟින් ස්ථාපන අදියරේදී ගොනු වල මෙහෙයුම් බැලීමට ඔබට ඉඩ සලසයි.
  3. ස්ථාපකය විසින් කිසිවකු විසින් (පරිශීලකයා හැර) කිසිදා වෙනස් නොකරන ලද කෞතුක වස්තු ගොනු නිර්මාණය කළ හැකි අතර, මෙය ස්ථාපක කේතයෙහි දැකිය හැක.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න