Cò às a tha an rèiteachadh seo a’ tighinn? [Debian/Ubuntu]

'S e adhbhar na dreuchd seo dòigh deasbaid a shealltainn ann an debian/ubuntu co-cheangailte ri "lorg an tùs" ann am faidhle rèiteachaidh an t-siostaim.

Eisimpleir deuchainn: às deidh mòran magadh air an leth-bhreac tar.gz den OS a chaidh a chuir a-steach agus às deidh dha ath-nuadhachadh agus ùrachadh a chuir a-steach, gheibh sinn am brath:

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.

Amas: tuig cò às a thàinig an luach seo (U1563304817I0) agus mar a dh’atharraicheas tu e gu ceart. Is e seo a’ chiad eisimpleir a thàinig tarsainn, nach eil gu sònraichte inntinneach ann fhèin, ach goireasach airson dòighean practaigeach a bhith ag obair le Linux a nochdadh.

Ceum àireamh 1: Cò às a thàinig RESUME?

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

Bidh sinn a-rithist (-r) coimhead airson iomradh air a’ chaochladair seo anns an eòlaire / etc (far a bheil a’ mhòr-chuid de na configs). Lorgaidh sinn a’ chriomag conf.d, a tha gu soilleir air a chleachdadh leis a’ phacaid initramfs-tools.

Cò às a tha a’ chriomag seo?

Tha trì roghainnean ann:

  1. Artifact draoidheil (chuir cuideigin e agus dhìochuimhnich e)
  2. Dèan rèiteachadh bhon phacaid
  3. Config air a chruthachadh le cuid de sgriobt bho phasganan siostam

Feuch an toir sinn sùil air Àireamh 2 (mar an fheadhainn as sìmplidh):

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

dpkg -S a’ leigeil leinn an stòr-dàta de fhaidhlichean stàlaichte a sgrùdadh agus faighinn a-mach dè am pasgan a bhuineas don fhaidhle. Seo eisimpleir de rannsachadh soirbheachail:

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

Tillidh sinn chun obair againn: faidhle initramfs-tools/conf.d/resume chan eil e air a stàladh air an t-siostam bhon phacaid. Is dòcha gu bheil e air a chruthachadh ann an sgriobt postinst/preinst a’ phacaid? Feuch an toir sinn sùil air dreach àireamh 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

Ann an catalog /var/lib/dpkg/info/ tha dreachan gun phacaid de gach “metafiles” de phasganan (sgriobtaichean stàlaidh / toirt air falbh, tuairisgeulan pacaid, msaa). Gu h-iongantach, tha am faidhle seo air a thoirt air falbh ann am postrm (nuair a thèid a dhì-stàladh) den phasgan initramfs-tools-core. Bheir sinn sùil air na th' anns a' phost aige inst... Chan eil dad co-cheangailte ris an eòlaire conf.d.

Bheir sinn sùil air na faidhlichean a tha sa phacaid initramfs-tools-core.

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

sgioba dpkg -L a’ leigeil leat na faidhlichean uile a tha air an t-siostam fhaicinn bhon phasgan ainmichte. Tha mi air faidhle a chomharrachadh a tha inntinneach airson sgrùdadh. Tha sgrùdadh an fhaidhle a’ sealltainn mar a tha an caochladair seo air a chleachdadh, ach chan eil e ag innse cò às a tha e.

debconf

Tha e a 'tionndadh a-mach gur e seo artifact cuideigin. Cò leis? Mus tèid sinn a-steach don stàlaichear, leig dhuinn sùil a thoirt air bun-structar Debian cudromach eile - freagairtean do cheistean. Gach uair a bhios pasgan a 'faighneachd ceist, agus ann an iomadh cùis nuair nach eil e a' faighneachd ceist ach a 'cleachdadh an roghainn bunaiteach, tha an dà chuid a' cheist agus an fhreagairt air an clàradh ann an stòr-dàta sònraichte ann an Debian ris an canar debconf. Faodaidh sinn coimhead air an stòr-dàta de fhreagairtean (agus eadhon an suidheachadh mus stàlaich sinn am pasgan fhèin - debconf-set-selections), airson seo feumaidh sinn goireas debconf-get-selections bhon sgrìobhadh debconf-utils. Gu mì-fhortanach, cha deach dad inntinneach a lorg :(debconf-get-selections |grep -i resume air ais falamh).

stàlaichear debian

Tha an stòr-dàta aige fhèin de fhreagairtean do cheistean aig an stàlaichear: /var/log/installer/cdebconf/questions.dat. Gu mì-fhortanach, chan eil facal ann cuideachd mun ath-thòiseachadh againn.
Ach tha logaichean faisg air làimh, incl. syslog, far a bheil an log stàlaidh gu lèir air a sgrìobhadh. Thathas a’ toirt iomradh air a’ phacaid stàlaidh bunaiteach an sin, agus air duilleag chì sinn an ceangal ris na raws.

Taobh a-staigh iad gheibh sinn gu furasta am freagairt don cheist againn:

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

Tha mapdevfs na ghoireas le adhbhar soilleir, agus is e an gnìomh anns a bheil ùidh againn get_resume_partition, a bhios a’ leughadh / proc/ swaps agus a’ taghadh am fear as motha an sin. Tha iomlaid a’ tighinn bho partman.

Am freagairt don obair deuchainn againn: tha am faidhle air a chruthachadh leis an stàlaichear ann an /targaid aig àm an stàlaidh, i.e. tha sinn a 'bruidhinn mu dheidhinn ainmeil, ach artifact. Chan eil duine no rud sam bith anns na pacaidean a tha san t-siostam mar-thà as urrainn am faidhle seo atharrachadh.

A 'togail suas

  1. dpkg agus debconf na prìomh dhòighean air solaraichean faidhle a lorg.
  2. le bhith a’ lorg ann an /var/lib/dpkg/info leigidh sin leat gnìomhachd fhaicinn air faidhlichean aig àm an stàlaidh.
  3. Faodaidh an stàlaichear faidhlichean artifact a chruthachadh nach tèid an atharrachadh le duine sam bith (ach a-mhàin an neach-cleachdaidh), agus chithear seo ann an còd an stàlaichear.

Source: www.habr.com

Cuir beachd ann