init рдпреВрдирд┐рдХреНрд╕ рдХреА рддрд░рд╣ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкрд╣рд▓реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ
init - рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
init - рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЙрдкрдпреЛрдХреНрддрд╛) рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЬрдирдХ рд╣реИред
рдорд╛рдирдХ / sbin / init рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ / etc / inittab рдкрдврд╝рддрд╛ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдИ "рд░рдирд▓реЗрд╡рд▓" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╛рди рдирд╛рдо рдХреА
init рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЛ рдорд╛рдирдХ / sbin / init рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ
рд╣рдо рдЗрд╕ рдЕрд╡рд╕рд░ рдХреЛ рд▓реЗрдВрдЧреЗ рдФрд░ рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ /boot/grub/menu.lst рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ
рд╢реАрд░реНрд╖рдХ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдФрд░ рдХрд╕реНрдЯрдо рдЗрдирд┐рдЯ
рд░реВрдЯ (hd0,1)
рдХрд░реНрдиреЗрд▓ / рдХреНрд▓рд┐рдирдХреНрд╕ /vmlinuz-2.6.26-1-686 рд░реВрдЯ = / dev / hda2 init = / linux / init
initrd /linux/initrd.img-2.6.26-1-686
Init рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдХреМрди рд▓реЗрддрд╛ рд╣реИ? рдХрднреА-рдХрднреА рдПрдореНрдмреЗрдбреЗрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрддреЗ рд╣реИрдВ - рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреВрд░реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, init рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдорд╛рди рдореЗрдВ рд╣реЛрддреА рд╣реИ - рдореИрдВ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд Xameleon рдкреНрд░рдгрд╛рд▓реА рдХреА init рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ рдЖрдк рднреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?
рдХреИрд╕реЗ рдореИрдВрдиреЗ рдорд╛рдирдХ / sbin / init рдХреЛ Xameleon init рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред (рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рд╡рд┐рд╡рд░рдг)
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдерд╛рдкрд┐рдд gcc рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЖрдзреБрдирд┐рдХ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЖрдЗрдП рд╕рд░рд▓рддрдо рдореЗрдХрдлрд╛рдЗрд▓ рд▓рд┐рдЦреЗрдВ:
рдХрд╛рд░реНрдпрдХреНрд░рдо = init
рд╕рд░рдХ = init.cc
LDFLAGS + = -рд╕реНрдЯрд┐рдХ
Libs + = -lc
рд╕рднреА:
g ++ -D POSIX -D LINUX $ (CFLAGS) $ (SRCS) $ (LIBS) $ (LDFLAGS)-in init
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рд▓реЗрдЦ рдХреЛ рдЖрдЧреЗ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ init рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЧрд┐рд░рдЧрд┐рдЯ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЗрдирд┐рдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ init рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдПрдХрдорд╛рддреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕рдореЗрдВ рдХрдИ рдХрдорд╛рдВрдбреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЖрджрд┐рдо рджреБрднрд╛рд╖рд┐рдпрд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рд▓реЗрдЦ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╕реЗ рдкреАрдбрд╝рд╛ рд╣реБрдИ рдереА рдХрд┐ рдЗрдирд╛рдЗрдЯ рдХреЛрдб рдХреЛ рдХрд┐рд╕ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд░рдЦрд╛ рдЬрд╛рдПред рдмрд╣реБрдд рдЕрдзрд┐рдХ рдФрд░ рджрд░реНрджрдирд╛рдХ рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХреЗ рдмрд╛рдж, рд╡рд┐рдХрд▓реНрдк
рдЯреВ рдХреНрд▓реЙрдЬрд╝ рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛ред
рдЗрд╕ рд╕реНрд░реЛрдд рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╕рд░рд▓ рд╣реИ - рдпрд╣ рдЧрд┐рд░рдЧрд┐рдЯ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрд┐рд░рдЧрд┐рдЯ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ - рдХреНрдпреЛрдВ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЕрдкрдиреЗ init рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА? рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдЧрддрддрд╛ рдкрд░реАрдХреНрд╖рдгред
typedef struct typeCommandEntry { const char * szCmd; int nLength; int (*fHandler)( int argc, char * argv[], char * envp[] ); const char * szHelpString; } typeCommandEntry;
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╛рдирдХ рд╢реЗрд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
/ # рдирд┐рд╖реНрдкрд╛рджрди / рдмрд┐рди / рд╢
рдХрдВрдкреНрдпреВрдЯрд░ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
/ # рдирд┐рд╖реНрдкрд╛рджрди / sbin / рдкрдбрд╝рд╛рд╡
рдХреЛрдб рдореЗрдВ рдЦрд░рд╛рдм рдЕрдВрдЧреНрд░реЗрдЬреА рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ - рд░реВрд╕реА рдореЗрдВ рд╕рдВрджреЗрд╢ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди init рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЪрд░рдг рдореЗрдВ, рд░реВрд╕реА рдЪрд░рд┐рддреНрд░ рдЬрдирд░реЗрдЯрд░ рдЕрднреА рддрдХ рд▓реЛрдб рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ - рдпрд╣ рдкрд╣рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреА рдЪрд┐рдВрддрд╛ рд╣реИред
рдореИрдВ рдкреИрдЪ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВред
FreeBSD рдХреЗ рддрд╣рдд рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреАред рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ - рд▓рд┐рдЦреЗрдВред
рдбрд╛рдЙрдирд▓реЛрдб xameleon init рд╕реНрд░реЛрдд рдХреЛрдб
http://narod.ru/disk/26585438001/xam_init.tgz.htmlрдЕрдЪреНрдЫрд╛ рдмрдирд╛ рд▓реЛред