Како Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° кориснички Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Linux

Π’ΠΎΠ²Π΅Π΄ ΠΎΠ΄ ΠΏΡ€Π΅Π²Π΅Π΄ΡƒΠ²Π°Ρ‡ΠΎΡ‚: Наспроти ΠΏΠΎΠ·Π°Π΄ΠΈΠ½Π°Ρ‚Π° Π½Π° масовното Π²Π»Π΅Π³ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π°Π·Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΈ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ Π²ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΆΠΈΠ²ΠΎΡ‚ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ доста интСрСсно ΠΈ корисно Π΄Π° сС ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ со ΠΊΠ°ΠΊΠ²ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ сСто ΠΎΠ²Π° Π·Π°ΠΏΠΎΡ‡Π½Π°Π»ΠΎ нСкогаш. НСкои ΠΎΠ΄ Π½ΠΈΠ² ΠΌΠΎΠΆΠ°Ρ‚ корисно Π΄Π° сС користат Π΄ΠΎ Π΄Π΅Π½-дСнСс, Π½ΠΎ Π½Π΅ ситС сС ΡΠ΅ΡœΠ°Π²Π°Π°Ρ‚ Π½Π° Ρ‚Π°ΠΊΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ (ΠΈΠ»ΠΈ Π·Π½Π°Π°Ρ‚, Π°ΠΊΠΎ Π½Π΅ Π±ΠΈΠ»Π΅ Ρ„Π°Ρ‚Π΅Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½ΠΈΠ²Π½ΠΈΠΎΡ‚ Π±Ρ€Π· Ρ€Π°Π·Π²ΠΎΡ˜). Π•Π΄Π½Π° Ρ‚Π°ΠΊΠ²Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° Π΅ User Mode Linux. Авторот Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΠΎΡ‚ Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ копањС, ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Ρ˜ΡœΠΈ кој ΠΎΠ΄ старитС ΡΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ° сè ΡƒΡˆΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°, Π° кој Π½Π΅, ΠΈ состави Π½Π΅ΡˆΡ‚ΠΎ ΠΊΠ°ΠΊΠΎ Ρ‡Π΅ΠΊΠΎΡ€-ΠΏΠΎ-Ρ‡Π΅ΠΊΠΎΡ€ инструкции Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ домашна UML Π·Π° сСбС Π²ΠΎ 2ΠΊ19. И Π΄Π°, Π³ΠΎ ΠΏΠΎΠΊΠ°Π½ΠΈΠ²ΠΌΠ΅ Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΎΡ‚ пост Π½Π° Π₯Π°Π±Ρ€ КСјди, ΠΏΠ° Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€Π°ΡˆΠ°ΡšΠ°, ΠΏΡ€Π°ΡˆΠ°Ρ˜Ρ‚Π΅ Π½Π° англиски Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€.

Како Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° кориснички Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Linux

ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ‡ΠΊΠΈΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ Π²ΠΎ Линукс Π΅, Π²ΡΡƒΡˆΠ½ΠΎΡΡ‚, ΠΏΠΎΡ€Ρ‚Π° Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Линукс Π·Π° сСбС. Овој Ρ€Π΅ΠΆΠΈΠΌ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ цСлосСн ΠΊΠ΅Ρ€Π½Π΅Π» Π½Π° Линукс ΠΊΠ°ΠΊΠΎ кориснички процСс ΠΈ Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΎ Π³ΠΎ користат ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π·Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΈ. Но, овој Ρ€Π΅ΠΆΠΈΠΌ Π΅ корисСн ΠΈ ΠΊΠ°ΠΊΠΎ Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° ΠΎΠΏΡˆΡ‚Π° ΠΈΠ·ΠΎΠ»Π°Ρ†ΠΈΡ˜Π°, Ρ‡ΠΈΡ˜ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π΅ сличСн Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈΡ‚Π΅ машини. Овој Ρ€Π΅ΠΆΠΈΠΌ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΏΠΎΠ³ΠΎΠ»Π΅ΠΌΠ° ΠΈΠ·ΠΎΠ»Π°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ Docker, Π½ΠΎ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΠΏΡ€Π°Π²Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина ΠΊΠ°ΠΊΠΎ KVM ΠΈΠ»ΠΈ Virtual Box.

Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ‡ΠΊΠΈΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΊΠ°ΠΊΠΎ Ρ‡ΡƒΠ΄Π½Π° ΠΈ Ρ‚Π΅ΡˆΠΊΠ° Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅, Π½ΠΎ ΠΈΠΌΠ° своја ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°. На ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° ΠΊΡ€Π°ΠΈΡˆΡ‚Π°Ρ‚Π°, ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π½ΠΎΠΏΡ€Π°Π²Π½ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π» Π½Π° Линукс кој Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΊΠ°ΠΊΠΎ Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€Π°Π½ корисник. Оваа Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ Π½Π΅Π΄ΠΎΠ²Π΅Ρ€Π»ΠΈΠ²ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²Π° Π·Π°ΠΊΠ°Π½Π° Π·Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° домаќин. И бидСјќи ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π½ΠΎΠΏΡ€Π°Π²Π½ΠΎ Ρ˜Π°Π΄Ρ€ΠΎ, Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ процСси сС ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° домаќин, Ρ‚.Π΅. процСситС ΡˆΡ‚ΠΎ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π½Π° корисникот Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ Π²ΠΈΠ΄Π»ΠΈΠ²ΠΈ Π·Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚. Ова Π½Π΅ Π΅ ΠΊΠ°ΠΊΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈΠΎΡ‚ 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 Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° корисник:

linux─┬─5*[linux]
      └─slirp

Кога Ρ€Π°Π±ΠΎΡ‚Π°ΠΌ со ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈ Π½Π° Docker, ΠΌΠΎΠΆΠ°ΠΌ Π΄Π° Π³ΠΈ Π²ΠΈΠ΄Π°ΠΌ ΠΎΠ΄ Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚ ΠΈΠΌΠΈΡšΠ°Ρ‚Π° Π½Π° процСситС ΡˆΡ‚ΠΎ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ гостинот. Ова Π½Π΅ Π΅ ΠΌΠΎΠΆΠ½ΠΎ со Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π½Π° корисник Π½Π° Linux. Π¨Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈ Ρ‚ΠΎΠ°? Ова Π·Π½Π°Ρ‡ΠΈ Π΄Π΅ΠΊΠ° Π°Π»Π°Ρ‚ΠΊΠΈΡ‚Π΅ Π·Π° слСдСњС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ ΠΏΡ€Π΅ΠΊΡƒ потсистСмот Π·Π° Ρ€Π΅Π²ΠΈΠ·ΠΈΡ˜Π° Π½Π° Linux Π½Π΅ глСдај процСси ΠΊΠΎΠΈ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ систСмот Π·Π° гости. Но, Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ ситуации ΠΎΠ²Π°Π° карактСристика ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΌΠ΅Ρ‡ со Π΄Π²Π΅ острици.

Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, Ρ†Π΅Π»ΠΈΠΎΡ‚ пост ΠΏΠΎΠ΄ΠΎΠ»Ρƒ Π΅ Π·Π±ΠΈΡ€ΠΊΠ° Π½Π° ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ° ΠΈ Π³Ρ€ΡƒΠ±ΠΈ ΠΎΠ±ΠΈΠ΄ΠΈ Π΄Π° сС постигнС посакуваниот Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚. Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²Π°ΠΌ ΠΎΠ²Π°, ΠΌΠΎΡ€Π°Π² Π΄Π° користам Ρ€Π°Π·Π½ΠΈ Π°Π½Ρ‚ΠΈΡ‡ΠΊΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ, Π΄Π° Ρ‡ΠΈΡ‚Π°ΠΌ ΠΈΠ·Π²ΠΎΡ€ΠΈ Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, Π΄Π° сС Π²ΠΊΠ»ΡƒΡ‡Π°ΠΌ Π²ΠΎ ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΎ Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ напишан Π΄ΠΎΠ΄Π΅ΠΊΠ° сè ΡƒΡˆΡ‚Π΅ Π±Π΅Π² Π²ΠΎ основно ΡƒΡ‡ΠΈΠ»ΠΈΡˆΡ‚Π΅, Π° исто Ρ‚Π°ΠΊΠ° ΠΈ Π΄Π° нСскокнувам со Π³Ρ€Π°Π΄Π±ΠΈΡ‚Π΅ Π½Π° Π₯Π΅Ρ€ΠΎΠΊΡƒ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»Π΅Π½ Π±ΠΈΠ½Π°Ρ€ Π²ΠΎ ΠΏΠΎΡ‚Ρ€Π°Π³Π° ΠΏΠΎ Π°Π»Π°Ρ‚ΠΊΠΈΡ‚Π΅ ΡˆΡ‚ΠΎ ΠΌΠΈ Π±Π΅Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ. Π¦Π΅Π»Π°Ρ‚Π° ΠΎΠ²Π°Π° Ρ€Π°Π±ΠΎΡ‚Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Ρ‚ΠΎΠ° ΠΌΠΎΠΌΡ†ΠΈΡ‚Π΅ Π½Π° ΠΌΠΎΡ˜ΠΎΡ‚ IRC Π΄Π° ΠΌΠ΅ Π½Π°Ρ€Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ ΠΌΠ°Π³ΠΈΠΎΠ½ΠΈΡ‡Π°Ρ€. Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° овој пост ќС послуТи ΠΊΠ°ΠΊΠΎ сигурна Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° нСкој Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ истото, Π½ΠΎ со ΠΏΠΎΠ½ΠΎΠ²ΠΈ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΈ ΠΈ Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° ОБ.

ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° корисничкиот Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Linux Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Ρ‡Π΅ΠΊΠΎΡ€ΠΈ:

  • ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° зависности ΠΎΠ΄ Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚;
  • ΠΏΡ€Π΅Π·Π΅ΠΌΠ°ΡšΠ΅ Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Линукс;
  • ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ;
  • ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ;
  • ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΎΡ‚;
  • ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΠΎΡ‚ систСм Π·Π° гости;
  • ΠΈΠ·Π±ΠΎΡ€ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ;
  • ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° гостинска ΠΌΡ€Π΅ΠΆΠ°;
  • Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅ Π½Π° гостинското Ρ˜Π°Π΄Ρ€ΠΎ.

ΠŸΡ€Π΅Ρ‚ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΠΌ Π΄Π΅ΠΊΠ° Π°ΠΊΠΎ ΠΎΠ΄Π»ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ сСто ΠΎΠ²Π° сами, Π½Π°Ρ˜Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ ќС Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ сС ΡˆΡ‚ΠΎ Π΅ опишано Π²ΠΎ нСкој Ubuntu ΠΈΠ»ΠΈ систСм сличСн Π½Π° Debian. Π‘Π΅ ΠΎΠ±ΠΈΠ΄ΠΎΠ² Π΄Π° Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌ сСто Π³ΠΎΡ€Π΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ ΠΌΠΎΡ˜Π°Ρ‚Π° ΠΎΠΌΠΈΠ»Π΅Π½Π° Π΄ΠΈΡΡ‚Ρ€ΠΈΠ±ΡƒΡ†ΠΈΡ˜Π° - Alpine, Π½ΠΎ Π½ΠΈΡˆΡ‚ΠΎ Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°ΡˆΠ΅, ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π½Π° Linux Π΅ цврсто ΠΏΠΎΠ²Ρ€Π·Π°Π½ со glibc-isms Π·Π° Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΈ Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° корисник. ΠŸΠ»Π°Π½ΠΈΡ€Π°ΠΌ Π΄Π° Π³ΠΎ ΠΏΡ€ΠΈΡ˜Π°Π²Π°ΠΌ ΠΎΠ²Π° Π½Π° Π²ΠΎΠ·Π²ΠΎΠ΄Π½ΠΎ ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ќС Π³ΠΎ сфатам ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΡ‚.

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° зависности ΠΎΠ΄ Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚

Π£Π±ΡƒΠ½Ρ‚Ρƒ Π±Π°Ρ€Π° Π½Π°Ρ˜ΠΌΠ°Π»ΠΊΡƒ слСднивС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π½Π° Линукс (ΠΏΡ€Π΅Ρ‚ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°Ρ˜ΡœΠΈ чиста ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π°):

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

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ инсталиратС со слСднава ΠΊΠΎΠΌΠ°Π½Π΄Π° (ΠΊΠ°ΠΊΠΎ root ΠΈΠ»ΠΈ со sudo):

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

Π—Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅ Π΄Π΅ΠΊΠ° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΠ΅Π½ΠΈΡ‚ΠΎ Π·Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π½Π° Linux ќС Π±Π°Ρ€Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° libncurses-dev. Π’Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ Π΅ инсталиран ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја слСднава ΠΊΠΎΠΌΠ°Π½Π΄Π° (ΠΊΠ°ΠΊΠΎ root ΠΈΠ»ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ sudo):

apt-get -y install libncurses-dev

ΠŸΡ€Π΅Π·Π΅ΠΌΠ°ΡšΠ΅ Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚

ΠžΠ΄Ρ€Π΅Π΄Π΅Ρ‚Π΅ ΠΊΠ°Π΄Π΅ Π΄Π° ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ ΠΈ ΠΏΠΎΡ‚ΠΎΠ° ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ Π³ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚. ЌС Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΠ΄Π²ΠΎΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 1,3 GB простор Π½Π° Ρ…Π°Ρ€Π΄ дискот Π·Π° ΠΎΠ²Π°Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π°, Π·Π°Ρ‚ΠΎΠ° ΠΏΠΎΠ³Ρ€ΠΈΠΆΠ΅Ρ‚Π΅ сС Π΄Π° Π³ΠΎ ΠΈΠΌΠ°Ρ‚Π΅.

ΠŸΠΎΡ‚ΠΎΠ° ΠΎΠ΄Π΅Ρ‚Π΅ Π½Π° kernel.org ΠΈ Π΄ΠΎΠ±ΠΈΡ˜Ρ‚Π΅ ја URL-Ρ‚ΠΎ Π·Π° Π΄Π° ја ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ Π½Π°Ρ˜Π½ΠΎΠ²Π°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° стабилното Ρ˜Π°Π΄Ρ€ΠΎ. Π’ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΡ‚ Π½Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° овој пост: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.1.16.tar.xz

ΠŸΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ ја ΠΎΠ²Π°Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ 'wget':

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

И ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚Π΅ Π³ΠΎ со 'tar':

tar xJf linux-5.1.16.tar.xz

Π‘Π΅Π³Π° Π³ΠΎ внСсувамС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ создадСн ΠΏΡ€ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° tarball:

cd linux-5.1.16

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π° Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚

БистСмот Π·Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ Π΅ мноТСство НаправСтС Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ с ΠΌΠ½ΠΎΠ³Ρƒ сопствСни Π°Π»Π°Ρ‚ΠΊΠΈ ΠΈ скрипти Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° процСсот. Π—Π° Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅, ΠΎΡ‚Π²ΠΎΡ€Π΅Ρ‚Π΅ ја ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π·Π° ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ онлајн:

make ARCH=um menuconfig

Π”Π΅Π»ΡƒΠΌΠ½ΠΎ ќС Π³ΠΎ Π·Π°Π²Ρ€ΡˆΠΈ склопот ΠΈ ќС ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ΅ дијалог-ΠΊΡƒΡ‚ΠΈΡ˜Π° Π·Π° вас. Кога свСтлото ќС сС појави Π½Π° Π΄Π½ΠΎΡ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†ΠΎΡ‚[Select]', ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ поставкитС ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ ΠΊΠΎΠΏΡ‡ΠΈΡšΠ°Ρ‚Π° Spacebar ΠΈΠ»ΠΈ 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]".

Π’ΠΈ ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌ Π΄Π° си ΠΈΠ³Ρ€Π°Ρ‚Π΅ со ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ќС Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ овој пост. Од ΠΎΠ²ΠΈΠ΅ СкспСримСнти ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ Π½Π° ниско Π½ΠΈΠ²ΠΎ ΠΈ ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π·Π½Π°ΠΌΠ΅Π½Ρ†Π° Π²Π»ΠΈΡ˜Π°Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΎ Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ.

Π“Ρ€Π°Π΄Π΅ΡšΠ΅ Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚

Линукс ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π΅ Π³ΠΎΠ»Π΅ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° која ΠΏΡ€Π°Π²ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π”ΡƒΡ€ΠΈ ΠΈ со ΠΎΠ²Π°Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° постар Ρ…Π°Ρ€Π΄Π²Π΅Ρ€, ΡΠΊΠ»ΠΎΠΏΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡ‚Ρ€Π°Π΅ доста Π²Ρ€Π΅ΠΌΠ΅. Π—Π½Π°Ρ‡ΠΈ, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Ρ‚Π΅ Π³ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја слСднава ΠΊΠΎΠΌΠ°Π½Π΄Π°:

make ARCH=um -j$(nproc)

Π—Π° ΡˆΡ‚ΠΎ? Оваа ΠΊΠΎΠΌΠ°Π½Π΄Π° ќС ΠΌΡƒ ΠΊΠ°ΠΆΠ΅ Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ Π³Ρ€Π°Π΄ΠΈΡ‚Π΅Π» Π΄Π° Π³ΠΈ користи ситС достапни Ρ˜Π°Π΄Ρ€Π° ΠΈ нишки Π½Π° процСсорот Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСсот Π½Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅. Π’ΠΈΠΌ $(nproc) Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ ΠΎΠ΄ Build Π³ΠΎ Π²ΠΌΠ΅Ρ‚Π½ΡƒΠ²Π° ΠΈΠ·Π»Π΅Π·ΠΎΡ‚ ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° nproc, кој Π΅ Π΄Π΅Π» coreutils Π²ΠΎ стандардната Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° Ubuntu.

По Π½Π΅ΠΊΠΎΠ΅ Π²Ρ€Π΅ΠΌΠ΅, Π½Π°ΡˆΠΈΠΎΡ‚ ΠΊΠ΅Ρ€Π½Π΅Π» ќС Π±ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½ Π²ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠ½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° ./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

ΠŸΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ Π³ΠΎ овој 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 ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€ΠΎΡ‚ ќС Π±ΠΈΠ΄Π΅ исклучитСлно Ρ‚Π΅ΡˆΠΊΠΎ. Но, овој Π€Π‘ ќС Π±ΠΈΠ΄Π΅ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ Π·Π° Π΄Π° сС ΠΎΡ†Π΅Π½ΠΈ ΠΎΠΏΡˆΡ‚Π°Ρ‚Π° идСја.

ΠŸΠΎΡ‚Ρ€Π΅Π±Π½Π° Π½ΠΈ Π΅ ΠΈ Π°Π»Π°Ρ‚ΠΊΠ° Ρ‚ΠΈΠ½ΠΈ Π·Π° Π΄Π° сС Π·Π°ΠΏΡ€Π΅ ΠΏΠΎΡ‚Ρ€ΠΎΡˆΡƒΠ²Π°Ρ‡ΠΊΠ°Ρ‚Π° Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π·ΠΎΠΌΠ±ΠΈ процСси Π½Π°ΡˆΠΈΠΎΡ‚ гостин ΠΊΠ΅Ρ€Π½Π΅Π».

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

Π›ΠΈΠ½ΠΈΠΈΡ‚Π΅ ΠΏΠΎΠ³ΠΎΡ€Π΅ Π³ΠΎ ΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚ слСдново Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ ΠΊΠ΅Ρ€Π½Π΅Π»:

  • Π”Π° прСтпоставимС Π΄Π΅ΠΊΠ° root-Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΠΎΡ‚ систСм Π΅ псСвдо ΡƒΡ€Π΅Π΄ /dev/root.
  • Π˜Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ домаќини ΠΊΠ°ΠΊΠΎ Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ Π·Π° root Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм.
  • ΠœΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ гостинскиот Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм ΡˆΡ‚ΠΎ Π³ΠΎ создадовмС Π½Π° root-ΡƒΡ€Π΅Π΄ΠΎΡ‚.
  • И Π΄Π°, Π²ΠΎ Ρ€Π΅ΠΆΠΈΠΌ Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅-ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅.
  • ΠšΠΎΡ€ΠΈΡΡ‚Π΅Ρ‚Π΅ само 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 ΠΈΠ»ΠΈ притиснСтС Control-d. Ова ќС ја Π·Π°ΠΏΠ°Π»ΠΈ ΡˆΠΊΠΎΠ»ΠΊΠ°Ρ‚Π° прослСдСна со ΠΏΠ°Π½ΠΈΠΊΠ° Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ:

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

Ја Π΄ΠΎΠ±ΠΈΠ²ΠΌΠ΅ ΠΎΠ²Π°Π° ΠΏΠ°Π½ΠΈΠΊΠ° Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ бидСјќи ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π½Π° Линукс мисли Π΄Π΅ΠΊΠ° процСсот Π½Π° ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° сСкогаш Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π‘Π΅Π· Π½Π΅Π³ΠΎ, систСмот повСќС Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΈ сС исклучува. Но, бидСјќи ΠΎΠ²Π° Π΅ процСс Π½Π° кориснички Ρ€Π΅ΠΆΠΈΠΌ, Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΎΡ‚ сС ΠΈΡΠΏΡ€Π°ΡœΠ° Π΄ΠΎ SIGABRT, ΡˆΡ‚ΠΎ Π²ΠΎΠ΄ΠΈ ΠΊΠΎΠ½ ΠΈΠ·Π»Π΅Π·ΠΎΡ‚.

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ гостинска ΠΌΡ€Π΅ΠΆΠ°

Но, Ρ‚ΡƒΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡ‡Π½ΡƒΠ²Π°Π°Ρ‚ Π΄Π° Π½ΠΈ ΠΎΠ΄Π°Ρ‚ Π½Π°ΠΎΠΏΠ°ΠΊΡƒ. Π’ΠΌΡ€Π΅ΠΆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π²ΠΎ кориснички Ρ€Π΅ΠΆΠΈΠΌ Linux Π΅ мСстото ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ Ρ†Π΅Π»ΠΈΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ Π½Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ β€žΠΊΠΎΡ€ΠΈΡΠ½ΠΈΡ‡ΠΊΠΈ Ρ€Π΅ΠΆΠΈΠΌβ€œ ΠΏΠΎΡ‡Π½ΡƒΠ²Π° Π΄Π° сС распаѓа. На ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° ΠΊΡ€Π°ΠΈΡˆΡ‚Π°Ρ‚Π°, ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΎΠ±ΠΈΡ‡Π½ΠΎ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° Π½Π° систСмско Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€Π°Π½ΠΈ Ρ€Π΅ΠΆΠΈΠΌΠΈ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ ΠΎΠ΄ ΠΎΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π·Π° ситС нас.

Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ° Π½Π°.: ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ повСќС Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° со ΠΌΡ€Π΅ΠΆΠ° Π²ΠΎ UML Ρ‚ΡƒΠΊΠ°.

ΠŸΠ°Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π΄ΠΎ лизгањС

Π‘Π΅ΠΏΠ°ΠΊ, постои Π°Π½Ρ‚ΠΈΡ‡ΠΊΠ° ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π½Π΅ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½Π° Π°Π»Π°Ρ‚ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° Π›ΠΈΠ·Π³Π°ΡšΠ΅, со кој User Mode Linux ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Π Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΎ стСк TCP/IP Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° корисник ΠΈ Π½Π΅ Π±Π°Ρ€Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ систСмски Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ Π·Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅. Оваа Π°Π»Π°Ρ‚ΠΊΠ° бСшС ΠΈΠ·Π΄Π°Π΄Π΅Π½ 1995 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° послСдното Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π΅ Π΄Π°Ρ‚ΠΈΡ€Π°Π½ΠΎ 2006 Π³ΠΎΠ΄ΠΈΠ½Π°. Π‘Π»ΠΈΡ€ΠΏ Π΅ ΠΌΠ½ΠΎΠ³Ρƒ стар. Π—Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π±Π΅Π· ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° ΠΈ Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ°, ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€ΠΈΡ‚Π΅ стигнаа Ρ‚ΠΎΠ»ΠΊΡƒ Π΄Π°Π»Π΅ΠΊΡƒ ΡˆΡ‚ΠΎ сСга ΠΎΠ²Π°Π° Π°Π»Π°Ρ‚ΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° сС опишС само ΠΊΠ°ΠΊΠΎ β€žΠ³Π½ΠΈΠ΅ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚β€œ.

Π—Π½Π°Ρ‡ΠΈ, ајдС Π΄Π° Π³ΠΎ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅ΠΌΠ΅ 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)

О, Π±ΠΎΠ³ΠΎΠ²ΠΈ ΠΌΠΎΠΈ. АјдС Π΄Π° Π³ΠΎ инсталирамС Π΄Π΅Π±Π°Π³Π΅Ρ€ΠΎΡ‚ 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.

ОвдС Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΏΠ°Π΄ΠΎΡ‚ сС случува Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π³Π»Π°Π²Π½Π°Ρ‚Π° јамка, ΠΊΠΎΠ³Π° slirp сС ΠΎΠ±ΠΈΠ΄ΡƒΠ²Π° Π΄Π° Π³ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ Ρ‚Π°Ρ˜ΠΌΠ°ΡƒΡ‚ΠΈΡ‚Π΅. Π’ΠΎ овој ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠΎΡ€Π°Π² Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ°ΠΌ ΠΎΠ΄ ΠΎΠ±ΠΈΠ΄ΠΎΡ‚ Π·Π° Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅. Но, ајдС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π΄Π°Π»ΠΈ Slirp, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ ΠΎΠ΄ сорти, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ја ΠΏΡ€Π΅Π·Π΅ΠΌΠ°Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ΄ страницата sourceforge, Π·Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π²Π»Π΅Ρ‡Π΅ΡšΠ΅Ρ‚ΠΎ Π½Π΅ΡˆΡ‚ΠΎ ΠΎΠ΄ Ρ‚Π°ΠΌΡƒ ΠΏΡ€Π΅ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија Π΅ Π±ΠΎΠ»ΠΊΠ°:

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 Π₯Π΅Ρ€ΠΎΠΊΡƒ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ. ΠœΠΎΡ˜Π°Ρ‚Π° Ρ‚Π΅ΠΎΡ€ΠΈΡ˜Π° бСшС Π΄Π΅ΠΊΠ° нСкој build ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π° Heroku ќС Π³ΠΈ содрТи Π±ΠΈΠ½Π°Ρ€Π½ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ ΡˆΡ‚ΠΎ ΠΌΠΈ Π±Π΅Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ. На ΠΊΡ€Π°Ρ˜ΠΎΡ‚, ΠΌΠΎΡ˜Π°Ρ‚Π° ΠΏΠΎΡ‚Ρ€Π°Π³Π° ΠΌΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΡƒΠΊΠ°. ΠŸΡ€Π΅Π·Π΅ΠΌΠΈΠ² ΠΈ ΠΎΡ‚ΠΏΠ°ΠΊΡƒΠ²Π°Π² uml.tar.gz ΠΈ Π³ΠΎ најдС слСдново:

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

Ова Π΅ слирп Π±ΠΈΠ½Π°Ρ€Π½ΠΎ! Π”Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ?

./slirp
Slirp v1.0.17 (BETA) FULL_BOLT

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

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

Type five zeroes (0) to exit.

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

SLiRP Ready ...

НС ΠΏΠ°Ρ“Π° - Π·Π°Ρ‚ΠΎΠ° Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ! АјдС Π΄Π° Π³ΠΎ засадимС овој Π±ΠΈΠ½Π°Ρ€ ~/bin/slirp:

cp slirp ~/bin/slirp

Π’ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ ΠΊΡ€Π΅Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΡ‚ Π΄Π° Π³ΠΎ отстрани, јас Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΌΡ€Π΅ΠΆΠ°

Π‘Π΅Π³Π° ајдС Π΄Π° ја ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ гостинско Ρ˜Π°Π΄Ρ€ΠΎ. АјдС Π΄Π° Π³ΠΈ Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π·Π° Π»Π°Π½ΡΠΈΡ€Π°ΡšΠ΅:

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

Π‘Π΅Π³Π° ајдС Π΄Π° ја ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΠΌΠ΅ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°:

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

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

ΠŸΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π΅ конфигурациски ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ /proc ΠΈ /sys Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ifconfig, кој поставува ΠΌΡ€Π΅ΠΆΠ΅Π½ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π·Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° со Slirp. Π’ΠΈΠΌ route ја поставува Ρ€ΡƒΡ‚ΠΈΡ€Π°Ρ‡ΠΊΠ°Ρ‚Π° Ρ‚Π°Π±Π΅Π»Π° Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ Π·Π° Π΄Π° Π³ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈ Ρ†Π΅Π»ΠΈΠΎΡ‚ ΡΠΎΠΎΠ±Ρ€Π°ΡœΠ°Ρ˜ Π΄Π° сС ΠΈΡΠΏΡ€Π°ΡœΠ° Π½ΠΈΠ· Ρ‚ΡƒΠ½Π΅Π»ΠΎΡ‚ Π‘Π»ΠΈΡ€ΠΏ. АјдС Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌΠ΅ ΠΎΠ²Π° со Π±Π°Ρ€Π°ΡšΠ΅ Π·Π° 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

Π Π°Π±ΠΎΡ‚ΠΈ!

Π—Π°Π±Π΅Π»Π΅ΡˆΠΊΠ°: ΠžΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ, ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΠΎΡ‚ пост Π΅ напишан Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° ΠΏΠΎΠ²Ρ€ΡˆΠΈΠ½Π° со ΠΆΠΈΡ‡Π½Π° ΠΌΡ€Π΅ΠΆΠ½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ° ΠΈΠ»ΠΈ нСкоја Π΄Ρ€ΡƒΠ³Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π·Π° која Π½Π΅ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ΠΈ. На Π»Π°ΠΏΡ‚ΠΎΠΏ со 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
/ #

ΠžΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ, ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΠΎΡ‚ Π½Π° ΠΌΡ€Π΅ΠΆΠ½ΠΈΠΎΡ‚ ΠΏΠΎΠ³ΠΎΠ½. ΠžΠ±ΠΈΠ΄ΠΎΡ‚ Π΄Π° сС состави Ρ„ΠΈΡ€ΠΌΠ²Π΅Ρ€ΠΎΡ‚ Π²ΠΎ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, Π·Π° ΠΆΠ°Π», Π½Π΅ ја ΠΏΠΎΠΏΡ€Π°Π²ΠΈ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Π’ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ, сè ΡƒΡˆΡ‚Π΅ Π½Π΅ моТСшС Π΄Π° сС најдС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²ΠΎ ΠΎΠ²Π°Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°. На поСдноставни ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎ Virtualbox), ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚ Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΏΠΎΠ΄ΠΈΠ³Π½Π°Ρ‚.

АјдС Π΄Π° Π³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€Π΅Π½Π°ΡΠΎΡ‡ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја слСдната скрипта Π·Π° школка:

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

ΠœΡ€Π΅ΠΆΠ°Ρ‚Π° Π΅ стабилна!

Π΄ΠΎΠΊΠ΅Ρ€ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°

Π—Π° Π΄Π° Π²ΠΈ олСснам Π΄Π° Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ сСто ΠΎΠ²Π°, собрав dockerfile, ΡˆΡ‚ΠΎ Π³ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π° ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΎΠ΄ ΠΎΠΏΠΈΡˆΠ°Π½ΠΈΡ‚Π΅ Ρ‡Π΅ΠΊΠΎΡ€ΠΈ ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π²ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°. Имам ΠΈ јас ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚, кој содрТи сС ΡˆΡ‚ΠΎ Π΅ опишано Π²ΠΎ ΠΎΠ±Ρ˜Π°Π²Π°Ρ‚Π°. Но, Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ Π΄Π΅ΠΊΠ° ΠΎΠ²Π΄Π΅ Π³ΠΈ Π½Π°Π²Π΅Π΄ΠΎΠ² само ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡ‚Π΅ поставки.

Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌ Π΄Π΅ΠΊΠ° овој пост Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΈΠ³Π½Π΅Ρ‚Π΅ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π·Π° гости. Π‘Π΅ испостави Π΄Π΅ΠΊΠ° Π΅ нСкој Π²ΠΈΠ΄ Ρ‡ΡƒΠ΄ΠΎΠ²ΠΈΡˆΡ‚Π΅, Π½ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ сСопфатСн Π²ΠΎΠ΄ΠΈΡ‡ Π½Π° Ρ‚Π΅ΠΌΠ°Ρ‚Π° Π·Π° ΡΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅, ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π½Π° корисникот Π²ΠΎ Linux ΠΏΠΎΠ΄ соврСмСнитС Π²Π΅Ρ€Π·ΠΈΠΈ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ систСми ΠΎΠ΄ ΠΎΠ²Π° ΡΠ΅ΠΌΠ΅Ρ˜ΡΡ‚Π²ΠΎ. Π‘Π»Π΅Π΄Π½ΠΈΡ‚Π΅ Ρ‡Π΅ΠΊΠΎΡ€ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Π°Ρ‚ ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° услуги ΠΈ Π΄Ρ€ΡƒΠ³ софтвСр вСќС Π²ΠΎ систСмот Π·Π° гости. Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ сликитС ΠΎΠ΄ ΠΊΠΎΠ½Ρ‚Π΅Ρ˜Π½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° Docker сС само ΠΏΡ€ΠΎΠΌΠΎΠ²ΠΈΡ€Π°Π½ΠΈ Ρ‚Π°Ρ€Π±ΠΎΠ»ΠΈ, Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚Π΅ сликата ΠΏΡ€Π΅ΠΊΡƒ docker export, Π° ΠΏΠΎΡ‚ΠΎΠ° ΠΎΠ΄Ρ€Π΅Π΄ΠΈ ја ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π²ΠΎ ΠΊΠΎΡ€Π΅Π½ΠΎΡ‚ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π½ΠΈΠΎΡ‚ систСм Π½Π° гостинското ΠΊΠ΅Ρ€Π½Π΅Π». Па, Ρ‚ΠΎΠ³Π°Ρˆ ΠΈΠ·Π²Ρ€ΡˆΠ΅Ρ‚Π΅ ја скриптата Π½Π° школка.

ПосСбна благодарност Π΄ΠΎ Rkeene ΠΎΠ΄ #lobsters Π½Π° Freenode. Π‘Π΅Π· Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° помош Π²ΠΎ Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Slirp, нСмашС Π΄Π° стигнам Ρ‚ΠΎΠ»ΠΊΡƒ Π΄Π°Π»Π΅ΠΊΡƒ. НСмам идСја ΠΊΠ°ΠΊΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ‚ Slackware систСм Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ со slirp, Π½ΠΎ ΠΌΠΎΠΈΡ‚Π΅ Ubuntu ΠΈ Alpine систСми Π½Π΅ ΠΏΡ€ΠΈΡ„Π°Ρ‚ΠΈΡ˜Π° slirp ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΎΡ‚ Rkeene ΠΌΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈ. Но, Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ ΠΌΠΈ Π΅ ΡˆΡ‚ΠΎ Π±Π°Ρ€Π΅ΠΌ Π½Π΅ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π° ΠΌΠ΅Π½Π΅.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€