Π¦Π΅Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°: ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Π² debian/ubuntu, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ «ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΠΏΠ΅ΡΠ²ΠΎΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°» Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
Π’Π΅ΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ: ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ»Π³ΠΈΡ ΠΈΠ·Π΄Π΅Π²Π°ΡΠ΅Π»ΡΡΡΠ² Π½Π°Π΄ 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.
Π¦Π΅Π»Ρ: ΠΏΠΎΠ½ΡΡΡ, ΠΎΡΠΊΡΠ΄Π° ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (U1563304817I0) ΠΏΡΠΈΡΠ»ΠΎ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ. ΠΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠΏΠ°Π²ΡΠΈΠΉΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ ΠΎΡΠΎΠ±ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅, Π½ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΉ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ Linux.
Π¨Π°Π³ Π½ΠΎΠΌΠ΅Ρ 1: ΠΡΠΊΡΠ΄Π° ΠΏΡΠΈΡΡΠ» RESUME?
# cd /etc
# grep -r RESUME
initramfs-tools/conf.d/resume:RESUME=/dev/mapper/U1563304817I0-swap
ΠΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ (-r
) ΠΈΡΠ΅ΠΌ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /etc (ΡΠ°ΠΌ, Π³Π΄Π΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΠΎΠ²). ΠΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ conf.d ΡΠ½ΠΈΠΏΠΏΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ initramfs-tools.
ΠΡΠΊΡΠ΄Π° ΡΡΠΎΡ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ?
ΠΡΡΡ ΡΡΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ°:
- ΠΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°ΡΡΠ΅ΡΠ°ΠΊΡ (ΠΊΡΠΎ-ΡΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» ΠΈ Π·Π°Π±ΡΠ»)
- ΠΠΎΠ½ΡΠΈΠ³ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ°
- ΠΠΎΠ½ΡΠΈΠ³, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΡΠΊΡΠΈΠΏΡΠΎΠΌ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ β2 (ΠΊΠ°ΠΊ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ):
dpkg -S initramfs-tools/conf.d/resume
dpkg-query: no path found matching pattern *initramfs-tools/conf.d/resume*
dpkg -S
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΠΎΠΈΡΠΊΠ°ΡΡ ΠΏΠΎ Π±Π°Π·Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π½Π°ΠΉΡΠΈ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΠ°ΠΉΠ» ΠΎΡΠ½ΠΎΡΠΈΡΡΡ. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°:
dpkg -S resolv.conf
manpages: /usr/share/man/man5/resolv.conf.5.gz
systemd: /lib/systemd/resolv.conf
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠ΅: ΡΠ°ΠΉΠ» initramfs-tools/conf.d/resume
Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ½ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π² postinst/preinst ΡΠΊΡΠΈΠΏΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°? ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²Π΅ΡΡΠΈΡ Π½ΠΎΠΌΠ΅Ρ 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
Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /var/lib/dpkg/info/
Π»Π΅ΠΆΠ°Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π²ΡΠ΅Ρ
«ΠΌΠ΅ΡΠ°ΡΠ°ΠΉΠ»ΠΎΠ²» ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (ΡΠΊΡΠΈΠΏΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ/ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΈ Ρ.Π΄.). Π£Π΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ Π² postrm (ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ) ΠΏΠ°ΠΊΠ΅ΡΠ° initramfs-tools-core. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΅Π³ΠΎ postinstβ¦ ΠΠΈΡΠ΅Π³ΠΎ, ΠΊΠ°ΡΠ°ΡΡΠ΅Π³ΠΎΡΡ conf.d Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΡΠΎΡΡΠ°Π²Π° ΠΏΠ°ΠΊΠ΅ΡΠ° initramfs-tools-core
.
# dpkg -L initramfs-tools-core
...
/usr/share/initramfs-tools/hooks/resume
...
ΠΠΎΠΌΠ°Π½Π΄Π° dpkg -L
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°. Π― Π²ΡΠ΄Π΅Π»ΠΈΠ» ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ». ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½ΠΎ Π½Π΅ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΎΡΠΊΡΠ΄Π° ΠΎΠ½ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ.
debconf
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ΅ΠΉ-ΡΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡ. Π§Π΅ΠΉ? ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½ΡΡΡΡΡ Π² ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡ, Π³Π»ΡΠ½Π΅ΠΌ Π΅ΡΡ Π² ΠΎΠ΄Π½Ρ Π²Π°ΠΆΠ½ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Debian β ΠΎΡΠ²Π΅ΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΠΊΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ, ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΠΎΠΏΡΠΎΡΠ° Π½Π΅ Π·Π°Π΄Π°ΡΡ, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈ Π²ΠΎΠΏΡΠΎΡ, ΠΈ ΠΎΡΠ²Π΅Ρ ΡΠΈΠΊΡΠΈΡΡΡΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅ Π² Debian, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ debconf. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π±Π°Π·Ρ ΠΎΡΠ²Π΅ΡΠΎΠ² (ΠΈ Π΄Π°ΠΆΠ΅ Π²ΡΡΡΠ°Π²ΠΈΡΡ ΠΈΡ
Π΄ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° β debconf-set-selections
), Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ° debconf-get-selections
ΠΈΠ· ΡΠΎΡΡΠ°Π²Π° debconf-utils
. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π½Π΅ Π½Π°ΡΠ»ΠΎΡΡ: (debconf-get-selections |grep -i resume
Π²Π΅ΡΠ½ΡΠ» ΠΏΡΡΡΠΎ).
debian-installer
Π£ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ° Π΅ΡΡΡ ΡΠ²ΠΎΡ Π±Π°Π·Π° ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° Π²ΠΎΠΏΡΠΎΡΡ: /var/log/installer/cdebconf/questions.dat
. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΌ ΡΠΎΠΆΠ΅ Π½Π΅Ρ Π½ΠΈ ΡΠ»ΠΎΠ²Π° ΠΏΡΠΎ Π½Π°Ρ resume.
ΠΠ°ΡΠΎ ΡΡΠ΄ΠΎΠΌ Π΅ΡΡΡ Π»ΠΎΠ³ΠΈ, Π² Ρ.Ρ. syslog, ΠΊΡΠ΄Π° ΠΏΠΈΡΠ΅ΡΡΡ Π²Π΅ΡΡ Π»ΠΎΠ³ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ. Π’Π°ΠΌ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠ°ΠΊΠ΅Ρ base-installer, ΠΈ Π½Π° Π΅Π³ΠΎ
ΠΠ½ΡΡΡΠΈ Π½ΠΈΡ ΠΌΡ Ρ Π»ΡΠ³ΠΊΠΎΡΡΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΠΎΡΠ²Π΅Ρ Π½Π° Π½Π°Ρ Π²ΠΎΠΏΡΠΎΡ:
resume="$(mapdevfs "$resume_devfs")"; then
...
if [ "$do_initrd" = yes ]; then
...
resumeconf=$IT_CONFDIR/resume
....
echo "RESUME=$resume" >> $resumeconf
mapdevfs β ΡΡΠΎ ΡΡΠΈΠ»ΠΈΡΠ° Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π½Π°ΠΌ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΎ get_resume_partition
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΡΠ°Π΅Ρ /proc/swaps ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ°ΠΌ ΡΠ°ΠΌΡΡ Π±ΠΎΠ»ΡΡΡΡ. Swap ΠΆΠ΅ Ρ Π½Π°Ρ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ ΠΎΡ partman’Π°.
ΠΡΠ²Π΅Ρ Π½Π° Π½Π°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅: ΡΠ°ΠΉΠ» ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡΠΎΠΌ Π² /target’Π΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Ρ.Π΅. ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ well-known, Π½ΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡ. Π ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ Π½Π΅Ρ Π½ΠΈΠΊΠΎΠ³ΠΎ ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ, ΡΡΠΎΠ±Ρ ΠΌΠ΅Π½ΡΠ»ΠΎ ΡΡΠΎΡ ΡΠ°ΠΉΠ».
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³
- dpkg ΠΈ debconf β ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ².
- ΠΏΠΎΠΈΡΠΊ Π² /var/lib/dpkg/info ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
- Π£ΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ-Π°ΡΡΠ΅ΡΠ°ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠΎΠΌ Π½ΠΈΠΊΠ΅ΠΌ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ΅Π½ΡΡΡΡΡ (ΠΊΡΠΎΠΌΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ), ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊΠ°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com