ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΡΠ° Π½Π° Linux Bottlerocket 1.7.0, ΡΠ°Π·Π²ΠΈΠ΅Π½Π° ΡΠΎ ΡΡΠ΅ΡΡΠ²ΠΎ Π½Π° Amazon Π·Π° Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ Π»Π°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ. ΠΠ»Π°ΡΠΊΠΈΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΡΠ° ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ Rust ΠΈ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π°Ρ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ΅ MIT ΠΈ Apache 2.0. ΠΠΎΠ΄Π΄ΡΠΆΡΠ²Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π½Π° Bottlerocket Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° Amazon ECS, VMware ΠΈ AWS EKS Kubernetes, ΠΊΠ°ΠΊΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄Π΅Π½ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ° ΠΊΠΎΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡΠ° ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ°Π΅ΡΠ΅ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ.
ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π°ΡΠΎΠΌΡΠΊΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π°ΠΆΡΡΠΈΡΠ°Π½Π° Π½Π΅Π΄Π΅Π»ΠΈΠ²Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ° ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΡΠ° Π³ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° ΠΠΈΠ½ΡΠΊΡ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π³ΠΈ ΡΠ°ΠΌΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅. ΠΠΊΠΎΠ»ΠΈΠ½Π°ΡΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΌΠ΅Π½Π°ΡΠ΅Ρ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Glibc, Π°Π»Π°ΡΠΊΠ° Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Buildroot, ΠΏΠΎΠ΄ΠΈΠ³Π½ΡΠ²Π°Ρ GRUB, Π·Π»ΠΈ ΠΌΡΠ΅ΠΆΠ΅Π½ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡ, Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ°Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Kubernetes, aws-iam-authenticator ΠΈ Amazon ECS Π°Π³Π΅Π½Ρ.
ΠΠ»Π°ΡΠΊΠΈΡΠ΅ Π·Π° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π΄ΠΎΠ°ΡΠ°Π°Ρ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΡΠΎ Π΅ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈ ΡΠΏΡΠ°Π²ΡΠ²Π°Π½ ΠΏΡΠ΅ΠΊΡ API ΠΈ AWS SSM Π°Π³Π΅Π½Ρ. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° Π½Π΅ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° ΡΠΊΠΎΠ»ΠΊΠ°, SSH ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠΎΠ»ΠΊΡΠ²Π°Π½ΠΈ ΡΠ°Π·ΠΈΡΠΈ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π±Π΅Π· Python ΠΈΠ»ΠΈ Perl) - Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ Π°Π»Π°ΡΠΊΠΈ ΠΈ Π°Π»Π°ΡΠΊΠΈΡΠ΅ Π·Π° Π΄Π΅Π±Π°Π³ΠΈΡΠ°ΡΠ΅ ΡΠ΅ ΡΠΌΠ΅ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π΅Π½ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π·Π° ΡΡΠ»ΡΠ³ΠΈ, ΠΊΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ Π΅ ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.
ΠΠ»ΡΡΠ½Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΡΠ»ΠΈΡΠ½ΠΈΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ ΠΊΠ°ΠΊΠΎ Fedora CoreOS, CentOS/Red Hat Atomic Host Π΅ ΠΏΡΠΈΠΌΠ°ΡΠ½ΠΈΠΎΡ ΡΠΎΠΊΡΡ Π½Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° Π·Π°ΡΠ°ΠΊΠ½ΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°ΡΡΠΈΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΈ Π·Π°ΠΊΠ°Π½ΠΈ, ΡΡΠΎ Π³ΠΎ ΠΎΡΠ΅ΠΆΠ½ΡΠ²Π° ΠΈΡΠΊΠΎΡΠΈΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠ°Π½Π»ΠΈΠ²ΠΎΡΡΠΈΡΠ΅ Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅. . ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° ΠΠΈΠ½ΡΠΊΡ - cgroups, ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ ΠΈ seccomp. ΠΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΠ°, Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΠ°ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ SELinux Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΡ βΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅β.
ΠΠΎΡΠ΅Π½ΡΠΊΠ°ΡΠ° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ° Π΅ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π° ΡΠ°ΠΌΠΎ Π·Π° ΡΠΈΡΠ°ΡΠ΅, Π° ΠΏΠ°ΡΡΠΈΡΠΈΡΠ°ΡΠ° Π·Π° ΠΏΠΎΡΡΠ°Π²ΠΊΠΈ /etc ΡΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠ° Π²ΠΎ tmpfs ΠΈ ΡΠ΅ Π²ΡΠ°ΡΠ° Π²ΠΎ ΠΏΡΠ²ΠΎΠ±ΠΈΡΠ½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° ΠΏΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅. ΠΠΈΡΠ΅ΠΊΡΠ½Π°ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π° Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ /etc, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ /etc/resolv.conf ΠΈ /etc/containerd/config.toml, Π½Π΅ Π΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½Π° - Π·Π° ΡΡΠ°ΡΠ½ΠΎ Π΄Π° Π³ΠΈ Π·Π°ΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΊΠΈΡΠ΅, ΠΌΠΎΡΠ° Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ API ΠΈΠ»ΠΈ Π΄Π° ΡΠ° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠ° Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ. ΠΠΎΠ΄ΡΠ»ΠΎΡ dm-verity ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΡΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ΅ΡΠΎΡ Π½Π° root ΠΏΠ°ΡΡΠΈΡΠΈΡΠ°ΡΠ° ΠΈ Π°ΠΊΠΎ ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅ ΠΎΠ±ΠΈΠ΄ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Π±Π»ΠΎΠΊ ΡΡΠ΅Π΄, ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°.
ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ Rust, ΠΊΠΎΡ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π·Π±Π΅Π΄Π½ΠΈ Π·Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ° Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΠΏΡΠΎΠΏΡΡΡΠΈ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ°ΡΠ°, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π½Π° Π½ΡΠ»Π° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Ρ ΠΈ ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΡΡΠ²Π°ΡΠ° Π½Π° Π±Π°ΡΠ΅ΡΠΎΡ. ΠΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎ Π³ΡΠ°Π΄Π΅ΡΠ΅, ΡΠ΅ΠΆΠΈΠΌΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅ β-enable-default-pieβ ΠΈ β-enable-default-sspβ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΡΡΠΎΡΠΎΡ Π·Π° Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΠΈΠ·Π²ΡΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° (PIE) ΠΈ Π·Π°ΡΡΠΈΡΠ° ΠΎΠ΄ ΠΏΡΠ΅Π»Π΅Π²Π°ΡΠ΅ Π½Π° ΠΌΠ°Π³Π°ΡΠΈΠ½ΠΎΡ ΠΏΡΠ΅ΠΊΡ Π·Π°ΠΌΠ΅Π½Π° Π½Π° ΠΊΠ°Π½Π°ΡΠΈ. ΠΠ° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ C/C++, Π·Π½Π°ΠΌΠ΅Π½ΡΠ°ΡΠ° β-Wallβ, β-Werror=format-securityβ, β-Wp,-D_FORTIFY_SOURCE=2β, β-Wp,-D_GLIBCXX_ASSERTIONSβ ΠΈ β-fstack-clashβ ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ΠΎ -Π·Π°ΡΡΠΈΡΠ°β.
ΠΠΎ Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- ΠΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π° RPM ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π²ΠΎ JSON ΡΠΎΡΠΌΠ°Ρ ΠΈ Π΄Π° ΡΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠ° Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π½Π° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ΠΎΡ ΠΊΠ°ΠΊΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° /var/lib/bottlerocket/inventory/application.json Π·Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
- ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΡΠ΅ βΠ°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡβ ΠΈ βΠΊΠΎΠ½ΡΡΠΎΠ»Π°β ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°Π½ΠΈ.
- ΠΠΆΡΡΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Π·Π° ΡΠ°Π·ΠΈΡΠΈΡΠ΅ Go ΠΈ Rust.
- ΠΠΆΡΡΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΎΠ΄ ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ.
- Π Π΅ΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°ΡΠ° tmpfilesd Π·Π° kmod-5.10-nvidia.
- ΠΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½Π° tuftool, Π²Π΅ΡΠ·ΠΈΠΈΡΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Π½ΠΈ.
ΠΠ·Π²ΠΎΡ: opennet.ru