Nibo ni atunto yii wa lati? [Debian/Ubuntu]

Idi ti ifiweranṣẹ yii ni lati ṣafihan awọn imọ-ẹrọ n ṣatunṣe aṣiṣe debian/ubuntu ti o ni ibatan si “wa orisun” ninu faili atunto eto.

Apẹẹrẹ idanwo: lẹhin ẹgan gigun ti ẹda tar.gz ti OS ti a fi sii ati lẹhin imupadabọ rẹ ati fifi sori awọn imudojuiwọn, a gba ifiranṣẹ naa:

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.

Idi: lati loye ibiti iye yii (U1563304817I0) ti wa ati bii o ṣe le yi pada ni deede. Eyi ni apẹẹrẹ akọkọ ti Mo wa kọja, kii ṣe igbadun pupọ ninu funrararẹ, ṣugbọn ni ọwọ lati ṣafihan awọn ọna iṣe ti ṣiṣẹ pẹlu Linux..

Nọmba Igbesẹ 1: Nibo ni RESUME ti wa?

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

A leralera (-r) a n wa a darukọ yi oniyipada ni / ati be be lo liana (ibi ti julọ configs ni o wa). A rii snippet conf.d kan ti o lo ni gbangba nipasẹ idii awọn irinṣẹ initramfs.

Nibo ni snippet yii ti wa?

Awọn aṣayan mẹta wa:

  1. Idan artifact (ẹnikan fi si gbagbe)
  2. atunto lati package
  3. Config ti ipilẹṣẹ nipasẹ diẹ ninu awọn akosile lati awọn idii eto

Ṣayẹwo #2 (bi ọkan ti o rọrun julọ):

 dpkg -S initramfs-tools/conf.d/resume
dpkg-query: no path found matching pattern *initramfs-tools/conf.d/resume*

dpkg -S gba wa laaye lati wa ibi ipamọ data ti awọn faili ti a fi sori ẹrọ ati rii iru package ti faili naa jẹ ti. Eyi ni apẹẹrẹ ti wiwa aṣeyọri:

dpkg -S resolv.conf
manpages: /usr/share/man/man5/resolv.conf.5.gz
systemd: /lib/systemd/resolv.conf

Pada si iṣẹ-ṣiṣe wa: faili naa initramfs-tools/conf.d/resume ko fi sori ẹrọ sinu eto lati package. Boya o ti wa ni ti ipilẹṣẹ ni postinst/preinst package akosile? Ṣiṣayẹwo nọmba ẹya 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

Ninu iwe akojo oro /var/lib/dpkg/info/ awọn ẹya ti a ko ti padi ti gbogbo awọn “metafiles” ti awọn idii (fifi sori ẹrọ/awọn iwe afọwọkọ yiyọ kuro, awọn apejuwe package, ati bẹbẹ lọ). Iyalenu, faili yii ti yọ kuro ni ifiweranṣẹ (nigbati o ba nfi sii) ti initramfs-tools-core package. Jẹ ki a wo awọn awọn akoonu ti rẹ postinst... Ko si nkankan lati se pẹlu conf.d liana.

Jẹ ki a wo awọn faili ti o wa ninu apo initramfs-tools-core.

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

Egbe dpkg -L faye gba o lati wo gbogbo awọn faili ti o wa ninu awọn eto lati awọn pàtó kan package. Mo ti ṣe afihan faili ti o nifẹ lati kawe. Ṣiṣayẹwo faili naa fihan bi a ṣe lo oniyipada yii, ṣugbọn ko dahun ibiti o ti wa.

agbọn

O wa ni jade wipe yi ni ẹnikan artifact. Tani? Ṣaaju ki o to lọ sinu insitola, jẹ ki a wo awọn amayederun Debian pataki miiran - idahun awọn ibeere. Ni gbogbo igba ti package ba beere ibeere kan, ati ni ọpọlọpọ igba nigbati ko ba beere ibeere kan ṣugbọn o nlo aiyipada, mejeeji ibeere ati idahun ni a gba silẹ ni aaye data pataki kan ni Debian ti a npe ni debconf. A le wo ibi ipamọ data ti awọn idahun (ati paapaa ṣafihan wọn ṣaaju fifi sori ẹrọ package funrararẹ - debconf-set-selections), Fun eyi a nilo ohun elo kan debconf-get-selections lati tiwqn debconf-utils. Laanu, ko si nkan ti o nifẹ si :(debconf-get-selections |grep -i resume pada ofo).

insitola debian

Insitola ni aaye data tirẹ ti awọn idahun si awọn ibeere: /var/log/installer/cdebconf/questions.dat. Laanu, ko tun si ọrọ nipa ibẹrẹ wa.
Ṣugbọn awọn akọọlẹ wa nitosi, pẹlu. syslog, nibiti a ti kọ gbogbo akọọlẹ fifi sori ẹrọ. O nmẹnuba ipilẹ-insitola package, ati awọn ti o iwe a le rii ọna asopọ si awọn aise.

Ninu wọn, a le ni irọrun wa idahun si ibeere wa:

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

mapdevfs ni a IwUlO pẹlu kan ko o idi, ati awọn iṣẹ ti a wa ni nife ninu get_resume_partition, eyi ti o ka / proc/swaps ati yan eyi ti o tobi julọ nibẹ. Siwopu wa lati partman.

Idahun si iṣẹ-ṣiṣe idanwo wa ni: faili ti ṣẹda nipasẹ fifi sori ẹrọ ni / ibi-afẹde ni akoko fifi sori ẹrọ, i.e. a ti wa ni sọrọ nipa daradara-mọ, ṣugbọn ohun artifact. Ko si ẹnikan ati nkankan ninu awọn idii ti o wa ninu eto lati yi faili yii pada.

Summing soke

  1. dpkg ati debconf jẹ awọn ọna akọkọ fun wiwa awọn olupese faili.
  2. wiwa /var/lib/dpkg/info gba ọ laaye lati wo awọn iṣẹ ṣiṣe faili lakoko ipele fifi sori ẹrọ.
  3. Awọn insitola le ṣẹda awọn artifact awọn faili ti o ti wa ni ko yi pada nipa ẹnikẹni (ayafi awọn olumulo), ati yi le wa ni ti ri ninu awọn insitola koodu.

orisun: www.habr.com

Fi ọrọìwòye kun