เบชเบฐเบเบฒเบเบเบตเบเบธเบเบเบปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบเบฑเบเบเบฑเบเบเบฒเบเบชเปเบงเบเบเบตเบชเบญเบเบเบญเบเบเบฒเบเบเบดเบกเปเบเบตเบเปเบเป "เบฅเบฐเบเบปเบเปเบเบฅเป virtual เปเบ Linux: เปเบเบฑเบเบซเบเบฑเบเบเบงเบเบกเบฑเบเบเปเบญเบเบเบฒเบเปเบฅเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ?" เบเปเบฒเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบเบฒเบเบเปเบฒเบญเบดเบ
เบงเบดเบเบตเบเบฒเบเบเบงเบเบชเบญเบ VFS เปเบเบเปเบเป eBPF เปเบฅเบฐเปเบเบทเปเบญเบเบกเบท bcc
เบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบเบฐเปเบเบปเปเบฒเปเบเบงเบดเบเบตเบเบฒเบ kernel เปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเปเบเบฅเป sysfs
เปเบกเปเบเบเบฒเบเปเบเบดเปเบเบกเบฑเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ, เปเบฅเบฐเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบเบเบตเปเบเบฐเปเบเบดเปเบ ARM64 เปเบกเปเบเบเบฒเบเปเบเป eBPF. eBPF (เบชเบฑเปเบเบชเปเบฒเบฅเบฑเบ Berkeley Packet Filter) เบเบฐเบเบญเบเบเปเบงเบเปเบเบทเปเบญเบ virtual เปเบฅเปเบเบขเบนเปเปเบ query
) เบเบฒเบโเบเบฑเบโเบเบตโเบเปเบฒโเบชเบฑเปเบโ. เปเบซเบผเปเบ kernel เบเบญเบเบเบนเปเบญเปเบฒเบเบชเบดเปเบเบเบตเป kernel เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป; เบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเปเบเบทเปเบญเบเบกเบท eBPF เปเบเบฅเบฐเบเบปเบเบเบตเปเปเบซเบฅเบเปเบเปเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒ kernel เบเปเบฒเบฅเบฑเบเปเบฎเบฑเบเบซเบเบฑเบ.
เปเบเบเบเบต, เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเป eBPF เปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเปเบเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบญเบเปเบเบทเปเบญเบเบกเบท bcc
เปเบกเปเบ Python scripts เบเบตเปเบกเบตเบเบฒเบเปเบเบเบเบฐเบซเบเบฒเบเบเปเบญเบเบเบญเบเบฅเบฐเบซเบฑเบ C, เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเปเบเบเบตเปเบเบธเปเบเปเบเบตเบเบเบฑเบเบเบฑเบเบชเบญเบเบเบฒเบชเบฒเบชเบฒเบกเบฒเบเบเบฑเบเปเบเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบ. IN bcc/tools
เบกเบต 80 เบชเบฐเบเบดเบ Python, เบเบถเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบชเปเบงเบเบซเบผเบฒเบเปเบกเปเบเบเบนเปเบเบฑเบเบเบฐเบเบฒเบซเบผเบทเบเบนเปเปเบเบดเปเบเปเบเบเบฅเบฐเบเบปเบเบเบฐเบชเบฒเบกเบฒเบเปเบฅเบทเบญเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒ.
เปเบเบทเปเบญเปเบซเปเปเบเปเบขเปเบฒเบเบเปเบญเบเบเบงเบฒเบกเบเบดเบเบเบตเปเปเบฅเบดเบเปเบเบดเปเบเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเป VFSs เปเบฎเบฑเบเปเบเบฅเบฐเบเบปเบเปเบฅเปเบ, เบเบฐเบเบฒเบเบฒเบก vfscount
เบซเบผเบท vfsstat
. เบเบตเปเบเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบ, เปเบซเปเปเบงเบปเปเบฒเบงเปเบฒ, เบเบฒเบเปเบเบซเบผเบฒเบเบชเบดเบ vfs_open()
เปเบฅเบฐ "เปเบเบทเปเบญเบเบเบญเบเบฅเบฒเบง" เปเบเบตเบเบเบทเปเบเบเบธเบเปเบงเบดเบเบฒเบเบต.
vfsstat.py
เปเบกเปเบเบชเบฐเบเบฃเบดเบ Python เบเบตเปเบกเบตเบฅเบฐเบซเบฑเบ C เบเบตเปเบเบฑเบเบเบฝเบเปเบเปเบเบฒเบเปเบญเบตเปเบเบเบฑเบเบเบฑเบ VFS.
เปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบปเบเบเบปเบงเบขเปเบฒเบเปเบฅเบฑเบเบเปเบญเบเปเบฅเบฐเปเบเบดเปเบเบงเปเบฒเบกเบตเบซเบเบฑเบเปเบเบตเบเบเบทเปเบเปเบกเบทเปเบญเบเบงเบเปเบฎเบปเบฒเปเบชเป USB flash drive เปเบเบปเปเบฒเปเบเปเบเบเบญเบกเบเบดเบงเปเบเบตเปเบฅเบฐเบฅเบฐเบเบปเบเบเบงเบเบเบปเบเบกเบฑเบ.
เบเบฒเบเบเปเบฒเปเบเป eBPF เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบเปเบ
/sys
เปเบกเบทเปเบญเปเบชเป USB flash drive. เบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบชเบฐเบฅเบฑเบเบชเบฑเบเบเปเบญเบเปเบกเปเบเบชเบฐเปเบเบเบขเบนเปเบเบตเปเบเบตเป.
เปเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบชเบฐเปเบเบเบเปเบฒเบเปเบเบดเบ, bcc
เปเบเบทเปเบญเบเบกเบท sysfs_create_files()
. เบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบงเปเบฒ sysfs_create_files()
เบเบทเบเปเบเบตเบเบเบปเบงเปเบเบเปเบเป kworker
stream เปเบเบทเปเบญเบเบญเบเบชเบฐเบซเบเบญเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒ flash drive เปเบเปเบเบทเบเปเบชเป, เปเบเปเบงเปเบฒเปเบเบฅเปเปเบเบเบตเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ? เบเบปเบงเบขเปเบฒเบเบเบตเบชเบญเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเปเบเบดเบเบเบฐเบฅเบฑเบเบเบฒเบเบเบญเบ eBPF. เบเบตเปเบเบตเป trace.py
เบเบดเบก kernel backtrace (-K เบเบฒเบเปเบฅเบทเบญเบ) เปเบฅเบฐเบเบทเปเบเบญเบเปเบเบฅเปเบเบตเปเบเบทเบเบชเปเบฒเบเบเบถเปเบ sysfs_create_files()
. เบเบฒเบเปเบชเปเบเบณเบเบฐเปเบซเบผเบเบเบฝเบงเปเบกเปเบเบฅเบฐเบซเบฑเบ C เบเบตเปเบเบฐเบเบญเบเบกเบตเบชเบฐเบเบฃเบดเบเบฎเบนเบเปเบเบเบเบตเปเบชเบฒเบกเบฒเบเบฎเบฑเบเบฎเบนเปเปเบเปเบเปเบฒเบเบเบตเปเบชเบฐเปเบญเบเปเบซเปเปเบเบเบชเบฐเบเบฃเบดเบ Python เบเบตเปเปเบฅเปเบ LLVM compiler เบเบฝเบโเปเบเปโเปเบโเปเบงโเบฅเบฒโ. เบกเบฑเบเบฅเบงเบเบฅเบงเบกเปเบชเบฑเปเบเบเบตเปเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบกเบฑเบเบขเบนเปเปเบเปเบเบทเปเบญเบ virtual เบเบฒเบเปเบ kernel. เบฅเบฒเบเปเบเบฑเบเบเบฑเบเบเบฑเบเปเบเบฑเบก sysfs_create_files ()
เบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบฅเบดเบเบเบทเบเปเบซเบกเปเปเบเบเปเบฒเบชเบฑเปเบเบเบตเบชเบญเบเปเบเบทเปเบญเปเบซเปเบชเบฐเบเบฃเบดเบเบฎเบนเบเปเบเบเบชเบฒเบกเบฒเบเบญเปเบฒเบเบญเบตเบเปเบชเปเบซเบเบถเปเบเบเบญเบเบเบฒเบฅเบฒเบกเบดเปเบเบต. เบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบ C เบเบตเปเบชเบปเปเบเบเบปเบเปเบซเปเปเบเบตเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเบฎเบฑเบเบฎเบนเปเปเบเปเบเบฒเบ C compiler. เบเบปเบงเบขเปเบฒเบ, เบเปเบฒเบเบฒเบฅเบฒเบกเบดเปเบเบต -l เบเบทเบเบฅเบฐเปเบงเบฑเปเบ, เบเปเบฒเบเบเบฐเปเบซเบฑเบ "เบฅเบปเปเบกเปเบซเบฅเบงเปเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเปเปเบเบงเบฒเบก BPF." เบเบนเปเบเบฑเบเบเบฐเบเบฒเบเบตเปเบเบธเปเบเปเบเบตเบเบเบฑเบ C เปเบฅเบฐ Python เบเบฐเบเบญเบเบซเบฒเปเบเบทเปเบญเบเบกเบท bcc
เบเปเบฒเบเบเบตเปเบเบฐเบเบฐเบซเบเบฒเบเปเบฅเบฐเบเปเบฝเบเปเบเบ.
เปเบกเบทเปเบญเปเบ USB เบเบทเบเปเบชเป, kernel backtrace เบเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒ PID 7711 เปเบเบฑเบ thread. kworker
เบเบตเปเบชเปเบฒเบเปเบเบฅเป ยซeventsยป
ะฒ sysfs
. เบเบฒเบกโเบเบฑเปเบโเปเบฅเปเบง, เบเบณโเบฎเบฝเบเบฎเปเบญเบโเบเบฒเบ sysfs_remove_files()
เบเบฐโเบชเบฐโเปเบเบโเปเบซเปโเปเบซเบฑเบโเบงเปเบฒโเบเบฒเบโเบฅเบปเบ drive เปเบเปโเปเบฎเบฑเบโเปเบซเปโเปเบเบฅโเปโเปเบเปโเบเบทเบโเบฅเบปเบโ events
, เปเบเบดเปเบเบเบปเบเบเบฑเบเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบปเปเบงเปเบเบเบญเบเบเบฒเบเบเบฑเบเบญเปเบฒเบเบญเบตเบ. เปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเบฒเบเปเบเบดเปเบ sysfs_create_link ()
เบเบฑเบ eBPF เปเบเบเบฐเบเบฐเบเบตเปเปเบชเปเปเบ USB เบเบฐเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒเบขเปเบฒเบเบซเบเปเบญเบ 48 เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบชเบฑเบเบเบฒเบฅเบฑเบเปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ.
เบเบฑเปเบเบเบฑเปเบเบเบธเบเบเบญเบเปเบเบฅเปเปเบซเบเบเบฒเบเปเบกเปเบเบซเบเบฑเบ? เบเบฒเบโเบเปเบฒโเปเบเป disk_add_events ()
, เปเบฅเบฐเบเปเปเบงเปเบฒเบเบฐ "media_change"
, เบซเบผเบท "eject_request"
เบชเบฒเบกเบฒเบเบเบฑเบเบเบถเบเปเบงเปเปเบเปเบเบฅเปเปเบซเบเบเบฒเบ. เบเบตเปเบเบตเป kernel block layer เปเบเปเบเปเบซเป userspace เบงเปเบฒ "disk" เปเบเปเบเบฒเบเบปเบเปเบฅเบฐ ejected. เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบเบปเปเบเบเปเบงเบฒเบเบตเปเปเบกเปเบเปเบซเปเบเปเปเบกเบนเบเปเบเบงเปเบเปเบเบเบเบฒเบเปเบชเปเปเบ USB, เปเบกเบทเปเบญเบเบฝเบเบเบฑเบเบเบฒเบเบเบฐเบเบฒเบเบฒเบกเบเบปเปเบเบซเบฒเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเบเบฝเบงเบเบฒเบเปเบซเบผเปเบ.
เบฅเบฐเบเบปเบเปเบเบฅเปเบฎเบฒเบเปเบเบเบญเปเบฒเบเบขเปเบฒเบเบเบฝเบงเปเบเบตเบเปเบเปเบญเบธเบเบฐเบเบญเบเบเบตเปเบเบฑเบเปเบงเป
เปเบเปเบเบญเบ, เบเปเปเบกเบตเปเบเบเบดเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบทเบเบญเบกเบเบดเบงเปเบเบตเบเบญเบเบเบงเบเปเบเบปเบฒเปเบเบเบเบฒเบเบเบถเบเบชเบฝเบเบเบฒเบเปเบเบปเปเบฒเบฎเบฑเบ. เปเบเปเปเบเบฑเบเบซเบเบฑเบ? เบเบตเปเปเบกเปเบเบเปเบญเบเบงเปเบฒเบฅเบฐเบเบปเบเปเบเบฅเปเบเบตเปเบเบดเบเบเบฑเปเบเบขเบนเปเปเบเบญเบธเบเบฐเบเบญเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฒเบเบเปเบฒเบเบฎเปเบฒเบเบเบฒเบเบญเบฒเบเบเบฐเบเบฑเบเบเปเบฒเบเบฒเบเบเบฝเบ, เปเบฅเบฐเปเบเบเบชเปเบฒเบเบเปเปเบกเบนเบเบเบตเปเบเบฑเบเบเบถเบเบชเบฐเบเบฒเบเบฐเบเบญเบเบเบงเบเปเบเบปเบฒเบญเบฒเบเบเบฐเบเปเปเบเบทเบ synchronized เบเบฑเบ writes เบเบฑเบเบเปเบญเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ. เปเบกเบทเปเบญเบชเบดเปเบเบเบฑเปเบเบเปเบฒเบงเปเบเบตเบเบเบถเปเบ, เปเบเบปเปเบฒเบเบญเบเบฅเบฐเบเบปเบเบเปเบญเบเบฅเปเบเปเบฒเบเบปเบเบเปเบงเบฒเบเบฒเบเบเบนเบเบเบฑเปเบเบเปเปเปเบเปเบเบทเปเบญเปเบเบตเบเบเปเบฒเปเบเปเบเบฐเปเบซเบเบ. fsck filesystem-recovery
เปเบฅเบฐ, เปเบเบเปเบฅเบฐเบเบตเบฎเปเบฒเบเปเบฎเบเบเบตเปเบชเบธเบ, เบเบฒเบเบชเบนเบเปเบชเบเบเปเปเบกเบนเบ.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบเบธเบเบเบปเบเบฎเบนเปเบงเปเบฒเบญเบธเบเบฐเบเบญเบ IoT เบเปเบฒเบเบงเบเบซเบผเบฒเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ routers, เปเบเบทเปเบญเบเบเบงเบเบเบธเบกเบญเบธเบเบซเบฐเบเบนเบกเปเบฅเบฐเบฅเบปเบ, เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเปเบเบตเบเบเบฒเบ Linux. เบซเบผเบฒเบเปเบญเบธเบเบฐเบเบญเบเปเบซเบผเบปเปเบฒเบเบตเปเบกเบตเบชเปเบงเบเบเบดเบเบเปเปเบเบนเปเปเบเปเบเบฝเบเปเบฅเบฑเบเบเปเบญเบเบซเบฒเบเปเปเบกเบต, เปเบฅเบฐเบเปเปเบกเบตเบงเบดเบเบตเบเบตเปเบเบฐเบเบดเบเบเบงเบเบกเบฑเบ "เบชเบฐเบญเบฒเบ." เบเบดเบเบเบฐเบเบฒเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบฅเบปเบเบเบตเปเบกเบตเบซเบกเปเปเปเบเบเบตเปเบเบฒเบเปเบฅเปเบงเปเบเปเบงเบฅเบฒเบเบตเปเบเบฐเบฅเบฑเบเบเบฒเบเบเบฑเบเบซเบเปเบงเบเบเบงเบเบเบธเบกเปเบกเปเบ fsck
เปเบเบทเปเบญเบเบเบฑเบเปเบฅเบตเปเบกเปเบฅเปเบเปเบกเบทเปเบญเปเบ? เปเบฅเบฐเบเปเบฒเบเบญเบเปเบกเปเบเบเปเบฒเบเบเบฒเบ. เบญเบธเบเบฐเบเบญเบเบเบฑเบเปเบกเปเบเบญเบตเบเปเบชเปเบฅเบฐเบเบปเบเปเบเบฅเปเบฎเบฒเบ ro-rootfs
(เบฅเบฐเบเบปเบเปเบเบฅเปเบฎเบฒเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ)).
ro-rootfs
เบชเบฐเปเปเบตเบเบปเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเบขเปเบฒเบเบเบตเปเบเปเปเบเบฑเบเปเบเบเบเบงเปเบฒเบเบงเบฒเบกเปเบเปเบเบดเบ. เบเบฐเปเบซเบเบเบญเบฑเบเบซเบเบถเปเบเปเบกเปเบเบงเปเบฒ malware เบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเปเบเบซเบฒ /usr
เบซเบผเบท /lib
, เบเปเบฒเบเปเปเบกเบตเบเบฐเบเบงเบเบเบฒเบ Linux เบชเบฒเบกเบฒเบเบเบฝเบเบขเบนเปเบเบตเปเบเบฑเปเบ. เบญเบตเบเบเบฐเบเบฒเบเบซเบเบถเปเบเปเบกเปเบเบงเปเบฒเบฅเบฐเบเบปเบเปเบเบฅเปเบเบตเปเบเปเปเบเปเบฝเบเปเบเบเปเบเปเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบเปเบกเปเบเบชเปเบฒเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเบเบญเบเบญเบธเบเบฐเบเบญเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ, เบเบฑเบเบเบฑเปเบเปเบเปเบเบฐเบเบฑเบเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบกเปเบเบญเบตเบเปเบชเปเบฅเบฐเบเบปเบเบเปเบญเบเบเบดเปเบเบเบตเปเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเบเบฝเบงเบเบฑเบเบเบฑเบเบฅเบฐเบเบปเบเบเบฒเบเบชเบฐเบซเบเบฒเบก. เบเบฒเบเบเบตเบเบปเบเบเบฐเปเบซเบเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเบชเบธเบ (เปเบเปเบเบฑเบ insidious เบซเบผเบฒเบเบเบตเปเบชเบธเบ) เปเบกเปเบเบงเปเบฒ ro-rootfs เบเบฑเบเบเบฑเบเปเบซเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบฑเบเบชเบดเบเปเบเบงเปเบฒเบงเบฑเบเบเบธเบฅเบฐเบเบปเบเปเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเบเปเบฝเบเปเบเบเปเบเปเปเบเบเบฑเปเบเบเบญเบเบเบฒเบเบญเบญเบเปเบเบเบเบญเบเบฅเบฐเบเบปเบ. เบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ ro-rootfs เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบเบธเปเบกเบเปเบฒเบกเปเบฅเบฐเปเบเบฑเบเบเบงเบ, เบเปเบญเบเบงเปเบฒเบเบปเบงเปเบ const เบกเบฑเบเบเบฐเบขเบนเปเปเบเบเบฒเบชเบฒเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบก, เปเบเปเบเบปเบเบเบฐเปเบซเบเบเบเบญเบเบเบงเบเบกเบฑเบเบเบฝเบเปเบเปเปเบฎเบฑเบเปเบซเปเบเปเบฒเปเบเปเบเปเบฒเบเปเบเบตเปเบกเปเบเบตเบก.
เบเบฒเบเบชเปเบฒเบ rootfs
Read-only เบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบดเปเบชเบเบเบฒเบเบขเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบตเปเบเบฑเบเปเบงเป, เปเบฅเบฐเบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเป VFS เปเบเบปเปเบฒเบกเบฒเปเบเบฎเบนเบ. Linux เบฎเบฝเบเบฎเปเบญเบเปเบซเปเปเบเบฅเปเบขเบนเปเปเบ /var
เบชเบฒเบกเบฒเบเบเบฝเบเปเบเป, เปเบฅเบฐเบเบญเบเบเบฒเบเบเบฑเปเบ, เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบตเปเบเบดเบเบปเบกเบซเบผเบฒเบเบเบตเปเปเบเปเบฅเบฐเบเบปเบเบเบฑเบเบเบปเบงเบเบฐเบเบฐเบเบฒเบเบฒเบกเบชเปเบฒเบเบเบฒเบเบเบฑเปเบเบเปเบฒ dot-files
ะฒ $HOME
. เบเบฒเบเปเบเปเปเบเบซเบเบถเปเบเบชเปเบฒเบฅเบฑเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบฎเบทเบญเบเปเบกเปเบเบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบฒเบเบชเปเบฒเบเบเปเบญเบเปเบฅเบฐเบชเปเบฒเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบเปเบ rootfs
. เบชเบณ เบฅเบฑเบ /var
เบงเบดเบเบตเบซเบเบถเปเบเบเบตเปเปเบเบฑเบเปเบเปเบเปเปเบกเปเบเบเบฒเบเบเบดเบเบเบฑเปเบเบกเบฑเบเบขเบนเปเปเบเบเบฒเบเปเบเปเบเบเบฑเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฝเบเปเบเปเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบเบเบฐเบเบฐเบเบตเป /
เบเบดเบเบเบฑเปเบเปเบเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบ. เบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบเบเบตเปเปเบเบฑเบเบเบตเปเบเบดเบเบปเบกเปเบกเปเบเบเบฒเบเปเบเป bind เบซเบผเบท overlay mounts.
mounts เปเบเบทเปเบญเบกเบเปเปเปเบฅเบฐ stackable, เบเบฒเบเบเปเบฒเปเบเปเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเบเบเบฑเบเบเบธ
เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเปเบฒโเบชเบฑเปเบโ man mount
เปเบเบฑเบเบงเบดเบเบตเบเบตเปเบเบตเบเบตเปเบชเบธเบเบเบตเปเบเบฐเบฎเบฝเบเบฎเบนเปเบเปเบฝเบงเบเบฑเบ mounts bindable เปเบฅเบฐ overlayable, เปเบเบดเปเบเปเบซเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเปเบฅเบฐเบเบนเปเบเปเบฅเบดเบซเบฒเบเบฅเบฐเบเบปเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบฅเบฐเบเบปเบเปเบเบฅเปเปเบเปเบชเบฑเปเบเบเบฒเบเบซเบเบถเปเบเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบตเบเปเบเบตเบเบกเบฑเบเบเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเบญเบตเบ. เบชเปเบฒเบฅเบฑเบเบฅเบฐเบเบปเบเบเบฑเบ, เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเบฅเปเปเบ /var
เบขเบนเปเปเบ flash drive เบเบตเปเบญเปเบฒเบเปเบเปเบขเปเบฒเบเบเบฝเบง, เปเบเปเปเบเบฑเบ overlay เบซเบผเบท linkable mount path เบเบฒเบ tmpfs
ะฒ /var
เปเบกเบทเปเบญเปเบซเบฅเบ, เบกเบฑเบเบเบฐเบเปเบงเบเปเบซเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบฝเบเบเบฑเบเบเบถเบเบขเบนเปเบเบตเปเบเบฑเปเบ (เบเบงเบฒเบเบฅเปเบฒ). เปเบเบเบฑเปเบเบเปเปเปเบเบเบตเปเบเปเบฒเบเปเบเบตเบเบเบฒเบเบเปเบฝเบเปเบเบ /var
เบเบฐเบชเบนเบเปเบชเบ. mount overlay เบชเปเบฒเบเบชเบฐเบซเบฐเบเบฒเบเบฅเบฐเบซเบงเปเบฒเบ tmpfs
เปเบฅเบฐเบฅเบฐเบเบปเบเปเบเบฅเปเบเบตเปเบเบดเบเบเบฑเบเปเบฅเบฐเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเปเบฝเบเปเบเบ ostensible เบเบฑเบเปเบเบฅเปเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบงเปเบ ro-tootf
เปเบเบเบฐเบเบฐเบเบตเป mountable bindable เบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบซเปเบญเบฑเบเปเบซเบกเปเบซเบงเปเบฒเบเปเบเบปเปเบฒ tmpfs
เปเบเบเปเบเบตเบเบตเปเปเบซเบฑเบเปเบเปเปเบเบฑเบเบฅเบฒเบเบฅเบฑเบเบญเบฑเบเบชเบญเบเปเบ ro-rootfs
เบงเบดเบเบต. เปเบเบเบฐเบเบฐเบเบตเป overlayfs
เบเบตเปโเปเบกเปเบโเบซเบเบถเปเบโเบเบตเปโเบเบทเบโเบเปเบญเบ (proper
) เบเบฐเปเบเบเบฅเบฐเบเบปเบเปเบเบฅเป, mountable bindable เปเบกเปเบเบเบฐเบเบดเบเบฑเบเปเบ
เบญเบตเบเบเบฒเบกเบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบญเบ overlay เปเบฅเบฐ mount เปเบเบทเปเบญเบกเบเปเป, เบเปเปเบกเบตเปเบเปเบเบเปเบเบงเปเบฒ mountsnoop
เบเบฒเบ bcc
.
เบเปเบฒเบเบฒเบ system-nspawn
เปเบฅเบตเปเบกเบเบปเปเบเบเบนเปเบเบญเบเปเบเบเปเบเบตเปเบเบเบฐเบเบฐเบเบตเปเปเบฅเปเบ mountsnoop.py
.
เบกเบฒเปเบเบดเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบ:
เปเบเบตเบเบเบปเบง mountsnoop
เปเบเบเบฐเบเบฐเบเบตเป container เปเบกเปเบ "booting" เบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบงเปเบฒ runtime เบเบญเบ container เปเบกเปเบเบชเบนเบเบเบทเปเบเบเบฑเบ mount เบเบตเปเบเบทเบเปเบเบทเปเบญเบกเบเปเป (เบเบฝเบเปเบเปเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบเบปเบเบเบฐเบฅเบดเบเบเบฒเบงเปเบกเปเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบ).
เบกเบฑเบเปเบเบฑเบ systemd-nspawn
เปเบซเปเปเบเบฅเปเบเบตเปเปเบฅเบทเบญเบเปเบ procfs
ะธ sysfs
host to container เปเบเบฑเบเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเบกเบฑเบ rootfs
... เบเบญเบเบเบฒเบ MS_BIND
เบเบธเบเบเบตเปเบเบฑเปเบ mount binding, เบเบฒเบเบเบธเบเบญเบทเปเบเปเบเปเบฝเบงเบเบฑเบ mount เปเบเปเบเปเบฒเบเบปเบเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบฑเบ host เปเบฅเบฐ container namespaces. เบเบปเบงเบขเปเบฒเบ, mount เบเบตเปเปเบเบทเปเบญเบกเบเปเปเบชเบฒเบกเบฒเบเบเปเบฒเบกเบเบฒเบเบเปเบฝเบเปเบเบเปเบ /proc
ะธ /sys
เปเบเบปเปเบฒเปเบเปเบเบเบฑเบ, เบซเบผเบทเปเบเบทเปเบญเบเบเบงเบเบกเบฑเบเบเบถเปเบเบเบฑเบเบเบฒเบเปเบ.
เบชเบฐเบซเบฅเบธเบ
เบเบงเบฒเบกเปเบเบปเปเบฒเปเบเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฒเบเปเบเบเบญเบ Linux เบชเบฒเบกเบฒเบเปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบงเบฝเบเบเบตเปเปเบเบฑเบเปเบเบเปเปเปเบเป, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ kernel เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเบกเบตเบฅเบฐเบซเบฑเบเบเปเบฒเบเบงเบเบซเบผเบงเบเบซเบผเบฒเบ, เบเปเบญเบเปเบซเปเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบทเปเบเบเบตเปเบเบนเปเปเบเป Linux เปเบฅเบฐเบเบฒเบเปเบเปเบเบญเบเบเบฒเบเปเบเบฅเบฐเบเบปเบเปเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ C เปเบเบฑเปเบ: glibc
. เบงเบดเบเบตเบซเบเบถเปเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบเบทเบเบซเบเปเบฒเปเบกเปเบเบเบฒเบเบญเปเบฒเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเบเบญเบเบฅเบฐเบเบปเบเบเปเบญเบ kernel, เปเบเบเปเบเบฑเปเบเปเบชเปเบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบเบฅเบฐเบเบปเบเปเบฅเบฐเบชเปเบงเบเบซเบปเบงเบเบญเบเบเบทเปเบเบเบตเปเบเบญเบเบเบนเปเปเบเป, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเปเบเปเบเบญเบ kernel เบเบฒเบเปเบเบเบปเปเบเบเป, เปเบเบฑเปเบ: เบเบฒเบเบฐเบฅเบฒเบ. file_operations
. เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเปเบเบฅเปเบชเบฐเบซเบเบญเบเบซเบผเบฑเบเบเบฒเบ "เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบเบฑเบเปเบเบฅเป", เปเบฎเบฑเบเปเบซเปเบกเบฑเบเบกเบตเบเบงเบฒเบกเบชเบธเบเปเบเบเบชเบฐเปเบเบฒเบฐเปเบเบเบฒเบเบเบธเปเบกเบเบญเบ. เปเบเบฅเปเบเบปเปเบเบชเบฐเบเบฑเบ C kernel เปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบฅเบฐเบเบฑเบเบชเบนเบเบชเบธเบ fs/
เบเปเบฒเบชเบฐเปเบซเบเบตเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบฅเบฐเบเบปเบเปเบเบฅเป virtual, เปเบเบดเปเบเปเบเบฑเบเบเบฑเปเบ wrapper เบเบตเปเบชเบฐเบซเบเบญเบเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเบขเปเบฒเบเบเบงเปเบฒเบเบเบงเบฒเบเปเบฅเบฐเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบฅเบฐเบเบปเบเปเบเบฅเปเบเบตเปเบเบดเบเบปเบกเปเบฅเบฐเบญเบธเบเบฐเบเบญเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ. เบเบฒเบเปเบเบทเปเบญเบกเปเบเบเปเบฅเบฐเบเบฒเบเบงเบฒเบเบเปเบญเบเบเบฑเบเบเปเบฒเบ namespaces Linux เปเบกเปเบ magic เบเบญเบ VFS เบเบตเปเปเบฎเบฑเบเปเบซเปเบเบฒเบเบชเปเบฒเบ containers เปเบเบเบญเปเบฒเบเปเบเบปเปเบฒเบเบฑเปเบเปเบฅเบฐเบฅเบฐเบเบปเบเปเบเบฅเปเบฎเบฒเบ. เบชเบปเบกเบเบปเบเบเบฑเบเบเบฒเบเบเบงเบเบชเบญเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบ, เปเบเบทเปเบญเบเบกเบทเบซเบผเบฑเบ eBPF เปเบฅเบฐเบเบฒเบเปเบเปเบเบญเบเบเบญเบเบกเบฑเบ bcc
เปเบฎเบฑเบโเปเบซเปโเบเบฒเบโเบชเปเบฒโเบซเบผเบงเบโเบซเบผเบฑเบโเบเปเบฒเบโเบเบถเปเบโเบโเปโเบงเบฒโเบเบตเปโเปเบเบตเบโ.
เปเบเบทเปเบญเบเป, เบเบฝเบ, เบเบปเบเบเบงเบฒเบกเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเบฑเบเบเปเบฒเบเบเป? เบเบฒเบเบเบตเปเบเบปเปเบฒเบกเบตเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบซเบผเบทเบเปเปเบชเบฑเบเปเบเบ? เปเบฅเบฐเบเบนเปเบเบตเปเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเบซเบผเบฑเบเบชเบนเบ Linux Administrator เปเบกเปเบเปเบเบตเบเปเบเบปเปเบฒเบฎเปเบงเบก
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com