á¡á¬ážáá¯á¶ážáá²áááºá¹ááá¬áá«á áá»áœááºá¯ááºááá¯á·ááẠ"Linux ááŸá á¡áá¯á¡áá±á¬ááºááá¯ááºá
áá
áºáá»á¬áž áá¯ááºáá±ááŸá¯á áá¯áááá¡ááá¯ááºážááᯠáááºááŸáá·áº áá»áŸáá±áá±áááº- á¡áááºááŒá±á¬áá·áº ááá¯á¡ááºááááºážá áááºážááá¯á·ááẠáááºááá¯á·áá¯ááºáá±á¬ááºááŒááááºážá" áááááá¯ááºážááᯠáááºááŸá¯ááá¯ááºáá«áááºá
eBPF ááŸáá·áº bcc áááááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á VFS ááá¯áááºááá¯á·á á±á¬áá·áºááŒáá·áºááááºáááºážá
Kernel ááẠááá¯ááºáá»á¬ážáá±á«áºááœáẠáááºááá¯á·áá¯ááºáá±á¬ááºáááºááᯠáá¬ážáááºááẠá¡ááœááºáá°áá¯á¶ážáááºážáááºáž sysfs
áááºážááá¯áááºááœá±á·ááŒááºáááºááŒá
áºááŒá®áž ARM64 ááá¯ááŒáá·áºááŸá¯áááºá¡ááœááºáá°áá¯á¶ážáááºážáááºážááŸá¬ eBPF ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒá
áºáááºá eBPF (Berkeley Packet Filter á á¡ááá¯áá±á¬ááº) ááœáẠá¡áá¯ááºáá¯ááºáá±áá±á¬ virtual machine áá
áºáᯠáá«áááºáááºá query
) command line á០kernel áááºážááŒá
áºáá»á¬ážááẠkernel áá¯ááºááá¯ááºáááºááᯠá
á¬áááºáá°ááᯠááŒá±á¬ááŒáááºá loaded system ááœáẠeBPF áááááá¬áá»á¬ážááᯠáááºáááºááŒááºážááẠkernel á¡ááŸááºáááẠáá¯ááºáá±á¬ááºáá±áááºáá»á¬ážááᯠááŒááááºá
áá¶áá±á¬ááºážá
áœá¬ááŒáá·áºá eBPF ááᯠá
áááºá¡áá¯á¶ážááŒá¯ááŒááºážááẠáááááá¬áá»á¬ážáá¡áá°á¡áá®ááŒáá·áº á¡ááœááºááœááºáá°áá«áááºá bcc
C áá¯ááºá¡áá±ážá
á¬ážááá·áºááœááºážáá¬ážáá±á¬ Python scripts áá»á¬ážááŒá
áºááŒáááºá ááá¯ááá¯áááºááŸá¬ áá¬áá¬á
áá¬ážááŸá
áºáá¯áá¯á¶ážááŸáá·áºáááºážááŸá®ážáá°ááá¯ááºáž áááºážááá¯á·ááᯠá¡ááœááºááá°ááœááºážáá¶ááŒááºáááºááá¯ááºáááºá IN bcc/tools
Python script áá±á«ááºáž 80 ááŸáááŒá®ážá ááá¯ááá¯áááºááŸá¬ developer ááá¯á·ááá¯áẠsystem administrator ááẠááŒá¿áá¬ááŒá±ááŸááºážáááºá¡ááœáẠááá·áºáá»á±á¬áºáá±á¬á¡áá¬ááᯠááœá±ážáá»ááºááá¯ááºáááá·áºáááºááŒá
áºáááºá
VFSs ááẠáááºáááºáá±ááá·áºá
áá
áºááœáẠáá¯ááºáá±á¬ááºááá·áºá¡áá¯ááºá¡ááœáẠá¡áááºážáá¯á¶áž á¡áá±á«áºáá¶á
áááºáá°ážáá
áºáá¯ááááºá á
ááºážááŒáá·áºáá«á vfscount
ááá¯á·ááá¯áẠvfsstat
. áá«áááºáá²á·áá»á®áá²á·áá±á«áºááá¯ááŸá¯ááá¯á· ááá¯ááŒáá«á
áá¯á· vfs_open()
á
áá¹ááá·áºááá¯ááºážááœáẠâáá°á·áá°áááºáá»ááºážáá»á¬ážâ ááẠá
á¬áá¬ážá¡ááá¯ááºážááŒá
áºáá»ááºáá±áááºá
vfsstat.py
VFS áá¯ááºáá±á¬ááºáá»ááºáá±á«áºááá¯ááŸá¯áá»á¬ážááᯠááá¯ážááá¯ážáá±ááœááºááá¯ááºáá±á¬ C áá¯ááºááá·áºááœááºážááŸá¯áá»á¬ážáá«ááŸááá±á¬ Python script áá áºáá¯ááŒá áºáááºá
áá±á¬ááºáááºá¡áá±ážá¡ááœá²á¥ááá¬áá áºáá¯áá±ážáᬠááœááºáá»á°áá¬áá²ááá¯á· USB flash drive ááá¯ááá·áºááá¯ááºáá±á¬á¡áá«ááœáẠáá¬ááŒá áºááœá¬ážáááºááá¯ááŒáá·áºáá¡á±á¬ááºá
eBPF ááᯠá¡áá¯á¶ážááŒá¯á ááŒá áºáá»ááºáá±ááá·áºá¡áá¬áá»á¬ážááᯠáááºááŒááºááá¯ááºáááºá
/sys
USB flash drive ááá¯ááá·áºááœááºážáá±á¬á¡áá«á ááá¯ážááŸááºážááŒá®áž ááŸá¯ááºááœá±ážáá±á¬ á¥ááá¬ááᯠá€áá±áá¬ááœáẠááŒáá¬ážáááºá
á¡áááºáá±á¬áºááŒáá« á¥ááá¬ááœááºá bcc
tool áá
áºáᯠsysfs_create_files()
. á¡á²áá«ááᯠááŒááºáááºá sysfs_create_files()
á
áááºá¡áá¯á¶ážááŒá¯áá²á·áááºá kworker
flash drive ááá¯ááá·áºááœááºážáá²á·áááºáá°áá±á¬á¡áá»ááºááá¯áá¯á¶á·ááŒááºááá·áºá¡áá±ááŒáá·áºáá¯ááºááœáŸáá·áºáá±á¬áºáááºážáááºááá·áºááá¯ááºááá¯áááºáá®ážáá¬ážááááºážá áá¯áááá¥ááá¬ááœáẠeBPF áá
áœááºážá¡á¬ážááá¯ááŒááááºá áá®ááŸá¬ trace.py
kernel backtrace (-K option) ááŸáá·áº áááºáá®ážáá¬ážááá·áº ááá¯ááºá¡áááºááᯠáááá·áºáá¯ááºáá«á sysfs_create_files()
. áá
áºáá¯áááºážáá±á¬áá¯ááºááŒááºáá»ááºááá·áºááœááºážááŒááºážááẠLLVM ááá¯áá¯ááºáá±á¬ááºááá·áº Python script ááŸáá¶á·ááá¯ážáá±ážáá±á¬á¡ááœááºááá°ááŸááºááááá¯ááºáá±á¬áá±á¬áºáááºá
á¬áááºážáá
áºáá¯áá«áááºááá·áº C áá¯ááºááŒá
áºáááºá just-in-time compiler. áááºážááẠá€á
á¬ááŒá±á¬ááºážááᯠá
á¯á
ááºážááŒá®áž kernel á¡ááœááºážááŸá virtual machine ááœáẠáá¯ááºáá±á¬ááºáááºá áá¯ááºáá±á¬ááºáá»áẠáááºááŸááºá¡ááŒáá·áºá¡á
á¯á¶ sysfs_create_files ()
format string ááẠparameters áá»á¬ážáá²á០áá
áºáá¯ááᯠáááºááœáŸááºážááá¯ááºá
á±ááẠáá¯ááá command ááŒáá·áº ááŒááºáá¯ááºáá±ážááá«áááºá ဠC áá¯ááºá¡ááá¯ááºážá¡á
ááŸá á¡ááŸá¬ážáá»á¬ážááẠC compiler á០ááŸááºááááá¯ááºáá±á¬ á¡ááŸá¬ážáá»á¬áž ááŒá
áºáá±á«áºáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá -l áá«áá¬áá®áá¬ááᯠáá»ááºááŸááºáá¬ážáá»áŸáẠ"BPF á
á¬áá¬ážááᯠá
á¯á
ááºážááááá«á" C ááŸáá·áº Python ááŸáá·áºáááºážááŸá®ážáá±á¬ developer áá»á¬ážááẠtools áá»á¬ážááá¯ááŸá¬ááœá±á·áááá·áºáááºá bcc
áá»á²á·ááœááºáááºááŸáá·áº ááŒá±á¬ááºážáá²ááẠááœááºáá°áááºá
USB drive ááá¯ááá·áºááœááºážáá±á¬á¡áá«á kernel backtrace ááẠPID 7711 ááẠthread áá
áºáá¯ááŒá
áºááŒá±á¬ááºážááŒááááá·áºááẠkworker
ááá¯ááºááá¯áááºáá®ážáá²á·áááºá «events»
в sysfs
. ááá¯á·ááŒá
áºáᬠáá¶á០áá¯ááºážáá±á«áºáááºá sysfs_remove_files()
drive ááᯠáááºááŸá¬ážááá¯ááºááŒááºážá ááá¯ááºááᯠáá»ááºáá
áºááá¯ááºááŒá±á¬ááºáž ááŒááá«áááá·áºáááºá events
áááºááœáŸááºážáá±ááœááºááŒááºážá áá±áá¯áá»ááá±á¬ááá¬ážááŸáá·áº ááá¯ááºáá®áá±á¬á áá
áºáá»áááºáááºážááŸá¬ááẠááŒáá·áºááŸá¯áá±áá«áááºá sysfs_create_link ()
USB drive ááá¯ááá·áºááœááºážá
áẠeBPF ááŒáá·áº á¡áááºážáá¯á¶áž áááºá¹áá±áááá·áºáẠáá áᯠáááºáá®ážáá¬ážááŒá±á¬ááºáž ááŒááááºááŒá
áºáááºá
áá«ááᯠEvent ááá¯ááºáá²á· á¡áááá¹áá«ááºá áá¬áá²á á¡áá¯á¶ážááŒá¯ááŸá¯ disk_add_events ()
ááŸáá·áºáááºážáá±á¬ááºáž "media_change"
ááá¯á·ááá¯áẠ"eject_request"
á¡ááŒá
áºá¡áá»ááºááá¯ááºááœáẠááŸááºáááºážáááºááá¯ááºáááºá á€ááœáẠkernel ááááºááá¯á·ááŒááºážá¡ááœáŸá¬ááẠ"áá
áºááº" áá±á«áºáá¬ááŒá®áž áá¯ááºááá¯ááºááŒá±á¬ááºáž áá¯á¶ážá
áœá²áá°á¡á¬áá¬áááᯠá¡áááá±ážáááºá USB áááá¯ááºááᯠááá·áºááœááºážááŒááºážááŒáá·áº á¡áá¬áá»á¬ážááẠá¡áááºážá¡ááŒá
áºá០áááºáááºá¡áá¯ááºáá¯ááºáá¯á¶ááᯠááœááºáááẠááŒáá¯ážá
á¬ážááŒááºážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á á€áá¯áá±áááááºážáááºážááẠáááºáá»áŸ ááááºážá¡áá»ááºá¡áááºáá±ážááá¯ááºáááºááᯠáááááŒá¯áá«á
Read-only root ááá¯ááºá áá áºáá»á¬ážááẠááŒáŸá¯ááºááœááºážáá¬ážáá±á¬ á ááºáá»á¬ážááᯠááœáá·áºáá±ážáááºá
áá¯ááºáá«áááºá ááááºáá±á«ááºá០ááááºááá¯ááœá²ááŒááºážááŒáá·áº áá¬áᬠááá¯á·ááá¯áẠáááºážááá¯á·áááœááºáá»á°áá¬ááᯠáááºáá°áá»áŸ áááááºáá«á áá«áá²á·áá¬ááŒá
áºááá¯á·áá²? á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áá¯ááºááá¯ááºážááá¯ááºáᬠááá¯ááŸá±á¬ááºáááááá¬áá»á¬ážááœáẠáááºáááºáá¬ážáá±á¬ ááá¯ááºá
áá
áºáá»á¬ážááẠá
á¬áá±ážáá¬ááœáẠáá±á¬ááºáá»áá±ááá¯ááºááŒá®áž áááºážááá¯á·á á¡ááŒá±á¡áá±á¡á¬áž ááŸááºáááºážáááºááá·áº áá±áá¬ááœá²á·á
ááºážáá¯á¶áá»á¬ážááẠááá¯ááŸá±á¬ááºáááºážááá¯á· á
á¬áá±ážááŒááºážááŸáá·áº áááºáá°ááŒá¯ááááá±á¬ááŒá±á¬áá·áº ááŒá
áºáááºá ááá¯ááá¯á·ááŒá
áºáá¬áá±á¬á¡áá«á á
áá
áºááá¯ááºááŸááºáá»á¬ážááẠutility ááá¯ááœáá·áºáááºáá±á¬ááºáááºááœáá·áºáá»áááºá¡ááá
á±á¬áá·áºááá«áááºá fsck filesystem-recovery
ááŸáá·áº á¡ááá¯ážáá¯á¶ážááŸá¬ áá±áᬠáá¯á¶ážááŸá¯á¶ážááŒááºáž ááŒá
áºáááºá
ááá¯á·áá±á¬áºáááºážá IoT á
ááºáá
á¹á
ááºážá¡áá»á¬ážá¡ááŒá¬ážá¡ááŒáẠroutersá á¡áá°áá»áááºááááºážáááááá¬áá»á¬ážááŸáá·áº áá¬ážáá»á¬ážááẠááá¯á¡áá« Linux ááᯠá¡áá¯á¶ážááŒá¯áá±ááŒá®áᯠáá»áœááºá¯ááºááá¯á·á¡á¬ážáá¯á¶ážáááá«áááºá á€á
ááºáá
á¹á
ááºážá¡áá»á¬ážá
á¯ááœáẠá¡áá¯á¶ážááŒá¯áá°áá»ááºááŸá¬ááŒááºá¡áááºážáááºáá»áŸáá¬ááŸáááŒá®áž áááºážááá¯á·ááᯠ"ááá·áºááŸááºážá
áœá¬" ááááºáááºáááºážáááºážáááŸááá«á ááááºážáá»á¯ááºáá°áá
áºááá¯á· áá«áá«ááŸááá±á¬á¡áá« áááºááá®áá±ááœá¬ážáá±á¬ áá¬ážáá
áºá
á®ážááᯠá
áááºááŒááºáá±á¬ááºááŒáá·áºáá«á fsck
á¡ááºáá»ááºá áááºá¡áá»áááºááŸá¬ á
áááºáááºáááºáá¬áá²á ááŒá®ážáá±á¬á· á¡ááŒá±á ááá¯ážááŸááºážáá«áááºá ááá·áºááœááºážáá¬ážáá±á¬ á
ááºáá»á¬ážááẠá¡ááŒá
áºááá¯ááºá
áá
áºá¡áá±á«áº á¡á¬ážááá¯ážáááºá ro-rootfs
(áááºáááº-áá®ážááá·áº root ááá¯ááºá
áá
áº))á
ro-rootfs
á
á
áºááŸááºááŒááºážááẠááááá¬áá±á¬ á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážá
áœá¬ááᯠáá±ážáá±á¬ááºáááºá á¡á¬ážáá¬áá»ááºáá
áºáá¯ááá±á¬á· malware á á
á¬áá±ážááá¯á·áááá«áá°ážá /usr
ááá¯á·ááá¯áẠ/lib
Linux process áááŸáááẠá¡á²áá®ááŸá¬áá±ážááá¯á·ááááºá áá±á¬ááºáá
áºáá»ááºááŸá¬ áá¶á·ááá¯ážááŸá¯áááºáááºážáá»á¬ážááẠáááºáááºá
áá
áºáá»á¬ážááŸáá·áº á¡áááºáá¶áá°áá®áá±á¬ áá±ááá¹ááá
áá
áºáá»á¬ážááᯠá¡á¬ážááá¯ážáá±á¬ááŒá±á¬áá·áº á¡ááœááºáááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ ááá¯ááºá
áá
áºááẠá¡áá±ážááááºážáááááá¬áá»á¬ážá áááºáááºáá¶á·ááá¯ážááŸá¯á¡ááœáẠá¡áá±ážááŒá®ážáá«áááºá á¡áá±ážá¡ááŒá®ážáá¯á¶áž (áá«áá±ááá·áºáááºáž á¡ááá¯ážáá¯á¶áž) á¡áá»áá¯ážáá»á±ážáá°ážááá±á¬á· ro-rootfs á developer ááœá±ááᯠááẠsystem objects ááœá±á system áá²á· design stage ááŸá¬ áááŒá±á¬ááºážáá²ááá¯ááºáá°ážááá¯áᬠáá¯á¶ážááŒááºááá¯á· ááœááºážá¡á¬ážáá±ážáá±áá¬ááŒá
áºáá«áááºá const variable áá»á¬ážááẠáááá¯ááááºážáááºážáá¬áá¬á
áá¬ážáá»á¬ážááŒáá·áº áááŒá¬ááááŒá
áºáá±áá±á¬ááŒá±á¬áá·áº ro-rootfs ááŸáá·áºá¡áá¯ááºáá¯ááºááŒááºážááẠá¡áááºáááŒá±ááŒá
áºááŒá®áž áá¬áá»ááºááá¯ááºáááºá ááá¯á·áá±á¬áº áááºážááá¯á·áá¡áá»áá¯ážáá¶á
á¬ážááœáá·áºáá»á¬ážááẠá¡ááá¯áá±á¬ááºážááá¯á
á·áºáá»á¬ážááᯠá¡ááœááºááá°áá»áŸáá
á±áááºá
áááºáá®ážááŒááºáž rootfs
Read-only ááẠááŒáŸá¯ááºááœááºážáá¬ážáá±á¬ developer áá»á¬ážá¡ááœáẠá¡ááá¯á¡á¬ážáá¯ááºááŸá¯á¡áá»áá¯á· ááá¯á¡ááºááŒá®áž áááºážááẠVFS áá¯á¶ááœááºáá«áá¬áááºá Linux ááœáẠááá¯ááºáá»á¬ážááŸááá±ááẠááá¯á¡ááºáááºá /var
áá±ážááááá¯ááºáááºá ááá¯á·á¡ááŒááºá ááŒáŸá¯ááºááœááºážáá¬ážáá±á¬á
áá
áºáá»á¬ážááá¯áá¯á¶ážááá·áº áá¬áááºááŒá®áž application á¡áá»á¬ážá¡ááŒá¬ážááẠconfiguration ááá¯áááºáá®ážáááºááŒáá¯ážá
á¬ážáááá·áºáááºá dot-files
в $HOME
. home directory ááŸá configuration ááá¯ááºáá»á¬ážá¡ááœáẠááŒá±ááŸááºážáá»ááºáá
áºáá¯ááŸá¬ áá»á¬ážáá±á¬á¡á¬ážááŒáá·áº áááºážááá¯á·ááᯠááŒáá¯áááºáá¯ááºáá¯ááºááŒá®áž áááºáá±á¬ááºáááºááŒá
áºáááºá rootfs
á á¡ááœáẠ/var
ááŒá
áºááá¯ááºáá±á¬áááºážáááºážáá
áºáá¯ááŸá¬ áááºážááᯠáá®ážááŒá¬ážáá±ážááá¯ááºáá±á¬ á¡áááºážááá·áºáá
áºáá¯áá±á«áºááœáẠáááºáááºáááºááŒá
áºáááºá /
áááºáááºáᬠáááºáááºáá¬ážáááºá áá°ááŒáá¯ááºáá»á¬ážáá±á¬ á¡ááŒá¬ážááœá±ážáá»ááºá
áá¬ááŸá¬ bind ááá¯á·ááá¯áẠoverlay mount áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááŒá
áºáááºá
áá»áááºáááºááá¯ááºáá±á¬ ááŸáá·áº stackable mount áá»á¬áž á ááœááºááááºáá¬áá»á¬ážááŒáá·áº áááºážááá¯á·á á¡áá¯á¶ážááŒá¯ááŸá¯
á¡áááá·áºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážá man mount
bindable ááŸáá·áº overlayable mounts áá»á¬ážá¡ááŒá±á¬ááºáž áá±á·áá¬ááẠá¡áá±á¬ááºážáá¯á¶ážáááºážáááºážááŸá¬ developer áá»á¬ážááŸáá·áº system administrator áá»á¬ážá¡á¬áž áááºážááŒá±á¬ááºážáá
áºáá¯ááœáẠfile system áá
áºáá¯áááºáá®ážááá¯ááºááŒá®áž á¡ááŒá¬áž application áá»á¬ážááœáẠáá±á¬áºáá¯ááºááá¯ááºá
á±ááá·áº á¡áá±á¬ááºážáá¯á¶ážáááºážáááºážááŒá
áºáááºá ááŒáŸá¯ááºááœááºážáá¬ážáá±á¬ á
áá
áºáá»á¬ážá¡ááœááºá áááºážááẠááá¯ááºáá»á¬ážááᯠááááºážáááºážááá¯ááºááŸá¯ááᯠááá¯ááá¯áááºá /var
read-only flash drive ááœááºá áá«áá±ááá·áº overlay ááá¯á·ááá¯áẠlinkable mount path ááá¯á·á០tmpfs
в /var
áááºááá·áºá¡áá«á áááºážááẠá¡ááá®áá±ážááŸááºážáá»á¬ážááᯠááá¯áá±áá¬ááœáẠááŸááºá
á¯áá»á¬ážáá±ážááẠááœáá·áºááŒá¯áááá·áºááẠ(scrawl)á áá±á¬ááºáá
áºááŒáááºááœáẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠááœáá·áºáá«á /var
áá¯á¶ážááŸá¯á¶ážáááá·áºáááºá áááºááá·áº mount áá
áºáá¯ááẠááŒá¬ážááœáẠááŒááºáá±á¬ááºá
á¯áá
áºáᯠáááºáá®ážáá±ážáááºá tmpfs
ááŸáá·áº á¡áááºážáᶠááá¯ááºá
áá
ẠááŸáá·áº ááŸáááŒá®ážáá¬áž ááá¯ááºáá»á¬áž ááœáẠáááºáááºááŸá¬ážááŸá¬áž ááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž ááŒá¯áá¯ááºááẠááœáá·áºááŒá¯ ááẠro-tootf
bindable mount ááẠá¡áá
áºáá»á¬ážááᯠááá¬ááŒá
áºá
á±ááá¯ááºáááºá tmpfs
áá±ážááŸááºáá¬ážááá·áºá¡ááá¯ááºáž ááŒááºááá¯ááºáá±á¬ ááá¯ááºááœá²áá»á¬áž ro-rootfs
áááºážáááºážáá»á¬ážá á
ááºááœáẠoverlayfs
áá« ááŸááºááẠ(proper
) ááá¯ááºá
áá
áºá¡áá»áá¯ážá¡á
á¬ážá bindable mount ááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºáááºá
áááºááá·áºááŸáá·áº áá»áááºáááºááá¯ááºáá±á¬ áá±á¬ááºá áá±á¬áºááŒáá»ááºá¡áá±á«áº á¡ááŒá±áá¶á áááºážááᯠáááºáá°áá»áŸ áá¡á¶á·ááŒáá«á mountsnoop
ÐŸÑ bcc
.
áá±á«áºááá¯á system-nspawn
áááºáááºáá±á
áẠááœááºááááºáá¬ááᯠá
áááºáááºá mountsnoop.py
.
áá¬ááŒá áºááœá¬ážáá² ááŒáá·áºáá¡á±á¬ááºá
áá
áºááœáŸáẠmountsnoop
ááœááºááááºáá¬ááẠ"booting" ááŒá
áºáá±áá»áááºááœáẠááœááºááááºáá¬á runtime ááẠáá»áááºáááºáá¬ážááá·áº mount áá±á«áºááœáẠá¡ááœááºáá°áááºááŒá±á¬ááºážááŒáááẠ(ááŸááºáá»á¬ážáá±á¬ output áá¡á
ááá¯ááŒááá¬ážáááº)á
áá«áá¬ááŒá
áºáá«ááẠsystemd-nspawn
ááœá±ážáá»ááºáá¬ážáá±á¬ááá¯ááºáá»á¬ážááᯠáá±á¬ááºáá¶á·áá±ážáááºá procfs
О sysfs
áááºážááá¯á·ááœá¬ážáá¬áááºážáá»á¬ážá¡ááŒá
Ạááœááºááááºáá¬ááœáẠáááºáá¶áá¬ážááŸááá«á rootfs
á ááŸááœá² MS_BIND
binding mount ááᯠáááºááŸááºááá·áº á¡áá¶á áá±á¬ááºáá±á«áºááŸá á¡ááŒá¬ážá¡áá¶á¡áá»áá¯á·ááẠhost ááŸáá·áº container namespaces ááá¯á· ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááŒá¬áž áááºááœááºááŸá¯ááᯠáááºááŸááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá»áááºáááºáá¬ážáá±á¬ mount ááẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠáá»á±á¬áºááœá¬ážááá¯ááºáááºá /proc
О /sys
ááœááºááááºáá¬áá²ááá¯á· ááá¯á·ááá¯áẠáá±á«áºááá¯ááŸá¯áá±á«áºáá°áááºá áááºážááá¯á·ááᯠááŸááºáá¬ážáá«á
áá±á¬ááºáá»ááº
kernel ááœáẠáá¯ááºáá»á¬ážá
áœá¬áá«ááŸááá±á¬ááŒá±á¬áá·áº Linux áá¡ááœááºážááá¯ááºážáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá¬ážáááºááŒááºážááẠáááŒá
áºááá¯ááºáá±á¬á¡áá¯ááºáá
áºáá¯ááá¯áááºáááá¯ááºááŒá®ážá Linux á¡áá¯á¶ážááŒá¯áá°áá±áá¬ááœááºá¡ááá®áá±ážááŸááºážáá»á¬ážááŸáá·áº C libraries áá»á¬ážáá²á·ááá¯á·áá±á¬ C libraries áá»á¬ážááŸá system call interfaces áá»á¬ážááá¯áá±ážáááºáá¬ážáá±á¬ááŒá±á¬áá·áºá glibc
. ááá¯ážáááºááŸá¯ááŒá
áºá
á±ááẠáááºážáááºážáá
áºáá¯ááŸá¬ á
áá
áºáá±á«áºááá¯ááŸá¯áá»á¬ážááŸáá·áº á¡áá¯á¶ážááŒá¯áá°-á¡á¬áá¬á áá±á«ááºážá
á®ážáá»á¬ážá¡ááŒáẠááá¬ážáá²á·ááá¯á·áá±á¬ áááºáá¡ááœááºážááá¯ááºáž kernel á¡ááºáá¬áá±á·á
áºáá»á¬ážááᯠáá¬ážáááºááŸá¯ááŒáá·áº áá¬áááºááœá²á
áá
áºáá
áºáá¯á á¡áááºážá¡ááŒá
áºáá¯ááºááᯠáááºáááºááŒá
áºáááºá file_operations
. ááá¯ááºáááºáááºááŸá¯áá»á¬ážááẠ"á¡áá¬áá¬ááẠááá¯ááºáá
áºáá¯ááŒá
áºáááº" áááá¬áááᯠáá¶á·ááá¯ážáá±ážáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááᯠá
á®áá¶ááá·áºááœá²ááẠá¡áá°ážááŸá
áºáááºááœááºááŒá
áºáááºá C kernel á¡áááºážá¡ááŒá
áºááá¯ááºáá»á¬ážááẠááááºáááºážá¡ááá·áºáááºážááœáŸááºááœááºááŸááááºá fs/
áá°ááŒáá¯ááºáá»á¬ážáá±á¬ ááá¯ááºá
áá
áºáá»á¬ážááŸáá·áº ááá¯ááŸá±á¬ááºááŸá¯áááááá¬áá»á¬ážááŒá¬ážááœáẠáá»ááºááŒáá·áºááŒá®áž á¡áá±á¬áºáá±ážááá¯ážááŸááºážáá±á¬ ááœá²áááºá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº áá¯ááºááá¯ážá¡ááœáŸá¬ááŒá
áºááá·áº virtual ááá¯ááºá
áá
áºáá»á¬ážá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠáááºááŒáá«á Linux namespaces ááŸáá
áºááá·áº áá»áááºáááºááŒááºážááŸáá·áº áááºááá·áºáááºáááºááŒááºážááẠáááºááŸá¯áááºáá®ážááá·áºááœááºááááºáá¬áá»á¬ážááŸáá·áº root ááá¯ááºá
áá
áºáá»á¬ážááᯠáááºáá®ážááá¯ááºá
á±ááá·áº VFS á ááŸá±á¬áºáááºááŸá¯ááŒá
áºáááºá á¡áááºážá¡ááŒá
áºáá¯ááºáá
á
áºáá±ážááŸá¯á eBPF core tool ááŸáá·áº áááºážá interface ááá¯á·ááŸáá·áºá¡áá° áá±á«ááºážá
ááºáá¬ážáááºá bcc
áááºáááŸá¬ááœá±áá±ážááẠááááºáááẠááá¯ááá¯ááœááºáá°á
á±áááºá
áá°áááºáá»ááºážááá¯á·áá±á áá®áá±á¬ááºážáá«ážá ááá·áºá¡ááœáẠá¡áá¯á¶ážáááºáá«ááá¬ážá ááá·áºááœáẠááŸááºáá»ááºáá»á¬áž ááá¯á·ááá¯áẠááŸááºáá»ááºáá»á¬áž ááŸááá±á¬ááºážááŸáááá¯ááºáá«ááá¬ážá Linux Administrator áááºáááºážááᯠá
áááºáááºá
á¬ážáá²á· áá°ááœá±ááᯠááááºáá±á«áºáá«áááºá
source: www.habr.com