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

рдирдорд╕реНрддреЗ рд╕рдмреИрд▓рд╛рдИ, рд╣рд╛рдореА рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкреНрд░рдХрд╛рд╢рдирдХреЛ рджреЛрд╕реНрд░реЛ рднрд╛рдЧ рд╕рд╛рдЭрд╛ рдЧрд░реНрджреИрдЫреМрдВ "рд▓рд┐рдирдХреНрд╕рдорд╛ рднрд░реНрдЪреБрдЕрд▓ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ: рддрд┐рдиреАрд╣рд░реВ рдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫрдиреН рд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫрдиреН?" рдкрд╣рд┐рд▓реЛ рднрд╛рдЧ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБред рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдореНрдЭрдирд╛ рдЧрд░реМрдВ рдХрд┐ рдкреНрд░рдХрд╛рд╢рдирд╣рд░реВрдХреЛ рдпреЛ рд╢реГрдЩреНрдЦрд▓рд╛ рдкрд╛рдареНрдпрдХреНрд░рдордорд╛ рдирдпрд╛рдБ рд╕реНрдЯреНрд░рд┐рдордХреЛ рд╕реБрд░реБрд╡рд╛рддрд╕рдБрдЧ рдорд┐рд▓реНрдиреЗ рд╕рдордп рд╣реЛред "рд▓рд┐рдирдХреНрд╕ рдкреНрд░рд╢рд╛рд╕рдХ", рдЬреБрди рдЪрд╛рдБрдбреИ рд╕реБрд░реБ рд╣реБрдиреНрдЫред

eBPF рд░ bcc рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ VFS рдХрд╕рд░реА рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреЗ

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

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

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

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

vfsstat.py C рдХреЛрдб рд╕рдореНрдорд┐рд▓рд┐рдд рднрдПрдХреЛ рдкрд╛рдЗрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛ рдЬрд╕рд▓реЗ рдХреЗрд╡рд▓ VFS рдкреНрд░рдХрд╛рд░реНрдп рдХрд▓рд╣рд░реВ рдЧрдгрдирд╛ рдЧрд░реНрджрдЫред

рдЕрдЭ рд╕рд╛рдиреЛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдФрдВ рд░ рд╣реЗрд░реМрдВ рдХреЗ рд╣реБрдиреНрдЫ рдЬрдм рд╣рд╛рдореАрд▓реЗ рдХрдореНрдкреНрдпреБрдЯрд░рдорд╛ USB рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдШреБрд╕рд╛рдЙрдБрдЫреМрдВ рд░ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдБрдЫред

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

eBPF рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрдкрд╛рдИрд▓реЗ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ /sysрдЬрдм USB рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреНрдЫред рдПрдХ рд╕рд░рд▓ рд░ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫред

рдорд╛рдерд┐ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, bcc рдЙрдкрдХрд░рдг trace.py рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдБрджрд╛ рд╕рдиреНрджреЗрд╢ рдЫрд╛рдкреНрдЫ sysfs_create_files()ред рд╣рд╛рдореА рддреНрдпреЛ рджреЗрдЦреНрдЫреМрдВ sysfs_create_files() рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ kworker рдлреНрд▓реНрдпрд╛рд╕ рдбреНрд░рд╛рдЗрдн рд╕рдореНрдорд┐рд▓рд┐рдд рднрдПрдХреЛ рддрдереНрдпрдХреЛ рдЬрд╡рд╛рдлрдорд╛ рд╕реНрдЯреНрд░рд┐рдо, рддрд░ рдХреБрди рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ? рджреЛрд╕реНрд░реЛ рдЙрджрд╛рд╣рд░рдгрд▓реЗ eBPF рдХреЛ рд╢рдХреНрддрд┐ рджреЗрдЦрд╛рдЙрдБрдЫред рдпрд╣рд╛рдБ trace.py рдХрд░реНрдиреЗрд▓ рдмреНрдпрд╛рдХрдЯреНрд░реЗрд╕ (-K рд╡рд┐рдХрд▓реНрдк) рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдлрд╛рдЗрд▓рдХреЛ рдирд╛рдо рдЫрд╛рдкреНрдЫ sysfs_create_files()ред рдПрдХрд▓ рдХрдерди рд╕рдореНрдорд┐рд▓рди C рдХреЛрдб рд╣реЛ рдЬрд╕рдорд╛ 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 рдбреНрд░рд╛рдЗрдн рдШреБрд╕рд╛рдПрд░ рдпреЛ рдЕрдиреБрд╕рдиреНрдзрд╛рди рд╡рд┐рдзрд┐ рдХрддреНрддрд┐рдХреЛ рдЬрд╛рдирдХрд╛рд░реАрдореВрд▓рдХ рдЫ рднрдиреЗрд░ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реНред

рдкрдвреНрдиреЗ-рдорд╛рддреНрд░ рд░реВрдЯ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдЗрдореНрдмреЗрдбреЗрдб рдЙрдкрдХрд░рдгрд╣рд░реВ рд╕рдХреНрд╖рдо рдкрд╛рд░реНрдЫ

рдЕрд╡рд╢реНрдп рдкрдирд┐, рд╕рдХреЗрдЯрдмрд╛рдЯ рдкреНрд▓рдЧ рддрд╛рдиреЗрд░ рдХрд╕реИрд▓реЗ рд╕рд░реНрднрд░ рд╡рд╛ рдЖрдлреНрдиреЛ рдХрдореНрдкреНрдпреБрдЯрд░ рдмрдиреНрдж рдЧрд░реНрджреИрдиред рддрд░ рдХрд┐рди? рдпреЛ рдХрд┐рдирднрдиреЗ рднреМрддрд┐рдХ рднрдгреНрдбрд╛рд░рдг рдпрдиреНрддреНрд░рд╣рд░реВрдорд╛ рдорд╛рдЙрдиреНрдЯ рдЧрд░рд┐рдПрдХрд╛ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдврд┐рд▓реЛ рд▓реЗрдЦрд╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреН, рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛ рд░реЗрдХрд░реНрдб рдЧрд░реНрдиреЗ рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ рднрдгреНрдбрд╛рд░рдгрдорд╛ рд▓реЗрдЦрд╣рд░реВрд╕рдБрдЧ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдирд╣реБрди рд╕рдХреНрдЫред рдЬрдм рдпреЛ рд╣реБрдиреНрдЫ, рдкреНрд░рдгрд╛рд▓реА рдорд╛рд▓рд┐рдХрд╣рд░реВрд▓реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕реБрд░реБ рдЧрд░реНрди рдЕрд░реНрдХреЛ рдмреБрдЯ рд╕рдореНрдо рдкрд░реНрдЦрдиреБ рдкрд░реНрдЫред fsck filesystem-recovery рд░, рд╕рдмреИрднрдиреНрджрд╛ рдЦрд░рд╛рдм рдЕрд╡рд╕реНрдерд╛рдорд╛, рдбрд╛рдЯрд╛ рд╣рд░рд╛рдЙрдиреЗред

рдпрджреНрдпрдкрд┐, рд╣рд╛рдореА рд╕рдмреИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдзреЗрд░реИ IoT рдЙрдкрдХрд░рдгрд╣рд░реВ, рд╕рд╛рдереИ рд░рд╛рдЙрдЯрд░рд╣рд░реВ, рдерд░реНрдореЛрд╕реНрдЯреЗрдЯрд╣рд░реВ рд░ рдХрд╛рд░рд╣рд░реВ, рдЕрдм рд▓рд┐рдирдХреНрд╕ рдЪрд▓рд╛рдЙрдБрдЫрдиреНред рдпреА рдзреЗрд░реИ рдпрдиреНрддреНрд░рд╣рд░реВрдорд╛ рдХреБрдиреИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЫреИрди, рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ "рд╕реНрд╡рдЪреНрдЫ рд░реВрдкрдорд╛" рдмрдиреНрдж рдЧрд░реНрдиреЗ рдХреБрдиреИ рддрд░рд┐рдХрд╛ рдЫреИрдиред рдХрдиреНрдЯреНрд░реЛрд▓ рдпреБрдирд┐рдЯрдорд╛ рдкрд╛рд╡рд░ рд╣реБрдБрджрд╛ рдореГрдд рдмреНрдпрд╛рдЯреНрд░реАрдХреЛ рд╕рд╛рде рдХрд╛рд░ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд▓рд┐рдирдХреНрд╕ рд▓рдЧрд╛рддрд╛рд░ рдорд╛рдерд┐ рд░ рддрд▓ рдЙрдлреНрд░рджреИред рдпреЛ рдХрд╕рд░реА рд▓рд╛рдореЛ рд╕рдордп рдмрд┐рдирд╛ рдкреНрд░рдгрд╛рд▓реА рдмреБрдЯ рдЫ fsckрдЗрдиреНрдЬрд┐рди рдЕрдиреНрддрддрдГ рдХрд╣рд┐рд▓реЗ рдЪрд▓реНрди рдерд╛рд▓реНрдЫ? рд░ рдЬрд╡рд╛рдл рд╕рд░рд▓ рдЫред рдЗрдореНрдмреЗрдбреЗрдб рдпрдиреНрддреНрд░рд╣рд░реВ рд░реВрдЯ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдирд┐рд░реНрднрд░ рд╣реБрдиреНрдЫрдиреН рдкрдвреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ (рд╕рдВрдХреНрд╖рд┐рдкреНрдд ro-rootfs (рдкрдвреНрди-рдорд╛рддреНрд░ рд░реВрдЯ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА))ред

ro-rootfs рдзреЗрд░реИ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬреБрди рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рднрдиреНрджрд╛ рдХрдо рд╕реНрдкрд╖реНрдЯ рдЫрдиреНред рдПрдЙрдЯрд╛ рдлрд╛рдЗрджрд╛ рдпреЛ рд╣реЛ рдХрд┐ рдорд╛рд▓рд╡реЗрдпрд░рд▓реЗ рд▓реЗрдЦреНрди рд╕рдХреНрджреИрди /usr рд╡рд╛ /lib, рдпрджрд┐ рдХреБрдиреИ рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рддреНрдпрд╣рд╛рдБ рд▓реЗрдЦреНрди рд╕рдХреНрджреИрдиред рдЕрд░реНрдХреЛ рднрдиреЗрдХреЛ рд░рд┐рдореЛрдЯ рдпрдиреНрддреНрд░рд╣рд░реВрдХреЛ рдлрд┐рд▓реНрдб рд╕рдорд░реНрдердирдХреЛ рд▓рд╛рдЧрд┐ рдареВрд▓реЛ рд░реВрдкрдорд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ, рдХрд┐рдирдХрд┐ рд╕рдорд░реНрдерди рдХрд░реНрдордЪрд╛рд░реАрд╣рд░реВ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рднрд░ рдкрд░реНрдЫрдиреН рдЬреБрди рдлрд┐рд▓реНрдб рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд╕рдБрдЧ рдирд╛рдордорд╛рддреНрд░ рд╕рдорд╛рди рдЫрдиреНред рд╕рд╛рдпрдж рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг (рддрд░ рд╕рдмреИрднрдиреНрджрд╛ рдХрдкрдЯреА) рдлрд╛рдЗрджрд╛ рдпреЛ рд╣реЛ рдХрд┐ ro-rootfs рд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдбрд┐рдЬрд╛рдЗрди рдЪрд░рдгрдорд╛ рдХреБрди рдкреНрд░рдгрд╛рд▓реА рд╡рд╕реНрддреБрд╣рд░реВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реБрдиреЗрдЫ рднрдиреЗрд░ рдирд┐рд░реНрдгрдп рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрдЫред ro-rootfs рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреБ рдЕрдкреНрдареНрдпрд╛рд░реЛ рд░ рдкреАрдбрд╛рджрд╛рдпреА рд╣реБрди рд╕рдХреНрдЫ, рдХрд┐рдирдХрд┐ 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 рдХрдиреНрдЯреЗрдирд░рдорд╛, рд╡рд╛ рдХрд▓рдХреЛ рдЖрдзрд╛рд░рдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд▓реБрдХрд╛рдЙрдиреБрд╣реЛрд╕реНред

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

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

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

рдкрд╣рд┐рд▓реЛ рднрд╛рдЧред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди