рдореИрдВрдиреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдФрд░ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдмреЗрдпрд░ рдмреЛрди рдПрдХреНрд╕ 86 рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЧрдарди рджреЛрдиреЛрдВ рдХреЗ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрд╕рдВрдзрд╛рди рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ред рдлрд┐рд▓рд╣рд╛рд▓, рдореЗрд░реА рд╣реИрдХ рдХреЛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рднреА рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдХрд░реНрдиреЗрд▓ рд╣реИ рдЬреЛ рдорд▓реНрдЯреАрдмреВрдЯ (GRUB) рд╕реЗ рдмреВрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдореЛрдб рдореЗрдВ рдХрдИ рдмреЗрдХрд╛рд░ рдХрд╛рд░реНрдп рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдирдпрд╛ рд▓рд┐рдирдХреНрд╕ рд▓рд┐рдЦрдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ 5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕рдкрдирд╛ рджреЗрдЦрд╛ рдерд╛) рдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдирд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВред рдЬреЛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рд╡рд╣ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛ рдХрд┐ i386 рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╕реНрддрд░ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреИрд╕реЗ рдЕрдкрдирд╛ рдЬрд╛рджреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рд╛рдЗрдк рд░рд╕реНрдЯ рдХреЛ рдЦреЛрджрддреЗ рд╣реИрдВред
рдЕрдкрдиреЗ рдиреЛрдЯреНрд╕ рдореЗрдВ рдореИрдВ рди рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рдЧреНрд░рдВрдереЛрдВ (рдЙрдиреНрд╣реЗрдВ рдЧрд┐рдЯрд▓реИрдм рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ рдирдВрдЧреЗ рд╕рд┐рджреНрдзрд╛рдВрдд (рдЗрд╕реЗ рдХрдИ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рд░рд╛рд╕реНрддрд╛ рднреА рдЬреЛ рдореИрдВ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ-рд╕рдордЭреЗ рдЬрд╡рд╛рдм рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛ рдерд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рдХрд░реНрдиреЗрд▓ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ, рдЗрд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ред
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рд╕реВрдЪрдирд╛рдУрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд░рдирд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╕рдорд╛рди рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рд╛рдордЧреНрд░реА рдФрд░ рдмреНрд▓реЙрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЙрдиреНрд╣реЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдПрдХ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд╕рднреА рд╕реНрд░реЛрдд (рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ), рдореИрдВ рдЕрднреА рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред
рд╕рд╛рд╣рд┐рддреНрдп рдФрд░ рд╕реНрд░реЛрдд
рдмреЗрд╢рдХ , рдореБрдЭреЗ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдУрдПрд╕рдбреАрд╡реА рд╕рдВрд╕рд╛рдзрди рд╕реЗ рдорд┐рд▓рд╛, рд╡рд┐рдХреА рд╕реЗ рдФрд░ рдордВрдЪ рд╕реЗ рджреЛрдиреЛрдВред рджреВрд╕рд░реЗ, рдореИрдВ рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдлрд┐рд▓рд┐рдк рдУрдкрд░рдореИрди рдХрд╛ рдирд╛рдо рд▓реВрдВрдЧрд╛ - рдЬрдВрдЧ рдФрд░ рд▓реЛрд╣реЗ рдХреЗ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реАред
рдХреБрдЫ рдмрд┐рдВрджреБ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЬрд╛рд╕реВрд╕реА рдХрд░рддреЗ рд╣реИрдВ, рдорд┐рдирд┐рдХреНрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рд╛рд╣рд┐рддреНрдп рдХреА рдорджрдж рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рддреЗрдирдмрд╛рдо рдХреА рдкреБрд╕реНрддрдХ " рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо " ред рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, "рд░реЙрдмрд░реНрдЯ рд▓рд╡ рдкреБрд╕реНрддрдХ" рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ред рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг ред " X86 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рдВрдЧрдарди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдард┐рди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ " Intel 64 рдФрд░ IA-32 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдореИрдиреБрдЕрд▓ рд╡реЙрд▓реНрдпреВрдо 3 (3A, 3B, 3C рдФрд░ 3D): рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрд╛рдЗрдб " рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреА рд╕рдордЭ рдореЗрдВ, рд▓реЗрдЖрдЙрдЯ ld, llvm, nm, nasm, рдореЗрдХ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рд╣реИрдВред
рдпреБрдкреАрдбреАред рдЕрджреНрднреБрдд Redox OS рд╕рд┐рд╕реНрдЯрдо рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП CoreTeamTech рдХрд╛ рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ GitLab рд╕рд┐рд╕реНрдЯрдо рд░реВрд╕реА рдЖрдИрдкреА рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк GitHub рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВ рд░реВрд╕реНрдд рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ (рдбреЗрдЯрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ?)ред рдЗрд╕рд▓рд┐рдП, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдкрдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ - рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд░рддрд╛ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгреА рдФрд░ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдпрджрд┐ рдПрдХ рд╕рдореНрдорд╛рдирд┐рдд рдкрд╛рдардХ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд╣рд╛рдВ рдФрд░ рдХреИрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИ, рддреЛ рдореИрдВ рднреА рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред рдХреБрдЫ рдХреЛрдб рдЕрдВрд╢реЛрдВ рдХреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╣реИрдВ рдФрд░ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдРрд╕реЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрдкрд╖реНрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рдорд╛рди рди рд╣реЛрдВ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рднреА рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдореЗрд░реА рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрдХ рдЖрдкрдХреЛ рдЧреБрд╕реНрд╕рд╛ рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпреЛрдВред
рдЙрдкрдХрд░рдг
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд╛рд╕ рд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдХрд░ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ред рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд░рд╕реНрдЯ рдФрд░ рдЬреАрдбреАрдмреА рдбрд┐рдмрдЧрд░ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡реАрдПрд╕ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдЪреБрдирд╛ред рд╡реАрдПрд╕ рдХреЛрдб рдХрднреА-рдХрднреА рдЖрд░рдПрд▓рдПрд╕ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд░ рд░рд╛рд╕реНрдЯ рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЖрд░рдПрд▓рдПрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЬрдВрдЧ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХреА рдмрдврд╝рддреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдФрд░ рд╕реБрдЦрдж рджрд░реНрд╢рдиред рджреВрд╕рд░реЗ, рдЙрдирдХреА рдХреНрд╖рдорддрд╛ рдирд┐рдореНрди рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд▓реЗрдХрд┐рди "рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЧреЛрд▓реА рдорд╛рд░рдиреЗ" рдХреА рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рдеред рддреАрд╕рд░рд╛, рдЬрд╛рд╡рд╛ рдФрд░ рдорд╛рд╡реЗрди рдХреЗ рдкреНрд░реЗрдореА рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрджреА рд╣реВрдВ, рдФрд░ рдХрд╛рд░реНрдЧреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯреВрд▓рдЪрд┐рди рднрд╛рд╖рд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреМрдерд╛, рдореБрдЭреЗ рдмрд╕ рдХреБрдЫ рдирдпрд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рд╕реА рдХреА рддрд░рд╣ рдирд╣реАрдВред
рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдХреЛрдб рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ NASM рд▓рд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрдВрдЯреЗрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рд╣рдЬ рд╣реВрдВред рд▓реЛрд╣реЗ рдФрд░ рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЬрдВрдЧ рдореЗрдВ рдХреЛрдбрд╛рдВрддрд░рдХ рдЖрд╡реЗрд╖рдг рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред
рдПрд▓рдПрд▓рд╡реАрдПрдо рдПрд▓рдПрд▓рдбреА рдЖрдкреВрд░реНрддрд┐ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ (рдПрдХ рддреЗрдЬ рдФрд░ рдмреЗрд╣рддрд░ рд▓рд┐рдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдФрд░ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдпрд╣ рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдХрд╛рд░реНрдЧреЛ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред
Qemu рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдореБрдЭреЗ рдЗрд╕рдХреА рдЧрддрд┐, рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЛрдб рдФрд░ GDB рд╣реБрдХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкрд╕рдВрдж рд╣реИред рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рддреБрд░рдВрдд рд╕рднреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ - рдмреЗрд╢рдХ GRUB (рд╣реИрдбрд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд▓реЗрдВ)ред
рд▓рд┐рдВрдХрд┐рдВрдЧ рдФрд░ рд▓реЗрдЖрдЙрдЯ
рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рдХрдард┐рди рд╡рд┐рд╖рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдирд┐рдХрд▓рд╛ред X86 рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рд▓рдВрдмреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рдж рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдмреЗрд╣рдж рдореБрд╢реНрдХрд┐рд▓ рдерд╛ рдХрд┐ рд╕реЗрдЧрдореЗрдВрдЯ рдФрд░ рд╕реЗрдХреНрд╢рди рдПрдХ рд╣реА рдЪреАрдЬ рдирд╣реАрдВ рд╣реИрдВред рдореМрдЬреВрджрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП - рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░рд╛рд░реВрдкрдХ рдХреЗ рдкрд╛рд╕ рд▓рд┐рдВрдХрд░ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдиреБрд╕реНрдЦрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдирдВрдЧреЗ рд▓реЛрд╣реЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдХреИрд╕реЗ рд░рдЦреЗрдВ рдФрд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдкреГрд╖реНрда рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд░реИрдЦрд┐рдХ (рдЖрднрд╛рд╕реА) рдкрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред OS1 рдПрдХ рдкреЗрдЬ рдореИрдХреЗрдирд┐рдЬреНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд▓реЗрдЦ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ред
рддрд╛рд░реНрдХрд┐рдХ, рд░реИрдЦрд┐рдХ, рдЖрднрд╛рд╕реА, рднреМрддрд┐рдХ ...рддрд╛рд░реНрдХрд┐рдХ, рд░реИрдЦрд┐рдХ, рдЖрднрд╛рд╕реА, рднреМрддрд┐рдХ рдкрддреЗред рдореИрдВрдиреЗ рдЗрд╕ рд╕рд╡рд╛рд▓ рдкрд░ рдЕрдкрдирд╛ рд╕рд┐рд░ рдлреЛрдбрд╝ рд▓рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ
32-рдмрд┐рдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреЗрдЬрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдореЗрдВ 4 рдЬреАрдмреА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ 128 рдПрдордмреА рд░реИрдо рд╕реНрдерд╛рдкрд┐рдд рд╣реЛред рдпрд╣ рд╕рд┐рд░реНрдл рд╕реНрдореГрддрд┐ рдХреЗ рдкреЗрдЬрд┐рдВрдЧ рд╕рдВрдЧрдарди рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ; рдореБрдЦреНрдп рдореЗрдореЛрд░реА рдореЗрдВ рдкреГрд╖реНрдареЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рддрджрдиреБрд╕рд╛рд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдорддреМрд░ рдкрд░ 4 рдЬреАрдмреА рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдУрдПрд╕ рдХреЛ рдЗрдВрдЯрд░рдкреНрдЯ, рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдЙрдирдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЗрд╕ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдореЗрдВ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ: рдЗрди 4 рдЬреАрдмреА рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдкрддреЗ рдХрд╣рд╛рдВ рд░рдЦреЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВ?
рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдЖрдзреБрдирд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдРрд╕реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рд╕рд░реНрд╡реЛрдЪреНрдЪ рд╢рд╛рд╕рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХреЗрд╡рд▓ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ (рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХрд▓рдХ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕реНрдЯреЗрдЬ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреИрд╕реЗ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╢реВрдиреНрдп рдХреЗ рдкрд╛рд╕ рдпрд╛ рд╢реВрдиреНрдп рдХреЗ рд░реИрдЦрд┐рдХ рдкрддреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдХрд░реНрдиреЗрд▓ рдЫрд╡рд┐ рд╢реВрдиреНрдп рдХреЗ рдкрд╛рд╕ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдореЗрдВ рд░рд╣рддреА рд╣реИ, рддреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХреЛрдИ рднреА рдЬреЗрдПрдордкреА рдирд┐рд░реНрджреЗрд╢ рдХрд░реНрдиреЗрд▓ рдХреА рд╕рдВрд░рдХреНрд╖рд┐рдд рдореЗрдореЛрд░реА рдФрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рди рдХреЗрд╡рд▓ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╢реВрдиреНрдп рдХреЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рджреЗрдВ, рдФрд░ рдХрд░реНрдиреЗрд▓ рдЫрд╡рд┐ рдХреЛ рдЙрдЪреНрдЪ рд╕реНрдерд╛рди рджреЗрдВред
рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╣рд╛рдпрд░-рд╣рд╛рдл рдХрд░реНрдиреЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣рд╛рдБ рдореИрдВ рдЖрдкрдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ osdev.org рдкрд░ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ)ред рд╕реНрдореГрддрд┐ рдХрд╛ рдХреМрди рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рдЪреБрдирдирд╛ рд╣реИ рдпрд╣ рдЖрдкрдХреЗ рднреВрдЦ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред 512 рдПрдордмреА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ 1 рдЬреАрдмреА рд╣рдбрд╝рдкрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдХрд░реНрдиреЗрд▓ 3 рдЬреАрдмреА + 1 рдПрдордмреА рдкрд░ рд╕реНрдерд┐рдд рд╣реИ (1 рдПрдордмреА рдХреЛ рдХрдо-рдЙрдЪреНрдЪ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, GRUB рд╣рдореЗрдВ 1 рдПрдордмреА рдХреЗ рдмрд╛рдж рднреМрддрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ) ред
рд╣рдорд╛рд░реА рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореЗрд░реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ _ рд▓реЛрдбрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЕрдЧрд▓реЗ рдЦрдВрдб рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдКрдВрдЧрд╛ред
рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВрдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рдкреВрд░реЗ рдЬреАрд╡рди рдЭреВрда рдмреЛрд▓ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореБрдЦреНрдп () рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЦреНрдп () рд╕реА рднрд╛рд╖рд╛ рдФрд░ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдореНрдореЗрд▓рди рд╣реИред рдпрджрд┐ рдЖрдк рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рддреНрдпреЗрдХ рдордВрдЪ рдХрд╛ рдЕрдкрдирд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдФрд░ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ: рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдорддреМрд░ рдкрд░ _start рд╣реЛрддрд╛ рд╣реИ, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдпрд╣ mainCRTStartup рд╣реИред рджреВрд╕рд░реЗ, рдЗрди рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдпрд╣ рдкрд░рд┐рд╡рд╛рджреЛрдВ рдХреЗ рд╡рд┐рд▓рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рддреАрд╕рд░рд╛, рд╕рдВрдХрд▓рдХ рдЗрди рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣реИрдВ crt0..crtN (CRT - C RunTime, N - рдореБрдЦреНрдп рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛)ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, gcc рдпрд╛ vc рдЬреИрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ - рд╡реЗ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд┐рдВрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдорд╛рдирдХ рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреИрдпрд╛рд░ рд╕реА-рдЖрд░рдВрднреАрдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╡рд╛рдВрдЫрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдПрдХ рдорд╛рдирдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХреЗ рд╕рд╛рде рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рд╛рд░реВрдк рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдФрд░ рд╕реАрдЖрд░рдЯреА рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирдВрдЧреЗ рд▓реЛрд╣реЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдФрд░ рдХреНрдпрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдбреЗрдЯрд╛ рд╕реЗрдХреНрд╢рди (.rodata, .data), uninitialized рдЪрд░ (.bs, рд╕рд╛рдорд╛рдиреНрдп) рдХреИрд╕реЗ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗ, рдФрд░ рдпрд╣ рднреА рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ GRUB рдХреЛ рдмрд╛рдЗрдирд░реА рдХреЗ рдкрд╣рд▓реЗ 8 KB рдореЗрдВ рдорд▓реНрдЯреАрдмреВрдЯ рд╣реЗрдбрд░ рдХреЗ рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рддреЛ рдЕрдм рд╣рдо рдПрдХ рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ!
ENTRY(_loader) OUTPUT_FORMAT(elf32-i386) SECTIONS { . = 0xC0100000; .text ALIGN(4K) : AT(ADDR(.text) - 0xC0000000) { *(.multiboot1) *(.multiboot2) *(.text) } .rodata ALIGN(4K) : AT(ADDR(.rodata) - 0xC0000000) { *(.rodata*) } .data ALIGN (4K) : AT(ADDR(.data) - 0xC0000000) { *(.data) } .bss : AT(ADDR(.bss) - 0xC0000000) { _sbss = .; *(COMMON) *(.bss) _ebss = .; } }
GRUB рдХреЗ рдмрд╛рдж рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдорд▓реНрдЯреАрдмреВрдЯ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рд╣реЗрдбрд░ рдХреЛ рдмреВрдЯ рдЫрд╡рд┐ рдХреЗ рдкрд╣рд▓реЗ 8 KB рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреВрд░реНрдг рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ рдмреНрдпрд╛рдЬ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред
- 32 рдмрд┐рдЯ рд╕рдВрд░реЗрдЦрдг (4 рдмрд╛рдЗрдЯреНрд╕) рдХрд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
- рдПрдХ рдЬрд╛рджреВ рдирдВрдмрд░ 0x1BADB002 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдорд▓реНрдЯреАрдмреВрдЯрд░ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреА рд╣реИ рдФрд░ рдХреИрд╕реЗ рдореЙрдбреНрдпреВрд▓ рд░рдЦрдирд╛ рд╣реИ (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рдХреЛ 4 рдХреЗрдмреА рдкреГрд╖реНрда рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ)
- рдПрдХ рдЪреЗрдХрд╕рдо рдкреНрд░рджрд╛рди рдХрд░реЗрдВ (рдЪреЗрдХрд╕рдо + рдореИрдЬрд┐рдХ рдирдВрдмрд░ + рдЭрдВрдбреЗ рдХреЛ рд╢реВрдиреНрдп рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП)
MB1_MODULEALIGN equ 1<<0 MB1_MEMINFO equ 1<<1 MB1_FLAGS equ MB1_MODULEALIGN | MB1_MEMINFO MB1_MAGIC equ 0x1BADB002 MB1_CHECKSUM equ -(MB1_MAGIC + MB1_FLAGS) section .multiboot1 align 4 dd MB1_MAGIC dd MB1_FLAGS dd MB1_CHECKSUM
рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдорд▓реНрдЯреАрдмреВрдЯ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рд╣рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- EAX рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЬрд╛рджреВ рдирдВрдмрд░ 0x2BADB002 рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдбрд╛рдЙрдирд▓реЛрдб рд╕рдлрд▓ рд░рд╣рд╛
- EBX рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рднреМрддрд┐рдХ рдкрддрд╛ рд╣реИ (рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)
- рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд░рдХреНрд╖рд┐рдд рдореЛрдб рдореЗрдВ рд╣реИ, рдкреЗрдЬ рдореЗрдореЛрд░реА рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реЗрдЧрдореЗрдВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рд╕реНрдЯреИрдХ рдПрдХ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд (рд╣рдорд╛рд░реЗ рд▓рд┐рдП) рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВ, GRUB рдиреЗ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣ рдкреЗрдЬрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ, рд╕реНрдЯреИрдХ рдХреЛ рдЯреНрдпреВрди рдХрд░рдиреЗ рдФрд░ рдЕрдВрдд рдореЗрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рд░рд╕реНрдЯ рдХреЛрдб рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдореИрдВ рд╕реНрдореГрддрд┐ рдХреЗ рдкреЗрдЬ рд╕рдВрдЧрдарди, рдкреЗрдЬ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдФрд░ рдкреЗрдЬ рдЯреЗрдмрд▓ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ ( рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рд▓реЗрдЦ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдЬреЛ рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдЦрдВрдб рдирд╣реАрдВ рд╣реИрдВ! рдХреГрдкрдпрд╛ рдореЗрд░реА рдЧрд▓рддреА рди рджреЛрд╣рд░рд╛рдПрдВ рдФрд░ GDTR рдореЗрдВ рдкреЗрдЬ рдЯреЗрдмрд▓ рдПрдбреНрд░реЗрд╕ рд▓реЛрдб рди рдХрд░реЗрдВ! рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП CR3 рд╣реИ! рдХрд╛рд░реНрдп рдХреА рд╕рд╛рджрдЧреА (рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП) рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдЖрдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдкреАрдПрд╕рдИ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг 4 рдПрдордмреА рдХрд╛ рдЖрдХрд╛рд░ рдЪреБрдирд╛ред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╡рд░реНрдЪреБрдЕрд▓ рдкреЗрдЬ рдореЗрдореЛрд░реА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛, рдФрд░ рдЙрд╕рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ CR3 рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рд╣рдорд╛рд░реА рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ 3 рдЬреАрдмреА рдХреА рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЪреБрдЕрд▓ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреБрдбрд╝реА рд╣реБрдИ рдереАред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рднреА рдЪрд░ рдкрддреЗ рдФрд░ рд▓реЗрдмрд▓ рдореЗрдВ 3 рдЬреАрдмреА рдХреА рдСрдлрд╕реЗрдЯ рд╣реИред рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреГрд╖реНрда рдкрддреЗ рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреГрд╖реНрда рдЖрдХрд╛рд░ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдкрд╣реБрдВрдЪ рдФрд░ рд╕реНрдерд┐рддрд┐ рдЭрдВрдбреЗ рднреА рд╣реЛрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдореИрдВ 4 рдПрдордмреА рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореБрдЭреЗ 1024 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рдкреАрдбреА рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдЪрд╛рд╣рд┐рдП:
section .data align 0x1000 BootPageDirectory: dd 0x00000083 times (KERNEL_PAGE_NUMBER - 1) dd 0 dd 0x00000083 times (1024 - KERNEL_PAGE_NUMBER - 1) dd 0
рдЯреЗрдмрд▓ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?
- рдмрд╣реБрдд рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдХреЛ рдХреЛрдб рдХреЗ рд╡рд░реНрддрдорд╛рди рдЦрдВрдб (0-4 рдПрдордмреА рднреМрддрд┐рдХ рдореЗрдореЛрд░реА) рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рд╕рднреА рдкрддреЗ рднреМрддрд┐рдХ рд╣реИрдВ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдЕрднреА рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреГрд╖реНрда рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рддрддреНрдХрд╛рд▓ рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛ рдЬрд╛рдПрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдЧрд▓рд╛ рдирд┐рд░реНрджреЗрд╢ рдирд╣реАрдВ рд▓реЗ рдкрд╛рдПрдЧрд╛ред рдЭрдВрдбреЗ: рдмрд┐рдЯ 0 - рддрд╛рд▓рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИ, рдмрд┐рдЯ 1 - рдкреГрд╖реНрда рд▓рд┐рдЦрд┐рдд рд╣реИ, рдмрд┐рдЯ 7 - рдкреГрд╖реНрда рдЖрдХрд╛рд░ 4 рдПрдордмреАред рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд░рд┐рдХреЙрд░реНрдб рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- 3 рдЬреАрдмреА рддрдХ рдЫреЛрдбрд╝реЗрдВ - рд╢реВрдиреНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреГрд╖реНрда рд╕реНрдореГрддрд┐ рдореЗрдВ рдирд╣реАрдВ рд╣реИ
- рднреМрддрд┐рдХ рд╕реНрдореГрддрд┐ рдореЗрдВ 0 рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╣реБрдП, 3 рдЬреАрдмреА рдорд╛рд░реНрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рд╣рдорд╛рд░рд╛ рдореВрд▓ рд╣реИред рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣рд╛рдВ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЭрдВрдбреЗ рдкрд╣рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рдорд╛рди рд╣реИрдВред
- 4 рдЬреАрдмреА рддрдХ рдЫреЛрдбрд╝реЗрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд╕рд╛рд░рдгреА рдШреЛрд╖рд┐рдд рдХрд░ рджреА рд╣реИ рдФрд░ рдЕрдм рд╣рдо CR3 рдореЗрдВ рдЗрд╕рдХреЗ рднреМрддрд┐рдХ рдкрддреЗ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕реНрдЯреЗрдЬ рдкрд░ 3 рдЬреАрдмреА рдХреЗ рдПрдбреНрд░реЗрд╕ рдСрдлрд╕реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рдкрддреЗ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ 3 рдЬреАрдмреА + рдЪрд░ рдСрдлрд╕реЗрдЯ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрддреЗ рдкрд░ рднреЗрдЬ рджреЗрдЧрд╛ рдФрд░ рддрддреНрдХрд╛рд▓ рджреБрд░реНрдШрдЯрдирд╛ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо BootPageDirectory рдХрд╛ рдкрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ 3 GB рдШрдЯрд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ CR3 рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╣рдо CR4 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ PSE рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, CR0 рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ:
mov ecx, (BootPageDirectory - KERNEL_VIRTUAL_BASE) mov cr3, ecx mov ecx, cr4 or ecx, 0x00000010 mov cr4, ecx mov ecx, cr0 or ecx, 0x80000000 mov cr0, ecx
рдЕрдм рддрдХ, рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рд╣рдо рдкрд╣рд▓реЗ рдкреЗрдЬ рдХреЛ рдЕрдВрдд рдореЗрдВ 3 рдЬреАрдмреА рдХреЗ рдКрдкрд░реА рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдврд╣ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдИрдЖрдИрдкреА рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдЕрднреА рднреА рдкрд╣рд▓реЗ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рднреМрддрд┐рдХ рдкрддрд╛ рд╣реИред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд░рд▓ рд╣реЗрд░рдлреЗрд░ рдХрд░рддреЗ рд╣реИрдВ: рдирд┐рдХрдЯрддрдо рд╕реНрдерд╛рди рдкрд░ рдПрдХ рдЪрд┐рд╣реНрди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдкрддреЗ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 3 рдЬреАрдмреА рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╣реИ, рдЗрд╕реЗ рдпрд╛рдж рд░рдЦреЗрдВ) рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреВрдж рдХрд░реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреГрд╖реНрда рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
lea ecx, [StartInHigherHalf] jmp ecx StartInHigherHalf: mov dword [BootPageDirectory], 0 invlpg [0]
рдЕрдм рдпрд╣ рд╕рдм рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ: рд╕реНрдЯреИрдХ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, GRUB рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдФрд░ рдЕрд╕реЗрдВрдмрд▓рд░ рдкрд╛рд╕ рдХрд░реЗрдВ!
mov esp, stack+STACKSIZE push eax push ebx lea ecx, [BootPageDirectory] push ecx call kmain hlt section .bss align 32 stack: resb STACKSIZE
рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:
- рдХреЙрд▓ рдХреЗ рд╕реА-рдХрдиреНрд╡реЗрдВрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ (рдпрд╣ рд░рд╕реНрдЯ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ), рдЪрд░ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рд╕реНрдЯреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕рднреА рдЪрд░ x86 рдореЗрдВ 4 рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
- рд╕реНрдЯреИрдХ рдЕрдВрдд рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЗ рд╕реВрдЪрдХ рдХреЛ рд╕реНрдЯреИрдХ рдХреЗ рдЕрдВрдд рддрдХ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдкрддреЗ рдкрд░ STACKSIZE рдЬреЛрдбрд╝реЗрдВ)ред рдореИрдВрдиреЗ рдЬреЛ рд╕реНрдЯреИрдХ рдЖрдХрд╛рд░ рд▓рд┐рдпрд╛ рд╡рд╣ 16 рдХреЗрдмреА рдХрд╛ рдерд╛, рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
- рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдорд▓реНрдЯреАрдмреВрдЯ рдХреА рдЬрд╛рджреБрдИ рд╕рдВрдЦреНрдпрд╛, рдмреВрдЯрд▓реЛрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рднреМрддрд┐рдХ рдкрддрд╛ (рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдпрд╡рд╛рди рдореЗрдореЛрд░реА рдХрд╛рд░реНрдб рд╣реИ), рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрднрд╛рд╕реА рдкрддрд╛ (рдХрд╣реАрдВ 3 рдЬреАрдмреА рд╕реНрдерд╛рди рдореЗрдВ)
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ рдХрд┐ kmain рдмрд╛рд╣рд░реА рд╣реИ рдФрд░ _loader рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИред
рдЖрдЧреЗ рдХреЗ рдХрджрдо
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреЛрдЯреЛрдВ рдореЗрдВ, рдореИрдВ рдЦрдВрдб рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдПрдХ рд╡реАрдЬреАрдП рдмрдлрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪрдирд╛ рдХреЗ рдЙрддреНрдкрд╛рджрди рдкрд░ рдЬрд╛рдКрдВрдЧрд╛, рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рдзрд╛рди, рдкреГрд╖реНрда рдкреНрд░рдмрдВрдзрди рдФрд░ рд╕рдмрд╕реЗ рдкреНрдпрд╛рд░реА рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ - рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ - рдореИрдВ рдорд┐рдард╛рдИ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛ред
рдкреВрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб GitLab рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
UPD2: рднрд╛рдЧ 2
UPD2: рднрд╛рдЧ 3