Dimana config ieu asalna? [Debian/Ubuntu]

Tujuan tina tulisan ieu nyaéta pikeun nunjukkeun téknik debugging dina debian/ubuntu anu aya hubunganana sareng "manggihan sumber" dina file konfigurasi sistem.

Conto tés: saatos seueur moyok salinan tar.gz tina OS anu dipasang sareng saatos malikkeunana sareng masang apdet, kami nampi 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.

Tujuanana: ngartos ti mana nilai ieu (U1563304817I0) asalna sareng kumaha carana ngarobahna leres. Ieu mangrupikeun conto anu munggaran anu muncul, henteu khususna pikaresepeun, tapi cocog pikeun nunjukkeun metode praktis pikeun damel sareng Linux.

Lengkah nomer 1: Dimana asal RESUME?

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

Urang rekursif (-r) néangan nyebut variabel ieu dina diréktori / jsb (dimana lolobana configs). Urang manggihan conf.d snippet, nu jelas dipaké ku pakét initramfs-parabot.

Ti mana snippet ieu?

Aya tilu pilihan:

  1. Artefak sihir (aya anu nempatkeun éta sareng hilap)
  2. Konfigurasi tina pakét
  3. Konfigurasi dihasilkeun ku sababaraha skrip tina pakét sistem

Hayu urang pariksa No. 2 (salaku pangbasajanna):

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

dpkg -S ngamungkinkeun urang milarian pangkalan data file anu dipasang sareng mendakan pakét mana file éta. Ieu conto milarian anu suksés:

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

Hayu urang balik deui ka tugas urang: file initramfs-tools/conf.d/resume teu dipasang dina sistem ti iket. Meureun eta dihasilkeun dina postinst / Aksara preinst pakét? Hayu urang pariksa 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

Dina katalog /var/lib/dpkg/info/ Aya versi unpacked sadaya "metafiles" bungkusan (instalasi / panyabutan Aksara, déskripsi pakét, jsb). Ahéng, file ieu dihapus dina postrm (on uninstall) tina pakét initramfs-tools-core. Hayu urang tingali eusi postinst na ... Euweuh patali jeung diréktori conf.d.

Hayu urang tingali file anu kalebet dina pakét initramfs-tools-core.

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

regu dpkg -L ngamungkinkeun anjeun ningali sadaya file anu aya dina sistem tina pakét anu ditangtukeun. Kuring geus disorot hiji file nu metot pikeun ulikan. Examining file nembongkeun kumaha variabel ieu dipaké, tapi teu ngabejaan ti mana asalna.

debconf

Tétéla ieu artefak batur. saha? Sateuacan nyilem kana pamasangan, hayu urang tingali infrastruktur Debian anu penting - jawaban kana patarosan. Unggal waktos pakét naroskeun patarosan, sareng dina seueur kasus nalika éta henteu naroskeun tapi nganggo pilihan standar, patarosan sareng jawabanna kacatet dina pangkalan data khusus dina Debian anu disebut debconf. Urang tiasa ningali database jawaban (malah nyetél éta sateuacan masang pakét nyalira - debconf-set-selections), pikeun ieu urang peryogi utiliti debconf-get-selections ti komposisi debconf-utils. Hanjakal, teu aya anu pikaresepeun anu kapanggih :(debconf-get-selections |grep -i resume dipulangkeun kosong).

pamasang-debian

Pamasang gaduh pangkalan data sorangan pikeun ngajawab patarosan: /var/log/installer/cdebconf/questions.dat. Hanjakal, aya ogé teu kecap ngeunaan neruskeun urang.
Tapi aya log caket dieu, incl. syslog, dimana sakabéh log instalasi ditulis. Paket base-installer disebatkeun di dinya, sareng di dinya kaca urang tiasa ningali link ka raws.

Di jero aranjeunna urang tiasa kalayan gampang mendakan jawaban kana patarosan urang:

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

mapdevfs mangrupikeun utilitas anu gaduh tujuan anu jelas, sareng fungsi anu dipikaresep ku urang get_resume_partition, nu maca / proc / swaps tur pilih nu panggedéna aya. Swap asalna ti partman.

Jawaban kana tugas uji kami: file didamel ku pamasang dina /target dina waktos instalasi, i.e. urang ngobrol ngeunaan well-dipikawanoh, tapi hiji artefak. Henteu aya hiji atanapi nanaon dina bungkusan anu aya dina sistem anu tiasa ngarobih file ieu.

summing up

  1. dpkg sareng debconf mangrupikeun metodeu utama pikeun milarian panyadia file.
  2. milarian dina /var/lib/dpkg/info ngamungkinkeun anjeun ningali operasi dina file salami fase instalasi.
  3. Pamasang tiasa nyiptakeun file artefak anu teras henteu pernah dirobih ku saha waé (iwal pangguna), sareng ieu tiasa ditingali dina kode pamasangan.

sumber: www.habr.com

Tambahkeun komentar