Luvela phi olu qwalaselo? [Debian/Ubuntu]

Injongo yesi sithuba kukubonisa ubuchule bokulungisa ingxaki kwi-debian/ubuntu enxulumene "nokufumana umthombo" kwifayile yoqwalaselo lwenkqubo.

Umzekelo wovavanyo: emva kokugculelwa okuninzi kwekopi ye-tar.gz ye-OS efakiweyo kwaye emva kokuyibuyisela kunye nokufaka uhlaziyo, sifumana umyalezo:

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.

Injongo: qonda apho eli xabiso (U1563304817I0) livela kunye nendlela yokutshintsha ngokuchanekileyo. Lo ngumzekelo wokuqala oye wavela, awunomdla kakhulu ngokwawo, kodwa ulungele ukubonisa iindlela ezisebenzayo zokusebenza ngeLinux.

Inyathelo 1: Ivela phi i-RESUME?

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

Thina ngokuphindaphindiweyo (-r) khangela ukukhankanywa koluguquko kwi/njl ulawulo (apho uninzi lwezicwangciso zikhoyo). Sifumana i-conf.d snippet, esetyenziswa ngokucacileyo yi-initramfs-tools package.

Isuka phi le snippet?

Zintathu iindlela onokukhetha kuzo:

  1. I-artifact yomlingo (umntu uyibeke wayilibala)
  2. Qwalasela ukusuka kwiphakheji
  3. Uqwalaselo uveliswe ngolunye ushicilelo olusuka kwiipakethe zesixokelelwano

Masijonge iNombolo yesi-2 (njengeyona ilula):

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

dpkg -S ikuvumela ukuba sikhangele ugcino lwedatha yeefayile ezifakiweyo kwaye sifumane ukuba yeyiphi ipakethe yefayile. Nanku umzekelo wokhangelo oluyimpumelelo:

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

Masibuyele kumsebenzi wethu: ifayile initramfs-tools/conf.d/resume ayifakelwanga kwindlela esuka kwiphakheji. Mhlawumbi iveliswa kwi-postinst/preinst script yephakheji? Makhe sijonge inombolo yenguqulo yesi-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

Kwikhathalogu /var/lib/dpkg/info/ kukho iinguqulelo ezingapakishwanga zazo zonke "imetafiles" zeepakethe (izikripthi zofakelo/zokususwa, iinkcazelo zepakethe, njl. njl.). Okumangalisayo kukuba, le fayile isusiwe kwi-postrm (ekukhutshweni) ye-initramfs-tools-core package. Makhe sijonge imixholo ye-postinst yayo... Akukho nto inxulumene nolawulo lwe-conf.d.

Makhe sijonge iifayile ezifakwe kwiphakheji initramfs-tools-core.

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

Iqela dpkg -L ikuvumela ukuba ubonise zonke iifayile ezikwisixokelelwano ukusuka kumpahla ekhankanyiweyo. Ndiyigxininise ifayile enomdla wokufunda. Ukuphonononga ifayile kubonisa indlela olu tshintsho lusetyenziswa ngayo, kodwa aluchazi apho luvela khona.

debconf

Kuyavela ukuba le yi-artifact yomntu. Ekabani? Ngaphambi kokuba ungene kwisifakeli, makhe sijonge esinye isiseko esibalulekileyo seDebian- iimpendulo kwimibuzo. Ngalo lonke ixesha ipakethe ibuza umbuzo, kwaye kwiimeko ezininzi xa ingabuzi umbuzo kodwa isebenzisa ukhetho olungagqibekanga, zombini umbuzo kunye nempendulo zirekhodwa kwisiseko sedatha esikhethekileyo kwiDebian ebizwa ngokuba yi-debconf. Sinokujonga kwisiseko sedatha yeempendulo (kwaye sizisete phambi kokufaka ipakethe ngokwayo - debconf-set-selections), kule nto sifuna into eluncedo debconf-get-selections ukusuka kulwakhiwo debconf-utils. Ngelishwa, akukho nto inomdla ifunyenweyo :(debconf-get-selections |grep -i resume yabuya ingenanto).

Isifaki sedebian

Umfakeli unesiseko sedatha yakhe yeempendulo kwimibuzo: /var/log/installer/cdebconf/questions.dat. Ngelishwa, akukho lizwi malunga nokuqhubeka kwethu.
Kodwa kukho izigodo ezikufutshane, kubandakanywa. syslog, apho lonke ugcino lofako lubhaliwe. Iphakheji ye-base-installer ikhankanywe apho, kwaye kuyo iphepha sinokubona ikhonkco kwi-raws.

Ngaphakathi kwabo sinokufumana lula impendulo yombuzo wethu:

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

mapdevfs sisixhobo esiluncedo esinenjongo ecacileyo, kwaye umsebenzi esinomdla kuwo ngulo get_resume_partition, efunda /proc/swaps kwaye ikhethe eyona inkulu apho. Ukutshintshana kuvela kwi-partman.

Impendulo kumsebenzi wethu wokuvavanya: ifayile yenziwe ngumfaki kwi / ekujoliswe kuyo ngexesha lokufakwa, oko kukuthi. sithetha malunga owaziwayo, kodwa i-artifact. Akukho mntu okanye nantoni na kwiipakethe ezikhoyo kwinkqubo enokutshintsha le fayile.

Shwa nkathela

  1. I-dpkg kunye ne-debconf zezona ndlela ziphambili zokufumana ababoneleli beefayile.
  2. Ukukhangela kwi/var/lib/dpkg/info kukuvumela ukuba ubone imisebenzi kwiifayile ngexesha lofakelo.
  3. Umfaki-fakeli unokudala iifayile ze-artifact ezithi ke zingatshintshwa nabani na (ngaphandle komsebenzisi), kwaye oku kunokubonwa kwikhowudi yokufaka.

umthombo: www.habr.com

Yongeza izimvo