Linux เชฎเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ: เชถเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡? เชญเชพเช— 2

เชฌเชงเชพเชจเซ‡ เชจเชฎเชธเซเช•เชพเชฐ, เช…เชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เชชเซเชฐเช•เชพเชถเชจเชจเซ‹ เชฌเซ€เชœเซ‹ เชญเชพเช— เชถเซ‡เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช โ€œLinux เชฎเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ: เชถเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡?โ€ เชคเชฎเซ‡ เชชเซเชฐเชฅเชฎ เชญเชพเช— เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚. เชšเชพเชฒเซ‹ เชคเชฎเชจเซ‡ เชฏเชพเชฆ เช…เชชเชพเชตเซ€เช เช•เซ‡ เชชเซเชฐเช•เชพเชถเชจเซ‹เชจเซ€ เช† เชถเซเชฐเซ‡เชฃเซ€ เช•เซ‹เชฐเซเชธ เชชเชฐ เชเช• เชจเชตเซ€ เชธเซเชŸเซเชฐเซ€เชฎเชจเชพ เชฒเซ‹เชจเซเชš เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡. "เชฒเชฟเชจเช•เซเชธ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ", เชœเซ‡ เช–เซ‚เชฌ เชœ เชœเชฒเซเชฆเซ€ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡.

eBPF เช…เชจเซ‡ bcc เชŸเซ‚เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ VFS เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐ เช•เชฐเชตเซเช‚

เช•เชฐเซเชจเชฒ เชซเชพเช‡เชฒเซ‹ เชชเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพเชจเซ€ เชธเซŒเชฅเซ€ เชธเชฐเชณ เชฐเซ€เชค sysfs เชคเซ‡เชจเซ‡ เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชœเซ‹เชตเชพเชจเซเช‚ เช›เซ‡, เช…เชจเซ‡ ARM64 เชœเซ‹เชตเชพเชจเซ‹ เชธเซŒเชฅเซ€ เชธเชนเซ‡เชฒเซ‹ เชฐเชธเซเชคเซ‹ eBPF เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡. eBPF (เชฌเชฐเซเช•เชฒเซ‡ เชชเซ‡เช•เซ‡เชŸ เชซเชฟเชฒเซเชŸเชฐ เชฎเชพเชŸเซ‡ เชŸเซ‚เช‚เช•เซเช‚) เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‹เชฐ, เชœเซ‡ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เซƒเชค เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ (query) เช†เชฆเซ‡เชถ เชตเชพเช•เซเชฏเชฎเชพเช‚เชฅเซ€. เช•เชฐเซเชจเชฒ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชตเชพเชšเช•เชจเซ‡ เชœเชฃเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เชฐเซเชจเชฒ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡; เชฒเซ‹เชก เชฅเชฏเซ‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ eBPF เชŸเซ‚เชฒเซเชธ เชšเชฒเชพเชตเชตเซเช‚ เช เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เชฐเซเชจเชฒ เช–เชฐเซ‡เช–เชฐ เชถเซเช‚ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.

Linux เชฎเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ: เชถเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡? เชญเชพเช— 2

เชธเชฆเชญเชพเช—เซเชฏเซ‡, เชธเชพเชงเชจเซ‹เชจเซ€ เชฎเชฆเชฆเชฅเซ€ eBPF เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเชตเซเช‚ เชเช•เชฆเชฎ เชธเชฐเชณ เช›เซ‡ BCC, เชœเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชคเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชชเซ‡เช•เซ‡เชœ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ Linux เช…เชจเซ‡ เชตเชฟเช—เชคเชตเชพเชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ เชฌเชฐเซเชจเชพเชฐเซเชก เช—เซเชฐเซ‡เช—. เชธเชพเชงเชจเซ‹ bcc เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชธเซ€ เช•เซ‹เชกเชจเชพ เชจเชพเชจเชพ เชฆเชพเช–เชฒเชพเช“ เชธเชพเชฅเซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชฌเช‚เชจเซ‡ เชญเชพเชทเชพเช“เชฅเซ€ เชชเชฐเชฟเชšเชฟเชค เช•เซ‹เชˆเชชเชฃ เชคเซ‡เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชธเซเชงเชพเชฐเซ€ เชถเช•เซ‡ เช›เซ‡. IN bcc/tools เชคเซเชฏเชพเช‚ 80 เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพ เช…เชฅเชตเชพ เชธเชฟเชธเซเชŸเชฎ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เช•เช‚เชˆเช• เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชถเซ‡.
เชšเชพเชฒเชคเซ€ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ VFS เชถเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซ‹ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ‹ เชธเซเชชเชฐเชซเชฟเชธเชฟเชฏเชฒ เชตเชฟเชšเชพเชฐ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡, เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹ vfscount เช…เชฅเชตเชพ vfsstat. เช† เชฌเชคเชพเชตเชถเซ‡, เชšเชพเชฒเซ‹ เช•เชนเซ€เช, เช•เซ‡ เชกเชเชจเซ‡เช• เช•เซ‰เชฒเซเชธ vfs_open() เช…เชจเซ‡ "เชคเซ‡เชจเชพ เชฎเชฟเชคเซเชฐเซ‹" เชถเชพเชฌเซเชฆเชฟเช• เชฐเซ€เชคเซ‡ เชฆเชฐ เชธเซ‡เช•เชจเซเชกเซ‡ เชฅเชพเชฏ เช›เซ‡.

Linux เชฎเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ: เชถเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡? เชญเชพเช— 2

vfsstat.py เชธเซ€ เช•เซ‹เชก เช‡เชจเซเชธเชฐเซเชŸ เชธเชพเชฅเซ‡เชจเซ€ เชชเชพเชฏเชฅเซ‹เชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช›เซ‡ เชœเซ‡ เชซเช•เซเชค VFS เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒเซเชธเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เชเช• เชตเชงเซ เชคเซเชšเซเช› เช‰เชฆเชพเชนเชฐเชฃ เช†เชชเซ€เช เช…เชจเซ‡ เชœเซ‹เชˆเช เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชฎเชพเช‚ USB เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชต เชฆเชพเช–เชฒ เช•เชฐเซ€เช เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชคเซ‡เชจเซ‡ เชถเซ‹เชงเซ€ เช•เชพเชขเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡.

Linux เชฎเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ: เชถเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡? เชญเชพเช— 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 เชถเซ‹เชง เชฎเชพเชŸเซ‡ __เช‰เชชเช•เชฐเชฃ_เช‰เชฎเซ‡เชฐเซ‹_เชกเชฟเชธเซเช•(), เชคเซ‡ เชถเซเช‚ เช•เชพเชฐเชฃ เชฌเชจเซ‡ เช›เซ‡ เชคเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ disk_add_events (), เช…เชจเซ‡ เช•เซเชฏเชพเช‚ เชคเซ‹ "media_change", เช…เชฅเชตเชพ "eject_request" เช‡เชตเซ‡เชจเซเชŸ เชซเชพเช‡เชฒเชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช…เชนเซ€เช‚ เช•เชฐเซเชจเชฒ เชฌเซเชฒเซ‹เช• เชฒเซ‡เชฏเชฐ เชฏเซเชเชฐเชธเซเชชเซ‡เชธเชจเซ‡ เชœเชพเชฃ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ "เชกเชฟเชธเซเช•" เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซ€ เช—เชˆ เช›เซ‡. เชธเซเชคเซเชฐเซ‹เชคเชฎเชพเช‚เชฅเซ€ เชตเชธเซเชคเซเช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเชพ เชชเซเชฐเชฏเชพเชธเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€เชฎเชพเช‚ USB เชกเซเชฐเชพเช‡เชต เชฆเชพเช–เชฒ เช•เชฐเซ€เชจเซ‡ เช† เชธเช‚เชถเซ‹เชงเชจ เชชเชฆเซเชงเชคเชฟ เช•เซ‡เชŸเชฒเซ€ เชฎเชพเชนเชฟเชคเซ€เชชเซเชฐเชฆ เช›เซ‡ เชคเซ‡เชจเซ€ เชจเซ‹เช‚เชง เชฒเซ‹.

เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชฐเซ‚เชŸ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชเชฎเซเชฌเซ‡เชกเซ‡เชก เช‰เชชเช•เชฐเชฃเซ‹เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ‡ เช›เซ‡

เช…เชฒเชฌเชคเซเชค, เช•เซ‹เชˆ เชชเชฃ เชตเซเชฏเช•เซเชคเชฟ เชธเซ‹เช•เซ‡เชŸเชฎเชพเช‚เชฅเซ€ เชชเซเชฒเช— เช–เซ‡เช‚เชšเซ€เชจเซ‡ เชธเชฐเซเชตเชฐ เช…เชฅเชตเชพ เชคเซ‡เชฎเชจเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐเชจเซ‡ เชฌเช‚เชง เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เชชเชฃ เชถเชพ เชฎเชพเชŸเซ‡? เช†เชจเซเช‚ เช•เชพเชฐเชฃ เช เช›เซ‡ เช•เซ‡ เชญเซŒเชคเชฟเช• เชธเช‚เช—เซเชฐเชน เช‰เชชเช•เชฐเชฃเซ‹ เชชเชฐ เชฎเชพเช‰เชจเซเชŸ เชฅเชฏเซ‡เชฒ เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฒเซ‡เช—เซเชก เชฐเชพเชˆเชŸ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐ เช•เซ‡ เชœเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœเชฎเชพเช‚ เชฒเช–เชพเชฃเซ‹ เชธเชพเชฅเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเชˆเช เชฅเชˆ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚. เชœเซเชฏเชพเชฐเซ‡ เช†เชตเซเช‚ เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชฒเชฟเช•เซ‹เช เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เช—เชฒเชพ เชฌเซ‚เชŸ เชธเซเชงเซ€ เชฐเชพเชน เชœเซ‹เชตเซ€ เชชเชกเชถเซ‡. fsck filesystem-recovery เช…เชจเซ‡, เชธเซŒเชฅเซ€ เช–เชฐเชพเชฌ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชกเซ‡เชŸเชพ เช—เซเชฎเชพเชตเชตเซ‹.

เชœเซ‹ เช•เซ‡, เช†เชชเชฃเซ‡ เชฌเชงเชพ เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เช˜เชฃเชพ IoT เช‰เชชเช•เชฐเชฃเซ‹, เชคเซ‡เชฎเชœ เชฐเชพเช‰เชŸเชฐเซเชธ, เชฅเชฐเซเชฎเซ‹เชธเซเชŸเซ‡เชŸเซเชธ เช…เชจเซ‡ เช•เชพเชฐ, เชนเชตเซ‡ Linux เชšเชฒเชพเชตเซ‡ เช›เซ‡. เช†เชฎเชพเช‚เชจเชพ เช˜เชฃเชพ เช‰เชชเช•เชฐเชฃเซ‹ เชชเชพเชธเซ‡ เชฌเชนเซ เช“เช›เชพ เช…เชฅเชตเชพ เช•เซ‹เชˆ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชจเชฅเซ€, เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ "เชธเซเชตเชšเซเช› เชฐเซ€เชคเซ‡" เชฌเช‚เชง เช•เชฐเชตเชพเชจเซ€ เช•เซ‹เชˆ เชฐเซ€เชค เชจเชฅเซ€. เชœเซเชฏเชพเชฐเซ‡ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชฏเซเชจเชฟเชŸเชจเซ‹ เชชเชพเชตเชฐ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชกเซ‡เชก เชฌเซ‡เชŸเชฐเซ€เชฅเซ€ เช•เชพเชฐ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ‹ Linux เชธเชคเชค เช‰เชชเชฐ เช…เชจเซ‡ เชจเซ€เชšเซ‡ เช•เซ‚เชฆเชตเชพเชจเซเช‚. เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช›เซ‡ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎ เชฒเชพเช‚เชฌเชพ เชตเช—เชฐ เชฌเซเชŸ เช•เชฐเซ‡ เช›เซ‡ fsckเชเชจเซเชœเชฟเชจ เช†เช–เชฐเซ‡ เช•เซเชฏเชพเชฐเซ‡ เชšเชพเชฒเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡? เช…เชจเซ‡ เชœเชตเชพเชฌ เชธเชฐเชณ เช›เซ‡. เชเชฎเซเชฌเซ‡เชกเซ‡เชก เช‰เชชเช•เชฐเชฃเซ‹ เชฐเซ‚เชŸ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡ เชฎเชพเชคเซเชฐ เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ (เชธเช‚เช•เซเชทเชฟเชชเซเชค ro-rootfs (เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชฐเซ‚เชŸ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ)).

ro-rootfs เช…เชงเชฟเช•เซƒเชคเชคเชพ เช•เชฐเชคเชพเช‚ เช“เช›เชพ เชธเซเชชเชทเซเชŸ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เช˜เชฃเชพ เชฒเชพเชญเซ‹ เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡. เชเช• เชซเชพเชฏเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ เชฎเชพเชฒเชตเซ‡เชฐ เชฒเช–เซ€ เชถเช•เชคเชพ เชจเชฅเซ€ /usr เช…เชฅเชตเชพ /lib, เชœเซ‹ เช•เซ‹เชˆ Linux เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชคเซเชฏเชพเช‚ เชฒเช–เซ€ เชถเช•เชคเซ€ เชจเชฅเซ€. เชฌเซ€เชœเซ€ เชฌเชพเชฌเชค เช เช›เซ‡ เช•เซ‡ เชฐเชฟเชฎเซ‹เชŸ เช‰เชชเช•เชฐเชฃเซ‹เชจเชพ เชซเชฟเชฒเซเชก เชธเชชเซ‹เชฐเซเชŸ เชฎเชพเชŸเซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡ เช…เชชเชฐเชฟเชตเชฐเซเชคเชจเชถเซ€เชฒ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซเชฎเชšเชพเชฐเซ€เช“ เชธเซเชฅเชพเชจเชฟเช• เชธเชฟเชธเซเชŸเชฎเซเชธ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡ เชœเซ‡ เชซเชฟเชฒเซเชก เชธเชฟเชธเซเชŸเชฎเซเชธ เชฎเชพเชŸเซ‡ เชจเชพเชฎ เชชเซเชฐเชฎเชพเชฃเซ‡ เชธเชฎเชพเชจ เชนเซ‹เชฏ เช›เซ‡. เช•เชฆเชพเชš เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชจเซ‹ (เชชเชฃ เชธเซŒเชฅเซ€ เช•เชชเชŸเซ€) เชซเชพเชฏเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ ro-rootfs เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เชธเชฟเชธเซเชŸเชฎเชจเชพ เชกเชฟเชเชพเช‡เชจ เชคเชฌเช•เซเช•เซ‡ เช•เชˆ เชธเชฟเชธเซเชŸเชฎ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เช…เชชเชฐเชฟเชตเชฐเซเชคเชจเชถเซ€เชฒ เชนเชถเซ‡ เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เชฆเชฌเชพเชฃ เช•เชฐเซ‡ เช›เซ‡. ro-rootfs เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชฌเซ‡เชกเซ‹เชณ เช…เชจเซ‡ เชชเซ€เชกเชพเชฆเชพเชฏเช• เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช•เซ‹เชจเซเชธเซเชŸ เชตเซ‡เชฐเชฟเชฏเซ‡เชฌเชฒเซเชธ เช˜เชฃเซ€ เชตเช–เชค เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชฒเซ‡เช‚เช—เซเชตเซ‡เชœเชฎเชพเช‚ เชนเซ‹เชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชจเชพ เชซเชพเชฏเชฆเชพ เชธเชฐเชณเชคเชพเชฅเซ€ เชตเชงเชพเชฐเชพเชจเชพ เช“เชตเชฐเชนเซ‡เชกเชจเซ‡ เชฏเซ‹เช—เซเชฏ เช เซ‡เชฐเชตเซ‡ เช›เซ‡.

เชฌเชจเชพเชตเชŸ rootfs เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชเชฎเซเชฌเซ‡เชกเซ‡เชก เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชพเชŸเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชตเชงเชพเชฐเชพเชจเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ VFS เชšเชฟเชคเซเชฐเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. Linux เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ เชซเชพเช‡เชฒเซ‹ เช…เช‚เชฆเชฐ เชนเซ‹เชฏ /var เชฒเช–เซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชนเชคเชพ, เช…เชจเซ‡ เชตเชงเซเชฎเชพเช‚, เช˜เชฃเซ€ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เช•เซ‡ เชœเซ‡ เชเชฎเซเชฌเซ‡เชกเซ‡เชก เชธเชฟเชธเซเชŸเชฎ เชšเชฒเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชถเซ‡. dot-files ะฒ $HOME. เชนเซ‹เชฎ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชซเชพเช‡เชฒเซ‹ เชฎเชพเชŸเซ‡เชจเซ‹ เชเช• เช‰เช•เซ‡เชฒ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชคเซ‡เชจเซ‡ เชชเซ‚เชฐเซเชต-เชœเชจเชฐเซ‡เชŸ เช…เชจเซ‡ เชฌเชฟเชฒเซเชก เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ rootfs. เชฎเชพเชŸเซ‡ /var เชเช• เชธเช‚เชญเชตเชฟเชค เช…เชญเชฟเช—เชฎ เชคเซ‡เชจเซ‡ เช…เชฒเช— เชฒเช–เซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชชเชฐ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ / เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชพเช‰เชจเซเชŸ เชฅเชฏเซ‡เชฒ. เชฌเซ€เชœเซ‹ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชตเชฟเช•เชฒเซเชช เช เช›เซ‡ เช•เซ‡ เชฌเชพเช‡เชจเซเชก เช…เชฅเชตเชพ เช“เชตเชฐเชฒเซ‡ เชฎเชพเช‰เชจเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹.

เชฒเชฟเช‚เช•เซ‡เชฌเชฒ เช…เชจเซ‡ เชธเซเชŸเซ‡เช•เซ‡เชฌเชฒ เชฎเชพเช‰เชจเซเชŸ, เช•เชจเซเชŸเซ‡เชจเชฐ เชฆเซเชตเชพเชฐเชพ เชคเซ‡เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช—

เช†เชฆเซ‡เชถ เช…เชฎเชฒ man mount เชฌเชพเช‚เชงเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เช…เชจเซ‡ เช“เชตเชฐเชฒเซ‡เชฏเซ‡เชฌเชฒ เชฎเชพเช‰เชจเซเชŸเซ‹ เชตเชฟเชถเซ‡ เชถเซ€เช–เชตเชพเชจเซ€ เชถเซเชฐเซ‡เชทเซเช  เชฐเซ€เชค เช›เซ‡, เชœเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชธเช‚เชšเชพเชฒเช•เซ‹เชจเซ‡ เชเช• เชชเชพเชฅเชฎเชพเช‚ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชฌเซ€เชœเชพ เชชเชพเชฅเชฎเชพเช‚ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเซเชธ เชฎเชพเชŸเซ‡ เชเช•เซเชธเชชเซ‹เช เช•เชฐเซ‡ เช›เซ‡. เชเชฎเซเชฌเซ‡เชกเซ‡เชก เชธเชฟเชธเซเชŸเชฎเซเชธ เชฎเชพเชŸเซ‡, เช†เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ /var เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชต เชชเชฐ, เชชเชฐเช‚เชคเซ เช“เชตเชฐเชฒเซ‡ เช…เชฅเชตเชพ เชฒเชฟเช‚เช• เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชฎเชพเช‰เชจเซเชŸ เชชเชพเชฅเชฅเซ€ tmpfs ะฒ /var เชฒเซ‹เชก เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชคเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเซ‡ เชคเซเชฏเชพเช‚ เชจเซ‹เช‚เชงเซ‹ เชฒเช–เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡ (เชธเซเช•เซเชฐเซ‹เชฒ เช•เชฐเซ‹). เช†เช—เชฒเซ€ เชตเช–เชคเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชšเชพเชฒเซ เช•เชฐเซ‹ /var เช–เซ‹เชตเชพเชˆ เชœเชถเซ‡. เช“เชตเชฐเชฒเซ‡ เชฎเชพเช‰เชจเซเชŸ เชตเชšเซเชšเซ‡เชจเซเช‚ เชœเซ‹เชกเชพเชฃ เชฌเชจเชพเชตเซ‡ เช›เซ‡ tmpfs เช…เชจเซ‡ เช…เช‚เชคเชฐเซเช—เชค เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เช…เชจเซ‡ เชคเชฎเชจเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชซเชพเช‡เชฒเซ‹เชฎเชพเช‚ เชฆเซ‡เช–เซ€เชคเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ ro-tootf เชœเซเชฏเชพเชฐเซ‡ เชฌเชพเช‚เชงเชตเชพ เชฏเซ‹เช—เซเชฏ เชฎเชพเช‰เชจเซเชŸ เชจเชตเชพเชจเซ‡ เช–เชพเชฒเซ€ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ tmpfs เชฎเชพเช‚ เชฒเช–เซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชซเซ‹เชฒเซเชกเชฐเซเชธ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ ro-rootfs เชฎเชพเชฐเซเช—เซ‹ เชœเซเชฏเชพเชฐเซ‡ overlayfs เช† เชธเชพเชšเซ‹ เช›เซ‡ (proper) เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชชเซเชฐเช•เชพเชฐ, เชฌเชพเช‡เชจเซเชกเซ‡เชฌเชฒ เชฎเชพเช‰เชจเซเชŸ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ VFS เชจเซ‡เชฎเชธเซเชชเซ‡เชธ.

เช“เชตเชฐเชฒเซ‡ เช…เชจเซ‡ เชฒเชฟเช‚เช•เซ‡เชฌเชฒ เชฎเชพเช‰เชจเซเชŸเชจเชพ เชตเชฐเซเชฃเชจเชจเชพ เช†เชงเชพเชฐเซ‡, เช•เซ‹เชˆเชจเซ‡ เช†เชถเซเชšเชฐเซเชฏ เชฅเชคเซเช‚ เชจเชฅเซ€ Linux เช•เชจเซเชŸเซ‡เชจเชฐ เชคเซ‡เช“ เชธเช•เซเชฐเชฟเชฏเชชเชฃเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡. เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เชคเซเชฏเชพเชฐเซ‡ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡ systemd-nspawn เชธเชพเชงเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ mountsnoop เชฅเซ€ bcc.

เชชเชกเช•เชพเชฐ system-nspawn เชšเชพเชฒเชคเซ€ เชตเช–เชคเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡ mountsnoop.py.

เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เชถเซเช‚ เชฅเชฏเซเช‚:

เชฒเซ‹เช‚เชš mountsnoop เชœเซเชฏเชพเชฐเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ "เชฌเซ‚เชŸเซ€เช‚เช—" เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชฌเชคเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‹ เชฐเชจเชŸเชพเชˆเชฎ เชฎเชพเช‰เชจเซเชŸ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชนเซ‹เชตเชพ เชชเชฐ เช–เซ‚เชฌ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡ (เชฎเชพเชคเซเชฐ เชฒเชพเช‚เชฌเชพ เช†เช‰เชŸเชชเซเชŸเชจเซ€ เชถเชฐเซ‚เช†เชค เชฌเชคเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡).

เชคเซ‡ systemd-nspawn เชฎเชพเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‡เชฒเซ€ เชซเชพเช‡เชฒเซ‹ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ procfs ะธ sysfs เชคเซ‡เชจเชพ เชชเชพเชฅ เชคเชฐเซ€เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชนเซ‹เชธเซเชŸ เช•เชฐเซ‹ rootfs. เช‰เชชเชฐเชพเช‚เชค MS_BIND เชซเซเชฒเซ‡เช— เช•เซ‡ เชœเซ‡ เชฌเชพเชˆเชจเซเชกเซ€เช‚เช— เชฎเชพเช‰เชจเซเชŸเชจเซ‡ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡, เชฎเชพเช‰เชจเซเชŸ เชชเชฐเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เช…เชจเซเชฏ เชซเซเชฒเซ‡เช— เชนเซ‹เชธเซเชŸ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชจเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชตเชšเซเชšเซ‡เชจเชพ เชธเช‚เชฌเช‚เชงเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฒเชฟเช‚เช• เชฅเชฏเซ‡เชฒ เชฎเชพเช‰เชจเซเชŸ เช•เซเชฏเชพเช‚ เชคเซ‹ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เช…เชตเช—เชฃเซ€ เชถเช•เซ‡ เช›เซ‡ /proc ะธ /sys เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚, เช…เชฅเชตเชพ เช•เซ‰เชฒเชจเชพ เช†เชงเชพเชฐเซ‡ เชคเซ‡เชฎเชจเซ‡ เช›เซเชชเชพเชตเซ‹.

เชจเชฟเชทเซเช•เชฐเซเชท

เชฒเชฟเชจเช•เซเชธเชจเชพ เช†เช‚เชคเชฐเชฟเช• เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฎเชœเชตเซเช‚ เชเช• เช…เชถเช•เซเชฏ เช•เชพเชฐเซเชฏ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช•เชฐเซเชจเชฒ เชชเซ‹เชคเซ‡ เชœ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เช•เซ‹เชก เชงเชฐเชพเชตเซ‡ เช›เซ‡, เชœเซ‡ เชธเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชฎเชพเช‚ เชฒเชฟเชจเช•เซเชธ เชฏเซเชเชฐ เชธเซเชชเซ‡เชธ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เช…เชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชฒ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซ‡ เชฌเชพเชœเซ เชชเชฐ เชฐเชพเช–เซ€เชจเซ‡ glibc. เชชเซเชฐเช—เชคเชฟ เช•เชฐเชตเชพเชจเซ€ เชเช• เชฐเซ€เชค เช เช›เซ‡ เช•เซ‡ เชเช• เช•เชฐเซเชจเชฒ เชธเชฌเชธเชฟเชธเซเชŸเชฎเชจเซ‹ เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เชตเชพเช‚เชšเชตเซ‹, เชœเซ‡เชฎเชพเช‚ เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชฒเซเชธ เช…เชจเซ‡ เชฏเซเชเชฐ-เชธเซเชชเซ‡เชธ เชนเซ‡เชกเชฐเซ‹ เชคเซ‡เชฎเชœ เชฎเซเช–เซเชฏ เช†เช‚เชคเชฐเชฟเช• เช•เชฐเซเชจเชฒ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ, เชœเซ‡เชฎ เช•เซ‡ เชŸเซ‡เชฌเชฒเชจเซ‡ เชธเชฎเชœเชตเชพ เชชเชฐ เชญเชพเชฐ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. file_operations. เชซเชพเช‡เชฒ เช‘เชชเชฐเซ‡เชถเชจเซเชธ "เชฌเชงเซเช‚ เชœ เชซเชพเช‡เชฒ เช›เซ‡" เชธเชฟเชฆเซเชงเชพเช‚เชค เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชคเซ‡เชฎเชจเซ‡ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช†เชจเช‚เชฆเชชเซเชฐเชฆ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชŸเซ‹เชšเชจเชพ เชธเซเชคเชฐเชจเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ C เช•เชฐเซเชจเชฒ เชธเซเชคเซเชฐเซ‹เชค เชซเชพเช‡เชฒเซ‹ fs/ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธเชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฐเชœเซ‚ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชฐเซ‡เชชเชฐ เชฒเซ‡เชฏเชฐ เช›เซ‡ เชœเซ‡ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเซเชธ เช…เชจเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช‰เชชเช•เชฐเชฃเซ‹ เชตเชšเซเชšเซ‡ เชตเซเชฏเชพเชชเช• เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชธเชฐเชณ เชธเซเชธเช‚เช—เชคเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. Linux เชจเซ‡เชฎเชธเซเชชเซ‡เชธ เชฆเซเชตเชพเชฐเชพ เชฒเชฟเช‚เช• เช…เชจเซ‡ เช“เชตเชฐเชฒเซ‡ เชฎเชพเช‰เชจเซเชŸเชฟเช‚เช— เช VFS เชจเซ‹ เชœเชพเชฆเซ เช›เซ‡ เชœเซ‡ เชซเช•เซเชค เชตเชพเช‚เชšเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชจเซ‡ เชฐเซ‚เชŸ เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชธเซ‹เชฐเซเชธ เช•เซ‹เชก, eBPF เช•เซ‹เชฐ เชŸเซ‚เชฒ เช…เชจเซ‡ เชคเซ‡เชจเชพ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซ€ เชชเชฐเซ€เช•เซเชทเชพ เชธเชพเชฅเซ‡ เชธเช‚เชฏเซเช•เซเชค bcc
เช•เซ‹เชฐ เชเช•เซเชธเชชเซเชฒเซ‹เชฐเซ‡เชถเชจ เชชเชนเซ‡เชฒเชพ เช•เชฐเชคเชพ เชตเชงเซ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡.

เชฎเชฟเชคเซเชฐเซ‹, เชฒเช–เซ‹, เชถเซเช‚ เช† เชฒเซ‡เช– เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชนเชคเซ‹? เช•เชฆเชพเชš เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เซ‹เชˆ เชŸเชฟเชชเซเชชเชฃเซ€ เช…เชฅเชตเชพ เชŸเชฟเชชเซเชชเชฃเซ€ เช›เซ‡? เช…เชจเซ‡ เชœเซ‡เช“ เชฒเชฟเชจเช•เซเชธ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ เช•เซ‹เชฐเซเชธเชฎเชพเช‚ เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชนเซ‹เชฏ เชคเซ‡เชฎเชจเซ‡ เช†เชฎเช‚เชคเซเชฐเชฃ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชšเชพเชฒเซ เชฆเชฟเชตเชธเชœเซ‡ 18 เชเชชเซเชฐเชฟเชฒเซ‡ เชฏเซ‹เชœเชพเชถเซ‡.

เชชเซเชฐเชฅเชฎ เชญเชพเช—.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹