рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?

рдпрд╣ рд▓реЗрдЦ
рдЕрдХрд╛рджрдорд┐рдХ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдЕрднреНрдпрд╛рд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рддреИрдпрд╛рд░ рдХреА рдЧрдИ рдереА, рдФрд░ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдмрд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдореВрд▓ рдЬреНрдЮрд╛рди, рд╕реА рднрд╛рд╖рд╛, рдореЗрдХрдлрд╛рдЗрд▓ рдФрд░ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЬреНрдЮрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред
рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рднрд╛рдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдлрд┐рд░ рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдлреНрд░реЗрдо рд▓рд┐рдЦреЗрдВрдЧреЗ - рдПрдХ рдореЙрдбреНрдпреВрд▓ рдЬреЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдХ рдмрд▓реНрдХрд┐ рдмреЗрдХрд╛рд░ (рдЕрдм рдХреЗ рд▓рд┐рдП) рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдЧрд╛ред рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд (рдЕрд▓реМрдХрд┐рдХ рд░реВрдк рд╕реЗ) рд▓реЛрдЧ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗред
рдкрд░рд┐рдЪрдп
рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо OS рдХреЗ рдХреЗрдВрджреНрд░реАрдп рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдУрдПрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реБрдЖред рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреБрд░рд╛рдиреЗ "рдХреНрд▓рд╛рд╕рд┐рдХ"
рдпреВрдПрдлрдПрд╕ рд╕реЗ рдирдП рджрд┐рд▓рдЪрд╕реНрдк
рдПрдирдЖрдИрдПрд▓рдПрдлрдПрд╕ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рдЪрд╛рд░ рдмрд┐рд▓реНрдХреБрд▓ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ,
рдПрд▓рдПрдлрдПрд╕ рдХреЛ рджреЗрдЦреЗрдВ) рдФрд░
рдмреАрдЯреАрдЖрд░рдПрдлрдПрд╕ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдПрдХ рдкреВрд░реА рд╡рд┐рд╡рд┐рдзрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рдЕрднреНрдпрд╛рд╕ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реИред рд╣рдо ext3 / 4 рдФрд░ BTRFS рдЬреИрд╕реЗ рд░рд╛рдХреНрд╖рд╕реЛрдВ рдХреЛ рдЙрдЦрд╛рдбрд╝ рдлреЗрдВрдХрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдорд╛рд░реА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рд╢реИрдХреНрд╖рд┐рдХ рд╣реЛрдЧреА, рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╣рдо рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВрдЧреЗред
рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛
рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЪрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдкрдиреЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреА рдЕрдкрдиреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЕрднреНрдпрд╕реНрдд рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдЙрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╕рдВрдХрд▓рдХ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдЪрд╛рд╣рд┐рдП:
sudo apt-get install gcc build-essential
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдХрд░реНрдиреЗрд▓ рд╕реНрд░реЛрддреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ - рд╣рдо рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдХрд░реНрдиреЗрд▓ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдмрд╕ рдЕрдкрдиреЗ рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдпрд╣ рдПрдХ рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рддрд░рд╣ рд╣реЗрдбрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
sudo apt-get install linux-headers-`uname -r`
рдпрд╣рд╛рдВ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдорд╢реАрди рдкрд░ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдШреВрдордирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдпрд╣ рд╕рдм рдХрд░рдиреЗ рдХреА рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рд╣рдо рдХреБрдЫ рднреА рдЦрддрд░рдирд╛рдХ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐
рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░рд┐рдмреВрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди (рдЬреИрд╕реЗ QEMU) рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреАред
рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЬрд╛рдБрдЪ
рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ рдЬреЛ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!)ред рдЖрдЗрдП рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реБрдкрд░ рд╕реА рдХрд╣рд╛ рд╣реИ (рдХреБрдЫ рднреА рдордд рд╕реЛрдЪреЛ, рд╕реБрдкрд░ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рд╕реЗ рд╣реИ):
#include <linux/init.h> #include <linux/module.h> static int __init aufs_init(void) { pr_debug("aufs module loaded\n"); return 0; } static void __exit aufs_fini(void) { pr_debug("aufs module unloaded\n"); } module_init(aufs_init); module_exit(aufs_fini); MODULE_LICENSE("GPL"); MODULE_AUTHOR("kmu");
рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рджреЛ рд╣реЗрдбрд░ рд╣реИрдВ, рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рд╡реЗ рдХрд┐рд╕реА рднреА рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣рд┐рд╕реНрд╕рд╛ рд╣реИрдВ, рдЙрдирдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдЕрдЧрд▓реЗ рджреЛ рдХрд╛рд░реНрдп aufs_init рдФрд░ aufs_fini рд╣реИрдВ - рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдорд╢рдГ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрддрд╛рд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдкрдореЗрдВ рд╕реЗ рдХреБрдЫ __init рд▓реЗрдмрд▓ рд╕реЗ рднреНрд░рдорд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред __in рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдореЗрдореЛрд░реА рд╕реЗ рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдорд╛рд░реНрдХрд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд░реНрдиреЗрд▓ рдЗрди рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рд╕реЗ __init рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдРрд╕реА рдХреЛрдИ рдХреЙрд▓ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдРрд╕реА рдХреЙрд▓ рд▓рдЧрддреА рд╣реИ, рддреЛ рдХрд░реНрдиреЗрд▓ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛ред рдЗрд╕реА рддрд░рд╣, __exit рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк __init рдФрд░ __exit рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
рд╕реНрд░реЛрдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ aufs_init рдПрдХ int рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд░реНрдиреЗрд▓ рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИред
рдХрд┐рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдФрд░ рдЕрдирд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рджреЛ рдореИрдХреНрд░реЛрдЬрд╝ рдореЙрдбреНрдпреВрд▓_рдЗрдирд┐рдЯ рдФрд░ рдореЙрдбреНрдпреВрд▓_рдПрдХреНрд╕рд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдЬрд╛рджреВ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ рд╡реЗ
lxr рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдХрд░реНрдиреЗрд▓ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрд╛рдд рд╣реИ)ред
pr_debug рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рдореИрдХреНрд░реЛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ) рдХрд░реНрдиреЗрд▓ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рд┐рдВрдЯрдлрд╝ рдкрд░рд┐рд╡рд╛рд░ рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдИрдкреА рдФрд░ рдореИрдХ рдкрддреЗ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдореЙрдбрд┐рдлрд╛рдпрд░реНрд╕ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдХрд░реНрдиреЗрд▓
рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред Pr_debug рдХреЗ рд╕рд╛рде, рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдкрд░рд┐рд╡рд╛рд░ рд╣реИ: pr_info, pr_warn, pr_err рдФрд░ рдЕрдиреНрдпред рдЬреЛ рд▓реЛрдЧ рд▓рд┐рдирдХреНрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд╡реЗ рд╢рд╛рдпрдж рдкреНрд░рд┐рдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, pr_ * рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХреЙрд▓ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕реАрдзреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рд┐рдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореИрд░рд┐рдЯ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдореИрдХреНрд░реЛрдЬрд╝ рд╣реИрдВ - рд▓рд╛рдЗрд╕реЗрдВрд╕ рдФрд░ рд▓реЗрдЦрдХред рдЕрдиреНрдп рдореИрдХреНрд░реЛ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рд╡рд┐рд╡рд┐рдз рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MODULE_VERSION, MODULE_INFO, MODULE_SUPPORTED_DEVICE рдФрд░ рдЕрдиреНрдпред рд╡реИрд╕реЗ, рдПрдХ рдордЬрд╝реЗрджрд╛рд░ рддрдереНрдп рдпрд╣ рд╣реИ, рдпрджрд┐ рдЖрдк рдЬреАрдкреАрдПрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬреАрдкреАрдПрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ Makefile рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╣рдорд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдЧрд╛:
obj-m := aufs.o aufs-objs := super.o CFLAGS_super.o := -DDEBUG all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдмрд┐рд▓реНрдб рдореЗрдХрдлрд╛рдЗрд▓ рдХрд░реНрдиреЗрд▓ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ / lib / рдореЙрдбреНрдпреВрд▓ / $ (рд╢реЗрд▓ uname -r) / рдмрд┐рд▓реНрдб рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (uname -r рд╡рд╣ рдХрдорд╛рдВрдб рд╣реИ рдЬреЛ рд░рдирд┐рдВрдЧ рдХрд░реНрдиреЗрд▓ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИ) рдпрджрд┐ рдЖрдк рд╣реЗрдбрд░ (рдпрд╛) рд╕реВрддреНрд░реЛрдВ) рдЧреБрдард▓реА рдПрдХ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
obj-m - рдЖрдкрдХреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ aufs.ko (рдЬреИрд╕реЗ ko - рдХрд░реНрдиреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ) рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ aufs-objs рдЖрдкрдХреЛ aufs рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рд╕реЛрд░реНрд╕ рдлрд╛рдЗрд▓ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реБрдкрд░ рд╕реА рд╕реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкрд╛рдЗрд▓рд░ рдлрд╝реНрд▓реИрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдХрд░реНрдиреЗрд▓ рдореЗрдХрдлрд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛) рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рд╕реБрдкрд░-рд╕реАрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп -DDEBUG рдзреНрд╡рдЬ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред рдпрджрд┐ рдЖрдк -DDEBUG рдзреНрд╡рдЬ рдХреЛ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ pr_debug рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред
рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореЗрдХ рдХрдорд╛рдВрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ aufs.ko рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП - рдпрд╣ рд╣рдорд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:
sudo insmod ./aufs.ko
рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рд▓рд╕рдореЛрдб рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
lsmod | grep aufs
рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ dmesg рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрджреЗрд╢ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЙрддрд╛рд░рдирд╛ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ:
sudo rmmod aufs
рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╡рд╛рдкрд╕
рддреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рд╕рд░рд▓рддрдо рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕реЗ рд▓реЛрдб рдФрд░ рдЕрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╣ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓реЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛ "рдХрд╛рдЧрдЬ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдкрд░" рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╣рдо рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЕрдЧрд▓реА рдмрд╛рд░ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ (рдФрд░ рдмрд╣реБрдд рдХреБрдЫ) рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрдВрдЧреЗ, рдФрд░ рдЕрдм рд╣рдо рдЕрдкрдиреЗ рднрд╡рд┐рд╖реНрдп рдХреА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрдВрдХрд╛рд▓ рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗред
рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЬреАрд╡рди рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЖрдк register_filesystem рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВрдЧреЗред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
unregister_filesystem рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ aufs_fini рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╣реЗрдВрдЧреЗред
рджреЛрдиреЛрдВ рдХрд╛рд░реНрдп рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ file_system_type рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреЗ рд╣реИрдВ - рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ "рд╡рд░реНрдгрди" рдХрд░реЗрдЧрд╛, рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдорд╛рдиреЗрдВред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
static struct file_system_type aufs_type = { .owner = THIS_MODULE, .name = "aufs", .mount = aufs_mount, .kill_sb = kill_block_super, .fs_flags = FS_REQUIRES_DEV, };
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдирд╛рдо рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдирд╛рдо рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдпрд╣ рдирд╛рдо рд╣реИ рдЬреЛ рдмрдврд╝рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ, рдмрд╕ рдЗрд╕реЗ рдпрд╛рдж рд░рдЦреЗрдВред
рдорд╛рдЙрдВрдЯ рдФрд░ рдХрд┐рд▓_рдПрд╕рдмреА рджреЛ рдлрд╝реАрд▓реНрдб рд╣реИрдВ рдЬреЛ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрдврд╝рддреЗ рд╕рдордп рдкрд╣рд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдЬрдм рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдХрд┐рд▓_рдмреНрд▓реЙрдХ_рд╕реБрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд░реНрдиреЗрд▓ рдХреГрдкрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
Fs_flags рдлрд╝реАрд▓реНрдб - рд╡рд┐рднрд┐рдиреНрди рдЭрдВрдбреЗ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ FS_REQUIRES_DEV рдзреНрд╡рдЬ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рд╕реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдм рддрдХ рдирд╣реАрдВ рд╣реИ)ред рдЖрдк рдЗрд╕ рдзреНрд╡рдЬ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓реЗрдЧрд╛ред
рдЕрдВрдд рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рдореА рдлрд╝реАрд▓реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореЙрдбреНрдпреВрд▓ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЕрдирд▓реЛрдб рди рд╣реЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдХреНрд░реИрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рдЙрддрд╛рд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛, рдЕрд░реНрдерд╛рдд, рдЬрдм рддрдХ рд╣рдо рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдирдорд╛рдЙрдВрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм aufs_mount рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЗрд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдмрд▓реНрдХрд┐ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣рд╛рдБ рдХрд░реНрдиреЗрд▓ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдХрд░реЗрдЧрд╛:
static struct dentry *aufs_mount(struct file_system_type *type, int flags, char const *dev, void *data) { struct dentry *const entry = mount_bdev(type, flags, dev, data, aufs_fill_sb); if (IS_ERR(entry)) pr_err("aufs mounting failed\n"); else pr_debug("aufs mounted\n"); return entry; }
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдп moun_bdev рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ aufs_fill_sb рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рдпрд╣ рдлрд╝рдВрдХреНрд╢рди (рдлрд┐рд░ рд╕реЗ) рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реИ рдЬреЛ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Mount_bdev рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЙрд╕ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ, рд╣рдо
рдбреЗрдВрдЯреНрд░реА рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ,
рдЬреЛ рдХрд░реНрдиреЗрд▓ рдХреА рдлрд╝рд╛рдЗрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рдкрде рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдлрд╝рд╛рдЗрд▓ / usr / bin / vim рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрде рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ (рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА), bin / рдФрд░ vim рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдордВрдж рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдВрдЧреЗред рдХрд░реНрдиреЗрд▓ рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдХреИрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо (рдкрде) рджреНрд╡рд╛рд░рд╛ рдЗрдиреЛрдб (рджреВрд╕рд░рд╛ рдХреЗрдВрджреНрд░ рд╕рдВрд░рдЪрдирд╛) рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, aufs_mount рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдорд╛рд░реА рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдВрдЯреНрд░реА рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ aufs_fill_sb рдлрд╝рдВрдХреНрд╢рди рдЗрд╕реЗ рдмрдирд╛рдПрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, aufs_fill_sb рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реИ, рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
static int aufs_fill_sb(struct super_block *sb, void *data, int silent) { struct inode *root = NULL; sb->s_magic = AUFS_MAGIC_NUMBER; sb->s_op = &aufs_super_ops; root = new_inode(sb); if (!root) { pr_err("inode allocation failed\n"); return -ENOMEM; } root->i_ino = 0; root->i_sb = sb; root->i_atime = root->i_mtime = root->i_ctime = CURRENT_TIME; inode_init_owner(root, NULL, S_IFDIR); sb->s_root = d_make_root(root); if (!sb->s_root) { pr_err("root creation failed\n"); return -ENOMEM; } return 0; }
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо
рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ
рднрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рд╣реИ? рдЖрдорддреМрд░ рдкрд░, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдбрд┐рд╕реНрдХ рд╡рд┐рднрд╛рдЬрди рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рд╕реНрдерд╛рди рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ) рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ, рдЬреИрд╕реЗ рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░, рдореБрдлреНрдд / рдХрдмреНрдЬреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдХреА рд╕рдВрдЦреНрдпрд╛, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕реНрдХрд░рдг, рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП "рдкреЙрдЗрдВрдЯрд░", рд╡рд╣ рдЬрд╛рджреБрдИ рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд╛рд▓рдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдЯреАрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИ, рдФрд░ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ, рдареАрдХ рд╣реИ, рдЕрдиреНрдп рдбреЗрдЯрд╛ред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдиреАрдЪреЗ рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ)ред рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд╕рдорд╛рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд╣рдо рдЗрд╕реЗ рд░реВрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдореИрдЬрд┐рдХ рдирдВрдмрд░ рдФрд░ рдбреЗрдВрдЯреНрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ (рд╡рд╣реА рдЬреЛ рдорд╛рдЙрдВрдЯ_рдмреЗрдб рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ s_op рдлрд╝реАрд▓реНрдб рдореЗрдВ, рд╣рдо рд╕реБрдкрд░_рдСрдкрд░реЗрд╢рдиреНрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ - рдпреЗ
рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рдХреЗ "рдХреНрд▓рд╛рд╕ рддрд░реАрдХреЗ" рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдПрдХ рдЕрдиреНрдп рд╕рдВрд░рдЪрдирд╛ рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред
рдпрд╣рд╛рдБ рдореИрдВ рдПрдХ рдФрд░ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХрд░реВрдБрдЧрд╛, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЛ C рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рднрд╛рдЧ рдкрд░ рд╡рд┐рднрд┐рдиреНрди OOP рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рднрд╛рд╖рд╛ рдХреЗ рднрд╛рдЧ рдкрд░ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ OOP рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реБрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╡рд╛рд▓реА рд╕рдВрд░рдЪрдирд╛рдПрдБ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ рдХрд░реНрдиреЗрд▓ рдореЗрдВ - рдпрд╣ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣реБрд░реВрдкрддрд╛ (рдЙрд░реНрдлрд╝ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ) рдХреЛ рдЙрдкрд▓рдмреНрдз рд╕рд╛рдзрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЗрд╕рдХреЗ "рддрд░реАрдХреЛрдВ" рдкрд░, рд╣рдо рдЕрдм рд╕реБрдкрд░_рдСрдкрд░реЗрд╢рдВрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ, рд╣рдо рдЗрд╕рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдХреНрд╖реЗрддреНрд░ - put_super рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦреЗрдВрдЧреЗред Put_super рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдХреЗ "рд╡рд┐рдзреНрд╡рдВрд╕рдХ" рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗ:
static void aufs_put_super(struct super_block *sb) { pr_debug("aufs super block destroyed\n"); } static struct super_operations const aufs_super_ops = { .put_super = aufs_put_super, };
рдЬрдмрдХрд┐ aufs_put_super рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧреА рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдФрд░ рд▓рд╛рдЗрди рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред Aufs_put_super рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд▓_рдмреНрд▓реЙрдХ_рд╕реБрдкрд░ (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдХреЗ рдЕрдВрджрд░ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЕрд░реНрдерд╛рдд рдЬрдм рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдм рд╣рдорд╛рд░реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рдВрдХреНрд╢рди, aufs_fill_sb рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдВрдЯреНрд░реА рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХрд╛ рдЗрдирдХреЛрдб рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрдирдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рд╢рд╛рдпрдж рдлрд╝рд╛рдЗрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ (рдлрд╝рд╛рдЗрд▓, рдлрд╝реЛрд▓реНрдбрд░, рд╡рд┐рд╢реЗрд╖ рдлрд╝рд╛рдЗрд▓, рд▓реЙрдЧ, рдЖрджрд┐) рдХреЛ рдЗрдиреЛрдб рджреНрд╡рд╛рд░рд╛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реБрдкрд░_рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде, рдЗрдиреЛрдб рд╕рдВрд░рдЪрдирд╛ рдпрд╣ рджрд░реНрд╢рд╛рддреА рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред Inode рдирд╛рдо рдЗрдВрдбреЗрдХреНрд╕ рдиреЛрдб рд╕реЗ рдЖрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рдбрд┐рд╕реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдбрд┐рд╕реНрдХ рдкрд░ рдЗрдиреЛрдб рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕рдВрдХреЗрдд рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ), рд╡рд┐рднрд┐рдиреНрди рдПрдХреНрд╕реЗрд╕ рдлрд╝реНрд▓реИрдЧ (рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ / рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз), рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рд▓рд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рдирд┐рд░реНрдорд╛рдг / рд╕рдВрд╢реЛрдзрди / рдПрдХреНрд╕реЗрд╕ рд╕рдордп рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рдЪреАрдЬреЗрдВ (рдКрдкрд░ рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ)ред
рдЬрдм рд╣рдо рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдбрдореА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЗрдиреЛрдб рднрд░рддреЗ рд╣реИрдВред рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рд░реНрдорд╛рдг / рд╕рдВрд╢реЛрдзрди / рдкрд╣реБрдВрдЪ рдХреЗ рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрд╡рд╛рдореА рдХреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдзрд┐рдХрд╛рд░ рдХреЛ рдХрд░реНрдиреЗрд▓ рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ (рдХреЙрд▓ inode_init_owner рдлрд╝рдВрдХреНрд╢рди)ред рдЦреИрд░, рдЕрдВрдд рдореЗрдВ рдЬрдбрд╝ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдПрдХ рдбреЗрдВрдЯреНрд░реА рдмрдирд╛рдПрдВред
рдлреНрд░реЗрдо рдХреА рдЬрд╛рдБрдЪ
рд╣рдорд╛рд░реЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдХрдВрдХрд╛рд▓ рддреИрдпрд╛рд░ рд╣реИ, рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдбреНрд░рд╛рдпрд╡рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд▓реЛрдб рдХрд░рдирд╛, рдПрдХ рдирд┐рдпрдорд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рд▓реВрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдПрдХ "рдбрд┐рд╕реНрдХ" рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рднреМрддрд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдлрд╝рд╛рдЗрд▓ (рдбрд┐рд╕реНрдХ рдЫрд╡рд┐) рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рддрдХ рдПрдХ рдбрд┐рд╕реНрдХ рдЫрд╡рд┐ рдмрдирд╛рдПрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
touch image
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЖрд░реЛрд╣ рдмрд┐рдВрджреБ (рд░реВрдЯ) рд╣реЛрдЧреА:
mkdir dir
рдЕрдм рдЗрд╕ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдорд╛рд░реА рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░реЗрдВ:
sudo mount -o loop -t aufs ./image ./dir
рдпрджрд┐ рдСрдкрд░реЗрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реБрдЖ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдореЗрдВ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрджреЗрд╢ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд░реЗрдВ:
sudo umount ./dir
рдФрд░ рдлрд┐рд░ рд╕реЗ рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
рд╣рдо рд╕рддрд╣реА рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдПред рд╣рдордиреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рднреА рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдорд╛рдЙрдВрдЯ рдФрд░ рдЕрдирдорд╛рдЙрдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдбрдВрдмрд▓ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реАрдбреА рдХреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрдбрд╝ рддрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╣рдо рдбрд┐рд╕реНрдХ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдо рдбрд┐рд╕реНрдХ рдкрд░ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдбрд┐рд╕реНрдХ рд╕реЗ рд╕реБрдкрд░рдмреНрд▓реЙрдХ рдФрд░ рдЗрдиреЛрдбреНрд╕ рдкрдврд╝рдирд╛ рд╕реАрдЦреЗрдВред
рд╕рдВрджрд░реНрдн рдФрд░ рд╕рдВрджрд░реНрдн
- рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдХреЛрдб github рдкрд░ рд╣реИ
- рдЗрддрдирд╛ рд╕рдордп рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдПрдХ рднрд╛рд░рддреАрдп рдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрдХ рд╕рд░рд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдЦрд╛ рдерд╛, рдЙрд╕рдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛
- рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╢реБрд░реБрдЖрддреА рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдХрд░реНрдиреЗрд▓ рд╕реНрд░реЛрддреЛрдВ рдкрд░ рднреЗрдЬрдирд╛ рдмрд╣реБрдд рд╢реИрдХреНрд╖рдгрд┐рдХ рдирд╣реАрдВ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ), рд▓реЗрдХрд┐рди рдореИрдВ рд╕рднреА рдХреЛ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рд░рдореНрдл рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрддреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рд░реИрдореНрдл рдПрдХ рдбрд┐рд╕реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред