هي ترتيب ڪٿان آئي آهي؟ [Debian/Ubuntu]

هن پوسٽ جو مقصد debian/ubuntu ۾ ڊيبگنگ ٽيڪنڪ ڏيکارڻ آهي سسٽم جي ترتيب واري فائل ۾ "ذريعو ڳولڻ" سان لاڳاپيل.

ٽيسٽ مثال: نصب ٿيل 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) ڪٿان آيو آهي ۽ ان کي صحيح طريقي سان ڪيئن تبديل ڪجي. هي پهريون مثال آهي جيڪو سامهون آيو، خاص طور تي پاڻ ۾ دلچسپ ناهي، پر لينڪس سان ڪم ڪرڻ جا عملي طريقا ڏيکارڻ لاءِ آسان آهي..

قدم نمبر 1: RESUME ڪٿان آيو؟

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

اسان بار بار (-r) هن متغير جو ذڪر ڳوليو /etc ڊاريڪٽري ۾ (جتي گھڻا ترتيبون آھن). اسان conf.d snippet ڳوليندا آهيون، جيڪو واضح طور تي initramfs-tools پيڪيج ذريعي استعمال ڪيو ويندو آهي.

هي ٽڪرو ڪٿان جو آهي؟

اتي ٽي اختيار آهن:

  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 سسٽم تي پيڪيج مان انسٽال ٿيل نه آهي. ٿي سگهي ٿو اهو ٺاهيل آهي پوسٽنسٽ/پرينسٽ اسڪرپٽ جي پيڪيج ۾؟ اچو ته ڏسو نسخو نمبر 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 پيڪيج جي. اچو ته ان جي پوسٽن جي مواد کي ڏسو... conf.d ڊاريڪٽري سان لاڳاپيل ڪجھ به نه.

اچو ته پيڪيج ۾ شامل فائلن کي ڏسو initramfs-tools-core.

# dpkg -L initramfs-tools-core
...
/usr/share/initramfs-tools/hooks/resume
...

ٽيم dpkg -L توهان کي سڀني فائلن کي ڏسڻ جي اجازت ڏئي ٿي جيڪي سسٽم تي مخصوص پيڪيج مان آهن. مون ھڪڙي فائل کي نمايان ڪيو آھي جيڪو مطالعي لاء دلچسپ آھي. فائل کي جانچڻ ڏيکاري ٿو ته هي متغير ڪيئن استعمال ڪيو ويو آهي، پر اهو نٿو ٻڌائي ته اهو ڪٿان اچي ٿو.

ڊيبونڪ

اهو ظاهر ٿئي ٿو ته هي ڪنهن جي artifact آهي. ڪنهن جي؟ انسٽالر ۾ ڊائيونگ ڪرڻ کان اڳ، اچو ته هڪ ٻيو اهم ديبين انفراسٽرڪچر تي نظر وجهون - سوالن جا جواب. هر دفعي هڪ پيڪيج هڪ سوال پڇي ٿو، ۽ ڪيترن ئي ڪيسن ۾ جڏهن اهو سوال نه ٿو پڇي پر ڊفالٽ آپشن استعمال ڪري ٿو، سوال ۽ جواب ٻئي Debian ۾ هڪ خاص ڊيٽابيس ۾ رڪارڊ ڪيا ويندا آهن debconf. اسان جوابن جي ڊيٽابيس کي ڏسي سگھون ٿا (۽ ان کي سيٽ ڪرڻ کان اڳ پڻ سيٽ ڪريو پاڻ کي انسٽال ڪرڻ کان اڳ - 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 ۽ اتي سڀ کان وڏو چونڊيو. مٽا سٽا partman مان اچي ٿو.

اسان جي ٽيسٽ ٽاسڪ جو جواب: فائل انسٽالر طرفان ٺاهي وئي آهي /target in انسٽاليشن جي وقت، يعني. اسان مشهور جي باري ۾ ڳالهائي رهيا آهيون، پر هڪ artifact. سسٽم ۾ موجود پيڪيجز ۾ ڪو به اهڙو يا ڪجھ به ناهي جيڪو هن فائل کي تبديل ڪري سگهي.

مختصر ڪرڻ لاء

  1. dpkg ۽ debconf فائل مهيا ڪندڙ ڳولڻ لاء مکيه طريقا آهن.
  2. /var/lib/dpkg/info ۾ ڳولها توهان کي انسٽاليشن مرحلي دوران فائلن تي آپريشن ڏسڻ جي اجازت ڏئي ٿي.
  3. انسٽالر ٺاهي سگھي ٿو آرٽيڪل فائلون جيڪي پوءِ ڪڏهن به تبديل نه ٿيون ٿين (سواءِ استعمال ڪندڙ)، ۽ اهو انسٽالر ڪوڊ ۾ ڏسي سگھجي ٿو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو