เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจตเจฐเจšเฉเจ…เจฒ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ: เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจ•เจฟเจ‰เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ? เจญเจพเจ— 2

เจธเจพเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจนเฉˆเจฒเฉ‹, เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจกเฉ‡ เจจเจพเจฒ เจชเฉเจฐเจ•เจพเจธเจผเจจ เจฆเจพ เจฆเฉ‚เจœเจพ เจนเจฟเฉฑเจธเจพ เจธเจพเจ‚เจเจพ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚ "เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจตเจฐเจšเฉเจ…เจฒ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ: เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจ•เจฟเจ‰เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ?" เจคเฉเจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพ เจญเจพเจ— เจชเฉœเฉเจน เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฑเจฅเฉ‡. เจ†เจ“ เจ…เจธเฉ€เจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฏเจพเจฆ เจฆเจฟเจตเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจชเฉเจฐเจ•เจพเจธเจผเจจเจพเจ‚ เจฆเฉ€ เจ‡เจน เจฒเฉœเฉ€ เจ•เฉ‹เจฐเจธ 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจธเจŸเฉเจฐเฉ€เจฎ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจฆเฉ‡ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเฉ€ เจนเฉˆ "เจฒเฉ€เจจเจ•เจธ เจชเฉเจฐเจธเจผเจพเจธเจ•", เจœเฉ‹ เจฌเจนเฉเจค เจœเจฒเจฆเฉ€ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

eBPF เจ…เจคเฉ‡ bcc เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ VFS เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฟเจตเฉ‡เจ‚ เจ•เจฐเฉ€เจ

เจ‡เจน เจธเจฎเจเจฃ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจ†เจธเจพเจจ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจ•เจฟ เจ•เจฐเจจเจฒ เจซเจพเจˆเจฒเจพเจ‚ 'เจคเฉ‡ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ sysfs เจ‡เจธ เจจเฉ‚เฉฐ เจ…เจญเจฟเจ†เจธ เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เจฃเจพ เจนเฉˆ, เจ…เจคเฉ‡ ARM64 เจฆเฉ‡เจ–เจฃ เจฆเจพ เจธเจญ เจคเฉ‹เจ‚ เจ†เจธเจพเจจ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ eBPF เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพเฅค eBPF (เจฌเจฐเจ•เจฒเฉ‡ เจชเฉˆเจ•เฉ‡เจŸ เจซเจฟเจฒเจŸเจฐ เจฒเจˆ เจ›เฉ‹เจŸเจพ) เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจนเฉ€ เจ‡เฉฑเจ• เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจ•เฉ‹เจฐ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจตเจฟเจธเจผเฉ‡เจธเจผ เจ…เจงเจฟเจ•เจพเจฐ เจชเฉเจฐเจพเจชเจค เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฌเฉ‡เจจเจคเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจ (query) เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจคเฉ‹เจ‚. เจ•เจฐเจจเจฒ เจธเจฐเฉ‹เจค เจชเจพเจ เจ• เจจเฉ‚เฉฐ เจฆเฉฑเจธเจฆเฉ‡ เจนเจจ เจ•เจฟ เจ•เจฐเจจเจฒ เจ•เฉ€ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ; เจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจธเจฟเจธเจŸเจฎ เจ‰เฉฑเจคเฉ‡ eBPF เจŸเฉ‚เจฒ เจšเจฒเจพเจ‰เจฃเจพ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจฐเจจเจฒ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ•เฉ€ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจตเจฐเจšเฉเจ…เจฒ เจซเจพเจˆเจฒ เจธเจฟเจธเจŸเจฎ: เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจ•เจฟเจ‰เจ‚ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ‡ เจนเจจ? เจญเจพเจ— 2

เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจ”เจœเจผเจพเจฐเจพเจ‚ เจฆเฉ€ เจฎเจฆเจฆ เจจเจพเจฒ eBPF เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจเจพ เจ•เจพเจซเจผเฉ€ เจ†เจธเจพเจจ เจนเฉˆ BCC, เจœเฉ‹ เจ•เจฟ เจ†เจฎ เจตเฉฐเจก เจคเฉ‹เจ‚ เจชเฉˆเจ•เฉ‡เจœเจพเจ‚ เจตเจœเฉ‹เจ‚ เจ‰เจชเจฒเจฌเจง เจนเจจ เจฒเฉ€เจจเจ•เจธ เจ…เจคเฉ‡ เจตเจฟเจธเจฅเจพเจฐ เจตเจฟเฉฑเจš เจฆเจธเจคเจพเจตเฉ‡เจœเจผเฉ€ เจฌเจฐเจจเจพเจฐเจก เจ—เฉเจฐเฉ‡เจ—. เจธเฉฐเจฆ bcc C เจ•เฉ‹เจก เจฆเฉ€เจ†เจ‚ เจ›เฉ‹เจŸเฉ€เจ†เจ‚ เจธเฉฐเจฎเจฟเจฒเจจเจพเจ‚ เจตเจพเจฒเฉ€เจ†เจ‚ เจชเจพเจˆเจฅเจจ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจนเจจ, เจœเจฟเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจฆเฉ‹เจตเจพเจ‚ เจญเจพเจธเจผเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจœเจพเจฃเฉ‚ เจ•เฉ‹เจˆ เจตเฉ€ เจตเจฟเจ…เจ•เจคเฉ€ เจ†เจธเจพเจจเฉ€ เจจเจพเจฒ เจ‡เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉ‹เจง เจธเจ•เจฆเจพ เจนเฉˆเฅค 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 เจคเจธเจตเฉ€เจฐ เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจฒเฉ€เจจเจ•เจธ เจจเฉ‚เฉฐ เจซเจพเจˆเจฒเจพเจ‚ เจ…เฉฐเจฆเจฐ เจนเฉ‹เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ /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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹