ΠžΠ±Ρ‰ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° QEMU-KVM

ΠžΠ±Ρ‰ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° QEMU-KVM

Π‘Π΅Π³Π°ΡˆΠ½ΠΎΡ‚ΠΎ ΠΌΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅:

1) KVM

KVM (Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° ядрото Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина) Π΅ Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ (VMM – Virtual Machine Manager), Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΠΊΠ°Ρ‚ΠΎ ΠΌΠΎΠ΄ΡƒΠ» Π½Π° Linux OS. Π₯ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΡŠΡ‚ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Π·Π° Π΄Π° стартира някакъв софтуСр Π² Π½Π΅ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π° (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°) срСда ΠΈ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° скриС ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ софтуСр рСалния физичСски Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€, Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ·ΠΈ софтуСр. Π₯ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΡŠΡ‚ дСйства ΠΊΠ°Ρ‚ΠΎ β€žΠ΄ΠΈΡΡ‚Π°Π½Ρ†ΠΈΠΎΠ½Π΅Ρ€β€œ ΠΌΠ΅ΠΆΠ΄Ρƒ физичСския Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€ (хост) ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° ОБ (гост).

Въй ΠΊΠ°Ρ‚ΠΎ KVM Π΅ стандартСн ΠΌΠΎΠ΄ΡƒΠ» Π½Π° ядрото Π½Π° Linux, Ρ‚ΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Скстри ΠΎΡ‚ ядрото (ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ ΠΈ Ρ‚.Π½.). И ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка всички Ρ‚Π΅Π·ΠΈ прСдимства ΠΎΡ‚ΠΈΠ²Π°Ρ‚ ΠΏΡ€ΠΈ гоститС (Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ гоститС работят Π½Π° Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°/Π² ядрото Π½Π° Linux OS).

KVM Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·, Π½ΠΎ сам ΠΏΠΎ сСбС си Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π΅Π½ Π·Π° стартиранС Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° ОБ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ... Π’ΠΎΠ²Π° изисква I/O Смулация. Π—Π° I/O (CPU, дисковС, ΠΌΡ€Π΅ΠΆΠ°, Π²ΠΈΠ΄Π΅ΠΎ, PCI, USB, сСрийни ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ ΠΈ Ρ‚.Π½.) KVM ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° QEMU.

2) QEMU

QEMU (Quick Emulator) Π΅ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ устройства, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° стартиратС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Π΅Π΄Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π½Π° Π΄Ρ€ΡƒΠ³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ARM -> x86). Π’ допълнСниС към процСсора QEMU Π΅ΠΌΡƒΠ»ΠΈΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€Π½ΠΈ устройства: ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ, HDD, Π²ΠΈΠ΄Π΅ΠΎ ΠΊΠ°Ρ€Ρ‚ΠΈ, PCI, USB ΠΈ Π΄Ρ€.

Π Π°Π±ΠΎΡ‚ΠΈ Ρ‚Π°ΠΊΠ°:

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈΡ‚Π΅/двоичният ΠΊΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ARM) сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ нСзависим ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΎΡ€Π° TCG (Tiny Code Generator) ΠΈ слСд Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠ·ΠΈ нСзависим ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΄Π²ΠΎΠΈΡ‡Π΅Π½ ΠΊΠΎΠ΄ сС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π² Ρ†Π΅Π»Π΅Π²ΠΈ инструкции/ΠΊΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ x86).

ARM –> ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½_ΠΊΠΎΠ΄ –> x86

По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° стартиратС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини Π½Π° QEMU Π½Π° всСки хост, Π΄ΠΎΡ€ΠΈ ΠΈ с ΠΏΠΎ-стари ΠΌΠΎΠ΄Π΅Π»ΠΈ процСсори, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΎΠ±Π°Ρ‡Π΅ Ρ‚ΠΎΠΉ Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π²Π½ΠΎ, ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ΠΈΡΡ‚ сС Π΄Π²ΠΎΠΈΡ‡Π΅Π½ ΠΊΠΎΠ΄ трябва Π΄Π° бъдС ΠΏΡ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° TCG (TCG Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Just-in-Time).

Π’Π΅Π·ΠΈ. Бамият QEMU Π΅ ΠΌΠ΅Π³Π° Π³ΠΎΡ‚ΠΈΠ½, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π²Π½ΠΎ.

3) Π—Π°Ρ‰ΠΈΡ‚Π½ΠΈ ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΈ

ΠžΠ±Ρ‰ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° QEMU-KVM

Двоичният ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Π½ ΠΊΠΎΠ΄ Π½Π° процСсоритС Ρ€Π°Π±ΠΎΡ‚ΠΈ с ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, Π½ΠΎ Π΅ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° (ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΈ / Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΈ) с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ, ΠΎΡ‚ Π½Π°ΠΉ-ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ‚Π΅ (ΠΏΡ€ΡŠΡΡ‚Π΅Π½ 0), Π΄ΠΎ Π½Π°ΠΉ-ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ‚Π΅, Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½ΠΈ ΠΈ β€žΡΡŠΡ Π·Π°Ρ‚Π΅Π³Π½Π°Ρ‚ΠΈ Π³Π°ΠΉΠΊΠΈβ€œ ” (ΠŸΡ€ΡŠΡΡ‚Π΅Π½ 3 ).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма (ядрото Π½Π° ОБ) Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Ring 0 (Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ядрото) ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈ ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ си поиска с всякакви Π΄Π°Π½Π½ΠΈ ΠΈ устройства. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΠΊΠΈΡ‚Π΅ прилоТСния работят Π½Π° Π½ΠΈΠ²ΠΎ Ring 3 (потрСбитСлски Ρ€Π΅ΠΆΠΈΠΌ) ΠΈ Π½Π΅ ΠΈΠΌ Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π΄Π° правят ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ си искат, Π° вмСсто Ρ‚ΠΎΠ²Π° трябва Π΄Π° изискват Π΄ΠΎΡΡ‚ΡŠΠΏ всСки ΠΏΡŠΡ‚, Π·Π° Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ°Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° опСрация (ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ потрСбитСлскитС прилоТСния ΠΈΠΌΠ°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏ само Π΄ΠΎ собствСнитС си Π΄Π°Π½Π½ΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° β€žΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ в” ΠΏΡΡΡŠΡ‡Π½ΠΈΠΊΠ° Π½Π° някой Π΄Ρ€ΡƒΠ³). ΠŸΡ€ΡŠΡΡ‚Π΅Π½ 1 ΠΈ 2 са ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΎΡ‚ ΡˆΠΎΡ„ΡŒΠΎΡ€ΠΈ.

ΠŸΡ€Π΅Π΄ΠΈ изобрСтяванСто Π½Π° Intel VT-x / AMD SVM, Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ…Π° Π½Π° Ring 0, Π° гоститС Ρ€Π°Π±ΠΎΡ‚Π΅Ρ…Π° Π½Π° Ring 1. Въй ΠΊΠ°Ρ‚ΠΎ Ring 1 няма Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΏΡ€Π°Π²Π° Π·Π° Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, с всяко ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ ΠΎΡ‚ систСмата Π·Π° гости, Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΡŠΡ‚ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π° Π³ΠΎ изпълни Π½Π° Ring 0 (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° QEMU). Π’Π΅Π·ΠΈ. Π΄Π²ΠΎΠΈΡ‡Π΅Π½ Ρ„Π°ΠΉΠ» Π·Π° гости НЕ сС изпълнява Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° процСсора ΠΈ всСки ΠΏΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· няколко ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.

Π Π΅ΠΆΠΈΠΉΠ½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ бяха Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΈ Ρ‚ΠΎΠ²Π° бСшС голям ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π° слСд Ρ‚ΠΎΠ²Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° процСсори, нСзависимо Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³, пуснаха Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструкции (Intel VT-x / AMD SVM), ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ…Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° гост OS ΠΊΠΎΠ΄ Π”Π˜Π Π•ΠšΠ’ΠΠž Π½Π° хост процСсора (заобикаляйки всякакви скъпи ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΡΡ‚ΡŠΠΏΠΊΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ бСшС ΠΏΡ€Π΅Π΄ΠΈ).

Π‘ появата Π½Π° Intel VT-x / AMD SVM бСшС създадСно спСциално Π½ΠΎΠ²ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° звънСнС -1 (минус Π΅Π΄Π½ΠΎ). И сСга Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π½Π΅Π³ΠΎ, Π° гоститС работят Π½Π° Ring 0 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ процСсора.

Π’Π΅Π·ΠΈ. Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка:

  • Ρ…ΠΎΡΡ‚ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ 0
  • гоститС работят Π½Π° Ring 0
  • Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Ring -1

4) QEMU-KVM

KVM Π΄Π°Π²Π° Π½Π° гоститС Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ring 0 ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° QEMU Π·Π° Π΅ΠΌΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° I/O (процСсор, дисковС, ΠΌΡ€Π΅ΠΆΠ°, Π²ΠΈΠ΄Π΅ΠΎ, PCI, USB, сСрийни ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ ΠΈ Ρ‚.Π½., ΠΊΠΎΠΈΡ‚ΠΎ гоститС β€žΠ²ΠΈΠΆΠ΄Π°Ρ‚β€œ ΠΈ с ΠΊΠΎΠΈΡ‚ΠΎ работят).

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ QEMU-KVM (ΠΈΠ»ΠΈ KVM-QEMU) :)

ΠšΠ Π•Π”Π˜Π’Π˜
Π‘Π½ΠΈΠΌΠΊΠ° Π·Π° ΠΏΡ€ΠΈΠ²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅
Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΈ

PS Π’Π΅ΠΊΡΡ‚ΡŠΡ‚ Π½Π° Ρ‚Π°Π·ΠΈ статия Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π² ΠΊΠ°Π½Π°Π»Π° Π½Π° Telegram @RU_Voip ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡ Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ‚ участницитС Π² ΠΊΠ°Π½Π°Π»Π°.

ΠŸΠΈΡˆΠ΅Ρ‚Π΅ Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅ къдС Π½Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚Π° ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° добавя.

Благодаря Π²ΠΈ!

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€