/var/run
рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд
/run
to
/run
, etc)ред
рдЬрдм рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХреА, рддреЛ рдореБрдЭреЗ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рдереА рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдмреВрдЯ рд╣реЛрдиреЗ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдиреЗ рдореБрдЭреЗ рдмреВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (
/etc/inittab, /etc/rc*, /etc/init.d/*, ...
) рдФрд░ рдЙрдирдХреЗ рдХреЙрдиреНтАНрдлрд╝рд┐рдЧрд░реЗрд╢рди (
/etc/sysconfig/*, /etc/cond.f/*, ...
) рдХреЗ рд╕реНрд░реЛрддреЛрдВ рддрдХ
/etc/inittab, /etc/rc*, /etc/init.d/*, ...
/etc/sysconfig/*, /etc/cond.f/*, ...
)ред рдпрд╣ рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдЧрдВрднреАрд░ рдЖрдХрд╛рд░ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ - рдЙрдиреНрд╣реЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрд╛ред рд▓реЗрдХрд┐рди рдЙрди рджрд┐рдиреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдкреВрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдерд╛ рдХрд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдПрдХ рдЬрдЯрд┐рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдереА, рдФрд░ рдмреВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЬрдм рд░реЗрдбрд╣реИрдЯ рдХреЛ рдЖрдЦрд┐рд░рдХрд╛рд░ рдореБрдЭреЗ (2001) рдорд┐рд▓рд╛, рддреЛ рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдПрд▓рдПрдлрдПрд╕ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рддрд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рд╕реНрд╡рдпрдВ рдмреВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреА рдкрдбрд╝реА, рдФрд░ рдлрд┐рд░ рд╕рдЪреНрдЪрд╛рдИ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдИ: рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ!
рдЕрдкрдиреЗ рд╡рд┐рддрд░рдг (PoWeR рд▓рд┐рдирдХреНрд╕) рдкрд░ 2.5 рд╕рд╛рд▓ рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ Gentoo рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ (рдореЗрд░реЗ рдкрд╛рд╕ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рдирд╣реАрдВ рдерд╛)ред рдЬреЗрдВрдЯреВ рдмреВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реАрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рднрдпрднреАрдд рдерд╛! рдЙрдирдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдкреБрд░рд╛рдиреЗ рд░реЗрдбрд╣реИрдЯ рд╕реЗ рднреА рдЕрдзрд┐рдХ рдереАред рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдХреЗ рдмрд╛рдж, рдХрд╛рд░рдг рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛: рдмреВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдХ рд╣реА рд╕реЗрдЯ рд▓рд╛рдЗрд╡рд╕реАрдбреА рдФрд░ рдирд┐рдпрдорд┐рдд рдкреНрд░рдгрд╛рд▓реА рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░рд╛рдХреНрд╖рд╕ред рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВрдиреЗ Gentoo рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рддреЛ рдореИрдВрдиреЗ PoWeR рд▓рд┐рдирдХреНрд╕ рд╕реЗ рдмреВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдорд╛рдирдХ Gentoo рд╡рд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдпрд╛рдиреА, рдореИрдВ рдХреЗрд╡рд▓ Gentoo рд╕реЗ рдкреЛрд░реНрдЯреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)ред рдФрд░ рддрдм рд╕реЗ, 4 рдФрд░ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрд░реЗ рд╣реЛрдо рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдФрд░ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред
рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ
рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЖрдХрд╛рд░ (рд╕рднреА рдПрдХ рд╕рд╛рде) 308 рд░реЗрдЦрд╛рдПрдБ, 8KB:
$ wc 1 3 lib.sh 201 769 5855 1 78 272 1726 3 29 118 771 lib.sh 308 1159 8352
рд╡рд┐рдкрдХреНрд╖:
- рд╕рднреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ - рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЛрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм ALSA рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреИрдХреЗрдЬ рдХреЗрд╡рд▓
/etc/init.d/alsasound, /etc/conf.d/alsasound, /etc/modules.d/alsa
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдкреЗрди рдХреЗ/etc/runit/1
рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред - рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╣рд░ рдЪреАрдЬ рдХрд╛ рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ RAID рдФрд░ LVM рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ - рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
- рдЖрдкрдХреЛ рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред Gentoo рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдЖрдорддреМрд░ рдкрд░ (рдЕрдкреНрд░рдпреБрдХреНрдд)
/etc/init.d/*
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦрддрд╛ рд╣реВрдВ рдФрд░ рдпрджрд┐ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд▓рдЧрднрдЧ рд╣рд░ рджреЛ рд╕рд╛рд▓ рдореЗрдВ рдЙрдарддреА рд╣реИред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рд╕рднреА рдПрдХ рдЫреЛрдЯреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЙрдирдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП; рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
- рдШрд░реЗрд▓реВ рдХрдВрдкреНрдпреВрдЯрд░ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ 11.5 рд╕рд╛рд▓ рддрдХ рдореБрдЭреЗ рдФрд░ рдореЗрд░реЗ рджреЛрд╕реНрддреЛрдВ рдХреА рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред
- рд▓рд┐рдирдХреНрд╕ рдЖрд░рдВрднреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ред рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреБрдирд┐рдпрд╛рджреА рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рднреА рд╡рд┐рддрд░рдгреЛрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред
- рд╕рд┐рд╕реНрдЯрдо рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЧрддрд┐ рджреЗрдВред рдореЗрд░реА рдШрд░реЗрд▓реВ рдорд╢реАрди 11 рд╕реЗрдХрдВрдб рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдпреВрдЬрд░ рдореЛрдб (рдЧреЗрдЯреА, рд╕рд┐рд╕рд▓реЙрдЧ, рдХреНрд▓реЙрдЬ, рдПрдХрдкреАрдб, рдбреЗрдВрд╕реНрдХреИрдЪреЗ, рдЯрд┐рдирд┐рдбрди, рдЬреАрдкреАрдПрдо) рдХреЗ рд╕рд╛рде 6 рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЛрдб рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЗрдирд┐рдЯрдВрдЧ рд╢реИрд▓реА рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ - рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкреАрдврд╝реА рдХреЗ рдХрд╛рд░рдг рдкреНрд░рднрд╛рд╡ рдмрд▓реНрдХрд┐ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИред Initng рдкрд╛рд░рдВрдкрд░рд┐рдХ, рдмреНрд▓реЛрдЯреЗрдб рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдХрдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред :)
рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рди рдХреЗрд╡рд▓ рдордЬрд╝рдмреВрддреА рд╕реЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВ:
- рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЖрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдХ рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдмреНрд▓реЙрдХ рдХреЗ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд┐ рдХреНрдпрд╛ рдмреНрд▓реЙрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВред
- рдпрджрд┐ рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВ, рддреЛ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рднреА рдмрдЯрди рдХреЗ рд▓рд┐рдП 5 рд╕реЗрдХрдВрдб рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдмреИрд╢ рд╢реБрд░реВ рд╣реЛ рд╕рдХреЗ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХреЗред рдмреИрд╢ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдпрд╛ рддреЛ рд▓реЛрдб рдЬрд╛рд░реА рд░рдЦрдиреЗ рдпрд╛ рд░рд┐рдмреВрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХреБрдЫ рднреА рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд╛рдЙрдирд▓реЛрдб рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ред
- рд╕реНрдХреНрд░реАрди рдХреЛ рд▓реЛрдб рдФрд░ рдбрд┐рд╕рдПрдмрд▓ рдХрд░рддреЗ рд╕рдордп рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓реЙрдЧ (рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдХреЗ рдирд╛рдо рдФрд░ рдЙрд╕рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА) рдХреЛ рдлрд╛рдЗрд▓реЛрдВ
/var/log/boot, /var/log/shutdown
рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб / рд╢рдЯрдбрд╛рдЙрди рдХреИрд╕реЗ рд╣реБрдЖред
рдмреВрдЯ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг
+ UDEV
+ рдореЙрдбреНрдпреВрд▓
+ SYSCTL
+ MTAB
- рдорд╛рдЙрдВрдЯ
++ рд╕реНрд╡рдкрди-рдП
++ рдЧрд▓рдд
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ рдХреЛрдб: 1
++ рдорд╛рдЙрдВрдЯ-рдирд╛рдЯреЛрдХрд╛, рдиреЛрдирдлреНрд╕, рдиреЛрдкреНрд░реЛрдХреНрд╕, рдиреЙрдирдХреЙрдлреНрд╕, рдиреЛрд╕рдВрдмрдлреНрд╕, рдиреЛрд╢рдо
... рдЦреЛрд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдХрд┐рд╕реА рднреА рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдПрдВ ...
+ CLEANTMP
+ RANDOMSEED
+ HWCLOCK
+ рд╕реЗрдВрд╕рд░
+ LOADKEYS
+ рдзреНрд╡рдирд┐
+ HOST_NAME
+ рдЙрдиреНрдирдд рдХрд░реЗрдВ
+ рдиреЗрдЯрд╡рд░реНрдХ
+ рд░рди
+ DMESG
RUNIT
SysVinit рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ Runit рд╕реЗ рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ ред рд░рдирд┐рдЯ
/etc/inittab
рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдПрдХ рд╕рд░рд▓ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
- рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рд╕реНрдХреНрд░рд┐рдкреНрдЯ
/etc/runit/1
ред рдЙрдирдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред - рд╕реНрдХреНрд░рд┐рдкреНрдЯ
/etc/runit/1
рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ/etc/runit/2
рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реЗрд╡рд╛рдУрдВ (syslog, getty, ssh, apache, ...) рдХреЛ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред - рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдмрдВрдж / рд░рд┐рдмреВрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ
/etc/runit/3
рдЬрд┐рд╕реЗ рд╢рдЯрдбрд╛рдЙрди рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ, рдЕрдирдорд╛рдЙрдВрдЯ рдбрд┐рд╕реНрдХ, рдЖрджрд┐)ред
рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдЙрд╕реА рд╢реИрд▓реА рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SysVinit рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
SysVinit рд╕реЗ рд░рдирд┐рдВрдЧ / etc / runit / {1,2,3}: / etc / inittab
рдЖрдИрдбреА: 3: initdefault:
rc :: bootwait: / etc / runit / 1
l0: 0: Wait: / bin / sh -c '/ etc / runit / 3; рдирд┐рд╖реНрдкрд╛рджрд┐рдд / sbin / рдкрдбрд╝рд╛рд╡ '
l3: 3: рдПрдХ рдмрд╛рд░: / etc / runit / 2
l6: 6: рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ: / рдмрд┐рди / рд╢-рд╕реА '/ рдЖрджрд┐ / рд░рдирд┐рдЯ / 3; рдирд┐рд╖реНрдкрд╛рджрд┐рдд / sbin / рд░рд┐рдмреВрдЯ '
ca: 12345: ctrlaltdel: / sbin / shutdown -r рдЕрдм
рд╕реЗрд╡рд╛рдПрдВ
рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (getty, syslog, mysql, рдЖрджрд┐) рдореИрдВ рдПрдХ рд╣реА рд░рдирд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдбреЗрдореЛрдВрдЯреЛрд▓рд╕ рдХрд╛ рд╕рд┐рд░реНрдл рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ)ред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╖рдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди / рд╢рдЯрдбрд╛рдЙрди рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб
рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп: /etc/runit/lib.sh
#!/bin/bash startlog() { exec 3>&1 4>&2 1> >(tee $1) 2>&1; } stoplog() { exec 1>&3- 2>&4-; } wanna() { echo -e "\a... press any key in $2 seconds to $1 ..." read -t $2 -n 1 -s </dev/console } emergency() { if wanna "open shell" 5; then bash --norc </dev/console &>/dev/console if [[ "$0" == "/etc/runit/1" ]] && wanna "reboot now" 3; then exit 100 fi fi } trace() { trap 'ERR=$?' ERR; set -Ex; $1 2>&1; set +Ex; trap ERR; } 2>&- try() { local output=$( trace $1 ) if [[ "$output" =~ "ERR=" ]]; then echo -e "\e[1m\e[31m - \e[37m$1\e[0m" echo "$output" | sed $'s/.*ERR=\(.*\)/\a\033[36mEXIT CODE: \\1\033[0m/g' emergency else echo -e "\e[1m\e[32m + \e[37m$1\e[0m" fi }
Startup: / etc / runit / 1
#!/bin/bash CONSOLE() { dmesg -n 1 } INIT() { mount -n -t proc -o "noexec,nosuid,nodev" none /proc mount -n -t sysfs -o "noexec,nosuid,nodev" none /sys mount -n -t tmpfs -o "mode=0755,nosuid,nodev" none /run mkdir /run/lock chmod 0775 /run/lock chown root:uucp /run/lock if grep -qs devtmpfs /proc/mounts; then mount -n -t devtmpfs -o "remount,exec,nosuid,mode=0755,size=10M" none /dev elif grep -qs devtmpfs /proc/filesystems; then mount -n -t devtmpfs -o "exec,nosuid,mode=0755,size=10M" none /dev else mount -n -t tmpfs none /dev busybox mdev -s fi # needed to run startlog (in /etc/runit/lib.sh) before UDEV ln -snf /proc/self/fd /dev/fd # extra mountpoints in /dev mkdir -p /dev/pts mount -n -t devpts -o "noexec,nosuid,gid=5,mode=0620" none /dev/pts mkdir -p /dev/shm mount -n -t tmpfs -o "noexec,nosuid,nodev" none /dev/shm } UDEV() { echo "" >/proc/sys/kernel/hotplug udevd --daemon udevadm trigger --type=subsystems --action=add udevadm trigger --type=devices --action=add udevadm settle --timeout=30 } HWCLOCK() { hwclock --hctosys --localtime && touch /run/init.hwclock } MODULES() { true # bash doesn't allow empty functions # modprobe -q nvidia NVreg_DeviceFileMode=432 NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=27 NVreg_ModifyDeviceFiles=1 # modprobe -q -a vmmon vmci vsock vmblock vmnet # modprobe -q -a vboxdrv vboxnetflt vboxnetadp } FSCK() { fsck -A -p -C0 -T -t noafs,nocifs,nocoda,nodavfs,nofuse,nofuse.sshfs,nogfs,noglusterfs,nolustre,noncpfs,nonfs,nonfs4,noocfs2,noshfs,nosmbfs,noopts=_netdev } REMOUNT() { mount -n -o remount,rw / grep -v ^rootfs /proc/mounts > /etc/mtab for i in $(cut -d ' ' -f 2 /etc/mtab | grep -vx /); do mount -o remount "$i" done } LOCALMOUNT() { mount -at noproc,noafs,nocifs,nocoda,nodavfs,nofuse,nofuse.sshfs,nogfs,noglusterfs,nolustre,noncpfs,nonfs,nonfs4,noocfs2,noshfs,nosmbfs -O no_netdev swapon -a } SYSCTL() { sysctl -p /etc/sysctl.conf } MIGRATERUN() { rm -rf /var/lock ln -s /run/lock /var/lock rm -rf /var/run ln -s /run /var/run } UTMPWTMP() { > /var/run/utmp chgrp utmp /var/run/utmp chmod 0664 /var/run/utmp [ -e /var/log/wtmp ] || cp -a /var/run/utmp /var/log/wtmp } CLEANTMP() { rm -f /tmp/.X*-lock /tmp/esrv* /tmp/kio* /tmp/jpsock.* /tmp/.fam* rm -rf /tmp/.esd* /tmp/orbit-* /tmp/ssh-* /tmp/ksocket-* /tmp/.*-unix mkdir -p /tmp/.{ICE,X11}-unix chmod 1777 /tmp/.{ICE,X11}-unix } RANDOMSEED() { mkdir -p /var/lib/misc [ -f /var/lib/misc/random-seed ] && cat /var/lib/misc/random-seed >/dev/urandom rm -f /var/lib/misc/random-seed local psz=$(( $(sysctl -n kernel.random.poolsize 2>/dev/null || echo 4096) / 4096 )) (umask 077; dd if=/dev/urandom of=/var/lib/misc/random-seed count=$psz 2>/dev/null) } SENSORS() { sensors -s } LOADKEYS() { # Commands for TTY initialization like 'setfont' and 'echo -ne "\033(K"' # shouldn't be executed in /etc/runit/1 because: # - which TTYs should be initialized may depend on current runlevel # - if TTY state become broken (for ex. after 'cat /dev/urandom'), # then after logout and login TTY state should be reinitialized # these commands should be executed before each getty invocation instead. kbd_mode -u loadkeys koi2 # -q windowkeys # loadkeys -q -u ru4 dumpkeys -c koi8-r | loadkeys --unicode } SOUND() { alsactl -f /etc/asound.state restore && touch /run/init.alsa } HOST_NAME() { # Here you should set only "host" part of your fqdn. # Add this line to /etc/hosts to configure FQDN: # YOUR.IP.ADDR.ESS YOUR_HOSTNAME.DOMAIN.TLD YOUR_HOSTNAME hostname YOUR_HOSTNAME } NETWORK() { ip link set lo up iptables-restore </etc/iptables #ip link set eth0 up #ip addr add 192.168.1.2/24 dev eth0 #ip route add default via 192.168.1.1 dev eth0 } RUNIT() { # Set default action (shutdown or not) if Ctrl+Alt+Del pressed, # but /etc/runit/ctrlaltdel don't setup /etc/runit/stopit. touch /etc/runit/stopit chmod 100 /etc/runit/stopit # Set default action on shutdown (halt or reboot) if: # - /etc/runit/1 crash or exit 100 # - /etc/runit/2 exit non 111 # - Ctrl+Alt+Del pressed, but /etc/runit/ctrlaltdel don't setup /etc/runit/reboot touch /etc/runit/reboot chmod 100 /etc/runit/reboot # Set runlevel to: # - single if kernel has param: S # - RUNLEVELNAME if kernel has param: runlevel=RUNLEVELNAME # - default if kernel has no params or unable to set requested runlevel grep -q '\(^\| \)S\( \|$\)' /proc/cmdline && runlevel='single' runsvchdir ${runlevel:-default} || runsvchdir default } SEND_MAIL() { echo -e "To: root\nSubject: reboot at $(date)" | sendmail -t } DMESG() { # Create an 'after-boot' dmesg log dmesg > /var/log/dmesg chmod 640 /var/log/dmesg } PATH=/sbin:/usr/sbin:/bin:/usr/bin trap ':' INT QUIT TSTP . /etc/runit/lib.sh try CONSOLE try INIT startlog /run/boot.log try UDEV try HWCLOCK #try MODULES # Enable & configure this if you have modules support in kernel FSCK try REMOUNT try LOCALMOUNT try SYSCTL try MIGRATERUN try UTMPWTMP try CLEANTMP try RANDOMSEED #try SENSORS # Enable this if you have configured lm_sensors #try LOADKEYS # Enable & configure this for non-english keyboard layout #try SOUND # Enable this if you have sound card (also in /etc/runit/3!) try HOST_NAME # Do not forget to configure this try NETWORK # Do not forget to configure this try RUNIT #try SEND_MAIL # Enable this if you wanna receive notification email on reboot try DMESG stoplog mv /run/boot.log /var/log/boot # Select next stage (exit 0 for stage 2, exit 100 for stage 3): exit 0
рд╢рдЯрдбрд╛рдЙрди: / etc / runit / 3
#!/bin/bash CONSOLE() { chvt 1 # Required in case getty was last process in this console and it leave # console in broken state (\n work as <LF> without <CR>). { stty sane ; echo ; } >/dev/console } TERM() { # Give a chance for all processes for clean exit. # This also will kill all 'runsvdir' and signal all 'runsv' to exit. killall5 -15 || [ $? -eq 2 ] } HWCLOCK() { test -f /run/init.hwclock && hwclock --systohc --localtime --noadjfile } SERVICES() { sv force-stop /var/service/* &>/dev/null || : } SOUND() { test -f /run/init.alsa && alsactl -f /etc/asound.state store } RANDOMSEED() { local psz=$(( $(sysctl -n kernel.random.poolsize 2>/dev/null || echo 4096) / 4096 )) (umask 077; dd if=/dev/urandom of=/var/lib/misc/random-seed count=$psz 2>/dev/null) } NETWORK() { ip link set group default down } WTMP() { halt -w } KILL() { # Goodbye to everybody... killall5 -9 || [ $? -eq 2 ] } UMOUNT() { sync; sync # Unmounting loopback devices first: for d in $(grep '^/dev/loop' /proc/mounts | cut -d ' ' -f 2 | tac); do eval "umount -d -r -f $'$d'" done # Unmounting all real filesystems except root: for d in $(egrep -v '^\S+ (/|/dev|/dev/.*|/proc|/proc/.*|/run|/sys|/sys/.*) ' /proc/mounts | cut -d ' ' -f 2 | tac); do eval "umount -r -f $'$d'" done # Switching off swap umount -a -t tmpfs 2>/dev/null || : swapoff -a } PATH=/sbin:/usr/sbin:/bin:/usr/bin trap ':' INT QUIT TSTP . /etc/runit/lib.sh try CONSOLE startlog /var/log/shutdown try TERM try HWCLOCK try SERVICES #try SOUND # Enable this if you have sound card try RANDOMSEED try NETWORK try WTMP try KILL try UMOUNT stoplog