Linux เชชเชฐ เชฏเซเชเชฐ เชฎเซ‹เชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเซ‹

เช…เชจเซเชตเชพเชฆเช• เชคเชฐเชซเชฅเซ€ เชชเชฐเชฟเชšเชฏ: เช†เชชเชฃเชพ เชœเซ€เชตเชจเชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชชเซเชฐเช•เชพเชฐเชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพ เชฎเซ‹เชŸเชพ เชชเชพเชฏเซ‡ เชชเซเชฐเชตเซ‡เชถเชจเซ€ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ เชธเชพเชฎเซ‡, เช† เชฌเชงเซเช‚ เชเช• เชธเชฎเชฏเซ‡ เช•เชˆ เชคเช•เชจเซ€เช•เซ€เช“เชฅเซ€ เชถเชฐเซ‚ เชฅเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡ เชถเซ‹เชงเชตเซเช‚ เช–เซ‚เชฌ เชœ เชฐเชธเชชเซเชฐเชฆ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชฎเชพเช‚เชจเชพ เช•เซ‡เชŸเชฒเชพเช•เชจเซ‹ เช†เชœ เชธเซเชงเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชฐเซ€เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฆเชฐเซ‡เช•เชจเซ‡ เช†เชตเซ€ เชชเชฆเซเชงเชคเชฟเช“ เชฏเชพเชฆ เชจเชฅเซ€ (เช…เชฅเชตเชพ เชœเชพเชฃเซ‡ เช›เซ‡, เชœเซ‹ เชคเซ‡เช“ เชคเซ‡เชฎเชจเชพ เชเชกเชชเซ€ เชตเชฟเช•เชพเชธ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชชเช•เชกเชพเชฏเชพ เชจ เชนเชคเชพ). เช†เชตเซ€ เชœ เชเช• เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€ เชฏเซเชเชฐ เชฎเซ‹เชก เชฒเชฟเชจเช•เซเชธ เช›เซ‡. เชฎเซ‚เชณเชจเชพ เชฒเซ‡เช–เช•เซ‡ เช‰เชšเชฟเชค เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เช–เซ‹เชฆเช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เชนเชคเซเช‚, เชคเซ‡ เชถเซ‹เชงเซ€ เช•เชพเชขเซเชฏเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เช•เชฏเชพ เชœเซ‚เชจเชพ เชตเชฟเช•เชพเชธ เชนเชœเซ เชชเชฃ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เชฏเชพ เชจเชฅเซ€, เช…เชจเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช˜เชฐเซ‡ เช‰เช—เชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ UML เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€ เชคเซ‡ เช…เช‚เช—เซ‡ เชชเช—เชฒเซเช‚-เชฆเชฐ-เชชเช—เชฒเชพเช‚ เชธเซ‚เชšเชจเซ‹ เชœเซ‡เชตเชพ เช•เช‚เชˆเช• เชฎเซ‚เช•เซเชฏเชพ. 2k19. เช…เชจเซ‡ เชนเชพ, เช…เชฎเซ‡ เชฎเซ‚เชณ เชชเซ‹เชธเซเชŸเชจเชพ เชฒเซ‡เช–เช•เชจเซ‡ Habr เชชเชฐ เช†เชฎเช‚เชคเซเชฐเชฟเชค เช•เชฐเซเชฏเชพ เช›เซ‡ เช•เซ‡เชกเซ‡, เชคเซ‡เชฅเซ€ เชœเซ‹ เชคเชฎเชจเซ‡ เชชเซเชฐเชถเซเชจเซ‹ เชนเซ‹เชฏ, เชคเซ‹ เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เช…เช‚เช—เซเชฐเซ‡เชœเซ€เชฎเชพเช‚ เชชเซ‚เช›เซ‹.

Linux เชชเชฐ เชฏเซเชเชฐ เชฎเซ‹เชกเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเซ‹

Linux เชฎเชพเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเซ‹เชก, เชนเช•เซ€เช•เชคเชฎเชพเช‚, Linux เช•เชฐเซเชจเชฒเชจเซ‹ เชเช• เชชเซ‹เชฐเซเชŸ เช›เซ‡. เช† เชฎเซ‹เชก เชคเชฎเชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชคเชฐเซ€เช•เซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ Linux เช•เชฐเซเชจเชฒ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฆเซเชตเชพเชฐเชพ เชกเซเชฐเชพเช‡เชตเชฐเซ‹เชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡. เชชเชฐเช‚เชคเซ เช† เชฎเซ‹เชก เชธเชพเชฎเชพเชจเซเชฏ เช…เชฒเช—เชคเชพ เชฎเชพเชŸเซ‡เชจเชพ เชธเชพเชงเชจ เชคเชฐเซ€เช•เซ‡ เชชเชฃ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡, เชœเซ‡เชจเซ‹ เชธเชฟเชฆเซเชงเชพเช‚เชค เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹เชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชธเชฎเชพเชจ เช›เซ‡. เช† เชฎเซ‹เชก เชกเซ‹เช•เชฐ เช•เชฐเชคเชพเช‚ เชตเชงเซ เช…เชฒเช—เชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ 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}]

เช…เชจเซ‡ เชฏเซเชเชฐ เชฎเซ‹เชกเชฎเชพเช‚ Linux เช•เชฐเซเชจเชฒเชจเซ€ pstree เชธเชพเชฅเซ‡ เชคเซ‡เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช•เชฐเซ‹:

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

เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชนเซเช‚ เชนเซ‹เชธเซเชŸเชฎเชพเช‚เชฅเซ€ เชฎเชนเซ‡เชฎเชพเชจเชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซ‡เชฒเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเชพ เชจเชพเชฎ เชœเซ‹เชˆ เชถเช•เซเช‚ เช›เซเช‚. Linux เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเซ‹เชก เชธเชพเชฅเซ‡ เช† เชถเช•เซเชฏ เชจเชฅเซ€. เชคเซ‡เชจเซ‹ เช…เชฐเซเชฅ เชถเซเช‚ เช›เซ‡? เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ Linux เชจเชพ เช“เชกเชฟเชŸเซ€เช‚เช— เชธเชฌเชธเชฟเชธเซเชŸเชฎ เชฆเซเชตเชพเชฐเชพ เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชธเชพเชงเชจเซ‹ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เชœเซ‹เชคเชพ เชจเชฅเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช—เซ‡เชธเซเชŸ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡. เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเซ€เช• เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชฎเชพเช‚ เช† เชฒเช•เซเชทเชฃ เชฌเซ‡เชงเชพเชฐเซ€ เชคเชฒเชตเชพเชฐ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชจเซ€เชšเซ‡เชจเซ€ เช†เช–เซ€ เชชเซ‹เชธเซเชŸ เช‡เชšเซเช›เชฟเชค เชชเชฐเชฟเชฃเชพเชฎ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชธเช‚เชถเซ‹เชงเชจ เช…เชจเซ‡ เชฐเชซ เชชเซเชฐเชฏเชพเชธเซ‹เชจเซ‹ เชธเช‚เช—เซเชฐเชน เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเชพเชฐเซ‡ เชตเชฟเชตเชฟเชง เชชเซเชฐเชพเชšเซ€เชจ เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹, เช•เชฐเซเชจเชฒ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชตเชพเช‚เชšเชตเชพ เชชเชกเซเชฏเชพ, เชœเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชนเชœเซ€ เชชเซเชฐเชพเชฅเชฎเชฟเช• เชถเชพเชณเชพเชฎเชพเช‚ เชนเชคเซ‹ เชคเซเชฏเชพเชฐเซ‡ เชฒเช–เซ‡เชฒเชพ เช•เซ‹เชกเชจเชพ เชธเช˜เชจ เชกเชฟเชฌเช—เซ€เช‚เช—เชฎเชพเช‚ เชœเซ‹เชกเชพเชตเซเช‚ เชชเชกเซเชฏเซเช‚, เช…เชจเซ‡ เชฎเชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชธเชพเชงเชจเซ‹เชจเซ€ เชถเซ‹เชงเชฎเชพเช‚ เช–เชพเชธ เชฌเชพเชˆเชจเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Heroku เชฌเชฟเชฒเซเชกเซเชธ เชธเชพเชฅเซ‡ เชŸเชฟเช‚เช•เชฐ เชชเชฃ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚. เช† เชฌเชงเชพ เช•เชพเชฎเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฎเชพเชฐเชพ IRC เชชเชฐเชจเชพ เชฒเซ‹เช•เซ‹ เชฎเชจเซ‡ เชœเชพเชฆเซเช—เชฐ เช•เชนเซ‡ เช›เซ‡. เชนเซเช‚ เช†เชถเชพ เชฐเชพเช–เซเช‚ เช›เซเช‚ เช•เซ‡ เช† เชชเซ‹เชธเซเชŸ เช•เซ‹เชˆ เชตเซเชฏเช•เซเชคเชฟ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เชตเชธเซเชคเซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชฆเชธเซเชคเชพเชตเซ‡เชœ เชคเชฐเซ€เช•เซ‡ เชธเซ‡เชตเชพ เช†เชชเชถเซ‡, เชชเชฐเช‚เชคเซ เชจเชตเชพ เช•เชฐเซเชจเชฒ เช…เชจเซ‡ OS เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชธเชพเชฅเซ‡.

เช—เซ‹เช เชตเชฃ

เชฒเชฟเชจเช•เซเชธ เชฏเซเชเชฐ เชฎเซ‹เชกเชจเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชชเช—เชฒเชพเช‚ เชถเชพเชฎเซ‡เชฒ เช›เซ‡:

  • เชฏเชœเชฎเชพเชจ เชชเชฐ เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเซ€;
  • Linux เช•เชฐเซเชจเชฒ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช;
  • เช•เชฐเซเชจเชฒ เชฌเชฟเชฒเซเชก เชธเซ‡เชŸเช…เชช;
  • เช•เชฐเซเชจเชฒ เชเชธเซ‡เชฎเซเชฌเชฒเซ€;
  • เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช;
  • เชฎเชนเซ‡เชฎเชพเชจ เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช;
  • เช•เชฐเซเชจเชฒ เชฒเซ‹เชจเซเชš เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ€ เชชเชธเช‚เชฆเช—เซ€;
  • เช…เชคเชฟเชฅเชฟ เชจเซ‡เชŸเชตเชฐเซเช• เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ‹;
  • เช—เซ‡เชธเซเชŸ เช•เชฐเซเชจเชฒ เชฒเซ‹เชจเซเชš เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช.

เชนเซเช‚ เชฎเชพเชจเซเช‚ เช›เซเช‚ เช•เซ‡ เชœเซ‹ เชคเชฎเซ‡ เช† เชฌเชงเซเช‚ เชœเชพเชคเซ‡ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชฎเซ‹เชŸเชพ เชญเชพเช—เซ‡ เชคเชฎเซ‡ เช‰เชฌเซเชจเซเชŸเซ เช…เชฅเชตเชพ เชกเซ‡เชฌเชฟเชฏเชจ เชœเซ‡เชตเซ€ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เชฌเชงเซเช‚ เชœ เช•เชฐเชถเซ‹. เชฎเซ‡เช‚ เชฎเชพเชฐเชพ เชฎเชจเชชเชธเช‚เชฆ เชตเชฟเชคเชฐเชฃ - เช†เชฒเซเชชเชพเช‡เชจเชฎเชพเช‚ เช‰เชชเชฐเซ‹เช•เซเชค เชคเชฎเชพเชฎเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹, เชชเชฐเช‚เชคเซ เช•เช‚เชˆ เช•เชพเชฎ เชฅเชฏเซเช‚ เชจเชนเซ€เช‚, เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเชฃ เช•เซ‡ Linux เช•เชฐเซเชจเชฒ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเซ‹เชกเชฎเชพเช‚ เชกเซเชฐเชพเช‡เชตเชฐเซ‹ เชฎเชพเชŸเซ‡ glibc-isms เชธเชพเชฅเซ‡ เชšเซเชธเซเชคเชชเชฃเซ‡ เชฌเช‚เชงเชพเชฏเซ‡เชฒ เช›เซ‡. เช†เช–เชฐเซ‡ เช† เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชธเชฎเชœเซเชฏเชพ เชชเช›เซ€ เชนเซเช‚ เช…เชชเชธเซเชŸเซเชฐเซ€เชฎเชฎเชพเช‚ เช†เชจเซ€ เชœเชพเชฃ เช•เชฐเชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เช•เชฐเซเช‚ เช›เซเช‚.

เชฏเชœเชฎเชพเชจ เชชเชฐ เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช‰เชฌเซเชจเซเชŸเซเชจเซ‡ เชฒเชฟเชจเช•เซเชธ เช•เชฐเซเชจเชฒ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชจเซ€เชšเซ‡เชจเชพ เชชเซ‡เช•เซ‡เชœเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เชธเซเชตเชšเซเช› เช‡เชจเซเชธเซเชŸเซ‹เชฒ เชงเชพเชฐเซ€เชจเซ‡):

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

เชคเชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ (เชฐเซเชŸ เชคเชฐเซ€เช•เซ‡ เช…เชฅเชตเชพ เชธเซเชกเซ‹ เชธเชพเชฅเซ‡):

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

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ Linux เช•เชฐเซเชจเชฒ เชฎเชพเชŸเซ‡ เชฎเซ‡เชจเซ เช•เชธเซเชŸเชฎเชพเช‡เชเซ‡เชถเชจ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ libncurses-dev. เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชคเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡ (เชฐเซเชŸ เชคเชฐเซ€เช•เซ‡ เช…เชฅเชตเชพ เชธเซเชกเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡):

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]'.

เชนเซเช‚ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเซ‡ เช† เชชเซ‹เชธเซเชŸ เชตเชพเช‚เชšเซเชฏเชพ เชชเช›เซ€ เช•เชฐเซเชจเชฒ เชฌเชฟเชฒเซเชก เชตเชฟเช•เชฒเซเชชเซ‹ เชธเชพเชฅเซ‡ เชฐเชฎเซ‹. เช† เชชเซเชฐเชฏเซ‹เช—เซ‹เชฎเชพเช‚เชฅเซ€ เชคเชฎเซ‡ เชจเชฟเชฎเซเชจ-เชธเซเชคเชฐเชจเชพ เช•เชฐเซเชจเชฒ เชฎเชฟเช•เซ‡เชจเชฟเช•เซเชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เชฐเซเชจเชฒ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชตเชฟเชตเชฟเชง เชซเซเชฒเซ‡เช—เซเชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เช˜เชฃเซเช‚ เชถเซ€เช–เซ€ เชถเช•เซ‹ เช›เซ‹.

เช•เชฐเซเชจเชฒเชจเซเช‚ เชจเชฟเชฐเซเชฎเชพเชฃ

Linux เช•เชฐเซเชจเชฒ เชเช• เชฎเซ‹เชŸเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช›เซ‡ เชœเซ‡ เช˜เชฃเซ€ เชฌเชงเซ€ เชตเชธเซเชคเซเช“ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‚เชจเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เช† เชจเซเชฏเซ‚เชจเชคเชฎ เช—เซ‹เช เชตเชฃเซ€ เชธเชพเชฅเซ‡ เชชเชฃ, เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชฎเชพเช‚ เชฅเซ‹เชกเซ‹ เชธเชฎเชฏ เชฒเชพเช—เซ€ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€ เชจเซ€เชšเซ‡เชจเชพ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเซเชจเชฒ เชฌเชจเชพเชตเซ‹:

make ARCH=um -j$(nproc)

เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡? เช† เช†เชฆเซ‡เชถ เช…เชฎเชพเชฐเชพ เชฌเชฟเชฒเซเชกเชฐเชจเซ‡ เชฌเชฟเชฒเซเชก เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช‰เชชเชฒเชฌเซเชง เชคเชฎเชพเชฎ CPU เช•เซ‹เชฐเซ‹ เช…เชจเซ‡ เชฅเซเชฐเซ‡เชกเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เช•เชนเซ‡เชถเซ‡. เชŸเซ€เชฎ $(nproc) เชฌเชฟเชฒเซเชกเชจเชพ เช…เช‚เชคเซ‡ เช†เชฆเซ‡เชถเชจเซเช‚ เช†เช‰เชŸเชชเซเชŸ เชฆเชพเช–เชฒ เช•เชฐเซ‡ เช›เซ‡ nproc, เชœเซ‡ เชญเชพเช— เช›เซ‡ coreutils เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช‰เชฌเซเชจเซเชŸเซ เชฌเชฟเชฒเซเชกเชฎเชพเช‚.

เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเช›เซ€, เช†เชชเชฃเซเช‚ เช•เชฐเซเชจเชฒ เชเช•เซเชเซ‡เช•เซเชฏเซเชŸเซ‡เชฌเชฒ เชซเชพเชˆเชฒเชฎเชพเช‚ เช•เชฎเซเชชเชพเชˆเชฒ เชฅเชˆ เชœเชถเซ‡ ./linux.

เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

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 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชŸเชพเชฐเชฌเซ‹เชฒ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‹:

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 เชฎเซ‡เชจเซ‡เชœเชฐ เชฆเซเชตเชพเชฐเชพ เชชเซ‡เช•เซ‡เชœเซ‹เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เช…เชคเซเชฏเช‚เชค เชฎเซเชถเซเช•เซ‡เชฒ เชนเชถเซ‡. เชชเชฐเช‚เชคเซ เช† เชเชซเชเชธ เชธเชพเชฎเชพเชจเซเชฏ เชตเชฟเชšเชพเชฐเชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเชถเซ‡.

เช†เชชเชฃเชจเซ‡ เชเช• เชธเชพเชงเชจเชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เช›เซ‡ เชŸเซ€เชจเซ€ เชฎเซ‡เชฎเชฐเซ€ เชตเชชเชฐเชพเชถ เชฌเช‚เชง เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเซ‹เชฎเซเชฌเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เช…เชฎเชพเชฐเชพ เชฎเชนเซ‡เชฎเชพเชจ เช•เชฐเซเชจเชฒ.

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 เชฐเซ‚เชŸ เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎ เชกเซเชฐเชพเชˆเชตเชฐ เชคเชฐเซ€เช•เซ‡.
  • เช…เชฎเซ‡ เชฐเซ‚เชŸ เช‰เชชเช•เชฐเชฃ เชชเชฐ เชฌเชจเชพเชตเซ‡เชฒ เช—เซ‡เชธเซเชŸ เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเซ‹.
  • เช…เชจเซ‡ เชนเชพ, เชฐเซ€เชก-เชฐเชพเชˆเชŸ เชฎเซ‹เชกเชฎเชพเช‚.
  • เชซเช•เซเชค 64 เชฎเซ‡เช—เชพเชฌเชพเช‡เชŸเซเชธ RAM เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ (เชคเชฎเซ‡ เชถเซเช‚ เช•เชฐเชตเชพเชจเซ€ เชฏเซ‹เชœเชจเชพ เช˜เชกเซ€ เชฐเชนเซเชฏเชพ เช›เซ‹ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชคเชฎเซ‡ เช˜เชฃเซ‹ เช“เช›เซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ 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)

เช…เชฎเชจเซ‡ เช† เช•เชฐเซเชจเชฒ เช—เชญเชฐเชพเชŸ เชฎเชณเซเชฏเซ‹ เช•เชพเชฐเชฃ เช•เซ‡ Linux เช•เชฐเซเชจเชฒ เชตเชฟเชšเชพเชฐเซ‡ เช›เซ‡ เช•เซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชนเช‚เชฎเซ‡เชถเชพ เชšเชพเชฒเซ€ เชฐเชนเซ€ เช›เซ‡. เชคเซ‡เชจเชพ เชตเชฟเชจเชพ, เชธเชฟเชธเซเชŸเชฎ เชนเชตเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ€ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚ เช…เชจเซ‡ เชฌเช‚เชง เชฅเชˆ เชœเชถเซ‡. เชชเชฐเช‚เชคเซ เช† เชเช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเซ‹เชก เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชนเซ‹เชตเชพเชฅเซ€, เชชเชฐเชฟเชฃเชพเชฎเซ€ เชชเชฐเชฟเชฃเชพเชฎ เชชเซ‹เชคเชพเชจเซ‡ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡ SIGABRT, เชœเซ‡ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเชตเชพ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡.

เช…เชคเชฟเชฅเชฟ เชจเซ‡เชŸเชตเชฐเซเช• เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชชเชฐเช‚เชคเซ เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เชตเชธเซเชคเซเช“ เช†เชชเชฃเชพ เชฎเชพเชŸเซ‡ เช–เซ‹เชŸเซ€ เชฅเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡. เชฏเซเชเชฐ เชฎเซ‹เชก เชฒเชฟเชจเช•เซเชธเชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช•เซ€เช‚เช— เช เช›เซ‡ เชœเซเชฏเชพเช‚ เชฎเชฐเซเชฏเชพเชฆเชฟเชค "เชฏเซเชเชฐ เชฎเซ‹เชก" เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชตเชฟเชญเชพเชตเชจเชพ เช…เชฒเช— เชชเชกเชตเชพ เชฒเชพเช—เซ‡ เช›เซ‡. เช›เซ‡เชตเชŸเซ‡, เชจเซ‡เชŸเชตเชฐเซเช• เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชธเชฟเชธเซเชŸเชฎ เชธเซเชคเชฐเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชนเซ‹เชฏ เช›เซ‡ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เซƒเชค เช†เชชเชฃเชพ เชฌเชงเชพ เชฎเชพเชŸเซ‡ เชธเซเชชเชทเซเชŸ เช•เชพเชฐเชฃเซ‹เชธเชฐ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชฎเซ‹เชกเซเชธ.

เชจเซ‰เซ…เชง เชชเซเชฐเชคเชฟ.: เชคเชฎเซ‡ UML เชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชตเชฟเชตเชฟเชง เชตเชฟเช•เชฒเซเชชเซ‹ เชตเชฟเชถเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚.

เชธเชฐเช•เชตเชพเชจเซ€ เชœเชฐเซเชจเซ€

เชœเซ‹ เช•เซ‡, เชคเซเชฏเชพเช‚ เชเช• เชชเซเชฐเชพเชšเซ€เชจ เช…เชจเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เช…เชธเชฎเชฐเซเชฅเชฟเชค เชธเชพเชงเชจ เช›เซ‡ เชœเซ‡เชจเซ‡ เช•เชนเซ‡เชตเชพเชฏ เช›เซ‡ เชธเซเชฒเชฟเชฐเซเชช, เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชฏเซเชเชฐ เชฎเซ‹เชก Linux เชจเซ‡เชŸเชตเชฐเซเช• เชธเชพเชฅเซ‡ เชธเช‚เชชเชฐเซเช• เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡ เชฒเช—เชญเช— เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ-เชธเซเชคเชฐเชจเชพ TCP/IP เชธเซเชŸเซ‡เช•เชจเซ€ เชœเซ‡เชฎ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเชฟเชธเซเชŸเชฎ เชชเชฐเชตเชพเชจเช—เซ€เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เช† เชธเชพเชงเชจ เชนเชคเซเช‚ 1995 เชฎเชพเช‚ เชชเซเชฐเช•เชพเชถเชฟเชค, เช…เชจเซ‡ เช›เซ‡เชฒเซเชฒเซเช‚ เช…เชชเชกเซ‡เชŸ เชคเชพ 2006 เชตเชฐเซเชท. เชธเซเชฒเชฟเชฐเซเชช เช–เซ‚เชฌ เชœเซ‚เชจเซ€ เช›เซ‡. เชธเชชเซ‹เชฐเซเชŸ เช…เชจเซ‡ เช…เชชเชกเซ‡เชŸเซเชธ เชตเชฟเชจเชพเชจเชพ เชธเชฎเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช•เชฎเซเชชเชพเช‡เชฒเชฐเซเชธ เชเชŸเชฒเชพ เช†เช—เชณ เช†เชตเซเชฏเชพ เช›เซ‡ เช•เซ‡ เชนเชตเซ‡ เช† เชŸเซ‚เชฒเชจเซ‡ เชซเช•เซเชค เชคเชฐเซ€เช•เซ‡ เชตเชฐเซเชฃเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ "เช•เซ‹เชก เชฐเซ‹เชŸ".

เชคเซ‹, เชšเชพเชฒเซ‹ เช‰เชฌเซเชจเซเชŸเซ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชเชฎเชพเช‚เชฅเซ€ เชธเซเชฒเชฟเชฐเซเชช เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชšเชฒเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เช:

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)

เช“ เชฎเชพเชฏ เช—เซ‹เชกเซเชธ. เชšเชพเชฒเซ‹ เชธเซเชฒเชฟเชฐเซเชช เชกเซ€เชฌเช—เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช เช…เชจเซ‡ เชœเซ‹เชˆเช เช•เซ‡ เชถเซเช‚ เช†เชชเชฃเซ‡ เช…เชนเซ€เช‚ เชถเซเช‚ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเซ€ เชถเช•เซ€เช เช›เซ€เช:

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

เชจเชพ. เช† เชชเชฃ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เชนเชœเซ เชชเชฃ เช† เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเซ€เช•เซ‹ เชถเซ‹เชงเซ€ เชถเช•เชคเชพ เชจเชฅเซ€.

เช† เชฌเชฟเช‚เชฆเซเช เชฎเซ‡เช‚ เช›เซ‹เชกเซ€ เชฆเซ€เชงเซเช‚ เช…เชจเซ‡ เช—เซ€เชฅเชฌ เชชเชฐ เชถเซ‹เชงเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ 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

เชœเซ‹ เชชเซ‡เช•เซ‡เชœเชจเชพ เชจเชฟเชฐเซเชฎเชพเชคเชพ เชคเซ‡เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ I เช…เชฐเซ€เชธเซ‹ เชฌเชจเชพเชตเซเชฏเซ‹.

เชจเซ‡เชŸเชตเชฐเซเช• เช—เซ‹เช เชตเชฃเซ€

เชนเชตเซ‡ เชšเชพเชฒเซ‹ เช†เชชเชฃเชพ เช—เซ‡เชธเซเชŸ เช•เซ‹เชฐ เชชเชฐ เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‡ เช—เซ‹เช เชตเซ€เช. เชšเชพเชฒเซ‹ เชฒเซ‹เชจเซเชš เชชเชฐเชฟเชฎเชพเชฃเซ‹ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เช:

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, เชœเซ‡ เชธเซเชฒเชฟเชฐเซเชช เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡. เชŸเซ€เชฎ route เช•เชฐเซเชจเชฒ เชฐเซ‚เชŸเซ€เช‚เช— เชŸเซ‡เชฌเชฒ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชฅเซ€ เชคเชฎเชพเชฎ เชŸเซเชฐเชพเชซเชฟเช•เชจเซ‡ เชธเซเชฒเชฟเชฐเซเชช เชŸเชจเชฒ เชฆเซเชตเชพเชฐเชพ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡. เชšเชพเชฒเซ‹ เช†เชจเซ‡ 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, เช…เชจเซ‡ เชชเช›เซ€ เช—เซ‡เชธเซเชŸ เช•เชฐเซเชจเชฒ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชจเชพ เชฐเซ‚เชŸเชฎเชพเช‚ เชคเซ‡เชจเซ‡ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชชเชพเชฅ เชจเช•เซเช•เซ€ เช•เชฐเซ‹. เชธเชพเชฐเซเช‚, เชชเช›เซ€ เชถเซ‡เชฒ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชšเชฒเชพเชตเซ‹.

เชซเซเชฐเซ€เชจเซ‹เชก เชชเชฐ #lobsters เชคเชฐเชซเชฅเซ€ Rkeene เชจเซ‹ เช–เชพเชธ เช†เชญเชพเชฐ. เชธเซเชฒเชฟเชฐเซเชชเชจเซ‡ เชกเชฟเชฌเช— เช•เชฐเชตเชพเชฎเชพเช‚ เชคเซ‡เชฎเชจเซ€ เชฎเชฆเชฆ เชตเชฟเชจเชพ, เชนเซเช‚ เช†เชŸเชฒเซเช‚ เช†เช—เชณ เชจ เชชเชนเซ‹เช‚เชšเซ€ เชถเช•เซเชฏเซเช‚ เชนเซ‹เชค. เชฎเชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€ เช•เซ‡ เชคเซ‡เชจเซ€ เชธเซเชฒเซ‡เช•เชตเซ‡เชฐ เชธเชฟเชธเซเชŸเชฎ เชธเซเชฒเชฟเชฐเซเชช เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเชพเชฐเซ€ เช‰เชฌเซเชจเซเชŸเซ เช…เชจเซ‡ เช†เชฒเซเชชเชพเช‡เชจ เชธเชฟเชธเซเชŸเชฎเซเชธเซ‡ เชธเซเชฒเชฟเชฐเซเชช เชธเซเชตเซ€เช•เชพเชฐเซ€ เชจ เชนเชคเซ€ เช…เชจเซ‡ เชฌเชพเชˆเชจเชฐเซ€ เชฐเช•เซ€เชจเซ‡ เชฎเชจเซ‡ เชธเซ‚เชšเชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชชเชฐเช‚เชคเซ เชคเซ‡ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡ เช•เซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เช•เช‚เชˆเช• เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹