рд▓рд┐рдирдХреНрд╕рдордзреНрдпреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо: рддреНрдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд? рднрд╛рдЧ 2

рд╕рд░реНрд╡рд╛рдВрдирд╛ рдирдорд╕реНрдХрд╛рд░, рдЖрдореНрд╣реА рддреБрдордЪреНрдпрд╛рд╕реЛрдмрдд рдкреНрд░рдХрд╛рд╢рдирд╛рдЪрд╛ рджреБрд╕рд░рд╛ рднрд╛рдЧ рд╢реЗрдЕрд░ рдХрд░рдд рдЖрд╣реЛрдд тАЬLinux рдордзреАрд▓ Virtual file systems: рддреНрдпрд╛рдВрдЪреА рдЧрд░рдЬ рдХрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд?тАЭ рдкрд╣рд┐рд▓рд╛ рднрд╛рдЧ рддреБрдореНрд╣реА рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рдпреЗрдереЗ. рдЖрдореНтАНрд╣реА рддреБрдореНтАНрд╣рд╛рд▓рд╛ рд╕реНрдорд░рдг рдХрд░реВрди рджреЗрдК рдпрд╛ рдХреА рдкреНрд░рдХрд╛рд╢рдирд╛рдВрдЪреА рд╣реА рдорд╛рд▓рд┐рдХрд╛ рдЕрднреНрдпрд╛рд╕рдХреНрд░рдорд╛рд╡рд░ рдПрдХ рдирд╡реАрди рдкреНрд░рд╡рд╛рд╣ рд╕реБрд░реВ рд╣реЛрдгреНтАНрдпрд╛рд╢реА рдЬреБрд│реВрди рдЖрд▓реА рдЖрд╣реЗ. "рд▓рд┐рдирдХреНрд╕ рдкреНрд░рд╢рд╛рд╕рдХ", рдЬреЗ рд▓рд╡рдХрд░рдЪ рд╕реБрд░реВ рд╣реЛрдИрд▓.

eBPF рдЖрдгрд┐ bcc рдЯреВрд▓реНрд╕ рд╡рд╛рдкрд░реВрди VFS рдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд╕реЗ рдХрд░рд╛рд╡реЗ

рдХрд░реНрдирд▓ рдлрд╛рдЗрд▓реНрд╕рд╡рд░ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ sysfs рддреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд╡реНрдпрд╡рд╣рд╛рд░рд╛рдд рдкрд╛рд╣рдгреЗ рдЖрд╣реЗ, рдЖрдгрд┐ ARM64 рдкрд╛рд╣рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкрд╛ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ eBPF рд╡рд╛рдкрд░рдгреЗ. eBPF (рдмрд░реНрдХрд▓реЗ рдкреЕрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░рд╕рд╛рдареА рд▓рд╣рд╛рди) рдордзреНрдпреЗ рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рдХрд╛рд░реНрдпрд░рдд рдЕрд╕рддреЗ рдХреЛрд░, рдЬреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╡рд╛рдкрд░рдХрд░реНрддреЗ рд╡рд┐рдирдВрддреА рдХрд░реВ рд╢рдХрддрд╛рдд (query) рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░реВрди. рдХрд░реНрдирд▓ рд╕реНрд░реЛрдд рд╡рд╛рдЪрдХрд╛рдВрдирд╛ рдХрд░реНрдирд▓ рдХрд╛рдп рдХрд░реВ рд╢рдХрддрд╛рдд рддреЗ рд╕рд╛рдВрдЧрддрд╛рдд; рд▓реЛрдбреЗрдб рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ eBPF рдЯреВрд▓реНрд╕ рдЪрд╛рд▓рд╡рдгреЗ рдХрд░реНрдирд▓ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рдХрд╛рдп рдХрд░рдд рдЖрд╣реЗ рд╣реЗ рджрд░реНрд╢рд╡рддреЗ.

рд▓рд┐рдирдХреНрд╕рдордзреНрдпреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо: рддреНрдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд? рднрд╛рдЧ 2

рд╕реБрджреИрд╡рд╛рдиреЗ, рдЯреВрд▓реНрд╕рдЪреНрдпрд╛ рдорджрддреАрдиреЗ eBPF рд╡рд╛рдкрд░рдгреЗ рд╕реБрд░реВ рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ рдмреАрд╕реАрд╕реА, рдЬреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдгрд╛рддреВрди рдкреЕрдХреЗрдЬреЗрд╕ рдореНрд╣рдгреВрди рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд linux рдЖрдгрд┐ рддрдкрд╢реАрд▓рд╡рд╛рд░ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдмрд░реНрдирд╛рд░реНрдб рдЧреНрд░реЗрдЧ. рд╕рд╛рдзрдиреЗ bcc рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд╕реА рдХреЛрдбрдЪреНрдпрд╛ рд▓рд╣рд╛рди рдЗрдиреНрд╕рд░реНрдЯреЗрд╢рдирд╕рд╣ рдЖрд╣реЗрдд, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рджреЛрдиреНрд╣реА рднрд╛рд╖рд╛рдВрд╢реА рдкрд░рд┐рдЪрд┐рдд рдХреЛрдгреАрд╣реА рддреНрдпрд╛рдВрдирд╛ рд╕рд╣рдЬрдкрдгреЗ рд╕реБрдзрд╛рд░реВ рд╢рдХрддреЛ. IN bcc/tools рддреЗрдереЗ 80 рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╣реЗрдд, рдЬреНрдпрд╛рдЪрд╛ рдЕрд░реНрде рдмрд╣реБрдзрд╛ рд╡рд┐рдХрд╕рдХ рдХрд┐рдВрд╡рд╛ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдХрд╛рд╣реАрддрд░реА рдирд┐рд╡рдбрдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓.
VFS рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдгрд╛рд▓реАрд╡рд░ рдХрд╛рдп рдХрд╛рдо рдХрд░рддрд╛рдд рдпрд╛рдЪреА рдХрд┐рдорд╛рди рд╡рд░рд╡рд░рдЪреА рдХрд▓реНрдкрдирд╛ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рдпрддреНрди рдХрд░рд╛ vfscount рдХрд┐рдВрд╡рд╛ vfsstat. рд╣реЗ рджрд░реНрд╢рд╡реЗрд▓, рдЪрд▓рд╛ рдореНрд╣рдгреВ, рдХреА рдбрдЭрдирднрд░ рдХреЙрд▓ vfs_open() рдЖрдгрд┐ "рддреНрдпрд╛рдЪреЗ рдорд┐рддреНрд░" рдЕрдХреНрд╖рд░рд╢рдГ рджрд░ рд╕реЗрдХрдВрджрд╛рд▓рд╛ рдШрдбрддрд╛рдд.

рд▓рд┐рдирдХреНрд╕рдордзреНрдпреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо: рддреНрдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд? рднрд╛рдЧ 2

vfsstat.py рд╕реА рдХреЛрдб рдЗрдиреНрд╕рд░реНрдЯ рдЕрд╕рд▓реЗрд▓реА рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╣реЗ рдЬреА рдлрдХреНрдд рд╡реНрд╣реАрдПрдлрдПрд╕ рдлрдВрдХреНрд╢рди рдХреЙрд▓ рдореЛрдЬрддреЗ.

рдЪрд▓рд╛ рдЖрдгрдЦреА рдХреНрд╖реБрд▓реНрд▓рдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдК рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рдЖрдкрдг рд╕рдВрдЧрдгрдХрд╛рдд USB рдлреНрд▓реЕрд╢ рдбреНрд░рд╛рдЗрд╡реНрд╣ рдЯрд╛рдХрддреЛ рдЖрдгрд┐ рд╕рд┐рд╕реНрдЯрдорд▓рд╛ рддреЗ рд╕рд╛рдкрдбрддреЗ рддреЗрд╡реНрд╣рд╛ рдХрд╛рдп рд╣реЛрддреЗ рддреЗ рдкрд╛рд╣реВ.

рд▓рд┐рдирдХреНрд╕рдордзреНрдпреЗ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо: рддреНрдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд? рднрд╛рдЧ 2

eBPF рд╡рд╛рдкрд░реВрди рддреБрдореНрд╣реА рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА рдХрд╛рдп рд╣реЛрдд рдЖрд╣реЗ /sysрдЬреЗрд╡реНрд╣рд╛ USB рдлреНрд▓реЕрд╢ рдбреНрд░рд╛рдЗрд╡реНрд╣ рдШрд╛рддрд▓реА рдЬрд╛рддреЗ. рдПрдХ рд╕рд╛рдзреЗ рдЖрдгрд┐ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рджрд░реНрд╢рд╡рд┐рд▓реЗ рдЖрд╣реЗ.

рд╡рд░ рджрд╛рдЦрд╡рд▓реЗрд▓реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд, bcc рдЗрдиреНрд╕реНрдЯреНрд░реБрдореЗрдВрдЯ trace.py рдХрдорд╛рдВрдб рд░рди рдЭрд╛рд▓реНрдпрд╛рд╡рд░ рдореЗрд╕реЗрдЬ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ sysfs_create_files(). рдЖрдореНрд╣реА рддреЗ рдкрд╛рд╣рддреЛ sysfs_create_files() рд╡рд╛рдкрд░реВрди рд▓рд╛рдБрдЪ рдХреЗрд▓реЗ рд╣реЛрддреЗ kworker рдлреНрд▓реЕрд╢ рдбреНрд░рд╛рдЗрд╡реНрд╣ рдШрд╛рддрд▓реНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдд рдкреНрд░рд╡рд╛рд╣, рдкрд░рдВрддреБ рдХреЛрдгрддреА рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХреЗрд▓реА рдЧреЗрд▓реА? рджреБрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг eBPF рдЪреЗ рд╕рд╛рдорд░реНрдереНрдп рджрд╛рдЦрд╡рддреЗ. рдпреЗрдереЗ trace.py рдХрд░реНрдирд▓ рдмреЕрдХрдЯреНрд░реЗрд╕ (-K рдкрд░реНрдпрд╛рдп) рдЖрдгрд┐ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓рдЪреЗ рдирд╛рд╡ рдореБрджреНрд░рд┐рдд рдХрд░рддреЗ sysfs_create_files(). рд╕рд┐рдВрдЧрд▓ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЗрдиреНрд╕рд░реНрд╢рди рдореНрд╣рдгрдЬреЗ C рдХреЛрдб рдЬреНрдпрд╛рдордзреНрдпреЗ LLVM рдЪрд╛рд▓рд╡рдгрд╛рд▒реНрдпрд╛ Python рд╕реНрдХреНрд░рд┐рдкреНрдЯрджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд╣рдЬ рдУрд│рдЦрдгреНрдпрд╛рдпреЛрдЧреНрдп рдлреЙрд░рдореЕрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ рдЬрд╕реНрдЯ-рдЗрди-рдЯрд╛рдЗрдо рдХрдВрдкрд╛рдЗрд▓рд░. рддреЗ рд╣реА рдУрд│ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдХрд░реНрдирд▓рдЪреНрдпрд╛ рдЖрдд рд╡рд░реНрдЪреНрдпреБрдЕрд▓ рдорд╢реАрдирдордзреНрдпреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ. рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╕реНрд╡рд╛рдХреНрд╖рд░реА sysfs_create_files () рджреБрд╕рд▒реНрдпрд╛ рдХрдорд╛рдВрдбрдордзреНрдпреЗ рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдлреЙрд░рдореЕрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдкреИрдХреА рдПрдХрд╛рдЪрд╛ рд╕рдВрджрд░реНрдн рдШреЗрдК рд╢рдХреЗрд▓. C рдХреЛрдбрдЪреНрдпрд╛ рдпрд╛ рддреБрдХрдбреНрдпрд╛рддреАрд▓ рддреНрд░реБрдЯреАрдВрдореБрд│реЗ C рдХрдВрдкрд╛рдЗрд▓рд░рдХрдбреВрди рдУрд│рдЦрдгреНрдпрд╛рдпреЛрдЧреНрдп рддреНрд░реБрдЯреА рдпреЗрддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, -l рдкреЕрд░рд╛рдореАрдЯрд░ рд╡рдЧрд│рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ "BPF рдордЬрдХреВрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдд рдЕрдпрд╢рд╕реНрд╡реА" рджрд┐рд╕реЗрд▓. рд╕реА рдЖрдгрд┐ рдкрд╛рдпрдердирд╢реА рдкрд░рд┐рдЪрд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдХрд╕рдХрд╛рдВрдирд╛ рд╕рд╛рдзрдиреЗ рд╕рд╛рдкрдбрддреАрд▓ bcc рд╡рд┐рд╕реНрддрд╛рд░ рдЖрдгрд┐ рдмрджрд▓рдгреНрдпрд╛рд╕ рд╕реЛрдкреЗ.

USB рдбреНрд░рд╛рдЗрд╡реНрд╣ рдШрд╛рддрд▓реНрдпрд╛рд╡рд░, рдХрд░реНрдирд▓ рдмреЕрдХрдЯреНрд░реЗрд╕ рджрд╛рдЦрд╡реЗрд▓ рдХреА PID 7711 рдПрдХ рдереНрд░реЗрдб рдЖрд╣реЗ. kworkerрдЬреНрдпрд╛рдиреЗ рдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХреЗрд▓реА ┬лevents┬╗ ╨▓ sysfs. рддреНрдпрд╛рдиреБрд╕рд╛рд░ рдХрдбреВрди рдлреЛрди рдЖрд▓рд╛ sysfs_remove_files() рджрд╛рдЦрд╡реЗрд▓ рдХреА рдбреНрд░рд╛рдЗрд╡реНрд╣ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реНрдпрд╛рдиреЗ рдлрд╛рдЗрд▓ рд╣рдЯрд╡рд▓реА рдЧреЗрд▓реА events, рдЬреЗ рд╕рдВрджрд░реНрдн рдореЛрдЬрдгреАрдЪреНрдпрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдХрд▓реНрдкрдиреЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ. рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдкрд╛рд╣рдгреЗ sysfs_create_link () eBPF рд╕рд╣ USB рдбреНрд░рд╛рдЗрд╡реНрд╣ рдЯрд╛рдХрддрд╛рдирд╛ рджрд┐рд╕реВрди рдпреЗрдИрд▓ рдХреА рдХрд┐рдорд╛рди 48 рдкреНрд░рддреАрдХрд╛рддреНрдордХ рджреБрд╡реЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗрдд.

рдордЧ рдЗрд╡реНрд╣реЗрдВрдЯ рдлрд╛рдИрд▓рдЪрд╛ рдореБрджреНрджрд╛ рдХрд╛рдп рдЖрд╣реЗ? рд╡рд╛рдкрд░ cscope рд╢реЛрдзрд╛рд╕рд╛рдареА __рдбрд┐рд╡реНрд╣рд╛рдЗрд╕_рдЬреЛрдбрд╛_рдбрд┐рд╕реНрдХ(), рддреЗ рдХрд╛рдп рдХрд╛рд░рдгреАрднреВрдд рдЖрд╣реЗ рддреЗ рджрд░реНрд╢рд╡рд┐рддреЗ disk_add_events (), рдЖрдгрд┐ рдПрдХрддрд░ "media_change", рдХрд┐рдВрд╡рд╛ "eject_request" рдЗрд╡реНрд╣реЗрдВрдЯ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд░реЗрдХреЙрд░реНрдб рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдпреЗрдереЗ рдХрд░реНрдирд▓ рдмреНрд▓реЙрдХ рд▓реЗрдпрд░ рдпреБрдЬрд░рд╕реНрдкреЗрд╕рд▓рд╛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рдХреА "рдбрд┐рд╕реНрдХ" рджрд┐рд╕рд▓реА рдЖрдгрд┐ рдмрд╛рд╣реЗрд░ рдХрд╛рдврд▓реА рдЧреЗрд▓реА. рдпреВрдПрд╕рдмреА рдбреНрд░рд╛рдЗрд╡реНрд╣ рдЯрд╛рдХреВрди рд╣реА рд╕рдВрд╢реЛрдзрди рдкрджреНрдзрдд рдХрд┐рддреА рдорд╛рд╣рд┐рддреАрдкреВрд░реНрдг рдЖрд╣реЗ рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛, рдЧреЛрд╖реНрдЯреА рдкреВрд░реНрдгрдкрдгреЗ рд╕реНрддреНрд░реЛрддрд╛рд╡рд░реВрди рдХрд╢рд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд.

рдХреЗрд╡рд│-рд╡рд╛рдЪрдиреАрдп рд░реВрдЯ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдПрдореНрдмреЗрдбреЗрдб рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕ рд╕рдХреНрд╖рдо рдХрд░рддрд╛рдд

рдЕрд░реНрдерд╛рдд, рд╕реЙрдХреЗрдЯрдордзреВрди рдкреНрд▓рдЧ рдУрдвреВрди рдХреЛрдгреАрд╣реА рд╕рд░реНрд╡реНрд╣рд░ рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдВрдЪрд╛ рд╕рдВрдЧрдгрдХ рдмрдВрдж рдХрд░рдд рдирд╛рд╣реА. рдкрдг рдХрд╛? рдпрд╛рдЪреЗ рдХрд╛рд░рдг рдЕрд╕реЗ рдХреА рдлрд┐рдЬрд┐рдХрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдбрд┐рд╡реНрд╣рд╛рдпрд╕реЗрд╕рд╡рд░ рдорд╛рдЙрдВрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрд╛рдИрд▓ рд╕рд┐рд╕реНрдЯреАрдордордзреНрдпреЗ рд▓реЕрдЧреНрдб рд░рд╛рдЗрдЯреНрд╕ рдЕрд╕реВ рд╢рдХрддрд╛рдд, рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдЬреЗ рддреНрдпрд╛рдВрдЪреА рд╕реНрдерд┐рддреА рд░реЗрдХреЙрд░реНрдб рдХрд░рддрд╛рдд рддреЗ рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рд░рд╛рдЗрдЯрд╕рд╣ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реАрдд. рдЬреЗрд╡реНрд╣рд╛ рд╣реЗ рдШрдбрддреЗ, рддреЗрд╡реНрд╣рд╛ рдпреБрдЯрд┐рд▓рд┐рдЯреА рд▓рд╛рдБрдЪ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд┐рд╕реНрдЯрдо рдорд╛рд▓рдХрд╛рдВрдирд╛ рдкреБрдвреАрд▓ рдмреВрдЯ рд╣реЛрдИрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓. fsck filesystem-recovery рдЖрдгрд┐, рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, рдбреЗрдЯрд╛ рдЧрдорд╛рд╡рдгреЗ.

рддрдерд╛рдкрд┐, рдЖрдкрд▓реНрдпрд╛ рд╕рд░реНрд╡рд╛рдВрдирд╛ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА рдЕрдиреЗрдХ IoT рдЙрдкрдХрд░рдгреЗ, рддрд╕реЗрдЪ рд░рд╛рдЙрдЯрд░, рдерд░реНрдореЛрд╕реНрдЯреЕрдЯреНрд╕ рдЖрдгрд┐ рдХрд╛рд░, рдЖрддрд╛ Linux рдЪрд╛рд▓рд╡рддрд╛рдд. рдпрд╛рдкреИрдХреА рдмрд░реНтАНрдпрд╛рдЪ рдЙрдкрдХрд░рдгрд╛рдВрдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╕рддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ "рд╕реНрд╡рдЪреНрдЫрдкрдгреЗ" рдмрдВрдж рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рдорд╛рд░реНрдЧ рдирд╛рд╣реА. рдХрдВрдЯреНрд░реЛрд▓ рдпреБрдирд┐рдЯрд▓рд╛ рдкреЙрд╡рд░ рдЕрд╕рддрд╛рдирд╛ рдореГрдд рдмреЕрдЯрд░реАрдиреЗ рдХрд╛рд░ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░рд╛ linux рд╕рддрдд рд╡рд░ рдЖрдгрд┐ рдЦрд╛рд▓реА рдЙрдбреА рдорд╛рд░рдгреЗ. рд╣реЗ рдХрд╕реЗ рдЖрд╣реЗ рдХреА рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдБрдЧрд╢рд┐рд╡рд╛рдп рдмреВрдЯ рд╣реЛрддреЗ fsckрдЗрдВрдЬрд┐рди рд╢реЗрд╡рдЯреА рдХрдзреА рдЪрд╛рд▓реВ рд╣реЛрддреЗ? рдЖрдгрд┐ рдЙрддреНрддрд░ рд╕реЛрдкреЗ рдЖрд╣реЗ. рдПрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгреЗ рд░реВрдЯ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддрд╛рдд рдлрдХреНрдд рд╡рд╛рдЪрдирд╛рд╕рд╛рдареА (рд╕рдВрдХреНрд╖рд┐рдкреНрдд ro-rootfs (рдХреЗрд╡рд│-рд╡рд╛рдЪрдиреАрдп рд░реВрдЯ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо)).

ro-rootfs рд╕рддреНрдпрддреЗрдкреЗрдХреНрд╖рд╛ рдХрдореА рд╕реНрдкрд╖реНрдЯ рдЕрд╕рд▓реЗрд▓реЗ рдЕрдиреЗрдХ рдлрд╛рдпрджреЗ рджреЗрддрд╛рдд. рдПрдХ рдлрд╛рдпрджрд╛ рдореНрд╣рдгрдЬреЗ рдорд╛рд▓рд╡реЗрдЕрд░ рд▓рд┐рд╣реВ рд╢рдХрдд рдирд╛рд╣реА /usr рдХрд┐рдВрд╡рд╛ /lib, рдЬрд░ рдХреЛрдгрддреАрд╣реА рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреЗрдереЗ рд▓рд┐рд╣реВ рд╢рдХрдд рдирд╛рд╣реА. рджреБрд╕рд░реЗ рдореНрд╣рдгрдЬреЗ, рд░рд┐рдореЛрдЯ рдЙрдкрдХрд░рдгрд╛рдВрдЪреНрдпрд╛ рдлреАрд▓реНрдб рд╕рдкреЛрд░реНрдЯрд╕рд╛рдареА рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЖрд╣реЗ, рдХрд╛рд░рдг рд╕рдорд░реНрдерди рдХрд░реНрдордЪрд╛рд░реА рдлреАрд▓реНрдб рд╕рд┐рд╕реНрдЯрдорд╢реА рдирд╛рдордорд╛рддреНрд░ рд╕рдорд╛рди рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рд╕рд┐рд╕реНрдЯрдорд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддрд╛рдд. рдХрджрд╛рдЪрд┐рдд рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ (рдкрд░рдВрддреБ рд╕рд░реНрд╡рд╛рдд рдХрдкрдЯреА) рдлрд╛рдпрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА ro-rootfs рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдирд╛ рд╕рд┐рд╕реНрдЯрдордЪреНрдпрд╛ рдбрд┐рдЭрд╛рдЗрди рд╕реНрдЯреЗрдЬрд╡рд░ рдХреЛрдгрддреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЕрд╕рддреАрд▓ рд╣реЗ рдард░рд╡рдгреНрдпрд╛рд╕ рднрд╛рдЧ рдкрд╛рдбрддрд╛рдд. ro-rootfs рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рдЕрд╕реНрддрд╛рд╡реНрдпрд╕реНрдд рдЖрдгрд┐ рд╡реЗрджрдирд╛рджрд╛рдпрдХ рдЕрд╕реВ рд╢рдХрддреЗ, рдХрд╛рд░рдг рдХреЙрдиреНрд╕реНрдЯ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕рд╣рд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рдЕрд╕рддрд╛рдд, рдкрд░рдВрддреБ рддреНрдпрд╛рдВрдЪреЗ рдлрд╛рдпрджреЗ рд╕рд╣рдЬрдкрдгреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдУрд╡реНрд╣рд░рд╣реЗрдбрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛рдд.

рдирд┐рд░реНрдорд┐рддреА rootfs рдПрдореНрдмреЗрдбреЗрдб рдбреЗрд╡реНрд╣рд▓рдкрд░рд╕рд╛рдареА рдлрдХреНрдд-рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрддреНрдирд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдпреЗрдереЗрдЪ VFS рдЪрд┐рддреНрд░рд╛рдд рдпреЗрддреЛ. рд▓рд┐рдирдХреНрд╕рдордзреНрдпреЗ рдлрд╛рдЗрд▓реНрд╕ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ /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 рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ рдХреЙрд▓рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рддреНрдпрд╛рдВрдирд╛ рд▓рдкрд╡рд╛.

рдирд┐рд╖реНрдХрд░реНрд╖

рд▓рд┐рдирдХреНрд╕рдЪреЗ рдЕрдВрддрд░реНрдЧрдд рдХрд╛рд░реНрдп рд╕рдордЬреВрди рдШреЗрдгреЗ рдЕрд╢рдХреНрдп рд╡рд╛рдЯреВ рд╢рдХрддреЗ, рдХрд╛рд░рдг рдХрд░реНрдирд▓рдордзреНрдпреЗрдЪ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдХреЛрдб рдЕрд╕рддреЛ, рд▓рд┐рдирдХреНрд╕ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдЖрдгрд┐ рд╕реА рд▓рд╛рдпрдмреНрд░рд░реАрдордзреАрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрд╛рдЬреВрд▓рд╛ рдареЗрд╡реВрди glibc. рдкреНрд░рдЧрддреА рдХрд░рдгреНрдпрд╛рдЪрд╛ рдПрдХ рдорд╛рд░реНрдЧ рдореНрд╣рдгрдЬреЗ рдПрдХрд╛ рдХрд░реНрдирд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдордЪрд╛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╡рд╛рдЪрдгреЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓реНрд╕ рдЖрдгрд┐ рдпреВрдЬрд░-рд╕реНрдкреЗрд╕ рд╣реЗрдбрд░, рддрд╕реЗрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░реНрдЧрдд рдХрд░реНрдирд▓ рдЗрдВрдЯрд░рдлреЗрд╕, рдЬрд╕реЗ рдХреА рдЯреЗрдмрд▓ рд╕рдордЬреВрди рдШреЗрдгреЗ рдпрд╛рд╡рд░ рднрд░ рджрд┐рд▓рд╛ рдЬрд╛рддреЛ. file_operations. рдлрд╛рдЗрд▓ рдСрдкрд░реЗрд╢рдиреНрд╕ "рд╕рд░реНрд╡ рдХрд╛рд╣реА рдПрдХ рдлрд╛рдЗрд▓ рдЖрд╣реЗ" рддрддреНрддреНрд╡ рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд, рддреНрдпрд╛рдВрдирд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рд╢реЗрд╖рддрдГ рдЖрдирдВрджрджрд╛рдпрдХ рдмрдирд╡рддрд╛рдд. рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд C рдХрд░реНрдирд▓ рд╕реНрддреНрд░реЛрдд рдлрд╛рдЗрд▓реНрд╕ fs/ рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдордЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕рд╛рджрд░ рдХрд░рддреЗ, рдЬреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЖрдгрд┐ рд╕реНрдЯреЛрд░реЗрдЬ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕реЗрд╕рдордзреНрдпреЗ рд╡реНрдпрд╛рдкрдХ рдЖрдгрд┐ рддреБрд▓рдиреЗрдиреЗ рд╕реЛрдкреА рд╕реБрд╕рдВрдЧрддрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдгрд╛рд░реЗ рд░реЕрдкрд░ рд╕реНрддрд░ рдЖрд╣реЗ. рд▓рд┐рдирдХреНрд╕ рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕рджреНрд╡рд╛рд░реЗ рд▓рд┐рдВрдХ рдХрд░рдгреЗ рдЖрдгрд┐ рдЖрдЪреНрдЫрд╛рджрд┐рдд рдХрд░рдгреЗ рд╣реА VFS рдЪреА рдЬрд╛рджреВ рдЖрд╣реЗ рдЬреНрдпрд╛рдореБрд│реЗ рдХреЗрд╡рд│ рд╡рд╛рдЪрдиреАрдп рдХрдВрдЯреЗрдирд░ рдЖрдгрд┐ рд░реВрдЯ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдпрд╛рд░ рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрддреЗ. рд╕реЛрд░реНрд╕ рдХреЛрдб, eBPF рдХреЛрд░ рдЯреВрд▓ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕рдЪреНрдпрд╛ рдкрд░реАрдХреНрд╖рдгрд╛рд╕рд╣ рдПрдХрддреНрд░рд┐рдд bcc
рдореВрд│ рд╢реЛрдз рдиреЗрд╣рдореАрдкреЗрдХреНрд╖рд╛ рд╕реЛрдкреЗ рдмрдирд╡рдгреЗ.

рдорд┐рддреНрд░рд╛рдВрдиреЛ, рд▓рд┐рд╣рд╛, рд╣рд╛ рд▓реЗрдЦ рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рд╣реЛрддрд╛ рдХрд╛? рдХрджрд╛рдЪрд┐рдд рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдХрд╛рд╣реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдХрд┐рдВрд╡рд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдЖрд╣реЗрдд? рдЖрдгрд┐ рдЬреНрдпрд╛рдВрдирд╛ рд▓рд┐рдирдХреНрд╕ рдЕреЕрдбрдорд┐рдирд┐рд╕реНрдЯреНрд░реЗрдЯрд░ рдХреЛрд░реНрд╕рдордзреНрдпреЗ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЖрд╣реЗ рддреНрдпрд╛рдВрдирд╛ рдЖрдордВрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдЦреБрд▓рд╛ рджрд┐рд╡рд╕, рдЬреЗ 18 рдПрдкреНрд░рд┐рд▓ рд░реЛрдЬреА рд╣реЛрдгрд╛рд░ рдЖрд╣реЗ.

рдкрд╣рд┐рд▓рд╛ рднрд╛рдЧ.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛