Avy aiza io config io? [Debian/Ubuntu]

Ny tanjon'ity lahatsoratra ity dia ny hampiseho teknika debugging amin'ny debian/ubuntu mifandraika amin'ny "fikarohana ny loharano" ao amin'ny fisie fikirakirana rafitra.

ВСстовый ΠΏΡ€ΠΈΠΌΠ΅Ρ€: послС Π΄ΠΎΠ»Π³ΠΈΡ… ΠΈΠ·Π΄Π΅Π²Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π² Π½Π°Π΄ tar.gz ΠΊΠΎΠΏΠΈΠ΅ΠΉ установлСнной ОБ ΠΈ послС Π΅Ρ‘ восстановлСния ΠΈ установки Π°ΠΏΠ΄Π΅ΠΉΡ‚ΠΎΠ² ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сообщСниС:

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.

Tanjona: fantaro hoe avy aiza io sanda io (U1563304817I0) sy ny fomba hanovana azy io araka ny tokony ho izy. Ity no ohatra voalohany nipoitra, tsy dia mahaliana loatra ny tenany, fa mety hanehoana fomba fiasa azo ampiharina amin'ny Linux.

Dingana laharana 1: Avy aiza ny RESUME?

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

Recursive isika (-r) ΠΈΡ‰Π΅ΠΌ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /etc (Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ²). ΠœΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ conf.d сниппСт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ явно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ initramfs-tools.

Avy aiza ity sombintsombiny ity?

Misy safidy telo:

  1. Zavakanto majika (misy nametraka azy ka nanadino)
  2. Config avy amin'ny fonosana
  3. Config novokarin'ny script sasany avy amin'ny fonosana rafitra

Andeha hojerentsika ny laharana faha-2 (toy ny tsotra indrindra):

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

dpkg -S mamela antsika hikaroka ny angon-drakitra misy rakitra napetraka ary hahitana izay fonosana misy ny rakitra. Ity misy ohatra iray amin'ny fikarohana mahomby:

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

Andao hiverina amin'ny asantsika: file initramfs-tools/conf.d/resume dia tsy napetraka amin'ny rafitra avy amin'ny fonosana. Angamba novokarina tao amin'ny script postinst/preinst an'ny fonosana? Andeha hojerentsika ny laharana faha-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

Ao amin'ny katalaogy /var/lib/dpkg/info/ Π»Π΅ΠΆΠ°Ρ‚ распакованныС вСрсии всСх Β«ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»ΠΎΠ²Β» ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (скрипты установки/удалСния, описания ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Ρ‚.Π΄.). Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ этот Ρ„Π°ΠΉΠ» удаляСтся Π² postrm (ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ) ΠΏΠ°ΠΊΠ΅Ρ‚Π° initramfs-tools-core. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ содСрТимоС Π΅Π³ΠΎ postinst… НичСго, ΠΊΠ°ΡΠ°ΡŽΡ‰Π΅Π³ΠΎΡΡ conf.d Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ.

Andeha hojerentsika ireo rakitra tafiditra ao anaty fonosana initramfs-tools-core.

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

ekipa dpkg -L ahafahanao mijery ny rakitra rehetra ao amin'ny rafitra avy amin'ny fonosana voatondro. Nanasongadina rakitra iray mahaliana ho an'ny fianarana aho. Ny fandinihana ny rakitra dia mampiseho ny fomba ampiasana an'io faribolana io, saingy tsy milaza hoe avy aiza izy io.

debconf

Hita fa artifact'olona io. an'iza? Alohan'ny hidirana ao amin'ny installer, andeha hojerentsika ny fotodrafitrasa Debian manan-danja hafa - valin'ny fanontaniana. Isaky ny mametraka fanontaniana ny fonosana iray, ary amin'ny tranga maro rehefa tsy mametraka fanontaniana izy fa mampiasa ny safidy default, dia voarakitra ao anaty tahiry manokana ao amin'ny Debian antsoina hoe debconf ny fanontaniana sy ny valiny. Afaka mijery ny angon-drakitra misy valiny isika (ary mametraka azy ireo alohan'ny hametrahana ilay fonosana mihitsy - debconf-set-selections), noho izany dia mila utility isika debconf-get-selections avy amin'ny composition debconf-utils. Indrisy fa tsy nisy zavatra mahaliana hita :(debconf-get-selections |grep -i resume niverina foana).

debian-installer

Ny installer dia manana angon-drakitra manokana momba ny valin'ny fanontaniana: /var/log/installer/cdebconf/questions.dat. Indrisy anefa fa tsy misy teny momba ny resume ihany koa.
Saingy misy hazo eo akaiky eo, anisan'izany. syslog, izay nanoratana ny log de installer manontolo. Ny fonosana base-installer dia voalaza ao, ary eo amboniny pejy hitantsika ny rohy mankany amin'ny raws.

Ao anatin'izy ireo dia afaka mahita mora foana ny valin'ny fanontaniantsika isika:

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

mapdevfs dia fitaovana misy tanjona mazava, ary ny asa mahaliana anay dia get_resume_partition, izay mamaky /proc/swaps ary mifidy ny lehibe indrindra ao. Ny swap dia avy amin'ny partman.

Ny valin'ny andrana ataontsika: ny rakitra dia noforonin'ny installer ao amin'ny / tanjona amin'ny fotoana fametrahana, i.e. fanta-daza no resahina, fa artifact. Tsy misy na inona na inona ao amin'ireo fonosana efa misy ao amin'ny rafitra afaka manova ity rakitra ity.

To summarize

  1. dpkg sy debconf no fomba lehibe hitadiavana mpanome fisie.
  2. Ny fikarohana ao amin'ny /var/lib/dpkg/info dia ahafahanao mahita asa amin'ny rakitra mandritra ny dingana fametrahana.
  3. Ny installer dia afaka mamorona rakitra artifact izay tsy ovan'iza na iza (afa-tsy ny mpampiasa), ary izany dia hita ao amin'ny code installer.

Source: www.habr.com

Add a comment