Cad as a dtagann an cumraíocht seo? [Debian/Ubuntu]

Is é cuspóir an phoist seo teicníocht dífhabhtaithe a thaispeáint i debian/ubuntu a bhaineann le "an fhoinse a aimsiú" i gcomhad cumraíochta an chórais.

Sampla tástála: tar éis mórán magadh a dhéanamh ar chóip tar.gz den OS suiteáilte agus tar éis é a athchóiriú agus nuashonruithe a shuiteáil, faighimid an teachtaireacht:

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.

Sprioc: tuig cén áit ar tháinig an luach seo (U1563304817I0) agus conas é a athrú i gceart. Is é seo an chéad sampla a tháinig trasna, nach bhfuil suimiúil go háirithe ann féin, ach áisiúil chun modhanna praiticiúla oibriú le Linux a thaispeáint.

Céim uimhir 1: Cad as ar tháinig RESUME?

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

Táimid go hathchúrsach (-r) lorg tagairt don athróg seo san eolaire /etc (áit a bhfuil an chuid is mó de na cumraíochtaí). Faighimid an blúire conf.d, a úsáideann an pacáiste initramfs-tools go soiléir.

Cad as a bhfuil an blúire seo?

Tá trí rogha ann:

  1. Déantán draíochta (chuir duine éigin é agus rinne sé dearmad)
  2. Cumraigh as an bpacáiste
  3. Cumraíocht ginte ag roinnt script ó phacáistí córais

Déanaimis seiceáil ar Uimh. 2 (mar an ceann is simplí):

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

dpkg -S ligeann dúinn cuardach a dhéanamh ar bhunachar sonraí na gcomhad suiteáilte agus teacht ar an bpacáiste lena mbaineann an comhad. Seo sampla de chuardach rathúil:

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

Fillfimid ar ár dtasc: comhad initramfs-tools/conf.d/resume nach bhfuil suiteáilte ar an gcóras ón bpacáiste. B'fhéidir go bhfuil sé ginte i script postinst/preinst an phacáiste? Déanaimis leagan uimhir 3 a sheiceáil.

# cd /var/lib/dpkg/info/
# grep -r initramfs-tools/conf.d/resume *
initramfs-tools-core.postrm:    rm -f /etc/initramfs-tools/conf.d/resume

Sa chatalóg /var/lib/dpkg/info/ tá leaganacha neamhphacáilte de gach “meitifile” de phacáistí (scripteanna suiteála/bainte, tuairiscí pacáiste, etc.). Is ionadh é, baintear an comhad seo sa phostrm (ar díshuiteáil) den phacáiste initramfs-tools-core. Breathnaímid ar a bhfuil sa phostinst... Ní dhéanfaidh aon ní a bhaineann leis an eolaire conf.d.

Breathnaímid ar na comhaid atá san áireamh sa phacáiste initramfs-tools-core.

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

Foireann dpkg -L ligeann duit na comhaid go léir atá ar an gcóras a fheiceáil ón bpacáiste sonraithe. Chuir mé béim ar chomhad atá suimiúil le staidéar a dhéanamh air. Taispeánann scrúdú an chomhaid conas a úsáidtear an athróg seo, ach ní insíonn sé cad as a dtagann sé.

debconf

Tharlaíonn sé go raibh an duine Déantán. Cé leis? Sula tumadh isteach sa suiteálaí, déanaimis féachaint ar bhonneagar Debian tábhachtach eile - freagraí ar cheisteanna. Gach uair a iarrann pacáiste ceist, agus i go leor cásanna nuair nach gcuireann sé ceist ach go n-úsáideann sé an rogha réamhshocraithe, déantar an cheist agus an freagra araon a thaifeadadh i mbunachar sonraí speisialta i Debian ar a dtugtar debconf. Is féidir linn breathnú ar bhunachar sonraí na bhfreagraí (agus fiú iad a shocrú roimh an bpacáiste féin a shuiteáil - debconf-set-selections), le haghaidh seo ní mór dúinn áirgiúlacht debconf-get-selections ón gcomhdhéanamh debconf-utils. Ar an drochuair, ní bhfuarthas aon rud suimiúil :(debconf-get-selections |grep -i resume ar ais folamh).

suiteálaí debian

Tá a bhunachar sonraí féin de fhreagraí ar cheisteanna ag an suiteálaí: /var/log/installer/cdebconf/questions.dat. Ar an drochuair, níl focal faoi ár atosú freisin.
Ach tá logs in aice láimhe, lena n-áirítear. syslog, áit a bhfuil an logáil suiteála iomlán scríofa. Tá an pacáiste suiteálaí bonn luaite ann, agus air leathanach is féidir linn an nasc leis na raws a fheiceáil.

Taobh istigh díobh is féidir linn freagra ár gceist a fháil go héasca:

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

Is áirgiúlacht é mapdevfs a bhfuil cuspóir soiléir aige, agus is é an fheidhm a bhfuil suim againn inti get_resume_partition, a léann /proc/babhtálacha agus a roghnaíonn an ceann is mó ann. Tagann babhtáil ó partman.

An freagra ar ár dtasc tástála: cruthaíonn an suiteálaí an comhad in /target tráth na suiteála, i.e. táimid ag caint faoi-aitheanta go maith, ach Déantán. Níl aon duine nó aon rud sna pacáistí atá sa chóras atá ann cheana féin ar féidir leo an comhad seo a athrú.

Achoimre

  1. Is iad dpkg agus debconf na príomh-mhodhanna chun soláthraithe comhad a aimsiú.
  2. Ligeann cuardach in /var/lib/dpkg/info duit oibríochtaí ar chomhaid a fheiceáil le linn na céime suiteála.
  3. Is féidir leis an suiteálaí comhaid déantán a chruthú nach n-athróidh duine ar bith (seachas an t-úsáideoir), agus is féidir é seo a fheiceáil sa chód suiteálaí.

Foinse: will.com

Add a comment