ይህ ውቅረት ከየት ነው? [ዴቢያን/ኡቡንቱ]

የዚህ ልጥፍ አላማ በስርዓት ውቅር ፋይሉ ውስጥ ከ"ምንጭ ፈልግ" ጋር የተያያዙ የዴቢያን/ኡቡንቱ ማረም ቴክኒኮችን ማሳየት ነው።

የሙከራ ምሳሌ፡- የተጫነውን የስርዓተ ክወና የ 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) በ / ወዘተ ማውጫ (አብዛኛዎቹ ውቅሮች ባሉበት) ውስጥ የዚህን ተለዋዋጭ መጠቀስ እንፈልጋለን። በ 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 ከጥቅሉ ውስጥ ወደ ስርዓቱ አልተጫነም. ምናልባት በፖስቲንስት/ፕሪንስት ጥቅል ስክሪፕት ውስጥ የተፈጠረ ነው? ስሪት ቁጥር 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 ከተጠቀሰው ጥቅል ውስጥ በስርዓቱ ውስጥ ያሉትን ሁሉንም ፋይሎች ለማየት ያስችልዎታል. ለማጥናት አንድ አስደሳች ፋይል አጉልቻለሁ። ፋይሉን መመርመር ይህ ተለዋዋጭ እንዴት ጥቅም ላይ እንደሚውል ያሳያል, ነገር ግን ከየት እንደመጣ አይመልስም.

ዲኮር

ይህ የአንድ ሰው ቅርስ ሆኖ ተገኝቷል። የማን ነው? ወደ ጫኚው ውስጥ ከመግባታችን በፊት፣ ሌላ አስፈላጊ የዴቢያን መሠረተ ልማትን እንመልከት - ለጥያቄዎች መልስ። አንድ ጥቅል ጥያቄ በጠየቀ ቁጥር እና ብዙ ጊዜ ጥያቄ ሳይጠይቅ ነገር ግን ነባሪውን ሲጠቀም ጥያቄውም ሆነ መልሱ በዴቢያን ልዩ ዳታቤዝ ውስጥ ይመዘገባሉ 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 የሚያነብ እና እዚያ ትልቁን ይመርጣል. መለዋወጥ የሚመጣው ከፓርማን ነው።

ለሙከራ ተግባራችን መልሱ ነው፡- ፋይሉ በሚጫንበት ጊዜ በ / ዒላማው ጫኚው የተፈጠረ ነው፣ ማለትም. እየተነጋገርን ያለነው ስለ ታዋቂ ነገር ነው ፣ ግን ስለ አንድ ቅርስ። ይህንን ፋይል ለመለወጥ በስርዓቱ ውስጥ ባሉ ነባር ጥቅሎች ውስጥ ማንም እና ምንም የለም።

ለማጠቃለል

  1. dpkg እና debconf የፋይል አቅራቢዎችን ለማግኘት ዋና ዘዴዎች ናቸው።
  2. ፍለጋ /var/lib/dpkg/info በመጫኛ ደረጃ ወቅት የፋይል ስራዎችን እንዲያዩ ያስችልዎታል።
  3. ጫኚው በማንም የማይለወጡ (ከተጠቃሚው በቀር) የማይለወጡ አርቲፊሻል ፋይሎችን መፍጠር ይችላል እና ይሄ በአጫጫን ኮድ ውስጥ ይታያል።

ምንጭ: hab.com

አስተያየት ያክሉ