Saka ngendi asale konfigurasi iki? [Debian/Ubuntu]

Tujuan saka kiriman iki yaiku kanggo nuduhake teknik debugging ing debian/ubuntu sing ana gandhengane karo "nemokake sumber" ing file konfigurasi sistem.

Conto tes: sawise akeh moyoki salinan tar.gz saka OS sing diinstal lan sawise mulihake lan nginstal nganyari, kita nampa pesen:

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.

Goal: ngerti saka ngendi nilai iki (U1563304817I0) lan carane ngganti kanthi bener. Iki minangka conto pisanan sing ditemokake, ora menarik dhewe, nanging trep kanggo nuduhake cara praktis nggarap Linux.

Langkah nomer 1: Saka ngendi asale RESUME?

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

Kita rekursif (-r) goleki sebutno variabel iki ing direktori / etc (ing ngendi akeh konfigurasi). We golek conf.d snippet, kang cetha digunakake dening paket initramfs-alat.

Saka ngendi cuplikan iki?

Ana telung opsi:

  1. Artefak sihir (ana sing nyelehake lan lali)
  2. Konfigurasi saka paket
  3. Konfigurasi digawe dening sawetara script saka paket sistem

Ayo priksa nomer 2 (minangka sing paling gampang):

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

dpkg -S ngidini kita nelusuri database file sing diinstal lan nemokake paket file kasebut. Iki minangka conto telusuran sing sukses:

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

Ayo bali menyang tugas kita: file initramfs-tools/conf.d/resume ora diinstal ing sistem saka paket. Mungkin kui digawe ing postinst/preinst script paket? Ayo mriksa versi nomer 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

Ing katalog /var/lib/dpkg/info/ ana versi unpacked saka kabeh "metafiles" paket (skrip instalasi / mbusak, deskripsi paket, etc.). Kaget, file iki dibusak ing postrm (on instal) paket initramfs-tools-core. Ayo katon ing isi postinst sawijining ... Ora ana hubungane karo direktori conf.d.

Ayo goleki file sing kalebu ing paket kasebut initramfs-tools-core.

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

tim dpkg -L ngidini sampeyan ndeleng kabeh file sing ana ing sistem saka paket kasebut. Aku wis nyorot file sing menarik kanggo sinau. Nliti file nuduhake carane variabel iki digunakake, nanging ora ngandhani saka ngendi.

debconf

Pranyata iki artefak wong. sapa? Sadurunge nyilem menyang installer, ayo goleki infrastruktur Debian liyane sing penting - jawaban kanggo pitakonan. Saben paket takon pitakonan, lan ing akeh kasus nalika ora takon nanging nggunakake pilihan standar, pitakonan lan jawaban direkam ing database khusus ing Debian disebut debconf. Kita bisa ndeleng database jawaban (malah nyetel sadurunge nginstal paket kasebut - debconf-set-selections), kanggo iki kita butuh sarana debconf-get-selections saka komposisi debconf-utils. Sayange, ora ana sing menarik sing ditemokake :(debconf-get-selections |grep -i resume bali kosong).

installer debian

Pamasang duwe database jawaban kanggo pitakonan: /var/log/installer/cdebconf/questions.dat. Sayange, ora ana tembung babagan resume kita.
Nanging ana log cedhak, kalebu. syslog, ing ngendi kabeh log instalasi ditulis. Paket base-installer kasebut ing kana, lan ing kono kaca kita bisa ndeleng link kanggo raws.

Ing njero kita bisa nemokake jawaban kanggo pitakonan kita kanthi gampang:

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

mapdevfs minangka sarana kanthi tujuan sing jelas, lan fungsi sing kita minati yaiku get_resume_partition, sing maca /proc/swap lan milih sing paling gedhe ing kana. Swap asalΓ© saka partman.

Jawaban kanggo tugas test kita: file digawe dening installer ing / target nalika instalasi, i.e. kita ngomong bab kondhang, nanging artefak. Ora ana siji utawa apa wae ing paket sing ana ing sistem sing bisa ngganti file iki.

Kanggo ngringkes

  1. dpkg lan debconf minangka cara utama kanggo nemokake panyedhiya file.
  2. nggoleki ing /var/lib/dpkg/info ngidini sampeyan ndeleng operasi ing file sajrone tahap instalasi.
  3. Pamasang bisa nggawe file artefak sing banjur ora diganti dening sapa wae (kajaba pangguna), lan iki bisa dideleng ing kode installer.

Source: www.habr.com

Add a comment