เบงเบดเบ—เบตเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบŠเป‰เป‚เบซเบกเบ”เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™ Linux

เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบˆเบฒเบเบ™เบฑเบเปเบ›: เบ•เปเปˆเบเบฑเบšเบชเบดเปˆเบ‡เบซเบเปเป‰เบ—เปเป‰เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบกเบฒเปƒเบ™เบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ‚เบญเบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเปเบฅเบฐเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ—เบตเปˆเบกเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ„เบฑเป‰เบ‡เบ”เบฝเบง. เบšเบฒเบ‡เบชเปˆเบงเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบˆเบปเบ™เป€เบ–เบดเบ‡เบ—เบธเบเบกเบทเป‰เบ™เบตเป‰, เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบ—เบธเบเบ„เบปเบ™เบˆเบทเปˆเบงเบดเบ—เบตเบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง (เบซเบผเบทเบฎเบนเป‰เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเบˆเบฑเบšเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ). เบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบ—เบเป‚เบ™เป‚เบฅเบเบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™ User Mode Linux. เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป„เบ”เป‰เบ‚เบธเบ”เบซเบผเบฒเบ, เบ„เบดเบ”เป„เบฅเปˆเบงเปˆเบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบเบปเปˆเบฒเปƒเบ”เบเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเปเบฅเบฐเบญเบฑเบ™เปƒเบ”เบšเปเปˆเป„เบ”เป‰, เปเบฅเบฐเป€เบญเบปเบฒเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™: เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเป€เบ—เบทเปˆเบญเบฅเบฐเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เป€เบญเบปเบฒ UML homebrew เบ•เบปเบงเป€เบญเบ‡เปƒเบ™ 2k19. เปเบฅเบฐเปเบกเปˆเบ™เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบŠเบทเป‰เบญเป€เบŠเบตเบ™เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป„เบ›เบซเบฒ Habr Cadey, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบตเบ„เปเบฒเบ–เบฒเบกเปƒเบ”เป† - เบ–เบฒเบกเบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”เปƒเบ™เบ„เปเบฒเป€เบซเบฑเบ™.

เบงเบดเบ—เบตเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบŠเป‰เป‚เบซเบกเบ”เบœเบนเป‰เปƒเบŠเป‰เปƒเบ™ Linux

เบฎเบนเบšเปเบšเบšเบœเบนเป‰เปƒเบŠเป‰เปƒเบ™ Linux เปเบกเปˆเบ™, เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เป€เบ›เบฑเบ™เบžเบญเบ”เบ‚เบญเบ‡ Linux kernel เบเบฑเบšเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. เป‚เบซเบกเบ”เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เปƒเบŠเป‰ Linux kernel เป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบšเป€เบ›เบฑเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เป‚เบ”เบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเป„เบ”เป€เบงเบต. เปเบ•เปˆเบฎเบนเบšเปเบšเบšเบ™เบตเป‰เบเบฑเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เป‚เบ”เบ”เบ”เปˆเบฝเบงเบ—เบปเปˆเบงเป„เบ›, เบซเบผเบฑเบเบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual. เป‚เปเบ”เบ™เบตเป‰เปƒเบซเป‰เบ„เบงเบฒเบกเป‚เบ”เบ”เบ”เปˆเบฝเบงเบซเบผเบฒเบเบเบงเปˆเบฒ Docker, เปเบ•เปˆเปœเป‰เบญเบเบเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡ virtual เป€เบ•เบฑเบกเบฎเบนเบšเปเบšเบšเป€เบŠเบฑเปˆเบ™ KVM เบซเบผเบท Virtual Box.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เป‚เปเบ”เบœเบนเป‰เปƒเบŠเป‰เบญเบฒเบ”เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเปเบ›เบ เปเบฅเบฐ เบเบฒเบเบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰, เปเบ•เปˆเบกเบฑเบ™เบเบฑเบ‡เบกเบตเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบขเบนเปˆ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เบ™เบตเป‰เปเบกเปˆเบ™ kernel Linux เป€เบ•เบฑเบกเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบšเปเปˆเบกเบตเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”. เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ‚เบปเปˆเบกเบ‚เบนเปˆเปƒเบ”เป†เบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™ kernel เป€เบ•เบฑเบกเบ›เปˆเบฝเบก, เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เบ–เบทเบเปเบเบเบญเบญเบเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เป‚เบฎเบ”, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ”เบœเบนเป‰เปƒเบŠเป‰เบˆเบฐเบšเปเปˆเบ›เบฒเบเบปเบ”เปƒเบซเป‰เป‚เบฎเบ”เป€เบซเบฑเบ™. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบ„เบทเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ Docker เบ›เบปเบเบเบฐเบ•เบด, เปƒเบ™เบเปเบฅเบฐเบ™เบตเป€เบ„เบทเปˆเบญเบ‡เป‚เบฎเบ”เบˆเบฐเป€เบซเบฑเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เปˆเบฒเบ‡เป†เบžเบฒเบเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. เป€เบšเบดเปˆเบ‡เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ‚เบญเบ‡ 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 kernel เปƒเบ™เบฎเบนเบšเปเบšเบšเบœเบนเป‰เปƒเบŠเป‰:

linuxโ”€โ”ฌโ”€5*[linux]
      โ””โ”€slirp

เป€เบกเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Docker containers, เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เบŠเบทเปˆเบ‚เบญเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เปเบ‚เบ. เบ”เป‰เบงเบเป‚เปเบ”เบœเบนเป‰เปƒเบŠเป‰ Linux, เบญเบฑเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰. เบกเบฑเบ™เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเปเบ™เบงเปƒเบ”? เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบœเปˆเบฒเบ™เบฅเบฐเบšเบปเบšเบเปˆเบญเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ‚เบญเบ‡ Linux เบšเปเปˆเป€เบซเบฑเบ™ เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเปเบ‚เบ. เปเบ•เปˆเปƒเบ™เบšเบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™, เบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบเบฒเบเป€เบ›เบฑเบ™เบ”เบฒเบšเบชเบญเบ‡เบ„เบปเบก.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เป€เบเบฑเบšเบเปเบฒเบเบฒเบ™เบ„เบปเป‰เบ™เบ„เบงเป‰เบฒเปเบฅเบฐเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบšเบฑเบ™เบฅเบธเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบงเบฑเบ”เบ–เบธเบšเบนเบฎเบฒเบ™เบ•เปˆเบฒเบ‡เป†, เบญเปˆเบฒเบ™เปเบซเบผเปˆเบ‡เปเบเปˆเบ™, เปเบเป‰เป„เบ‚เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ‚เบฝเบ™เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เปƒเบ™เบชเบฐเป„เบซเบกเบ—เบตเปˆเบ‚เป‰เบญเบเบเบฑเบ‡เบขเบนเปˆเปƒเบ™เป‚เบฎเบ‡เบฎเบฝเบ™เบ›เบฐเบ–เบปเบก, เปเบฅเบฐเบเบฑเบ‡ tinker เบเบฑเบš Heroku เบชเป‰เบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰ binary เบžเบดเป€เบชเบ”เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™. . เบงเบฝเบเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ guys เปƒเบ™ IRC เบ‚เบญเบ‡เบ‚เป‰เบญเบเป‚เบ—เบซเบฒเบ‚เป‰เบญเบ magic. เบ‚เป‰เบญเบเบซเบงเบฑเบ‡เบงเปˆเบฒเป‚เบžเบชเบ™เบตเป‰เปƒเบŠเป‰เป€เบ›เบฑเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเบณเบฅเบฑเบšเบšเบฒเบ‡เบ„เบปเบ™เบ—เบตเปˆเบˆเบฐเบฅเบญเบ‡เปƒเบŠเป‰เบญเบฑเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบš kernels เปเบฅเบฐ OS เบฅเบธเป‰เบ™เปƒเปเปˆเบเบงเปˆเบฒ.

เบเบฒเบ™เบ›เบฑเบš

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป‚เบซเบกเบ”เบœเบนเป‰เปƒเบŠเป‰ Linux เปเบกเปˆเบ™เป€เบฎเบฑเบ”เปƒเบ™เบซเบผเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™:

  • เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบˆเบปเป‰เบฒเบžเบฒเบš;
  • เบเบฒเบ™เบ”เบฒเบงเป‚เบซเบผเบ” kernel Linux;
  • kernel build configuration;
  • เบเบฒเบ™เบ›เบฐเบเบญเบš kernel;
  • เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ„เบนเปˆ;
  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ‚เบญเบ‡เปเบ‚เบ;
  • เบเบฒเบ™เป€เบฅเบทเบญเบเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง kernel;
  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเปเบ‚เบ;
  • เป€เบฅเบตเปˆเบก kernel เปเบ‚เบ.

เบ‚เป‰เบญเบเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบฎเบฑเบ”เบกเบฑเบ™เป€เบญเบ‡, เป€เบˆเบปเป‰เบฒเบกเบฑเบเบˆเบฐเป€เบฎเบฑเบ”เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เบšเบฒเบ‡เบฅเบฐเบšเบปเบš Ubuntu เบซเบผเบท Debian. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เปƒเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบเบ—เบตเปˆเบ‚เป‰เบญเบเบกเบฑเบ - Alpine, เปเบ•เปˆเบšเปเปˆเบกเบตเบซเบเบฑเบ‡เบกเบฒเบˆเบฒเบเบกเบฑเบ™, เบ›เบฒเบเบปเบ”เบ‚เบทเป‰เบ™เบเป‰เบญเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ Linux kernel เบกเบต glibc-isms เปเบ‚เบ‡เบชเปเบฒเบฅเบฑเบšเบ„เบปเบ™เบ‚เบฑเบšเบฅเบปเบ”เปƒเบ™เป‚เบซเบกเบ”เบœเบนเป‰เปƒเบŠเป‰. เบ‚เป‰เบญเบเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบฅเบฒเบเบ‡เบฒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰เป„เบ›เบซเบฒเบ•เบปเป‰เบ™เบ™เป‰เปเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ‚เป‰เบญเบเป€เบ‚เบปเป‰เบฒเปƒเบˆเบšเบฑเบ™เบซเบฒเปƒเบ™เบ—เบตเปˆเบชเบธเบ”.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบˆเบปเป‰เบฒเบžเบฒเบš

Ubuntu เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เบ™เป‰เบญเบเบŠเบธเบ”เบ•เปเปˆเป„เบ›เบ™เบตเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ kernel Linux (เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบชเบฐเบญเบฒเบ”):

- '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)

เปƒเบซเป‰เบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบเบฒเบ™เปเบฅเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบกเบ™เบน Linux kernel เบˆเบฐเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡ libncurses-dev. เบเบฐเบฅเบธเบ™เบฒเปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบกเบฑเบ™เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰ (เป€เบ›เบฑเบ™เบฎเบฒเบเบซเบผเบทเบ”เป‰เบงเบ sudo):

apt-get -y install libncurses-dev

เบ”เบฒเบงเป‚เบซเบฅเบ” Kernel

เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบงเปˆเบฒเบˆเบฐเบ”เบฒเบงเป‚เบซเบฅเบ”เบšเปˆเบญเบ™เปƒเบ” เปเบฅเบฐเบˆเบฒเบเบ™เบฑเป‰เบ™เบชเป‰เบฒเบ‡ kernel. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเบฐเบ•เป‰เบญเบ‡เบˆเบฑเบ”เบชเบฑเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบฎเบฒเบ”เบ”เบดเบ”เบ›เบฐเบกเบฒเบ™ 1,3 GB, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบกเบฑเบ™.

เบซเบผเบฑเบ‡เบˆเบฒเบเป„เบ› kernelorg เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš URL เป€เบžเบทเปˆเบญเบ”เบฒเบงเป‚เบซเบฅเบ” kernel เบ„เบปเบ‡เบ—เบตเปˆเบซเบฅเป‰เบฒเบชเบธเบ”. เปƒเบ™เป€เบงเบฅเบฒเบ‚เบฝเบ™เบ™เบตเป‰เปเบกเปˆเบ™: 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

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป€เบกเบทเปˆเบญ unpacking tarball:

cd linux-5.1.16

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Kernel build

เบฅเบฐเบšเบปเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ kernel เปเบกเปˆเบ™เบŠเบธเบ” Makefiles ั เบซเบผเบฒเบ เป€เบ„เบทเปˆเบญเบ‡เบกเบท เปเบฅเบฐเบชเบฐเบ„เบฃเบดเบšเปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡เป€เบžเบทเปˆเบญเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ‚เบฐเบšเบงเบ™เบเบฒเบ™. เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เป€เบ›เบตเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบšเบšเป‚เบ•เป‰เบ•เบญเบš:

make ARCH=um menuconfig

เบกเบฑเบ™เบˆเบฐเบชเป‰เบฒเบ‡เบšเบฒเบ‡เบชเปˆเบงเบ™เปเบฅเบฐเบชเบฐเปเบ”เบ‡เบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบšเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™. เป€เบกเบทเปˆเบญโ€‹เปƒเบ”โ€‹ '[Select]', เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป‚เบ”เบเปƒเบŠเป‰เบ›เบธเปˆเบก Space เบซเบผเบท Enter. เบ—เปˆเบญเบ‡เป„เบ›เบซเบฒเบ›เปˆเบญเบ‡เบขเป‰เบฝเบก, เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด, เบ”เป‰เบงเบเบฅเบนเบเบชเบญเบ™เปเบ›เป‰เบ™เบžเบดเบก "เบ‚เบถเป‰เบ™" เปเบฅเบฐ "เบฅเบปเบ‡", เปเบฅเบฐเป€เบฅเบทเบญเบเบญเบปเบ‡เบ›เบฐเบเบญเบš - "เบŠเป‰เบฒเบ" เบซเบผเบท "เบ‚เบงเบฒ".

เบ•เบปเบงเบŠเบตเป‰เบกเบธเบกเป€เบšเบดเปˆเบ‡ โ€”> เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เปˆเบฒเบ™เบขเบนเปˆเปƒเบ™เป€เบกเบ™เบนเบเปˆเบญเบ, เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบ”เบเบ›เบธเปˆเบก Enter. เบ—เบฒเบ‡เบญเบญเบเบˆเบฒเบเบกเบฑเบ™เปเบ™เปˆเบ™เบญเบ™เบœเปˆเบฒเบ™ '[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]'.

เบ‚เป‰เบญเบเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เป€เบˆเบปเป‰เบฒเบซเบผเบตเป‰เบ™เบเบฑเบšเบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เบชเป‰เบฒเบ‡ kernel เบซเบผเบฑเบ‡เบˆเบฒเบเบญเปˆเบฒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ™เบตเป‰. เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฎเบฝเบ™เบฎเบนเป‰เบซเบผเบฒเบเปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเปƒเบˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบเบปเบ™เป„เบเบเบฒเบ™ kernel เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเปเบฅเบฐเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบ—เบธเบ‡เบ•เปˆเบฒเบ‡เป†เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบ•เบปเบ™.

เบเบฒเบ™เบชเป‰เบฒเบ‡เปเบเปˆเบ™

Linux kernel เปเบกเปˆเบ™เป‚เบ„เบ‡เบเบฒเบ™เปƒเบซเบเปˆเบ—เบตเปˆเป€เบฎเบฑเบ”เบซเบผเบฒเบเบขเปˆเบฒเบ‡. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบซเบ™เป‰เบญเบเบชเบธเบ”เปƒเบ™เบฎเบฒเบ”เปเบงเป€เบเบปเปˆเบฒ, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡. เบชเบฐเบ™เบฑเป‰เบ™เบชเป‰เบฒเบ‡ kernel เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

make ARCH=um -j$(nproc)

เป€เบžเบทเปˆเบญโ€‹เบซเบเบฑเบ‡? เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰เบˆเบฐเบšเบญเบเบœเบนเป‰เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เปƒเบŠเป‰ CPU cores เปเบฅเบฐ threads เบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡. เบ—เบตเบกเบ‡เบฒเบ™ $(nproc) เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡ Build เปเบ—เบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ nproc, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡ coreutils เปƒเบ™เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ Ubuntu.

เบซเบผเบฑเบ‡เบˆเบฒเบเป€เบงเบฅเบฒเปƒเบ”เบซเบ™เบถเปˆเบ‡, kernel เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰ ./linux.

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ–เบฒเบ™เบชเบญเบ‡

เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบฎเบนเบšเปเบšเบšเบœเบนเป‰เปƒเบŠเป‰เปƒเบ™ Linux เบชเป‰เบฒเบ‡ binary เบ›เบปเบเบเบฐเบ•เบด, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบกเบฑเบ™เบ„เบทเบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เบญเบทเปˆเบ™เป†. เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบ‚เป‰เบญเบเป€เบฎเบฑเบ”เบกเบฑเบ™:

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

เบ”เบฒเบงเป‚เบซเบฅเบ” tarball เบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰ wget:

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

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบˆเบฐเบชเป‰เบฒเบ‡เปเบกเปˆเปเบšเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš, เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบœเปˆเบฒเบ™ Alpine apk manager. เปเบ•เปˆ FS เบ™เบตเป‰เบˆเบฐเบžเบฝเบ‡เบžเปเบ—เบตเปˆเบˆเบฐเบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบปเปˆเบงเป„เบ›.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบท เบ—เบตเบ™เบด เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒ เบ‚เบฐเบšเบงเบ™เบเบฒเบ™ zombie เปเบเปˆเบ™เปเบ‚เบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

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

เบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ kernel

kernel Linux, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™เป†เบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบกเบต arguments เปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบฅเบฐเบšเบธเบฅเบฐเบซเบฑเบ”. --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.

เปเบœเบ‡เบ™เบตเป‰เป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง. เปƒเบซเป‰เปเบฅเปˆเบ™ kernel เบ”เป‰เบงเบเบŠเบธเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เบฑเป‰เบ™เบ•เปˆเปเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™:

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

เป€เบชเบฑเป‰เบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบšเบญเบ kernel เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบฎเบฒเบเปเบกเปˆเบ™เบญเบธเบ›เบฐเบเบญเบ™ pseudo /dev/root.
  • เป€เบฅเบทเบญเบ hostfs เป€เบ›เบฑเบ™เป„เบ”เป€เบงเบตเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบฎเบฒเบ.
  • เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเปเบ‚เบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบขเบนเปˆเปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบฎเบฒเบ.
  • เปเบฅเบฐเปเบกเปˆเบ™เปเบฅเป‰เบง, เปƒเบ™เป‚เปเบ”เบญเปˆเบฒเบ™-เบ‚เบฝเบ™.
  • เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆ 64 MB เบ‚เบญเบ‡ RAM (เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบซเบผเบฒเบเบซเบ™เป‰เบญเบเบ‚เบถเป‰เบ™เบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”, เปเบ•เปˆ 64 MB เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก).
  • kernel เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ /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 เบซเบผเบทเบเบปเบ” control-d. เบ™เบตเป‰เบˆเบฐเบ‚เป‰เบฒเปเบเบฐเบ—เบตเปˆเบ•เบดเบ”เบ•เบฒเบกเบกเบฒเบ”เป‰เบงเบเบเบฒเบ™เบ•เบปเบเปƒเบˆเบ‚เบญเบ‡เปเบเปˆเบ™:

/ # exit
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
fish: โ€œ./linux root=/dev/root rootflagโ€ฆโ€ terminated by signal SIGABRT (Abort)

เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบชเบถเบเบ•เบปเบเปƒเบˆ kernel เบ™เบตเป‰เป€เบžเบฒเบฐเบงเปˆเบฒ Linux kernel เบ„เบดเบ”เบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเบชเบฐเป€เบซเบกเบต. เบ–เป‰เบฒเบšเปเปˆเบกเบตเบกเบฑเบ™, เบฅเบฐเบšเบปเบšเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เปเบฅเบฐเบ‚เบฑเบ”เบ‚เป‰เบญเบ‡. เปเบ•เปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบœเบนเป‰เปƒเบŠเป‰เบฎเบนเบšเปเบšเบš, เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบชเบปเปˆเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เป„เบ› SIGABRT, เบŠเบถเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเปเบ‚เบ

เปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เป€เบฅเบตเปˆเบกเบœเบดเบ”เบžเบฒเบ”. เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™เป‚เบซเบกเบ”เบœเบนเป‰เปƒเบŠเป‰ Linux เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ "เบฎเบนเบšเปเบšเบšเบœเบนเป‰เปƒเบŠเป‰" เบ—เบตเปˆเบˆเปเบฒเบเบฑเบ”เป€เบฅเบตเปˆเบกเปเบ•เบเปเบเบ. เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเปƒเบ™เบฅเบฐเบ”เบฑเบšเบฅเบฐเบšเบปเบš, เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปเบกเปˆเบ™เบˆเปเบฒเบเบฑเบ” เบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ” เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบชเบฒโ€‹เป€เบซเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เป„เบ”เป‰โ€‹.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹. per .: เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ UML เบ—เบตเปˆเบ™เบตเป‰.

เบเบฒเบ™เป€เบ”เบตเบ™เบ—เบฒเบ‡เป„เบ› Slirp

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบงเบฑเบ”เบ–เบธเบšเบนเบฎเบฒเบ™เปเบฅเบฐเป€เบเบทเบญเบšเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Sirp, เบ—เบตเปˆเบฎเบนเบšเปเบšเบšเบœเบนเป‰เปƒเบŠเป‰ Linux เบชเบฒเบกเบฒเบ”เบžเบปเบงเบžเบฑเบ™เบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ„เบทเบเบฑเบš TCP/IP stack เบฅเบฐเบ”เบฑเบšเบœเบนเป‰เปƒเบŠเป‰ เปเบฅเบฐเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบฅเบฐเบšเบปเบšเปƒเบ”เป†เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰เปเบกเปˆเบ™ เบ›เปˆเบญเบโ€‹เบญเบญเบโ€‹เบกเบฒโ€‹เป€เบกเบทเปˆเบญโ€‹เปƒเบ™โ€‹เบ›เบต 1995โ€‹, เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบซเบฅเป‰เบฒเบชเบธเบ”เปเบกเปˆเบ™เบฅเบปเบ‡เบงเบฑเบ™เบ—เบต 2006. Slirp เปเบกเปˆเบ™เบญเบฒเบเบธเบซเบผเบฒเบ. เปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡, compilers เป„เบ”เป‰เป„เบ›เป€เบ–เบดเบ‡เบ•เบญเบ™เบ™เบฑเป‰เบ™เบงเปˆเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเบžเบฝเบ‡เปเบ•เปˆเป€เบ›เบฑเบ™ เบฅเบฐเบซเบฑเบ”เป€เบ™เบปเปˆเบฒเป€เบ›เบทเปˆเบญเบ.

เบชเบฐเบ™เบฑเป‰เบ™เปƒเบซเป‰เบ”เบฒเบงเป‚เบซเบผเบ” Slirp เบˆเบฒเบเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Ubuntu เปเบฅเบฐเบฅเบญเบ‡เปเบฅเปˆเบ™เบกเบฑเบ™:

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)

เป‚เบญเป‰ เบžเบฐเป€เบˆเบปเป‰เบฒ. เบกเบฒเบ•เบดเบ”เบ•เบฑเป‰เบ‡ debugger เบ‚เบญเบ‡ 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.

เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบขเบนเปˆเปƒเบ™เบžเบงเบเป€เบฎเบปเบฒ เป€เบชเบฑเป‰เบ™เบ™เบตเป‰. เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบขเบนเปˆเปƒเบ™ stacktrace, เบšเบฒเบ‡เบ—เบตเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™:

(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.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเบญเบธเบ›เบฐเบ•เบดเป€เบซเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ loop เบ•เบปเป‰เบ™เบ•เปเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ slirp เบžเบฐเบเบฒเบเบฒเบกเบเบงเบ”เบชเบญเบšเบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒ. เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบ›เบฐเบ–เบดเป‰เบกเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเป€เบžเบทเปˆเบญเปเบเป‰เบšเบฑเบ™เบซเบฒ. เปเบ•เปˆเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ 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 เบˆเบฐเบกเบตเบชเบญเบ‡เบ„เบนเปˆเบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™. เปƒเบ™เบ—เบตเปˆเบชเบธเบ”, เบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเบ™เปเบฒเบ‚เป‰เบญเบ เบขเบนเปˆโ€‹เบ™เบตเป‰. เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบ”เบฒเบงโ€‹เป‚เบซเบผเบ”โ€‹เปเบฅเบฐ unpackedโ€‹ 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
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 ...

เบšเปเปˆ crash - เบชเบฐเบ™เบฑเป‰เบ™เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบ! เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบนเบ binary เบ™เบตเป‰เปƒเบ™ ~/bin/slirp:

cp slirp ~/bin/slirp

เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบœเบนเป‰เบชเป‰เบฒเบ‡เบŠเบธเบ”เป€เบญเบปเบฒเบกเบฑเบ™เบญเบญเบ, I เป€เบฎเบฑเบ”เบเบฐเบˆเบปเบ.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ

เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเป‰เบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบขเบนเปˆเปƒเบ™ kernel เปเบ‚เบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบญเบฑเบšเป€เบ”เบ”เบ•เบปเบงเป€เบฅเบทเบญเบเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง:

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 เบเปเบฒเบ™เบปเบ”เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡ kernel เป€เบžเบทเปˆเบญเบšเบฑเบ‡เบ„เบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบœเปˆเบฒเบ™เบญเบธเป‚เบกเบ‡ 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

ะฐะฑะพั‚ะฐะตั‚!

เบซเบกเบฒเบเป€เบซเบ”เบ•เปเปˆ .: เบ›เบฒเบเบปเบ”เบ‚เบทเป‰เบ™, เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ desktop เบ—เบตเปˆเบกเบตเบšเบฑเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเบชเบฒเบ, เบซเบผเบทเบšเบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเป„เบ”เป€เบงเบตเป€เบžเบตเปˆเบกเป€เบ•เบตเบก. เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‚เบ™เบ”เบšเบธเบเบ—เบตเปˆเบกเบต WiFi 8265 เบˆเบฒเบ Intel, เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบ

/ # 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
/ #

เบ›เบฒเบเบปเบ”เบ‚เบทเป‰เบ™, kernel เบšเปเปˆเบชเบฒเบกเบฒเบ”เบชเบทเปˆเบชเบฒเบ™เบเบฑเบšเป„เบ”เป€เบงเบตเบšเบฑเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบ—เบตเปˆเบˆเบฐเบฅเบงเบšเบฅเบงเบกเป€เบŸเบตเบกเปเบงเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เปเบเปˆเบ™, เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบšเปเปˆเป„เบ”เป‰เปเบเป‰เป„เบ‚เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™. เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบดเบกเป€เบœเบตเบเปเบœเปˆ, เบกเบฑเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบงเบดเบ—เบตเปเบเป‰เป„เบ‚เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ™เบตเป‰. เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ Virtualbox), เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡.

เปƒเบซเป‰เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ”เป‰เบงเบเบชเบฐเบ„เบฃเบดเบš shell เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

#!/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

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฑเบšเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡ kernel:

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

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบเบฑเบšเบเปเบฒ dockerfile, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” เปเบฅเบฐเบ„เบงเบ™เปƒเบซเป‰เบ—เปˆเบฒเบ™เบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบเบฑเบ‡เบกเบต kernel เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเปˆเบงเบ‡เปœเป‰เบฒ, เป€เบŠเบดเปˆเบ‡เบกเบตเบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เป‚เบžเบช. เปเบ•เปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ.

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบซเบงเบฑเบ‡โ€‹เบงเปˆเบฒโ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ™เบตเป‰โ€‹เป„เบ”เป‰โ€‹เบŠเปˆเบงเบโ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เปƒเบˆโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบเบปเบโ€‹เบชเบนเบ‡โ€‹เบšเบปเบ”โ€‹เบšเบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เปเบ‚เบโ€‹. เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เบšเบฒเบ‡เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ monster, เปเบ•เปˆเบชเบดเปˆเบ‡เบžเบดเบกเป„เบ”เป‰เบ–เบทเบ conceived เป€เบ›เบฑเบ™เบ„เบนเปˆเบกเบทเบ—เบตเปˆเบชเบปเบกเบšเบนเบ™เปเบšเบšเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡, เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฎเบนเบšเปเบšเบšเบœเบนเป‰เปƒเบŠเป‰เปƒเบ™ Linux เบžเบฒเบเปƒเบ•เป‰เบชเบฐเบšเบฑเบšเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบกเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบญเบ‡เบ„เบญเบšเบ„เบปเบงเบ™เบตเป‰. เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ„เบงเบ™โ€‹เบˆเบฐโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบšเปโ€‹เบฅเบดโ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เปเบฅเบฐโ€‹เบŠเบญเบšโ€‹เปเบงโ€‹เบญเบทเปˆเบ™เป†โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบขเบนเปˆโ€‹เปเบฅเป‰เบงโ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เปเบ‚เบโ€‹. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต Docker เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆ tarballs เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ, เบ—เปˆเบฒเบ™เบ„เบงเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบชเบฐเบเบฑเบ”เบฎเบนเบšเบžเบฒเบšเบœเปˆเบฒเบ™ docker export, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบฎเบฒเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ kernel เบ‚เบญเบ‡เปเบ‚เบ. เปเบฅเป‰เบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ Shell script.

เบ‚เบญเบšเปƒเบˆเป€เบ›เบฑเบ™เบžเบดเป€เบชเบ”เบเบฑเบš Rkeene เบˆเบฒเบ #lobsters เปƒเบ™ Freenode. เบ–เป‰เบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบฅเบฒเบง debugging Slirp, เบ‚เป‰เบญเบเบˆเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบ™เบตเป‰เป„เบ. เบ‚เป‰เบญเบเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒเบฅเบฐเบšเบปเบš Slackware เบ‚เบญเบ‡เบฅเบฒเบงเป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบเบฑเบš slirp, เปเบ•เปˆเบฅเบฐเบšเบปเบš Ubuntu เปเบฅเบฐ Alpine เบ‚เบญเบ‡เบ‚เป‰เบญเบเบšเปเปˆเบเบญเบกเบฎเบฑเบš slirp เปเบฅเบฐ binary Rkeene เปเบ™เบฐเบ™เปเบฒเบ‚เป‰เบญเบ. เปเบ•เปˆเบกเบฑเบ™เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบเบงเปˆเบฒเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบ‚เป‰เบญเบ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™