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:
- Zavakanto majika (misy nametraka azy ka nanadino)
- Config avy amin'ny fonosana
- 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
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
- dpkg sy debconf no fomba lehibe hitadiavana mpanome fisie.
- Ny fikarohana ao amin'ny /var/lib/dpkg/info dia ahafahanao mahita asa amin'ny rakitra mandritra ny dingana fametrahana.
- 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