Halkee buu ka yimi habayntan? [Debian/Ubuntu]

Ujeedada qoraalkan waa in lagu muujiyo farsamada debian/ubuntu ee la xidhiidha "helitaanka isha" faylka qaabeynta nidaamka.

Tusaalaha tijaabada: ka dib jeesjees badan oo ah nuqulka tar.gz ee OS rakibay iyo ka dib soo celinta iyo rakibida cusbooneysiinta, waxaan helnaa fariinta:

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.

Hadafka: faham halka uu qiimahani (U1563304817I0) ka yimid iyo sida saxda ah ee loo beddelo. Kani waa tusaalihii ugu horreeyay ee soo baxay, maaha mid si gaar ah u xiiseeya laftiisa, laakiin ku habboon in la muujiyo hababka wax ku oolka ah ee la shaqaynta Linux.

Tallaabada 1: Halkee buu RESUME ka yimid?

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

Waxaan si isdaba joog ah (-r) ka raadi wax ku sheeg doorsoomahan tusaha / iwm Waxaan helnaa goos gooska conf.d, kaas oo si cad loo isticmaalo xirmada initramfs-tools.

Halkee bay ka timid qaybtan?

Waxaa jira saddex doorasho:

  1. Farshaxanka sixirka (qof ayaa dhigay oo illoobay)
  2. Ka samee xirmada
  3. Config ay soo saartay qoraal qaar ka mid ah xirmooyinka nidaamka

Aynu hubinno lambarka 2 (sida ugu fudud):

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

dpkg -S waxay noo ogolaanaysaa in aan baadhno kaydka kaydka faylalka la rakibay oo aan helno xirmada faylka uu leeyahay. Waa kan tusaale raadinta guusha leh:

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

Aan ku soo laabano hawshayada: faylka initramfs-tools/conf.d/resume laguma rakibin nidaamka xirmada. Waxaa laga yaabaa in lagu soo saaro qoraalka postinst/preinst ee xirmada? Aynu eegno nooca lambarka 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

Buug-yaraha /var/lib/dpkg/info/ waxaa jira noocyo aan la xidhin oo ah dhammaan "metafiles" ee xirmooyinka (qoraalada rakibidda/saarida, sharraxaadda xirmada, iwm.). Waxaa la yaab leh, faylkan waxaa laga saaray boostada (oo uninstall) ee xirmada initramfs-tools-core. Aynu eegno waxa ku jira qoraalkeeda dambe... Ma jiraan wax la xidhiidha hagaha conf.d.

Aynu eegno faylasha ku jira xirmada initramfs-tools-core.

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

kooxda dpkg -L Waxay kuu ogolaaneysaa inaad ka aragto dhammaan faylasha ku jira nidaamka xirmada la cayimay. Waxaan iftiimiyay fayl xiiso u leh daraasadda. Baarista faylka waxay tusinaysaa sida doorsoomahan loo isticmaalo, laakiin ma sheegayo meesha uu ka yimid.

qashin

Waxaa soo baxday in tani ay tahay qof farshaxankiisa. yaa leh? Kahor intaanan u galin rakibaha, aan eegno kaabayaasha kale ee muhiimka ah ee Debian - jawaabaha su'aalaha. Mar kasta oo xidhmo ay waydiiso su'aal, iyo marar badan marka aanay waydiin su'aal laakiin ay isticmaasho ikhtiyaarka caadiga ah, su'aasha iyo jawaabta labadaba waxaa lagu diiwaangeliyaa kaydka gaarka ah ee Debian ee loo yaqaan debconf. Waxaan eegi karnaa xogta xogta jawaabaha (oo xitaa dejin karnaa ka hor inta aan la rakibin xirmada lafteeda - debconf-set-selections), tan waxaan u baahanahay adeeg debconf-get-selections laga bilaabo halabuurka debconf-utils. Nasiib darro, wax xiiso leh looma helin :(debconf-get-selections |grep -i resume soo noqday maran).

debian-rakibiye

Ku rakibuhu wuxuu leeyahay xog-ururin u gaar ah oo jawaabaha su'aalaha: /var/log/installer/cdebconf/questions.dat. Nasiib darro, sidoo kale ma jiro kelmad ku saabsan resumeyga.
Laakin waxaa jira geedo u dhow, oo ay ku jiraan. syslog, halkaas oo dhammaan diiwaanka rakibaadda uu ku qoran yahay. Xirmada-rakibaadda saldhigga ayaa lagu sheegay halkaas, iyo dusheeda bogga waxaan arki karnaa isku xirka ceyriinka.

Dhexdooda waxaan si fudud ugu heli karnaa jawaabta su'aashayada:

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

mapdevfs waa utility leh ujeedo cad, iyo shaqada aan xiisaynaynaa waa get_resume_partition, kaas oo akhriya /proc/swaps oo doorta midka ugu weyn halkaas. Isweydaarsigu wuxuu ka yimaadaa partman.

Jawaabta hawshayada tijaabada: faylka waxaa abuuray rakibaha gudaha / bartilmaameedka wakhtiga rakibidda, i.e. Waxaan ka hadleynaa si fiican loo yaqaan, laakiin artifact. Ma jiro qof ama wax ku jira xirmooyinka jira ee nidaamka oo bedeli kara faylkan.

Si loo soo koobo

  1. dpkg iyo debconf waa hababka ugu muhiimsan ee lagu helo bixiyayaasha faylka.
  2. raadinta gudaha /var/lib/dpkg/info waxay kuu ogolaanaysaa inaad aragto hawlaha faylalka inta lagu jiro marxaladda rakibida.
  3. Rakibiyuhu wuxuu abuuri karaa faylal farshaxan ah oo aan waligiis qofna beddelin (marka laga reebo isticmaalaha), taasna waxaa lagu arki karaa koodka rakibaha.

Source: www.habr.com

Add a comment