Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 2

Π—Π΄Ρ€Π°Π²ΠΎ Π½Π° ситС, со вас Π³ΠΎ сподСлувамС Π²Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ Π΄Π΅Π» ΠΎΠ΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° β€žΠ’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚?β€œ ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ ΠΏΡ€Π²ΠΈΠΎΡ‚ Π΄Π΅Π» Ρ‚ΡƒΠΊΠ°. Π”Π° Π²Π΅ потсСтимС Π΄Π΅ΠΊΠ° ΠΎΠ²Π°Π° ΡΠ΅Ρ€ΠΈΡ˜Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΅ Ρ‚Π΅ΠΌΠΏΠΈΡ€Π°Π½Π° Π΄Π° сС совпаднС со Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ² прСнос Π½Π° курсот β€žΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° Π›ΠΈΠ½ΡƒΠΊΡβ€œ, кој Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° ΠΌΠ½ΠΎΠ³Ρƒ наскоро.

Како Π΄Π° Π³ΠΎ слСдитС VFS ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ eBPF ΠΈ bcc

НајлСсСн Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ ΠΊΠ°ΠΊΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ sysfs Π΅ Π΄Π° сС Π²ΠΈΠ΄ΠΈ Π²ΠΎ пракса, Π° Π½Π°Ρ˜Π»Π΅ΡΠ½ΠΈΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС Π²ΠΈΠ΄ΠΈ ARM64 Π΅ Π΄Π° сС користи eBPF. eBPF (ΠΊΡ€Π°Ρ‚Π΅Π½ΠΊΠ° ΠΎΠ΄ Π‘Π΅Ρ€ΠΊΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ„ΠΈΠ»Ρ‚Π΅Ρ€) сС состои ΠΎΠ΄ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²Π½Π°Ρ‚Ρ€Π΅ Ρ˜Π°Π΄Ρ€ΠΎ, ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ±Π°Ρ€Π°Π°Ρ‚ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ корисници (query) ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија. Π˜Π·Π²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ ΠΌΡƒ ΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚ Π½Π° Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΎΡ‚ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚; ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π°Π»Π°Ρ‚ΠΊΠΈΡ‚Π΅ eBPF Π½Π° Π²Ρ‡ΠΈΡ‚Π°Π½ систСм ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΡˆΡ‚ΠΎ Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚ ΠΏΡ€Π°Π²ΠΈ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 2

Π—Π° ΡΡ€Π΅ΡœΠ°, Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° eBPF Π΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ лСсно со помош Π½Π° Π°Π»Π°Ρ‚ΠΊΠΈ Π‘Π¦Π¦, ΠΊΠΎΠΈ сС достапни ΠΊΠ°ΠΊΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΎΠ΄ ΠΎΠΏΡˆΡ‚Π°Ρ‚Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° Linux ΠΈ Π΄Π΅Ρ‚Π°Π»Π½ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ Π‘Π΅Ρ€Π½Π°Ρ€Π΄ Π“Ρ€Π΅Π³. Алатки bcc сС Python скрипти со ΠΌΠ°Π»ΠΈ Π²ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π°ΡšΠ° Π½Π° C ΠΊΠΎΠ΄, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° сСкој ΡˆΡ‚ΠΎ Π΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Π½ со Π΄Π²Π°Ρ‚Π° јазика ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° Π³ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈ. Π’Πž bcc/tools Има 80 Python скрипти, ΡˆΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π½Π°Ρ˜Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ ΠΈΠ»ΠΈ систСмски администратор ќС ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ Π½Π΅ΡˆΡ‚ΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚.
Π—Π° Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ Π±Π°Ρ€Π΅ΠΌ ΠΏΠΎΠ²Ρ€ΡˆΠ½Π° идСја Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠ²Π° Ρ€Π°Π±ΠΎΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ VFS Π½Π° систСмот ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ, ΠΎΠ±ΠΈΠ΄Π΅Ρ‚Π΅ сС vfscount ΠΈΠ»ΠΈ vfsstat. Ова ќС ΠΏΠΎΠΊΠ°ΠΆΠ΅, Π΄Π° Ρ€Π΅Ρ‡Π΅ΠΌΠ΅, Π΄Π΅ΠΊΠ° дСсСтици ΠΏΠΎΠ²ΠΈΡ†ΠΈ vfs_open() Π° β€žΠ½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π΅Π»ΠΈβ€œ сС случуваат Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ сСкоја сСкунда.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 2

vfsstat.py Π΅ Python скрипта со Π²ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π°Ρ‡ΠΈ Π½Π° C ΠΊΠΎΠ΄ ΡˆΡ‚ΠΎ Сдноставно Π³ΠΈ Π±Ρ€ΠΎΠΈ ΠΏΠΎΠ²ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° VFS Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

АјдС Π΄Π° Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΠΎΠ±Π°Π½Π°Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΡˆΡ‚ΠΎ сС случува ΠΊΠΎΠ³Π° ќС Π²ΠΌΠ΅Ρ‚Π½Π΅ΠΌΠ΅ USB Ρ„Π»Π΅Ρˆ Π΄Ρ€Π°Ρ˜Π² Π²ΠΎ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ ΠΈ систСмот ќС Π³ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ΅.

Π’ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π²ΠΎ Linux: Π·ΠΎΡˆΡ‚ΠΎ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚? Π”Π΅Π» 2

ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ eBPF, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ сС случува Π²ΠΎ /sysΠΊΠΎΠ³Π° Π΅ Π²ΠΌΠ΅Ρ‚Π½Π°Ρ‚ USB Ρ„Π»Π΅Ρˆ Π΄Ρ€Π°Ρ˜Π². ЕдноставСн ΠΈ слоТСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ ΠΎΠ²Π΄Π΅.

Π’ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ ΠΏΠΎΠ³ΠΎΡ€Π΅, bcc Π°Π»Π°Ρ‚ΠΊΠ° Ρ‚Ρ€Π°Π³Π°.py ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΏΠΎΡ€Π°ΠΊΠ° ΠΊΠΎΠ³Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π΅ ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½Π° sysfs_create_files(). Π“ΠΎ Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ° sysfs_create_files() бСшС лансиран со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ kworker ΠΏΠΎΡ‚ΠΎΠΊ ΠΊΠ°ΠΊΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ Π½Π° Ρ„Π°ΠΊΡ‚ΠΎΡ‚ Π΄Π΅ΠΊΠ° Ρ„Π»Π΅Ρˆ-ΡƒΡ€Π΅Π΄ΠΎΡ‚ Π΅ Π²ΠΌΠ΅Ρ‚Π½Π°Ρ‚, Π½ΠΎ ΠΊΠ°ΠΊΠ²Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π΅ создадСна? Π’Ρ‚ΠΎΡ€ΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ја ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΠΌΠΎΡœΡ‚Π° Π½Π° eBPF. Π•Π²Π΅ trace.py ΠŸΠ΅Ρ‡Π°Ρ‚ΠΈ позадинско слСдСњС Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ (ΠΎΠΏΡ†ΠΈΡ˜Π° -K) ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΡˆΡ‚ΠΎ Π΅ ΠΊΡ€Π΅ΠΈΡ€Π°Π½Π° sysfs_create_files(). Π’ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π΅Π΄Π½Π° изјава Π΅ ΠΊΠΎΠ΄ C кој Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π½ΠΈΠ·Π° со лСсно ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Ρ‚Π»ΠΈΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ ΠΎΠ΄ скриптата Python ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ LLVM ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ само Π½Π°Π²Ρ€Π΅ΠΌΠ΅. Ја ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π° ΠΎΠ²Π°Π° линија ΠΈ ја ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° Π²ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина Π²ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚. ΠŸΠΎΡ‚ΠΏΠΈΡ Π½Π° цСлосна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° sysfs_create_files () ΠΌΠΎΡ€Π° Π΄Π° сС Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΡ†ΠΈΡ€Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π½ΠΈΠ·Π°Ρ‚Π° Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС однСсува Π½Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅. Π“Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π²ΠΎ овој Π΄Π΅Π» ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚ C Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π°Π°Ρ‚ со ΠΏΡ€Π΅ΠΏΠΎΠ·Π½Π°Ρ‚Π»ΠΈΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΎΡ‚ C. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ΠΎΡ‚ -l Π΅ ΠΈΡΠΏΡƒΡˆΡ‚Π΅Π½, ќС Π²ΠΈΠ΄ΠΈΡ‚Π΅ β€žΠΠ΅ успСа Π΄Π° сС состави BPF Ρ‚Π΅ΠΊΡΡ‚ΠΎΡ‚β€œ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΈ сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Π½ΠΈ со C ΠΈ Python ќС Π³ΠΈ Π½Π°Ρ˜Π΄Π°Ρ‚ Π°Π»Π°Ρ‚ΠΊΠΈΡ‚Π΅ bcc лСсно сС ΠΏΡ€ΠΎΡˆΠΈΡ€ΠΈ ΠΈ ΠΌΠ΅Π½ΡƒΠ²Π°.

Кога ќС сС Π²ΠΌΠ΅Ρ‚Π½Π΅ USB-ΡƒΡ€Π΅Π΄ΠΎΡ‚, ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ ќС ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° PID 7711 Π΅ нишка kworkerкој ја создал Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Β«eventsΒ» Π² sysfs. Π‘ΠΏΠΎΡ€Π΅Π΄ Ρ‚ΠΎΠ°, ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ ΠΎΠ΄ sysfs_remove_files() ќС ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° ΠΎΡ‚ΡΡ‚Ρ€Π°Π½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° дискот Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π°Π»ΠΎ со Π±Ρ€ΠΈΡˆΠ΅ΡšΠ΅ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° events, ΡˆΡ‚ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° ΠΎΠΏΡˆΡ‚ΠΈΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π½Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΎ Π±Ρ€ΠΎΠ΅ΡšΠ΅. Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, глСдањС sysfs_create_link () со eBPF Π΄ΠΎΠ΄Π΅ΠΊΠ° Π³ΠΎ Π²ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π°Ρ‚Π΅ USB-ΡƒΡ€Π΅Π΄ΠΎΡ‚ ќС ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΊΠ° сС создадСни Π½Π°Ρ˜ΠΌΠ°Π»ΠΊΡƒ 48 симболични врски.

Π—Π½Π°Ρ‡ΠΈ, ΡˆΡ‚ΠΎ Π΅ ΠΏΠΎΠ΅Π½Ρ‚Π°Ρ‚Π° Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° со настани? Π£ΠΏΠΎΡ‚Ρ€Π΅Π±Π° cscope Π—Π° ΠΏΡ€Π΅Π±Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ __device_add_disk(), ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° ΡˆΡ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΡƒΠ²Π° disk_add_events (), ΠΈ Π±ΠΈΠ»ΠΎ "media_change"Или "eject_request" ΠΌΠΎΠΆΠ΅ Π΄Π° сС сними Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° со настани. ОвдС ΡΠ»ΠΎΡ˜ΠΎΡ‚ Π·Π° Π±Π»ΠΎΠΊΠΎΠ²ΠΈ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ Π³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° корисничкиот простор Π΄Π΅ΠΊΠ° сС појавил ΠΈ исфрлСн β€žΠ΄ΠΈΡΠΊβ€œ. Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ»ΠΊΡƒ Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π΅Π½ овој ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅ со Π²ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π°ΡšΠ΅ USB-ΡƒΡ€Π΅Π΄, Π²ΠΎ спорСдба со ΠΎΠ±ΠΈΠ΄ΠΎΡ‚ Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π°Ρ‚ чисто ΠΎΠ΄ ΠΈΠ·Π²ΠΎΡ€ΠΎΡ‚.

root-Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΡ‚Π΅ систСми само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ

Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, никој Π½Π΅ Π³ΠΎ исклучува сСрвСрот ΠΈΠ»ΠΈ Π½ΠΈΠ²Π½ΠΈΠΎΡ‚ ΠΊΠΎΠΌΠΏΡ˜ΡƒΡ‚Π΅Ρ€ со ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΈΠΊΠ»ΡƒΡ‡ΠΎΠΊΠΎΡ‚ ΠΎΠ΄ ΡˆΡ‚Π΅ΠΊΠ΅Ρ€ΠΎΡ‚. Но Π·ΠΎΡˆΡ‚ΠΎ? Ова Π΅ Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми Π½Π° Ρ„ΠΈΠ·ΠΈΡ‡ΠΊΠΈ ΡƒΡ€Π΅Π΄ΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ ΠΌΠΎΠΆΠ΅Π±ΠΈ ΠΈΠΌΠ°Π°Ρ‚ заостанати записи, Π° структуритС Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΡˆΡ‚ΠΎ ја снимаат Π½ΠΈΠ²Π½Π°Ρ‚Π° ΡΠΎΡΡ‚ΠΎΡ˜Π±Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ сС синхронизираат со записитС Π²ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ. Кога Ρ‚ΠΎΠ° ќС сС случи, сопствСницитС Π½Π° систСмот Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ‡Π΅ΠΊΠ°Π°Ρ‚ Π΄ΠΎ слСдното подигањС Π·Π° Π΄Π° ја стартуваат Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π°. fsck filesystem-recovery ΠΈ, Π²ΠΎ најлош ΡΠ»ΡƒΡ‡Π°Ρ˜, Π³ΡƒΠ±Π΅ΡšΠ΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Π‘Π΅ΠΏΠ°ΠΊ, ситС Π·Π½Π°Π΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΌΠ½ΠΎΠ³Ρƒ IoT ΡƒΡ€Π΅Π΄ΠΈ, ΠΊΠ°ΠΊΠΎ ΠΈ Ρ€ΡƒΡ‚Π΅Ρ€ΠΈ, тСрмостати ΠΈ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ, сСга Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ со Linux. ΠœΠ½ΠΎΠ³Ρƒ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΡƒΡ€Π΅Π΄ΠΈ ΠΈΠΌΠ°Π°Ρ‚ ΠΌΠ°Π»ΠΊΡƒ ΠΈΠ»ΠΈ Π½Π΅ΠΌΠ°Π°Ρ‚ кориснички ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ ΠΈ Π½Π΅ постои Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π³ΠΈ исклучитС β€žΡ‡ΠΈΡΡ‚ΠΎβ€œ. ЗамислСтС Π΄Π° стартуватС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ» со ΠΈΠ·ΡƒΠΌΡ€Π΅Π½Π° Π±Π°Ρ‚Π΅Ρ€ΠΈΡ˜Π° ΠΊΠΎΠ³Π° Π΅ Π½Π°ΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π° Linux ΠΏΠΎΡΡ‚ΠΎΡ˜Π°Π½ΠΎ скокајќи Π½Π°Π³ΠΎΡ€Π΅ ΠΈ Π½Π°Π΄ΠΎΠ»Ρƒ. Како Π΅ Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ систСмот сС ΠΏΠΎΠ΄ΠΈΠ³Π° Π±Π΅Π· Π΄ΠΎΠ»Π³ΠΎ fsckΠΊΠΎΠ³Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΏΠΎΡ‡Π½ΡƒΠ²Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚? А ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΎΡ‚ Π΅ СдноставСн. Π’Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ ΡƒΡ€Π΅Π΄ΠΈ сС ΠΏΠΎΡ‚ΠΏΠΈΡ€Π°Π°Ρ‚ Π½Π° root Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅ (скратСно ro-rootfs (root Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅)).

ro-rootfs Π½ΡƒΠ΄Π°Ρ‚ ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ ΠΊΠΎΠΈ сС ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΈ ΠΎΠ΄ автСнтичноста. Π•Π΄Π½Π° ΠΎΠ΄ прСдноститС Π΅ ΡˆΡ‚ΠΎ ΠΌΠ°Π»ΠΈΡ†ΠΈΠΎΠ·Π½ΠΈΠΎΡ‚ софтвСр Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π° /usr ΠΈΠ»ΠΈ /lib, Π°ΠΊΠΎ Π½ΠΈΠ΅Π΄Π΅Π½ процСс Π½Π° Линукс Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π° Ρ‚Π°ΠΌΡƒ. Π”Ρ€ΡƒΠ³Π° Π΅ Π΄Π΅ΠΊΠ° Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΌΠ΅Ρ€Π° Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΠΎΡ‚ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ Π·Π° тСрСнската ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° далСчинскитС ΡƒΡ€Π΅Π΄ΠΈ, бидСјќи пСрсоналот Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° сС ΠΏΠΎΡ‚ΠΏΠΈΡ€Π° Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ систСми ΠΊΠΎΠΈ сС Π½ΠΎΠΌΠΈΠ½Π°Π»Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ со тСрСнскитС систСми. МоТСби Π½Π°Ρ˜Π²Π°ΠΆΠ½Π°Ρ‚Π° (Π½ΠΎ ΠΈ Π½Π°Ρ˜ΠΏΠΎΠ΄ΠΌΠΎΠ»Π½Π°Ρ‚Π°) ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠ° Π΅ Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ro-rootfs Π³ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΡƒΠ²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π΄Π° ΠΎΠ΄Π»ΡƒΡ‡Π°Ρ‚ ΠΊΠΎΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ Π½Π° систСмот ќС Π±ΠΈΠ΄Π°Ρ‚ Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π²ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°ΡšΠ΅ Π½Π° систСмот. Π Π°Π±ΠΎΡ‚Π΅ΡšΠ΅Ρ‚ΠΎ со ro-rootf ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ Π½Π΅ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π½ΠΎ ΠΈ Π±ΠΎΠ»Π½ΠΎ, бидСјќи ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ const чСсто сС Π²ΠΎ програмскитС Ρ˜Π°Π·ΠΈΡ†ΠΈ, Π½ΠΎ Π½ΠΈΠ²Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ лСсно Π³ΠΎ ΠΎΠΏΡ€Π°Π²Π΄ΡƒΠ²Π°Π°Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈΠΎΡ‚ Ρ‚ΠΎΠ²Π°Ρ€.

создавањС rootfs Π‘Π°ΠΌΠΎ Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅ Π±Π°Ρ€Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Π½Π°ΠΏΠΎΡ€ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ, ΠΈ Ρ‚ΡƒΠΊΠ° Π΄ΠΎΠ°Ρ“Π° VFS Π½Π° сликата. Linux Π±Π°Ρ€Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ Π²Π½Π°Ρ‚Ρ€Π΅ /var моТСшС Π΄Π° сС запишС, Π° ΠΏΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ°, ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ систСми ќС сС ΠΎΠ±ΠΈΠ΄Π°Ρ‚ Π΄Π° создадат ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° dot-files Π² $HOME. Π•Π΄Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° конфигурацискитС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΠΎΡ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌ ΠΎΠ±ΠΈΡ‡Π½ΠΎ Π΅ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ Π΄Π° сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π°Ρ‚ ΠΈ Π΄Π° сС Π²Π³Ρ€Π°Π΄Π°Ρ‚ Π²ΠΎ Π½ΠΈΠ² rootfs. Π—Π° /var Π•Π΄Π΅Π½ ΠΌΠΎΠΆΠ΅Π½ пристап Π΅ Π΄Π° Π³ΠΎ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ‚Π΅ Π½Π° посСбна ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ˜Π° ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС запишС, Π΄ΠΎΠ΄Π΅ΠΊΠ° / ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Π½ само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅. Π”Ρ€ΡƒΠ³Π° ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½Π° Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π΅ Π΄Π° сС користат Π΄Ρ€ΠΆΠ°Ρ‡ΠΈ Π·Π° Π²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅.

ΠŸΠΎΠ²Ρ€Π·ΡƒΠ²Π°Ρ‡ΠΊΠΈ ΠΈ склопливи Π΄Ρ€ΠΆΠ°Ρ‡ΠΈ, Π½ΠΈΠ²Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° со ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ

Π˜Π·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° man mount Π΅ Π½Π°Ρ˜Π΄ΠΎΠ±Ρ€ΠΈΠΎΡ‚ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ Π·Π° прицврстувачитС ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° сС Π²Ρ€Π·ΡƒΠ²Π°Π°Ρ‚ ΠΈ Π΄Π° сС ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏΡƒΠ²Π°Π°Ρ‚, ΠΊΠΎΠΈ ΠΈΠΌ Π΄Π°Π²Π°Π°Ρ‚ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΈ систСмскитС администратори моТност Π΄Π° создадат Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм Π½Π° Π΅Π΄Π½Π° ΠΏΠ°Ρ‚Π΅ΠΊΠ°, Π° ΠΏΠΎΡ‚ΠΎΠ° Π΄Π° Π³ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ°Ρ‚ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ Π΄Ρ€ΡƒΠ³Π°. Π—Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ систСми, ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈ моТност Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ /var Π½Π° Ρ„Π»Π΅Ρˆ-ΡƒΡ€Π΅Π΄ само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅, Π½ΠΎ ΠΏΠ°Ρ‚Π΅ΠΊΠ° Π·Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΡšΠ΅ со ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ ΠΎΠ΄ tmpfs Π² /var ΠΊΠΎΠ³Π° сС Π²Ρ‡ΠΈΡ‚ΡƒΠ²Π°, ќС ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π΄Π° ΠΏΠΈΡˆΡƒΠ²Π°Π°Ρ‚ бСлСшки Ρ‚Π°ΠΌΡƒ (Π΄Π° сС Π³Ρ€Π΅Π±Π΅). Π‘Π»Π΅Π΄Π½ΠΈΠΎΡ‚ ΠΏΠ°Ρ‚ ΠΊΠΎΠ³Π° ќС Π³ΠΈ Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° /var ќС сС ΠΈΠ·Π³ΡƒΠ±ΠΈ. ΠœΠΎΠ½Ρ‚Π°ΠΆΠ°Ρ‚Π° Π·Π° ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏ создава спој ΠΏΠΎΠΌΠ΅Ρ“Ρƒ tmpfs ΠΈ основниот Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ΄Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ постоСчкитС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ ro-tootf Π΄ΠΎΠ΄Π΅ΠΊΠ° Π²Ρ€Π·ΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π°Π·Π½ΠΈ tmpfs ΠΏΠ°ΠΏΠΊΠΈ Π²ΠΈΠ΄Π»ΠΈΠ²ΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°ΠΏΠΈΡˆΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ ro-rootfs Π½Π°Ρ‡ΠΈΠ½ΠΈ. Π”ΠΎΠ΄Π΅ΠΊΠ° overlayfs ΠΎΠ²Π° Π΅ вистинското (proper) Ρ‚ΠΈΠΏ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм, Π²ΠΎ кој Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ°Ρ‚Π° ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²Ρ€Π·ΡƒΠ²Π° VFS имСнски простор.

Π’Ρ€Π· основа Π½Π° описот Π½Π° ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏΠΎΡ‚ ΠΈ ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ°Ρ‚Π° ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅, никој Π½Π΅ Π΅ ΠΈΠ·Π½Π΅Π½Π°Π΄Π΅Π½ ΠΎΠ΄ Ρ‚ΠΎΠ° Линукс ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ Ρ‚ΠΈΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ сС користат. АјдС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΡˆΡ‚ΠΎ сС случува ΠΊΠΎΠ³Π° користимС systemd-nspawn Π·Π° Π΄Π° Π³ΠΎ Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° mountsnoop ΠΎΠ΄ bcc.

Повик system-nspawn Π³ΠΎ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π΄ΠΎΠ΄Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ mountsnoop.py.

АјдС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΡˆΡ‚ΠΎ сС случи:

Π‘Ρ‚Π°Ρ€Ρ‚ΡƒΠ²Π°Ρ˜ mountsnoop Π΄ΠΎΠ΄Π΅ΠΊΠ° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ сС β€žΠΏΠΎΠ΄ΠΈΠ³Π°β€œ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° Π΄Π΅ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ зависно ΠΎΠ΄ ΠΏΠΎΠ²Ρ€Π·Π°Π½Π°Ρ‚Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ° (Π‘Π΅ ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π° само ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ Π½Π° Π΄ΠΎΠ»Π³ΠΈΠΎΡ‚ ΠΈΠ·Π»Π΅Π·).

Π’ΡƒΠΊΠ° systemd-nspawn ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΈΠ·Π±Ρ€Π°Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ procfs ΠΈ sysfs домаќин Π΄ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ ΠΊΠ°ΠΊΠΎ ΠΏΠ°Ρ‚Π΅ΠΊΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ rootfs. ΠŸΠΎΠΊΡ€Π°Ρ˜ Ρ‚ΠΎΠ° MS_BIND Π·Π½Π°ΠΌΠ΅Π½Ρ†Π΅Ρ‚ΠΎ ΡˆΡ‚ΠΎ ја поставува Π²Ρ€Π·ΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ°, Π½Π΅ΠΊΠΎΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π·Π½Π°ΠΌΠ΅Π½Ρ†Π° Π½Π° ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ ја Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π°Ρ‚ врската ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° имСнскитС простори Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ²Ρ€Π·Π°Π½Π°Ρ‚Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ прСскокнС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° /proc ΠΈ /sys Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΎΡ‚ ΠΈΠ»ΠΈ ΡΠΊΡ€ΠΈΡ˜Ρ‚Π΅ Π³ΠΈ Π²ΠΎ зависност ΠΎΠ΄ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚.

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Linux ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π·Π°Π΄Π°Ρ‡Π°, бидСјќи самиот ΠΊΠ΅Ρ€Π½Π΅Π» содрТи ΠΎΠ³Ρ€ΠΎΠΌΠ½Π° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π° Π½Π° ΠΊΠΎΠ΄, ΠΎΡΡ‚Π°Π²Π°Ρ˜ΡœΠΈ Π³ΠΈ настрана Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° кориснички простор Π½Π° Linux ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈΡ‚Π΅ Π·Π° систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ Π²ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ C, ΠΊΠ°ΠΊΠΎ Π½Π° ΠΏΡ€. glibc. Π•Π΄Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° сС постигнС Π½Π°ΠΏΡ€Π΅Π΄ΠΎΠΊ Π΅ Π΄Π° сС ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° Π΅Π΄Π΅Π½ потсистСм Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, со Π°ΠΊΡ†Π΅Π½Ρ‚ Π½Π° Ρ€Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅ Π½Π° систСмскитС ΠΏΠΎΠ²ΠΈΡ†ΠΈ ΠΈ Π·Π°Π³Π»Π°Π²ΠΈΡ˜Π°Ρ‚Π° Π½Π° корисничкиот простор, ΠΊΠ°ΠΊΠΎ ΠΈ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ‚Π΅ Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΈ Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ Ρ‚Π°Π±Π΅Π»Π°Ρ‚Π° file_operations. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ со Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π³ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΡ‚ β€žΡΓ¨ Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°β€œ, ΡˆΡ‚ΠΎ Π³ΠΈ ΠΏΡ€Π°Π²ΠΈ особСно ΠΏΡ€ΠΈΡ˜Π°Ρ‚Π½ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅. Π˜Π·Π²ΠΎΡ€Π½ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π½Π° C ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ Π½Π° највисоко Π½ΠΈΠ²ΠΎ fs/ прСтставуваат ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми, ΠΊΠΎΠΈ сС слој Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΡˆΡ‚ΠΎ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΡˆΠΈΡ€ΠΎΠΊΠ° ΠΈ Ρ€Π΅Π»Π°Ρ‚ΠΈΠ²Π½ΠΎ Сдноставна компатибилност ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми ΠΈ ΡƒΡ€Π΅Π΄ΠΈ Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅. ΠŸΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΈ ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ°Ρ‚Π° Π½Π° ΠΏΡ€Π΅ΠΊΠ»ΠΎΠΏ ΠΏΡ€Π΅ΠΊΡƒ имСнскитС простори Π½Π° Linux Π΅ ΠΌΠ°Π³ΠΈΡ˜Π°Ρ‚Π° Π½Π° VFS ΡˆΡ‚ΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° создавањС ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ само Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅ ΠΈ root Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈ систСми. Π’ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π° со ΠΈΡΠΏΠΈΡ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄, основната Π°Π»Π°Ρ‚ΠΊΠ° eBPF ΠΈ Π½Π΅Ρ˜Π·ΠΈΠ½ΠΈΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ bcc
ΡˆΡ‚ΠΎ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ полСсно ΠΎΠ΄ ΠΊΠΎΠ³Π° Π±ΠΈΠ»ΠΎ.

ΠŸΡ€ΠΈΡ˜Π°Ρ‚Π΅Π»ΠΈ, ΠΏΠΈΡˆΠ΅Ρ‚Π΅, Π΄Π°Π»ΠΈ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° Π²ΠΈ бСшС корисна? МоТСби ΠΈΠΌΠ°Ρ‚Π΅ Π½Π΅ΠΊΠ°ΠΊΠ²ΠΈ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ ΠΈΠ»ΠΈ забСлСшки? И ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠΈ сС заинтСрСсирани Π·Π° курсот Linux Administrator сС ΠΏΠΎΠΊΠ°Π½Π΅Ρ‚ΠΈ ΠžΡ‚Π²ΠΎΡ€Π΅Π½ Π΄Π΅Π½, кој ќС сС ΠΎΠ΄Ρ€ΠΆΠΈ Π½Π° 18 Π°ΠΏΡ€ΠΈΠ».

ΠŸΡ€Π²ΠΈΠΎΡ‚ Π΄Π΅Π».

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€