рд▓рд┐рдирдХреНрд╕рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗ

рдЕрдиреБрд╡рд╛рджрдХрдмрд╛рдЯ рдкрд░рд┐рдЪрдп: рд╣рд╛рдореНрд░реЛ рдЬреАрд╡рдирдорд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдХреЛ рдареВрд▓реЛ рдкреНрд░рд╡реЗрд╢рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐рдорд╛, рдпреЛ рдПрдХ рдкрдЯрдХ рд╕реБрд░реБ рднрдПрдХреЛ рдХреБрди рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВрдХрд╛ рд╕рд╛рде рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдпреЛ рдзреЗрд░реИ рд░реЛрдЪрдХ рд░ рдЙрдкрдпреЛрдЧреА рд╣реБрди рд╕рдХреНрдЫред рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдХреЗрд╣реА рдЖрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рддрд░ рд╕рдмреИрд▓реЗ рддреНрдпрд╕реНрддрд╛ рд╡рд┐рдзрд┐рд╣рд░реВ рд╕рдореНрдЭрдБрджреИрдирдиреН (рд╡рд╛ рдерд╛рд╣рд╛ рдЫ рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рддрд┐рдиреАрд╣рд░реВрдХреЛ рджреНрд░реБрдд рд╡рд┐рдХрд╛рд╕рдХреЛ рд╕рдордпрдорд╛ рд╕рдорд╛рддрд┐рдПрдирдиреН)ред рдПрдЙрдЯрд╛ рдпрд╕реНрддреЛ рдкреНрд░рд╡рд┐рдзрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рд▓рд┐рдирдХреНрд╕ рд╣реЛред рдореВрд▓рдХрд╛ рд▓реЗрдЦрдХрд▓реЗ рдзреЗрд░реИ рдЦрдиреНрдиреЗ рдХрд╛рдо рдЧрд░реЗ, рдХреБрди рдкреБрд░рд╛рдиреЛ рдШрдЯрдирд╛рдХреНрд░рдорд▓реЗ рдЕрдЭреИ рдХрд╛рдо рдЧрд░реНрдЫ рд░ рдХреБрди рдХрд╛рдо рдЧрд░реНрджреИрди, рд░ 2k19 рдорд╛ рдЖрдлреВрд▓рд╛рдИ рд╣реЛрдордмреНрд░реВ рдпреВрдПрдордПрд▓ рдХрд╕рд░реА рдмрдирд╛рдЙрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдирд┐рд░реНрджреЗрд╢рди рдЬрд╕реНрддрд╛ рдХреБрд░рд╛рд╣рд░реВ рд╕рдБрдЧреИ рд░рд╛рдЦреЗред рд░ рд╣реЛ, рд╣рд╛рдореАрд▓реЗ рдореВрд▓ рдкреЛрд╖реНрдЯрдХреЛ рд▓реЗрдЦрдХрд▓рд╛рдИ Habr рдорд╛ рдЖрдордиреНрддреНрд░рд┐рдд рдЧрд░реНрдпреМрдВ рдХреЗрдбреА, рддреНрдпрд╕реИрд▓реЗ рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдХреБрдиреИ рдкреНрд░рд╢реНрдирд╣рд░реВ рдЫрдиреН - рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рдЕрдВрдЧреНрд░реЗрдЬреАрдорд╛ рд╕реЛрдзреНрдиреБрд╣реЛрд╕реНред

рд▓рд┐рдирдХреНрд╕рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрдиреЗ

рд▓рд┐рдирдХреНрд╕рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб, рд╡рд╛рд╕реНрддрд╡рдорд╛, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдХреЛ рдкреЛрд░реНрдЯ рд╣реЛред рдпреЛ рдореЛрдбрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрдг рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдЪрд▓рд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рддрд░ рдпреЛ рдореЛрдб рдкрдирд┐ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд▓рдЧрд╛рд╡ рдЙрдкрдХрд░рдг рдХреЛ рд░реВрдк рдорд╛ рдЙрдкрдпреЛрдЧреА рдЫ, рдЬрд╕рдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рднрд░реНрдЪреБрдЕрд▓ рдорд┐рд╕рд┐рди рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдЬрд╕реНрддреИ рдЫред рдпреЛ рдореЛрдбрд▓реЗ рдбрдХрд░ рднрдиреНрджрд╛ рдзреЗрд░реИ рдЕрд▓рдЧрд╛рд╡ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рддрд░ KVM рд╡рд╛ рднрд░реНрдЪреБрдЕрд▓ рдмрдХреНрд╕ рдЬрд╕реНрддреИ рдкреВрд░реНрдг рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рднрдиреНрджрд╛ рдХрдоред

рд╕рдордЧреНрд░рдорд╛, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЕрдЬреАрдм рд░ рдЧрд╛рд╣реНрд░реЛ рдЙрдкрдХрд░рдг рдЬрд╕реНрддреЛ рд▓рд╛рдЧреНрди рд╕рдХреНрдЫ, рддрд░ рдпрд╕рдХреЛ рдкреНрд░рдпреЛрдЧрд╣рд░реБ рдЫред рдЖрдЦрд┐рд░, рдпреЛ рдПрдХ рдкреВрд░реНрдг-рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдирднрдПрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред рдпреЛ рд╕реБрд╡рд┐рдзрд╛рд▓реЗ рд╕рдореНрднрд╛рд╡рд┐рдд рд░реВрдкрдорд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреЛрдбрд▓рд╛рдИ рд╣реЛрд╕реНрдЯ рдореЗрд╕рд┐рдирдорд╛ рдХреБрдиреИ рдЦрддрд░рд╛ рдмрд┐рдирд╛ рдЪрд▓рд╛рдЙрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд░ рдпреЛ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░реНрдиреЗрд▓ рднрдПрдХреЛрд▓реЗ, рдпрд╕рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╣реЛрд╕реНрдЯ рдореЗрд╕рд┐рдирдмрд╛рдЯ рдЕрд▓рдЧ рдЫрдиреН, рддреНрдпреЛ рд╣реЛред рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рднрд┐рддреНрд░ рдЪрд▓реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╣реЛрд╕реНрдЯрд▓рд╛рдИ рджреЗрдЦрд┐рдиреЗ рдЫреИрдирдиреНред рдпреЛ рд╕рд╛рдорд╛рдиреНрдп рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рдЬрд╕реНрддреЛ рд╣реЛрдЗрди, рдЬрд╕рдорд╛ рд╣реЛрд╕реНрдЯ рдореЗрд╕рд┐рдирд▓реЗ рд╕рдзреИрдВ рднрдгреНрдбрд╛рд░ рднрд┐рддреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рджреЗрдЦреНрдЫред рдореЗрд░реЛ рдПрдХ рд╕рд░реНрднрд░рдмрд╛рдЯ pstree рдХреЛ рдпреЛ рдЯреБрдХреНрд░рд╛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН:

containerdтФАтФмтФАcontainerd-shimтФАтФмтФАtiniтФАтФмтФАdnsdтФАтФАтФА19*[{dnsd}]
           тФВ                 тФВ      тФФтФАs6-svscanтФАтФАтФАs6-supervise
           тФВ                 тФФтФА10*[{containerd-shim}]
           тФЬтФАcontainerd-shimтФАтФмтФАtiniтФАтФмтФАaerialтФАтФАтФА21*[{aerial}]
           тФВ                 тФВ      тФФтФАs6-svscanтФАтФАтФАs6-supervise
           тФВ                 тФФтФА10*[{containerd-shim}]
           тФЬтФАcontainerd-shimтФАтФмтФАtiniтФАтФмтФАs6-svscanтФАтФАтФАs6-supervise
           тФВ                 тФВ      тФФтФАsurl
           тФВ                 тФФтФА9*[{containerd-shim}]
           тФЬтФАcontainerd-shimтФАтФмтФАtiniтФАтФмтФАhтФАтФАтФА13*[{h}]
           тФВ                 тФВ      тФФтФАs6-svscanтФАтФАтФАs6-supervise
           тФВ                 тФФтФА10*[{containerd-shim}]
           тФЬтФАcontainerd-shimтФАтФмтФАgoproxyтФАтФАтФА14*[{goproxy}]
           тФВ                 тФФтФА9*[{containerd-shim}]
           тФФтФА32*[{containerd}]

рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдбрдорд╛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдХреЛ pstree рд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

linuxтФАтФмтФА5*[linux]
      тФФтФАslirp

рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛, рдо рд╣реЛрд╕реНрдЯрдмрд╛рдЯ рдЕрддрд┐рдерд┐рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рдирд╛рдорд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдЫреБред рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рд╕рдВрдЧ, рдпреЛ рд╕рдореНрднрд╡ рдЫреИрдиред рдпрд╕рдХреЛ рдорддрд▓рдм рдХреЗ рд╣реЛ? рдпрд╕рдХреЛ рдорддрд▓рдм рд▓рд┐рдирдХреНрд╕рдХреЛ рдЕрдбрд┐рдЯрд┐рдЩ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдорд╛рд░реНрдлрдд рдЪрд▓реНрдиреЗ рдЕрдиреБрдЧрдорди рдЙрдкрдХрд░рдгрд╣рд░реВ рджреЗрдЦреНрджреИрдиреМрдВ рдЕрддрд┐рдерд┐ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВред рддрд░ рдХреЗрд╣рд┐ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рд╣рд░реВрдорд╛, рдпреЛ рд╕реБрд╡рд┐рдзрд╛ рдПрдХ рджреЛрдзрд╛рд░реЗ рддрд░рд╡рд╛рд░ рд╣реБрди рд╕рдХреНрдЫред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рддрд▓рдХреЛ рд╕рдореНрдкреВрд░реНрдг рдкреЛрд╖реНрдЯ рдЕрдиреБрд╕рдиреНрдзрд╛рди рд░ рдЗрдЪреНрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдХреБрдиреИ рди рдХреБрдиреИ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдкреБрд░рд╛рддрди рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛ, рдХрд░реНрдиреЗрд▓ рд╕реНрд░реЛрддрд╣рд░реВ рдкрдвреНрдиреБрдкрд░реНрдиреЗ рдерд┐рдпреЛ, рдо рдкреНрд░рд╛рдердорд┐рдХ рд╡рд┐рджреНрдпрд╛рд▓рдпрдорд╛ рд╣реБрдБрджрд╛рдХрд╛ рджрд┐рдирд╣рд░реВрдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдХреЛрдбрд╣рд░реВрдХреЛ рдЧрд╣рди рдбрд┐рдмрдЧрд┐рдЩ рдЧрд░реНрдиреБрдкрд░реНрдереНрдпреЛ, рд░ рдорд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдЙрдкрдХрд░рдгрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╡рд┐рд╢реЗрд╖ рдмрд╛рдЗрдирд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реЗрд░реЛрдХреБ рдирд┐рд░реНрдорд╛рдгрд╕рдБрдЧ рдЯрд┐рдВрдХрд░ рдкрдирд┐ рдЧрд░реНрдиреБрдкрд░реНрдереНрдпреЛред ред рдпреЛ рд╕рдмреИ рдХрд╛рдорд▓реЗ рдореЗрд░реЛ IRC рдорд╛ рдХреЗрдЯрд╛рд╣рд░реВрд▓рд╛рдИ рдорд▓рд╛рдИ рдЬрд╛рджреВ рдмреЛрд▓рд╛рдЙрди рдкреНрд░реЗрд░рд┐рдд рдЧрд░реНрдпреЛред рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпреЛ рдкреЛрд╖реНрдЯрд▓реЗ рдирдпрд╛рдБ рдХрд░реНрдиреЗрд▓рд╣рд░реВ рд░ OS рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рд╕рдорд╛рди рдХреБрд░рд╛ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рдХрд╕реИрдХреЛ рд▓рд╛рдЧрд┐ рднрд░рдкрд░реНрджреЛ рдХрд╛рдЧрдЬрд╛рддрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫред

рд╕рдорд╛рдпреЛрдЬрди

рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рд╕реЗрдЯрдЕрдк рдзреЗрд░реИ рдЪрд░рдгрд╣рд░реВрдорд╛ рдЧрд░рд┐рдиреНрдЫ:

  • рд╣реЛрд╕реНрдЯрдорд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ;
  • рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрджреИ;
  • рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдорд╛рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди;
  • рдХрд░реНрдиреЗрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛;
  • рдмрд╛рдЗрдирд░реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ;
  • рдЕрддрд┐рдерд┐ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ;
  • рдХрд░реНрдиреЗрд▓ рд▓рдиреНрдЪ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рдЪрдпрди;
  • рдЕрддрд┐рдерд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд╛рдкрдирд╛;
  • рдЕрддрд┐рдерд┐ рдХрд░реНрдиреЗрд▓ рд╕реБрд░реБ рдЧрд░реНрджреИред

рдо рдорд╛рдиреНрдЫреБ рдХрд┐ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЖрдлреИрд▓реЗ рдпреЛ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдЗрдБ рд╕рдореНрднрд╡рддрдГ рдХреЗрд╣рд┐ Ubuntu рд╡рд╛ рдбреЗрдмрд┐рдпрди-рдЬрд╕реНрддреЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рд╕рдмреИ рдХреБрд░рд╛ рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫред рдореИрд▓реЗ рдорд╛рдерд┐рдХрд╛ рд╕рдмреИрд▓рд╛рдИ рдореЗрд░реЛ рдордирдкрд░реНрдиреЗ рд╡рд┐рддрд░рдг - рдЕрд▓реНрдкрд╛рдЗрдирдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗ, рддрд░ рдпрд╕рдорд╛ рдХреЗрд╣реА рдкрдирд┐ рдЖрдПрди, рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рд╕рдБрдЧ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдбрдорд╛ рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрдбрд╛-рдмрд╛рдзреНрдпрдХрд╛рд░реА glibc-isms рдЫ рднрдиреНрдиреЗ рддрдереНрдпрдХреЛ рдХрд╛рд░рдгрд▓реЗред рдореИрд▓реЗ рдЕрдиреНрддрддрдГ рд╕рдорд╕реНрдпрд╛ рдмреБрдЭреЗрдкрдЫрд┐ рдпрд╕рд▓рд╛рдИ рдЕрдкрд╕реНрдЯреНрд░реАрдордорд╛ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдХреЛ рдЫреБред

рд╣реЛрд╕реНрдЯрдорд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди Ubuntu рд▓рд╛рдИ рдХрдореНрддрд┐рдорд╛ рдирд┐рдореНрди рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ (рдПрдХ рд╕рдлрд╛ рд╕реНрдерд╛рдкрдирд╛ рдорд╛рдиреНрджреИ):

- 'build-essential'
- 'flex'
- 'bison'
- 'xz-utils'
- 'wget'
- 'ca-certificates'
- 'bc'
- 'linux-headers'

рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдирд┐рдореНрди рдЖрджреЗрд╢ (рд░реВрдЯ рд╡рд╛ sudo рд╕рдВрдЧ) рд╕рдВрдЧ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

apt-get -y install build-essential flex bison xz-utils wget ca-certificates bc 
                   linux-headers-$(uname -r)

рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдиреБ рд╕реЗрдЯрдЕрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджрдЫ libncurses-devред рдХреГрдкрдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдпреЛ рдирд┐рдореНрди рдЖрджреЗрд╢ (рд░реВрдЯ рд╡рд╛ sudo рд╕рдВрдЧ) рд╕рдВрдЧ рд╕реНрдерд╛рдкрд┐рдд рдЫ:

apt-get -y install libncurses-dev

рдХрд░реНрдиреЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб

рдХрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕ рдЕрдкрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рд▓рдЧрднрдЧ 1,3 GB рд╣рд╛рд░реНрдб рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдпреЛ рдЫ рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдкрдЫрд┐ рдЬрд╛рдиреБрд╣реЛрд╕реН kernel.org рд░ рдирд╡реАрдирддрдо рд╕реНрдерд┐рд░ рдХрд░реНрдиреЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди URL рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд▓реЗрдЦреНрдиреЗ рд╕рдордпрдорд╛ рдпреЛ рд╣реЛ: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.1.16.tar.xz

рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН 'wget':

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.1.16.tar.xz

рд░ рдпрд╕рдХреЛ рд╕рд╛рде рдирд┐рдХрд╛рд▓реНрдиреБрд╣реЛрд╕реН 'tar':

tar xJf linux-5.1.16.tar.xz

рдЕрдм рд╣рд╛рдореА рдЯрд╛рд░рдмрд▓ рдЕрдирдкреНрдпрд╛рдХ рдЧрд░реНрджрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдЫреМрдВ:

cd linux-5.1.16

рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдорд╛рдг рд╕реЗрдЯрдЕрдк

рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдПрдХ рд╕реЗрдЯ рд╣реЛ рдлрд╛рдЗрд▓рд╣рд░реВ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН ╤Б рдзреЗрд░реИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рдЕрдиреБрдХреВрд▓рди рдЙрдкрдХрд░рдг рд░ рд▓рд┐рдкрд┐рд╣рд░реВред рдкрд╣рд┐рд▓реЗ, рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╕реЗрдЯрдЕрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН:

make ARCH=um menuconfig

рдпрд╕рд▓реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреВрд░рд╛ рдЧрд░реНрдиреЗрдЫ рд░ рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдВрд╡рд╛рдж рдмрдХреНрд╕ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗрдЫред рдЬрдм рдкреНрд░рдХрд╛рд╢ рд╕рдЮреНрдЭреНрдпрд╛рд▓рдХреЛ рддрд▓ рджреЗрдЦрд╛ рдкрд░реНрджрдЫ[Select]', рддрдкрд╛рдИрдБрд▓реЗ рд╕реНрдкреЗрд╕рдмрд╛рд░ рд╡рд╛ рдЗрдиреНрдЯрд░ рдХреБрдЮреНрдЬреАрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕рдЮреНрдЭреНрдпрд╛рд▓рдХреЛ рд╡рд░рд┐рдкрд░рд┐ рдиреЗрднрд┐рдЧреЗрд╕рди рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдХрд┐рдмреЛрд░реНрдб рддреАрд░рд╣рд░реВ "рдорд╛рдерд┐" рд░ "рддрд▓" рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реБрдиреНрдЫ, рд░ рддрддреНрд╡рд╣рд░реВ рдЪрдпрди рдЧрд░реНрдиреБ рднрдиреЗрдХреЛ "рдмрд╛рдпрд╛рдБ" рд╡рд╛ "рджрд╛рдпрд╛рдБ" рд╣реЛред

рджреГрд╢реНрдп рд╕реВрдЪрдХ -> рднрдиреЗрдХреЛ рддрдкрд╛рдИрдВ рд╕рдмрдореЗрдиреБрдорд╛ рд╣реБрдиреБрд╣реБрдиреНрдЫ, рдЬреБрди рдЗрдиреНрдЯрд░ рдХреБрдЮреНрдЬреА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрд╕рдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреЗ рдмрд╛рдЯреЛ рд╕реНрдкрд╖реНрдЯ рдЫ '[Exit]'ред

рдирд┐рдореНрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реН '[Select]' рд░ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдЫреЗрдЙрдорд╛ '[*]' рдЫ:

UML-specific Options:
  - Host filesystem
Networking support (enable this to get the submenu to show up):
  - Networking options:
    - TCP/IP Networking
UML Network devices:
  - Virtual network device
  - SLiRP transport

рдпреЛ рд╣реЛ, рддрдкрд╛рдЗрдБ рдХреНрд░рдорд┐рдХ рд░реВрдкрдорд╛ ' рдЪрдпрди рдЧрд░реЗрд░ рдпреЛ рд╕рдЮреНрдЭреНрдпрд╛рд▓рдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред[Exit]'ред рдХреЗрд╡рд▓ рдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЕрдиреНрддреНрдпрдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдмрдЪрдд рдЧрд░реНрди рдкреНрд░реЗрд░рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ ' рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред[Yes]'ред

рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпреЛ рдкреЛрд╖реНрдЯ рдкрдвреЗ рдкрдЫрд┐ рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрд╕рдБрдЧ рдЦреЗрд▓реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБред рдпреА рдкреНрд░рдпреЛрдЧрд╣рд░реВрдмрд╛рдЯ рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди-рд╕реНрддрд░ рдХрд░реНрдиреЗрд▓ рдореЗрдХрд╛рдирд┐рдХреНрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рд░ рдХрд░реНрдиреЗрд▓ рдХрд╕рд░реА рдмрдирд╛рдЗрдиреНрдЫ рднрдиреЗрд░ рдлрд░рдХ рдлреНрд▓реНрдпрд╛рдЧрд╣рд░реВрд▓реЗ рдХрд╕рд░реА рдкреНрд░рднрд╛рд╡ рдкрд╛рд░реНрдЫ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдзреЗрд░реИ рдХреБрд░рд╛ рд╕рд┐рдХреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИ

рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдПрдХ рдареВрд▓реЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛ рдЬрд╕рд▓реЗ рдзреЗрд░реИ рдЪреАрдЬрд╣рд░реВ рдЧрд░реНрдЫред рдкреБрд░рд╛рдиреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рдпрд╕реНрддреЛ рдиреНрдпреВрдирддрдо рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд╕рд╛рде рдкрдирд┐, рдпрд╕рд▓реЗ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдзреЗрд░реИ рд╕рдордп рд▓рд┐рди рд╕рдХреНрдЫред рддреНрдпрд╕реИрд▓реЗ рдирд┐рдореНрди рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдХрд░реНрдиреЗрд▓ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН:

make ARCH=um -j$(nproc)

рдХреЗ рдХреЛ рд▓рд╛рдЧрд┐? рдпреЛ рдЖрджреЗрд╢рд▓реЗ рд╣рд╛рдореНрд░реЛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рд▓рд╛рдИ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдХреНрд░рдордорд╛ рд╕рдмреИ рдЙрдкрд▓рдмреНрдз CPU рдХреЛрд░ рд░ рдереНрд░реЗрдбрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдмрддрд╛рдЙрдиреЗрдЫред рдЯреЛрд▓реА $(nproc) Build рдХреЛ рдЕрдиреНрддреНрдпрдорд╛ рдЖрджреЗрд╢рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрджрдЫ nproc, рдЬрд╕рдХреЛ рдЕрдВрд╢ рд╣реЛ coreutils рдорд╛рдирдХ Ubuntu рдирд┐рд░реНрдорд╛рдгрдорд╛ред

рдХреЗрд╣рд┐ рд╕рдордп рдкрдЫрд┐, рд╣рд╛рдореНрд░реЛ рдХрд░реНрдиреЗрд▓ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдлрд╛рдЗрд▓ рдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рд╣реБрдиреЗрдЫ ./linux.

рдмрд╛рдЗрдирд░реА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ

рд▓рд┐рдирдХреНрд╕рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдбрд▓реЗ рдирд┐рдпрдорд┐рдд рдмрд╛рдЗрдирд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рд╣реБрдирд╛рд▓реЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдХреБрдиреИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬрд╕реНрддреИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╣рд╛рдБ рдореИрд▓реЗ рдпреЛ рдХрд╕рд░реА рдЧрд░реЗрдВ:

mkdir -p ~/bin
cp linux ~/bin/linux

рдпреЛ рдкрдирд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫ ~/bin рддрд┐рдореНрд░реЛ рдорд╛ рдЫ $PATH:

export PATH=$PATH:$HOME/bin

рдЕрддрд┐рдерд┐ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рд╕реЗрдЯрдЕрдк рдЧрд░реНрджреИ

рдЕрддрд┐рдерд┐ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

mkdir -p $HOME/prefix/uml-demo
cd $HOME/prefix

alpinelinux.org рд░ рднрд┐рддреНрд░ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН рдбрд╛рдЙрдирд▓реЛрдб рд╕реЗрдХреНрд╕рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рд▓рд┐рдЩреНрдХ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН MINI ROOT FILESYSTEMред рд▓реЗрдЦреНрдиреЗ рд╕рдордпрдорд╛ рдпреЛ рдерд┐рдпреЛ:

http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-minirootfs-3.10.0-x86_64.tar.gz

wget рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдпреЛ tarball рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН:

wget -O alpine-rootfs.tgz http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-minirootfs-3.10.0-x86_64.tar.gz

рдЕрдм рдЕрддрд┐рдерд┐ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЕрднрд┐рд▓реЗрдЦ рдирд┐рдХрд╛рд▓реНрдиреБрд╣реЛрд╕реН:

cd uml-demo
tar xf ../alpine-rootfs.tgz

рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рдХрд╛рд░реНрдпрд╣рд░реВрд▓реЗ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫред рдкреНрд░рдгрд╛рд▓реАрдХреЛ рдкреНрд░рдХреГрддрд┐рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛, рдЕрд▓реНрдкрд╛рдЗрди рдПрдкреАрдХреЗ рдкреНрд░рдмрдиреНрдзрдХ рдорд╛рд░реНрдлрдд рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рд╣реБрдиреЗрдЫред рддрд░ рдпреЛ FS рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреЗрдЫред

рд╣рд╛рдореАрд▓рд╛рдИ рдЙрдкрдХрд░рдг рдкрдирд┐ рдЪрд╛рд╣рд┐рдиреНрдЫ рдЯрд┐рдиреА рдореЗрдореЛрд░реА рдЦрдкрдд рд░реЛрдХреНрди рдЬрд╝реЛрдВрдмреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╣рд╛рдореНрд░реЛ рдЕрддрд┐рдерд┐ рдХрд░реНрдиреЗрд▓ред

wget -O tini https://github.com/krallin/tini/releases/download/v0.18.0/tini-static
chmod +x tini

рдХрд░реНрдиреЗрд▓ рдЖрджреЗрд╢ рд░реЗрдЦрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджреИ

рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓, рдзреЗрд░реИ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд╣рд░реВ рдЬрд╕реНрддреИ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХрд╣рд░реВ рдЫрдиреН рдЬреБрди рдХреБрдЮреНрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрд░ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред --help.

рдЖрдлреИрдВ - рдорджреНрджрдд

linux --help
User Mode Linux v5.1.16
        available at http://user-mode-linux.sourceforge.net/

--showconfig
    Prints the config file that this UML binary was generated from.

iomem=<name>,<file>
    Configure <file> as an IO memory region named <name>.

mem=<Amount of desired ram>
    This controls how much "physical" memory the kernel allocates
    for the system. The size is specified as a number followed by
    one of 'k', 'K', 'm', 'M', which have the obvious meanings.
    This is not related to the amount of memory in the host.  It can
    be more, and the excess, if it's ever used, will just be swapped out.
        Example: mem=64M

--help
    Prints this message.

debug
    this flag is not needed to run gdb on UML in skas mode

root=<file containing the root fs>
    This is actually used by the generic kernel in exactly the same
    way as in any other kernel. If you configure a number of block
    devices and want to boot off something other than ubd0, you
    would use something like:
        root=/dev/ubd5

--version
    Prints the version number of the kernel.

umid=<name>
    This is used to assign a unique identity to this UML machine and
    is used for naming the pid file and management console socket.

con[0-9]*=<channel description>
    Attach a console or serial line to a host channel.  See
    http://user-mode-linux.sourceforge.net/old/input.html for a complete
    description of this switch.

eth[0-9]+=<transport>,<options>
    Configure a network device.
    
aio=2.4
    This is used to force UML to use 2.4-style AIO even when 2.6 AIO is
    available.  2.4 AIO is a single thread that handles one request at a
    time, synchronously.  2.6 AIO is a thread which uses the 2.6 AIO
    interface to handle an arbitrary number of pending requests.  2.6 AIO
    is not available in tt mode, on 2.4 hosts, or when UML is built with
    /usr/include/linux/aio_abi.h not available.  Many distributions don't
    include aio_abi.h, so you will need to copy it from a kernel tree to
    your /usr/include/linux in order to build an AIO-capable UML

nosysemu
    Turns off syscall emulation patch for ptrace (SYSEMU).
    SYSEMU is a performance-patch introduced by Laurent Vivier. It changes
    behaviour of ptrace() and helps reduce host context switch rates.
    To make it work, you need a kernel patch for your host, too.
    See http://perso.wanadoo.fr/laurent.vivier/UML/ for further
    information.

uml_dir=<directory>
    The location to place the pid and umid files.

quiet
    Turns off information messages during boot.

hostfs=<root dir>,<flags>,...
    This is used to set hostfs parameters.  The root directory argument
    is used to confine all hostfs mounts to within the specified directory
    tree on the host.  If this isn't specified, then a user inside UML can
    mount anything on the host that's accessible to the user that's running
    it.
    The only flag currently supported is 'append', which specifies that all
    files opened by hostfs will be opened in append mode.

рдпреЛ рдкреНрдпрд╛рдирд▓рд▓реЗ рдореБрдЦреНрдп рд▓рдиреНрдЪ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░реНрджрдЫред рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрдХреЛ рд╕рд╛рде рдХрд░реНрдиреЗрд▓ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН:

linux 
  root=/dev/root 
  rootfstype=hostfs 
  rootflags=$HOME/prefix/uml-demo 
  rw 
  mem=64M 
  init=/bin/sh

рдорд╛рдерд┐рдХрд╛ рд░реЗрдЦрд╛рд╣рд░реВрд▓реЗ рд╣рд╛рдореНрд░реЛ рдХрд░реНрдиреЗрд▓рд▓рд╛рдИ рдирд┐рдореНрди рдмрддрд╛рдЙрдБрдЫ:

  • рдорд╛рдиреНрдиреБрд╣реЛрд╕реН рдореВрд▓ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдПрдХ рдЫрджреНрдо рдЙрдкрдХрд░рдг рд╣реЛ /dev/root.
  • рдЫрдиреМрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН hostfs рд░реВрдЯ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдЪрд╛рд▓рдХрдХреЛ рд░реВрдкрдорд╛ред
  • рд╣рд╛рдореАрд▓реЗ рд░реВрдЯ рдЙрдкрдХрд░рдгрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ рдЕрддрд┐рдерд┐ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рд░ рд╣реЛ, рдкрдвреНрдиреЗ-рд▓реЗрдЦрди рдореЛрдбрдорд╛ред
  • RAM рдХреЛ 64 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рддрдкрд╛рдИрд▓реЗ рдХреЗ рдЧрд░реНрдиреЗ рдпреЛрдЬрдирд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдзреЗрд░реИ рдХрдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ 64 MB рдЗрд╖реНрдЯрддрдо рд░рдХрдо рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ)ред
  • рдХрд░реНрдиреЗрд▓ рд╕реНрд╡рддрдГ рд╕реБрд░реБ рд╣реБрдиреНрдЫ /bin/sh рдХрд╕рд░реА init- рдкреНрд░рдХреНрд░рд┐рдпрд╛ред

рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рдореНрди рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрдкрд░реНрдЫ:

рдЕрд░реНрдХреЛ рдкрд╛рдирд╛

Core dump limits :
        soft - 0
        hard - NONE
Checking that ptrace can change system call numbers...OK
Checking syscall emulation patch for ptrace...OK
Checking advanced syscall emulation patch for ptrace...OK
Checking environment variables for a tempdir...none found
Checking if /dev/shm is on tmpfs...OK
Checking PROT_EXEC mmap in /dev/shm...OK
Adding 32137216 bytes to physical memory to account for exec-shield gap
Linux version 5.1.16 (cadey@kahless) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #30 Sun Jul 7 18:57:19 UTC 2019
Built 1 zonelists, mobility grouping on.  Total pages: 23898
Kernel command line: root=/dev/root rootflags=/home/cadey/dl/uml/alpine rootfstype=hostfs rw mem=64M init=/bin/sh
Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode-cache hash table entries: 8192 (order: 4, 65536 bytes)
Memory: 59584K/96920K available (2692K kernel code, 708K rwdata, 588K rodata, 104K init, 244K bss, 37336K reserved, 0K cma-reserved)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS: 15
clocksource: timer: mask: 0xffffffffffffffff max_cycles: 0x1cd42e205, max_idle_ns: 881590404426 ns
Calibrating delay loop... 7479.29 BogoMIPS (lpj=37396480)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes)
Checking that host ptys support output SIGIO...Yes
Checking that host ptys support SIGIO on close...No, enabling workaround
devtmpfs: initialized
random: get_random_bytes called from setup_net+0x48/0x1e0 with crng_init=0
Using 2.6 host AIO
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 256 (order: 0, 6144 bytes)
NET: Registered protocol family 16
clocksource: Switched to clocksource timer
NET: Registered protocol family 2
tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
UDP hash table entries: 256 (order: 1, 8192 bytes)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
NET: Registered protocol family 1
console [stderr0] disabled
mconsole (version 2) initialized on /home/cadey/.uml/tEwIjm/mconsole
Checking host MADV_REMOVE support...OK
workingset: timestamp_bits=62 max_order=14 bucket_order=0
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
io scheduler noop registered (default)
io scheduler bfq registered
loop: module loaded
NET: Registered protocol family 17
Initialized stdio console driver
Using a channel type which is configured out of UML
setup_one_line failed for device 1 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 2 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 3 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 4 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 5 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 6 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 7 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 8 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 9 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 10 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 11 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 12 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 13 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 14 : Configuration failed
Using a channel type which is configured out of UML
setup_one_line failed for device 15 : Configuration failed
Console initialized on /dev/tty0
console [tty0] enabled
console [mc-1] enabled
Failed to initialize ubd device 0 :Couldn't determine size of device's file
VFS: Mounted root (hostfs filesystem) on device 0:11.
devtmpfs: mounted
This architecture does not have kernel memory protection.
Run /bin/sh as init process
/bin/sh: can't access tty; job control turned off
random: fast init done
/ # 

рдорд╛рдерд┐рдХреЛ рд╣реЗрд░рдлреЗрд░рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рджрд┐рдиреЗрдЫ рдиреНрдпреВрдирддрдо рдЕрддрд┐рдерд┐ рдкреНрд░рдгрд╛рд▓реАрдЬрд╕реНрддреИ рдЪреАрдЬрд╣рд░реВ рдмрд┐рдирд╛ /proc рд╡рд╛ рддреЛрдХрд┐рдПрдХреЛ рд╣реЛрд╕реНрдЯрдирд╛рдоред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдирд┐рдореНрди рдЖрджреЗрд╢рд╣рд░реВ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

- uname -av
- cat /proc/self/pid
- hostname

рдЕрддрд┐рдерд┐рдмрд╛рдЯ рд▓рдЧ рдЖрдЙрдЯ рдЧрд░реНрди, рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН exit рд╡рд╛ рдирд┐рдпрдиреНрддреНрд░рдг-d рдерд┐рдЪреНрдиреБрд╣реЛрд╕реНред рдпрд╕рд▓реЗ рд╢реЗрд▓рд▓рд╛рдИ рдХрд░реНрдиреЗрд▓ рдЖрддрдВрдХ рдкрдЫрд┐ рдлрд╛рдпрд░ рдЧрд░реНрдиреЗрдЫ:

/ # exit
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
fish: тАЬ./linux root=/dev/root rootflagтАжтАЭ terminated by signal SIGABRT (Abort)

рд╣рд╛рдореАрд▓реЗ рдпреЛ рдХрд░реНрдиреЗрд▓ рдЖрддрдВрдХ рдкрд╛рдпреМрдВ рдХрд┐рдирднрдиреЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рд▓реЗ рд╕реЛрдЪреНрджрдЫ рдХрд┐ рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдзреИрдВ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫред рдпреЛ рдмрд┐рдирд╛, рдкреНрд░рдгрд╛рд▓реА рдЕрдм рдХрд╛рдо рдЧрд░реНрди рд░ рдХреНрд░реНрдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрджреИрдиред рддрд░ рдпреЛ рдПрдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рдореЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднрдПрдХреЛрд▓реЗ, рдкрд░рд┐рдгрд╛рдо рдЖрдЙрдЯрдкреБрдЯ рдЖрдлреИрд▓рд╛рдИ рдкрдард╛рдЙрдБрдЫ SIGABRT, рдЬрд╕рд▓реЗ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдиреНрдЫред

рдЕрддрд┐рдерд┐ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрдЕрдк

рд░ рдпрд╣реАрдВрдмрд╛рдЯ рдЪреАрдЬрд╣рд░реВ рдЧрд▓рдд рд╣реБрди рдерд╛рд▓реНрдЫрдиреНред рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рд▓рд┐рдирдХреНрд╕рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдЬрд╣рд╛рдБ рд╕реАрдорд┐рдд "рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб" рдХреЛ рд╕рдореНрдкреВрд░реНрдг рдЕрд╡рдзрд╛рд░рдгрд╛ рдЕрд▓рдЧ рд╣реБрди рдерд╛рд▓реНрдЫред рдЖрдЦрд┐рд░, рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рд╕реНрддрд░ рдорд╛, рдиреЗрдЯрд╡рд░реНрдХ рд╕реАрдорд┐рдд рдЫ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╣рд╛рдореА рд╕рдмреИрд▓рд╛рдИ рдмреБрдЭреНрди рд╕рдХрд┐рдиреЗ рдХрд╛рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЛрдбрд╣рд░реВред

рдиреЛрдЯред рдкреНрд░рддрд┐ред: рддрдкрд╛рдИрдВрд▓реЗ UML рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБ.

Slirp рдХреЛ рдпрд╛рддреНрд░рд╛

рдпрджреНрдпрдкрд┐, рддреНрдпрд╣рд╛рдБ рдПрдХ рдкреБрд░рд╛рдиреЛ рд░ рд▓рдЧрднрдЧ рдЕрд╕рдорд░реНрдерд┐рдд рдЙрдкрдХрд░рдг рднрдирд┐рдиреНрдЫ рд╕реНрд▓рд┐рд░реНрдк, рдЬрд╕рдХреЛ рд╕рд╛рде рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рд▓рд┐рдирдХреНрд╕рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛-рд╕реНрддрд░ TCP/IP рд╕реНрдЯреНрдпрд╛рдХ рдЬрд╕реНрддреИ рдХрд╛рдо рдЧрд░реНрджрдЫ рд░ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдгрд╛рд▓реА рдЕрдиреБрдорддрд┐рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрдиред рдпреЛ рдЙрдкрдХрд░рдг рдерд┐рдпреЛ 1995 рдорд╛ рдЬрд╛рд░реА, рд░ рдирд╡реАрдирддрдо рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдорд┐рддрд┐ рдЫ рд╕рдиреН резреорежрейред Slirp рдзреЗрд░реИ рдкреБрд░рд╛рдиреЛ рдЫред рд╕рдорд░реНрдерди рд░ рдЕрдкрдбреЗрдЯ рдмрд┐рдирд╛рдХреЛ рд╕рдордпрдорд╛, рдХрдореНрдкрд╛рдЗрд▓рд░рд╣рд░реВ рдпрддрд┐ рдЯрд╛рдврд╛ рдЧрдПрдХрд╛ рдЫрдиреН рдХрд┐ рдЕрдм рдпреЛ рдЙрдкрдХрд░рдг рдорд╛рддреНрд░ рд╡рд░реНрдгрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ "рдХреЛрдб рд╕рдб".

рддреНрдпрд╕реЛрднрдП Ubuntu рднрдгреНрдбрд╛рд░рд╣рд░реВрдмрд╛рдЯ Slirp рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ:

sudo apt-get install slirp
/usr/bin/slirp
Slirp v1.0.17 (BETA)

Copyright (c) 1995,1996 Danny Gasparovski and others.
All rights reserved.
This program is copyrighted, free software.
Please read the file COPYRIGHT that came with the Slirp
package for the terms and conditions of the copyright.

IP address of Slirp host: 127.0.0.1
IP address of your DNS(s): 1.1.1.1, 10.77.0.7
Your address is 10.0.2.15
(or anything else you want)

Type five zeroes (0) to exit.

[autodetect SLIP/CSLIP, MTU 1500, MRU 1500, 115200 baud]

SLiRP Ready ...
fish: тАЬ/usr/bin/slirpтАЭ terminated by signal SIGSEGV (Address boundary error)

рд╣реЗ рджреЗрд╡рддрд╛рд╣рд░реБред Slirp рдХреЛ рдбрд┐рдмрдЧрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реМрдВ рд░ рд╣реЗрд░реМрдВ рдХрд┐ рд╣рд╛рдореА рдпрд╣рд╛рдБ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдЫреМрдВ:

sudo apt-get install gdb slirp-dbgsym
gdb /usr/bin/slirp
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/slirp...Reading symbols from /usr/lib/debug/.build-id/c6/2e75b69581a1ad85f72ac32c0d7af913d4861f.debug...done.
done.
(gdb) run
Starting program: /usr/bin/slirp
Slirp v1.0.17 (BETA)

Copyright (c) 1995,1996 Danny Gasparovski and others.
All rights reserved.
This program is copyrighted, free software.
Please read the file COPYRIGHT that came with the Slirp
package for the terms and conditions of the copyright.

IP address of Slirp host: 127.0.0.1
IP address of your DNS(s): 1.1.1.1, 10.77.0.7
Your address is 10.0.2.15
(or anything else you want)

Type five zeroes (0) to exit.

[autodetect SLIP/CSLIP, MTU 1500, MRU 1500, 115200 baud]

SLiRP Ready ...

Program received signal SIGSEGV, Segmentation fault.
                                                    ip_slowtimo () at ip_input.c:457
457     ip_input.c: No such file or directory.

рдЧрд▓реНрддреА рд╣рд╛рдореАрдорд╛ рдЫ рдпреЛ рд▓рд╛рдЗрдиред рд╕реНрдЯреНрдпрд╛рдХрдЯреНрд░реЗрд╕ рд╣реЗрд░реМрдВ, рд╕рд╛рдпрдж рддреНрдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗрд╣рд┐ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ:

(gdb) bt full
#0  ip_slowtimo () at ip_input.c:457
        fp = 0x55784a40
#1  0x000055555556a57c in main_loop () at ./main.c:980
        so = <optimized out>
        so_next = <optimized out>
        timeout = {tv_sec = 0, tv_usec = 0}
        ret = 0
        nfds = 0
        ttyp = <optimized out>
        ttyp2 = <optimized out>
        best_time = <optimized out>
        tmp_time = <optimized out>
#2  0x000055555555b116 in main (argc=1, argv=0x7fffffffdc58) at ./main.c:95
No locals.

рдпрд╣рд╛рдБ рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рдХреНрд░реНрдпрд╛рд╕ рдореБрдЦреНрдп рд▓реВрдк рд╕реНрдЯрд╛рд░реНрдЯрдХреЛ рд╕рдордпрдорд╛ рд╣реБрдиреНрдЫ рдЬрдм рд╕реНрд▓рд┐рд░реНрдкрд▓реЗ рдЯрд╛рдЗрдордЖрдЙрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджрдЫред рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛, рдореИрд▓реЗ рдбрд┐рдмрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЫреЛрдбреНрдиреБрдкрд░реНтАНрдпреЛред рддрд░ рд╣реЗрд░реМрдВ рдХрд┐ рдкреНрд░рдХрд╛рд░рдмрд╛рдЯ рдирд┐рд░реНрдорд┐рдд Slirp рдХрд╛рдо рдЧрд░реНрджрдЫред рдореИрд▓реЗ рд╕рд┐рдзреИ рд╕рд╛рдЗрдЯрдмрд╛рдЯ рдЕрднрд┐рд▓реЗрдЦ рдкреБрди: рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реЗрдВ рд╕реНрд░реЛрдд рдлреЛрд░реНрдЬ, рдХрд┐рдирднрдиреЗ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдорд╛рд░реНрдлрдд рддреНрдпрд╣рд╛рдБрдмрд╛рдЯ рдХреЗрд╣рд┐ рддрд╛рдиреНрдиреБ рдкреАрдбрд╛ рд╣реЛ:

cd ~/dl
wget https://xena.greedo.xeserv.us/files/slirp-1.0.16.tar.gz
tar xf slirp-1.0.16.tar.gz
cd slirp-1.0.16/src
./configure --prefix=$HOME/prefix/slirp
make

рдпрд╣рд╛рдБ рд╣рд╛рдореА рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрд▓рд░реНрдЯрд╣рд░реВ рджреЗрдЦреНрдЫреМрдВ, рддреНрдпреЛ рд╣реЛ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓ рд▓рд┐рдЩреНрдХ рдЧрд░реНрдиреЗ рдЕрд╕рдореНрднрд╡рддрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ред рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ 2006 рд░ рдЕрд╣рд┐рд▓реЗ gcc рд▓реЗ рдирд┐рд░реНрдорд┐рдд рдордзреНрдпрд╡рд░реНрддреА рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рддреАрдХрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░реЛрдХреЗрдХреЛ рдЫред рдХреБрдЮреНрдЬреА рд╢рдмреНрдж рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ inline рдЦрд╛рд▓реА рдЯрд┐рдкреНрдкрдгреАрдорд╛ рд░ рдкрд░рд┐рдгрд╛рдо рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН:

vi slirp.h
:6
a
<enter>
#define inline /**/
<escape>
:wq
make

рд╣реЛрдЗрдиред рдпреЛ рдкрдирд┐ рдХрд╛рдо рдЧрд░реНрджреИрдиред рдЕрдЭреИ рдкрдирд┐ рдпреА рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддреАрдХрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрджреИрдиред

рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛, рдореИрд▓реЗ рдЫреЛрдбрд┐рджрд┐рдПрдБ рд░ Github рдорд╛ рд╣реЗрд░реНрди рдерд╛рд▓реЗ Heroku рдирд┐рд░реНрдорд╛рдг рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВред рдореЗрд░реЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдерд┐рдпреЛ рдХрд┐ рдХреЗрд╣рд┐ Heroku рдирд┐рд░реНрдорд╛рдг рдкреНрдпрд╛рдХреЗрдЬрд▓реЗ рдорд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдмрд╛рдЗрдирд░реАрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рдЕрдиреНрддрдорд╛, рдЦреЛрдЬрд▓реЗ рдорд▓рд╛рдИ рдЕрдЧреБрд╡рд╛рдЗ рдЧрд░реНрдпреЛ рдпрддрд╛рддрд┐рд░ред рдореИрд▓реЗ рдбрд╛рдЙрдирд▓реЛрдб рд░ рдЕрдирдкреНрдпрд╛рдХ рдЧрд░реЗрдВ uml.tar.gz рд░ рдирд┐рдореНрди рдлреЗрд▓рд╛ рдкрд╛рд░реЗ:

total 6136
-rwxr-xr-x 1 cadey cadey   79744 Dec 10  2017 ifconfig*
-rwxr-xr-x 1 cadey cadey     373 Dec 13  2017 init*
-rwxr-xr-x 1 cadey cadey  149688 Dec 10  2017 insmod*
-rwxr-xr-x 1 cadey cadey   66600 Dec 10  2017 route*
-rwxr-xr-x 1 cadey cadey  181056 Jun 26  2015 slirp*
-rwxr-xr-x 1 cadey cadey 5786592 Dec 15  2017 uml*
-rwxr-xr-x 1 cadey cadey     211 Dec 13  2017 uml_run*

рдпреЛ рд╕реНрд▓рд┐рд░реНрдк рдмрд╛рдЗрдирд░реА рд╣реЛ! рдХреЗ рдЙрд╕рд▓реЗ рдХрд╛рдо рдЧрд░реНрдЫ?

./slirp
Slirp v1.0.17 (BETA) FULL_BOLT

Copyright (c) 1995,1996 Danny Gasparovski and others.
All rights reserved.
This program is copyrighted, free software.
Please read the file COPYRIGHT that came with the Slirp
package for the terms and conditions of the copyright.

IP address of Slirp host: 127.0.0.1
IP address of your DNS(s): 1.1.1.1, 10.77.0.7
Your address is 10.0.2.15
(or anything else you want)

Type five zeroes (0) to exit.

[autodetect SLIP/CSLIP, MTU 1500, MRU 1500]

SLiRP Ready ...

рдХреНрд░реНрдпрд╛рд╕ рдЧрд░реНрджреИрди - рддреНрдпрд╕реИрд▓реЗ рдпреЛ рдХрд╛рдо рдЧрд░реНрдиреБрдкрд░реНрдЫ! рдпреЛ рдмрд╛рдЗрдирд░реА рдорд╛ рд░реЛрдкреМрдВ ~/bin/slirp:

cp slirp ~/bin/slirp

рдпрджрд┐ рдкреНрдпрд╛рдХреЗрдЬ рдирд┐рд░реНрдорд╛рддрд╛рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╣рдЯрд╛рдЙрдБрдЫ рднрдиреЗ, рдо рдРрдирд╛ рдмрдирд╛рдП.

рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрдЕрдк

рдЕрдм рд╣рд╛рдореНрд░реЛ рдЕрддрд┐рдерд┐ рдХреЛрд░рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реМрдВред рд▓рдиреНрдЪ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

linux 
  root=/dev/root 
  rootfstype=hostfs 
  rootflags=$HOME/prefix/uml-demo 
  rw 
  mem=64M 
  eth0=slirp,,$HOME/bin/slirp 
  init=/bin/sh

рдЕрдм рдиреЗрдЯрд╡рд░реНрдХ рдЦреЛрд▓реМрдВ:

mount -t proc proc proc/
mount -t sysfs sys sys/

ifconfig eth0 10.0.2.14 netmask 255.255.255.240 broadcast 10.0.2.15
route add default gw 10.0.2.2

рдкрд╣рд┐рд▓реЛ рджреБрдИ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЖрджреЗрд╢рд╣рд░реВ /proc ╨╕ /sys рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ ifconfig, рдЬрд╕рд▓реЗ Slirp рд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрди рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╕реЗрдЯ рдЧрд░реНрджрдЫред рдЯреЛрд▓реА route Slirp рдЯрдиреЗрд▓ рдорд╛рд░реНрдлрдд рдкрдард╛рдЙрди рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХрд╣рд░реВрд▓рд╛рдИ рдЬрдмрд░рдЬрд╕реНрддреА рдЧрд░реНрди рдХрд░реНрдиреЗрд▓ рдорд╛рд░реНрдЧ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗрдЯ рдЧрд░реНрджрдЫред DNS рдХреНрд╡реЗрд░реАрдХреЛ рд╕рд╛рде рдпреЛ рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:

nslookup google.com 8.8.8.8
Server:    8.8.8.8
Address 1: 8.8.8.8 dns.google

Name:      google.com
Address 1: 172.217.12.206 lga25s63-in-f14.1e100.net
Address 2: 2607:f8b0:4006:81b::200e lga25s63-in-x0e.1e100.net

рдпреЛ рдХрд╛рдо рдЧрд░реНрджрдЫ!

рдиреЛрдЯ рдкреНрд░рддрд┐ред: рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдореВрд▓ рдкреЛрд╖реНрдЯ рддрд╛рд░рдпреБрдХреНрдд рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдбрдХреЛ рд╕рд╛рде рдбреЗрд╕реНрдХрдЯрдкрдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдерд┐рдпреЛ, рд╡рд╛ рдХреЗрд╣реА рдЕрдиреНрдп рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЬрд╕рд▓рд╛рдИ рдердк рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрдиред Intel рдмрд╛рдЯ WiFi 8265 рднрдПрдХреЛ рд▓реНрдпрд╛рдкрдЯрдкрдорд╛, рдиреЗрдЯрд╡рд░реНрдХ рдЙрдард╛рдЙрдБрджрд╛ рддреНрд░реБрдЯрд┐ рджреЗрдЦрд╛рдкрд░реНрдЫ

/ # ifconfig eth0 10.0.2.14 netmask 255.255.255.240 broadcast 10.0.2.15
slirp_tramp failed - errno = 2
ifconfig: ioctl 0x8914 failed: No such file or directory
/ #

рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдХрд░реНрдиреЗрд▓рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рдбреНрд░рд╛рдЗрднрд░рд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрди рд╕рдХреНрджреИрдиред рдХрд░реНрдиреЗрд▓рдорд╛ рдлрд░реНрдорд╡реЗрдпрд░ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕, рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рд╕реНрдерд┐рддрд┐ рдареАрдХ рднрдПрдиред рдкреНрд░рдХрд╛рд╢рдирдХреЛ рд╕рдордпрдорд╛, рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬреНрди рд╕рдореНрднрд╡ рдерд┐рдПрдиред рд╕рд░рд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрдорд╛ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рднрд░реНрдЪреБрдЕрд▓рдмрдХреНрд╕рдорд╛), рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╕рд╣реА рд░реВрдкрдорд╛ рдмрдвреНрдЫред

рдирд┐рдореНрди рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛ рд╕рд╛рде рд░рд┐рдбрд┐рд░реЗрдХреНрдЯрд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реМрдВ:

#!/bin/sh
# init.sh

mount -t proc proc proc/
mount -t sysfs sys sys/
ifconfig eth0 10.0.2.14 netmask 255.255.255.240 broadcast 10.0.2.15
route add default gw 10.0.2.2

echo "networking set up"

exec /tini /bin/sh

рд░ рдпрд╕рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпреЛрдЧреНрдп рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реН:

chmod +x init.sh

рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХрд░реНрдиреЗрд▓ рдЖрджреЗрд╢ рд▓рд╛рдЗрдирдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реМрдВ:

linux 
  root=/dev/root 
  rootfstype=hostfs 
  rootflags=$HOME/prefix/uml-demo 
  rw 
  mem=64M 
  eth0=slirp,,$HOME/bin/slirp 
  init=/init.sh

рд░ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН:

SLiRP Ready ...
networking set up
/bin/sh: can't access tty; job control turned off

nslookup google.com 8.8.8.8
Server:    8.8.8.8
Address 1: 8.8.8.8 dns.google

Name:      google.com
Address 1: 172.217.12.206 lga25s63-in-f14.1e100.net
Address 2: 2607:f8b0:4004:800::200e iad30s09-in-x0e.1e100.net

рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд┐рд░ рдЫ!

рдбрдХрд░ рдлрд╛рдЗрд▓

рддрдкрд╛рдИрд▓рд╛рдИ рдпреЛ рд╕рдмреИ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рдореИрд▓реЗ рд╕рдЩреНрдХрд▓рди рдЧрд░реЗрдХреЛ рдЫреБ рдбрдХрд░рдлрд╛рдЗрд▓, рдЬрд╕рд▓реЗ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪрд░рдгрд╣рд░реВрд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрдирд╛рдЙрдБрдЫ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрдкрд░реНрдЫред рдо рд╕рдВрдЧ рдкрдирд┐ рдЫ рддрдпрд╛рд░ рдХрд░реНрдиреЗрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди, рдЬрд╕рдорд╛ рдкреЛрд╖реНрдЯрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рд╕рдмреИ рдХреБрд░рд╛ рдЫред рддрд░ рдпреЛ рдмреБрдЭреНрди рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ рдХрд┐ рдпрд╣рд╛рдБ рдореИрд▓реЗ рдиреНрдпреВрдирддрдо рд╕реЗрдЯрд┐рдЩрд▓рд╛рдИ рдорд╛рддреНрд░ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдЧрд░реЗрдХреЛ рдЫреБред

рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпреЛ рдкреЛрд╖реНрдЯрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрддрд┐рдерд┐ рдХрд░реНрдиреЗрд▓ рдХрд╕рд░реА рдмрдврд╛рдЙрдиреЗ рднрдиреЗрд░ рдмреБрдЭреНрди рдорджреНрджрдд рдЧрд░реЗрдХреЛ рдЫред рдпреЛ рдХреБрдиреИ рдкреНрд░рдХрд╛рд░рдХреЛ рд░рд╛рдХреНрд╖рд╕ рд╣реЛ, рддрд░ рдкреНрд░рдХрд╛рд╢рдирд▓рд╛рдИ рдпрд╕ рдкрд░рд┐рд╡рд╛рд░рдХреЛ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдорд╣рд░реВрдХреЛ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдЕрдиреНрддрд░реНрдЧрдд рд▓рд┐рдирдХреНрд╕рдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдореЛрдб рдирд┐рд░реНрдорд╛рдг, рд╕реНрдерд╛рдкрдирд╛ рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рд╡рд┐рд╕реНрддреГрдд рдЧрд╛рдЗрдбрдХреЛ рд░реВрдкрдорд╛ рдХрд▓реНрдкрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдЕрд░реНрдХреЛ рдЪрд░рдгрд╣рд░реВрдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрддрд┐рдерд┐ рдкреНрд░рдгрд╛рд▓реА рднрд┐рддреНрд░ рд╕реЗрд╡рд╛рд╣рд░реВ рд░ рдЕрдиреНрдп рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреБрдкрд░реНрдЫред рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рдЫрд╡рд┐рд╣рд░реВ рднрд░реНрдЦрд░реИ рдкреНрд░рдЪрд╛рд░рд┐рдд рдЯрд╛рд░реНрдмрд▓рд╣рд░реВ рднрдПрдХрд╛рд▓реЗ, рддрдкрд╛рдИрдВрд▓реЗ рдЫрд╡рд┐ рдорд╛рд░реНрдлрдд рдирд┐рдХрд╛рд▓реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрджрдЫ docker export, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдЕрддрд┐рдерд┐ рдХрд░реНрдиреЗрд▓рдХреЛ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд░реВрдЯрдорд╛ рдпрд╕рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдорд╛рд░реНрдЧ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдареАрдХ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред

Freenode рдорд╛ #lobsters рдмрд╛рдЯ Rkeene рд▓рд╛рдИ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред Slirp рд▓рд╛рдИ рдбрд┐рдмрдЧ рдЧрд░реНрдиреЗ рдЙрд╣рд╛рдБрдХреЛ рдорджреНрджрдд рдмрд┐рдирд╛, рдо рдпреЛ рдЯрд╛рдврд╛ рдкреБрдЧреНрди рд╕рдХреНрджрд┐рдиред рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рдХрд╕рд░реА рдЙрд╕рдХреЛ рд╕реНрд▓реНрдпрд╛рдХрд╡реЗрдпрд░ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рд╕реНрд▓рд┐рд░реНрдкрд╕рдБрдЧ рд╕рд╣реА рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдЫ, рддрд░ рдореЗрд░реЛ рдЙрдмреБрдиреНрдЯреБ рд░ рдЕрд▓реНрдкрд╛рдЗрди рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд▓реЗ рд╕реНрд▓рд┐рд░реНрдк рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реЗрдирдиреН рд░ рдмрд╛рдЗрдирд░реА рд░реЗрдХреАрдирд▓реЗ рдорд▓рд╛рдИ рд╕реБрдЭрд╛рд╡ рджрд┐рдПред рддрд░ рдпреЛ рдореЗрд░реЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдЫ рдХрд┐ рдХрдореНрддрд┐рдорд╛ рдореЗрд░реЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рдХрд╛рдо рдЧрд░реНрджрдЫред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди