áá¬áá¬ááŒááºáá°áá¶á០áááá«ááºáž- á¡áá»áá¯ážáá»áá¯ážáá±á¬ ááœááºááááºáá¬á¡áá»áá¯ážáá»áá¯ážááá¯á·á áááá²ááá¯á· ááŒá®ážáá¬ážáá±á¬áááºáá±á¬ááºááŸá¯á áá±á¬ááºáá¶áá¬ážáá»ááºááᯠááá·áºáá»ááºá áááºážááẠáááºááá·áºáááºážááá¬áá»á¬ážááŒáá·áº á
áááºáá²á·áááºááᯠááááŸáááẠá¡ááœááºá
áááºáááºá
á¬ážá
áá¬áá±á¬ááºážááŒá®áž á¡áá¯á¶ážáááºáá«áááºá áááºážááá¯á·áá²á០á¡áá»áá¯á·ááᯠááá±á·áá±ááºá¡áá á¡áá¯á¶ážáááºááá¯ááºáá±á¬áºáááºáž áá°ááá¯ááºážá ááá¯áá²á·ááá¯á·áá±á¬ áááºážáááºážáá»á¬ážááᯠáááŸááºáááጠ(ááá¯á·ááá¯áẠáááºážááá¯á·ááẠáá»ááºááŒááºá
áœá¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áá»áááºááœáẠáááºážááááŒááºážááá¶ááá»áŸáẠáááááá¯ááº)á ááá¯áá²á·ááá¯á·áá±á¬áááºážááá¬áá
áºáá¯ááŸá¬ User Mode Linux ááŒá
áºáááºá áá°áááºážáá±ážáá¬ážáá°ááẠáá°ážáá±á¬áºááŸá¯áá»á¬ážá
áœá¬ááŒá¯áá¯ááºáá²á·ááŒá®áž áááºááá·áºá¡áá¬á á¡áá¯ááºáááŒá
áºáá±ážáááºááᯠááŸá¬ááœá±áᬠ2k19 ááœáẠááá·áºááá¯ááºááẠhomebrew UML áá
áºáá¯á¶ážáááẠá¡ááá·áºááá·áº ááœáŸááºááŒá¬ážáá»ááºáá
áºáá¯áá²á·ááá¯á· áá±á«ááºážá
ááºááá·áºááœááºážáá¬ážáááºá áá¯ááºáá«áááºá áá°áááºážááá¯á·á
áºáá±ážáá¬ážáá°ááᯠHabr ááá¯á· ááááºáá±á«áºáá«áááºá
Linux ááŸá User Mode ááẠááááºáá±á¬á· Linux kernel á port áá
áºáá¯ááŒá
áºáááºá á€áá¯ááºááẠááá·áºá¡á¬áž á¡áá¯á¶ážááŒá¯áá°áá¯ááºáááºážá
ááºá¡ááŒá
ẠLinux kernel á¡ááŒáá·áºá¡á
á¯á¶ááᯠáá¯ááºáá±á¬ááºááá¯ááºá
á±ááŒá®áž áá¬ááºáá±á¬ááºážáá»á¬ážááᯠá
ááºážáááºáááºá¡ááœáẠáá±á¬á·ááºáá²á¡ááºáá»ááºáá®áá¬áá»á¬ážá á¡áá»á¬ážá¡á¬ážááŒáá·áº á¡áá¯á¶ážááŒá¯áá±á·ááŸááááºá ááá¯á·áá±á¬áº á€áá¯ááºááẠáá±áá°áá»á¡áá®ážáá»ááºáááááá¬áá
áºáá¯á¡áá±ááŒáá·áºáááºáž á¡áá¯á¶ážáááºáááºáá á¡ááá¯áá«áááá¬áááẠvirtual machines áá»á¬ážááááºáááºááŸá¯ááŸáá·áºáááºáá°áááºá á€áá¯ááºááẠDocker ááẠá¡áá®ážáá»ááºááŸá¯ááᯠáá¶á·ááá¯ážáá±ážáááºá ááá¯á·áá±á¬áº KVM ááá¯á·ááá¯áẠVirtual Box áá²á·ááá¯á· ááŒáá·áºá
á¯á¶áá±á¬ virtual machine áááºáááºážáááºá
áá±áá°áá»á¡á¬ážááŒáá·áºá User Mode ááẠáá°ážáááºážááŒá®áž á¡áá¯á¶ážááŒá¯ááááºáá²áá±á¬áááááá¬áá
áºáá¯áá²á·ááá¯á·áááºááá±á¬áºáááºáž áááºážááœááºá¡áá¯á¶ážááŒá¯ááŸá¯áá»á¬ážááŸááá±áá²ááŒá
áºáááºá áá±á¬ááºáá¯á¶ážá¡áá±ááŸáá·áºá áááºážááẠá¡ááœáá·áºáá°ážáááá±ážáá±á¬á¡áá¯á¶ážááŒá¯áá°áá
áºáŠážá០áá¯ááºáá±á¬ááºáá±ááá·áº ááŒáá·áºá
á¯á¶áá±á¬ Linux kernel ááŒá
áºáááºá á€á¡ááºá¹áá«áááºááẠáá¯á¶ááŒááºá
áááºáá»ááá±á¬áá¯ááºááᯠáááºáá¶áá±á¬ááºááœááºáá±ážááá·áºá
ááºááᯠáááºááá·áºá¡áá¹ááá¬ááºááŸááá«áá² áá¯ááºáá±á¬ááºááá¯ááºá
á±áá«áááºá áááºážááẠááŒá®ážááŒáá·áºá
á¯á¶áá±á¬ 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}]
áááºážááᯠá¡áá¯á¶ážááŒá¯áá°áá¯ááºááŸá Linux kernel á pstree ááŸáá·áº ááŸáá¯ááºážááŸááºááŒáá·áºáá«-
linuxââ¬â5*[linux]
ââslirp
Docker ááœááºááááºáá¬áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬á¡áá«á á§áá·áºáááºááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ áá¯ááºáááºážá ááºáá»á¬ážá á¡áááºáá»á¬ážááᯠáááºáá¶áá±á¬ááºááœááºáá±ážáá°áá¶á០ááŒááºááœá±á·ááá¯ááºáááºá Linux á¡áá¯á¶ážááŒá¯áá°áá¯ááºááŒáá·áºá áááºážááẠáááŒá áºááá¯ááºáá«á áá¬ááá¯ááá¯ááá¯áá¬áá²? ááá¯ááá¯áááºááŸá¬ Linux á á á¬áááºážá á áºá áá áºááœá²ááŸáááá·áº áá¯ááºáá±á¬ááºáá±á¬ á á±á¬áá·áºááŒáá·áºáá±ážáááááá¬áá»á¬ážááŒá áºáááºá áááŒáá·áºáá²á· á§áá·áºáááºá áá áºááœáẠáá¯ááºáá±á¬ááºáá±áá±á¬ áá¯ááºáááºážá ááºáá»á¬ážá ááá¯á·áá±á¬áº á¡áá»áá¯á·áá±á¬á¡ááŒá±á¡áá±áá»á¬ážááœáẠá€á¡ááºá¹áá«áááºááẠá¡á áœááºááŸá áºáááºáá¬ážááŒá áºáá¬ááá¯ááºáááºá
áá±áá°áá»á¡á¬ážááŒáá·áºá á¡á±á¬ááºáá±á¬áºááŒáá« ááá¯á·á áºáá áºáá¯áá¯á¶ážááẠááá¯áá»ááºáá±á¬ááááºáááŸáááẠááŒááºážááŒááºážáááºáááºááŒáá¯ážá á¬ážááŸá¯áá»á¬ážááŸáá·áº áá¯áá±áááá»á¬ážá á¯á ááºážááŸá¯ááŒá áºáááºá áá«ááá¯áá¯ááºááá¯á·á ááŸá±ážáá¯ááºážá áááááá¬áá»áá¯ážá á¯á¶ááá¯áá¯á¶ážááááºá . á€á¡áá¯ááºá¡á¬ážáá¯á¶ážááẠáá»áœááºá¯ááºá IRC ááŸá áá±á¬ááºá»á¬ážáá»á¬ážááᯠáá»áœááºá¯ááºá¡á¬áž ááŸá±á¬áºáááºáááºáᯠáá±á«áºá á±áá²á·áááºá á€ááá¯á·á áºááẠá¡áá áºáá±á¬ kernels ááŸáá·áº OS áá¬ážááŸááºážáá»á¬ážááŒáá·áº áá°áá®áá±á¬á¡áá¬ááᯠá ááºážáá¯á¶ážááẠáá áºá á¯á¶áá áºáŠážá¡ááœáẠáá¯á¶ááŒááºá áááºáá»ááá±á¬ á á¬ááœááºá á¬áááºážá¡ááŒá Ạáá¯ááºáá±á¬ááºááá¯ááºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá
ááá·áºá¡á±á¬ááºáá¯ááºááŒááºáž
Linux á¡áá¯á¶ážááŒá¯áá°áá¯ááºááᯠáááºááŸááºááŒááºáž á¡ááá·áºáá»á¬ážá áœá¬ááŒáá·áº áá¯ááºáá±á¬ááºáááº-
- host áá±á«áºááœááºááŸá®ááá¯áááºáááºááŒááºáž;
- Linux kernel ááᯠáá±á«ááºážáá¯ááºáá¯ááºááŒááºážá
- kernel áááºáá±á¬ááºááŸá¯ááœá²á·á ááºážááŸá¯;
- kernel á ááºážáá±ážááœá²;
- binary áááºáááºááŒááºáž;
- á§áá·áºáááºááá¯ááºá áá áºá¡á¬áž ááŒááºáááºááŒááºážá
- kernel launch parameters áá»á¬ážááá¯ááœá±ážáá»ááºááŒááºážá
- á§áá·áºáááºááœááºáááºáá áºáá¯áááºáá±á¬ááºááŒááºážá
- á§áá·áºááẠkernel ááá¯á áááºáááºá
áááºááá¯ááºááá¯ááºááŒá¯áá¯ááºááẠáá¯á¶ážááŒááºáá«áá Ubuntu ááá¯á·ááá¯áẠDebian áá²á·ááá¯á·áá±á¬ á áá áºá¡áá»áá¯á·ááœáẠáá±á¬áºááŒáá¬ážááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºáá¯ááºáá±á¬ááºááá¯ááºááœááºááŸááááºáᯠáá»áœááºá¯ááºáá°ááá«áááºá áá»áœááºá¯ááºá¡ááŸá áºáááºáá¯á¶ážááŒáá·áºáá»á®áá±ážááœáẠá¡áááºáá±á¬áºááŒáá«á¡á¬ážáá¯á¶ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááŒáá¯ážá á¬ážáá²á·ááẠ- Alpineá ááá¯á·áá±á¬áº Linux kernel ááœáẠá¡áá¯á¶ážááŒá¯áá°áá¯ááºááŸá áááá¯ááºáá¬áá»á¬ážá¡ááœáẠáááºáááºáá²áá² binding glibc-isms áá«ááŸááá±á¬ááŒá±á¬áá·áº áááºážááŸáá¬ááŸááœááºáá±á«áºáá¬áá²á·ááŒááºážáááŸááá«á ááŒá¿áá¬ááᯠáá±á¬ááºáá¯á¶ážáá¬ážáááºááŒá®ážáá¬áá²á· áá«ááᯠá¡áááºááᯠáááºááŒááá¯á· á á®á ááºáá¬ážáá«áááºá
host áá±á«áºááœáẠááŸá®ááá¯ááŸá¯ááᯠááá·áºááœááºážááŒááºážá
Ubuntu ááẠLinux kernel ááᯠáááºáá±á¬ááºááẠá¡áááºážáá¯á¶áž á¡á±á¬ááºáá« áááºáá±á·áá»áºáá»á¬áž ááá¯á¡ááºááẠ(ááá·áºááŸááºážáá±á¬ ááá·áºááœááºážááŸá¯áᯠáá°ááááº)á
- 'build-essential'
- 'flex'
- 'bison'
- 'xz-utils'
- 'wget'
- 'ca-certificates'
- 'bc'
- 'linux-headers'
áááºážááá¯á·ááᯠá¡á±á¬ááºáá« command ááŒáá·áº (root ááá¯á·ááá¯áẠsudo ááŒáá·áº ááá·áºááœááºážááá¯ááºáááº)á
apt-get -y install build-essential flex bison xz-utils wget ca-certificates bc
linux-headers-$(uname -r)
Linux kernel áá®áá°áž áááºáááºááŸá¯ áááá¯ááááºááᯠáá¯ááºáá±á¬ááºáá¬ááœáẠááá·áºááœááºážááŸá¯ ááá¯á¡ááºáááºááᯠáááááŒá¯áá«á libncurses-dev
. áá»á±ážáá°ážááŒá¯á áááºážá¡á¬áž á¡á±á¬ááºáá« command ááŒáá·áº (root ááá¯á·ááá¯áẠsudo ááŒáá·áº ááá·áºááœááºážáá¬ážááŒá±á¬ááºáž áá±áá»á¬áá«á
á±á)
apt-get -y install libncurses-dev
Kernel áá±á«ááºážáá¯ááºáá¯ááºáá«á
áááºááŸá¬áá±á«ááºážáá¯ááºááœá²áááá²ááá¯áᬠáá¯á¶ážááŒááºááŒá®áž kernel ááá¯áááºáá±á¬ááºáá«á á€áá¯ááºáá±á¬ááºáá»ááºá¡ááœáẠáááºááẠáá¬á·ááºáá áºáá±áá¬ááᯠ1,3 GB ááá·áºááœá²áá±ááẠááá¯á¡ááºáááºááŒá áºáᬠáááºážááᯠááá·áºááœááºáá±áá»á¬á¡á±á¬ááºáá¯ááºáá«á
ááœá¬ážááŒá®ážáá±á¬ááº
á€ááá¯ááºááᯠá¡áá¯á¶ážááŒá¯á áá±á«ááºážáá¯ááºáá¯ááºáá«á '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
Kernel áááºáá±á¬ááºááŸá¯ á áá áºááá·áºááœááºážááŒááºážá
kernel build system ááẠset áá
áºáá¯ááŒá
áºáááºá
make ARCH=um menuconfig
áááºážááẠááá·áºá¡ááœáẠáá
áºá
áááºáá
áºááá¯ááºážáááºáá±á¬ááºááŒá®áž ááá¯ááºáá¬áá±á¬á·ááºáá±á¬ááºá
áºááᯠááŒááááºááŒá
áºáááºá áááºáá±á¬á·áá² '[Select]
'á Space ááá¯á·ááá¯áẠEnter áá±á¬á·áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááẠconfigure áá¯ááºááá¯ááºáá«áááºá áá¯á¶ááŸááºá¡ááá¯ááºážá áá®ážáá¯ááºááŒáŸá¬ážáá»á¬áž "áááº" ááŸáá·áº "á¡á±á¬ááº" ááŒáá·áº ááŒáááºážáá±á«ááºááᯠáááºážááœáŸááºááŒá®áž á¡á
áááºá¡ááá¯ááºážáá»á¬áž - "áááº" ááá¯á·ááá¯áẠ"áá¬áááº" ááᯠááœá±ážáá«á
view pointer â> ááá¯áááºááŸá¬ áááºááẠEnter key ááŒáá·áº áááºáá±á¬ááºáá¬ážáá±á¬ submenu áá
áºáá¯ááœáẠááŸááá±áááºááᯠááá¯ááá¯áááºá ááœááºáá¬áá²á·áááºážá áááá¬áááºááŸá¬ážáááºá[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]
'á á¡áá¯á¶ážááœáẠconfiguration ááá¯ááááºážáááºážááẠááá·áºá¡á¬áž ááááá±ážáá¬ážááŒá±á¬ááºáž áá±áá»á¬á
á±ááŒá®áž 'ááá¯ááœá±ážáá»ááºáá«á[Yes]
'' á
áá®ááá¯á·á áºááá¯áááºááŒá®ážááẠkernel build options áá²á· áá á¬ážááá¯á· á¡ááŒá¶ááŒá¯ááá¯áá«áááºá á€á ááºážáááºááŸá¯áá»á¬ážááŸáá áºááá·áºá á¡ááá·áºáááá·áº kernel á ááºááá¯ááºážááá¯ááºáá¬áá»á¬ážá áá¯ááºáá±á¬ááºááŸá¯ááŸáá·áº áááºážáá ááºážáá±ážááœá²á¡áá±á«áºááŸá á¡áá¶á¡áá»áá¯ážáá»áá¯ážá á¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááᯠáá¬ážáááºááá±á¬áá±á«ááºááŒááºážááá¯ááºáᬠáá±á«áá¬ááá»á¬ážá áœá¬ááᯠáááºáá±á·áá¬ááá¯ááºáá«áááºá
Kernel áááºáá±á¬ááºááŒááºážá
Linux kernel ááẠá¡áá¬áá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ ááŒá®ážáá¬ážáá±á¬ áááá¯ááááºáá áºáá¯ááŒá áºáááºá áá¬á·ááºáá²áá±á¬ááºážááœáẠá€áá»áŸáááºážáá±á¬áá¯á¶á á¶ááŒáá·áºááẠáááºáá±á¬ááºááẠá¡áá»áááºá¡áá±á¬áºááŒá¬ááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº á¡á±á¬ááºáá« command ááŒáá·áº kernel ááá¯áááºáá±á¬ááºáá«á
make ARCH=um -j$(nproc)
áá¬á¡ááœááºáá²? ဠcommand ááẠbuild process ááœáẠáááŸáááá¯ááºáá±á¬ CPU cores ááŸáá·áº threads á¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯ááẠáá»áœááºá¯ááºááá¯á·á builder á¡á¬áž ááŒá±á¬ááŒáááá·áºáááºá á¡áááºážá¡ááœá²á· $(nproc)
Build áá¡áá¯á¶ážááœáẠcommand á output ááá¯á¡á
á¬ážááá¯ážáááºá nproc
áá¡á
áááºá¡ááá¯ááºážáá
áºáá¯ááŒá
áºáááºá coreutils
áá¯á¶ááŸáẠUbuntu áááºáá±á¬ááºááŸá¯ááœááºá
á¡áá»áááºá¡áááºážáááºááŒá¬ááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·á kernel ááẠexecutable file áá
áºáá¯á¡ááŒá
Ạá
á¯á
ááºážááœá¬ážáá«áááºá ./linux
.
binary ááá¯ááá·áºááœááºážááŒááºážá
Linux ááŸá User Mode ááẠáá¯á¶ááŸáẠbinary áá áºáá¯ááᯠáááºáá®ážáá±á¬ááŒá±á¬áá·áºá áááºááẠáááºážááᯠá¡ááŒá¬ážáá±á¬ utility áá»á¬ážáá²á·ááá¯á· ááá·áºááœááºážááá¯ááºáááºá áá«áá¯ááºáá¯á¶á áá®ááá¯áá«
mkdir -p ~/bin
cp linux ~/bin/linux
á¡á²áá«ááá¯áááºáž áá±áá»á¬áá¯ááºááá»áá¯ážáááºáá«áááºá ~/bin
ááá·áºááœááºááŸááááºá $PATH
:
export PATH=$PATH:$HOME/bin
á§áá·áºáááºááá¯ááºá áá Ạá áá áºááá·áºááœááºážááŒááºážá
á§áá·áºáááºááá¯ááºá áá áºá¡ááœáẠáááºážááœáŸááºáá áºáᯠáááºáá®ážáá«-
mkdir -p $HOME/prefix/uml-demo
cd $HOME/prefix
alpinelinux.org ááá¯ááœáá·áºááŒá®áž áááºáá«á MINI ROOT FILESYSTEM
. áá±ážáá¯ááºážá áá®ááá¯áá«
http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-minirootfs-3.10.0-x86_64.tar.gz
wget ááᯠá¡áá¯á¶ážááŒá¯á ဠtarball ááᯠáá±á«ááºážáá¯ááºáá¯ááºáá«á
wget -O alpine-rootfs.tgz http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-minirootfs-3.10.0-x86_64.tar.gz
ááá¯á§áá·áºáááºááá¯ááºá áá áºááááºážááœáŸááºááá¯ááá¯ááºááá·áºáᬠarchive ááá¯áá¯ááºáá°áá«á
cd uml-demo
tar xf ../alpine-rootfs.tgz
áá±á¬áºááŒáá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠáá±ážáááºáá±á¬ ááá¯ááºá áá Ạááá°áá¬áá¯á¶á á¶ááᯠáááºáá®ážáá±ážáááá·áºáááºá á áá áºá ááá±á¬ááá¬áááŒá±á¬áá·áºá Alpine apk áááºáá±áá»á¬ááŸáá áºááá·áº áááºáá±á·áá»áºáá»á¬ážááᯠááá·áºááœááºážááẠá¡ááœááºáááºáá²áá«áááá·áºáááºá ááá¯á·áá±á¬áº ဠFS ááẠáá±áá°áá»á¡áá°á¡áááᯠá¡áá²ááŒááºááẠáá¯á¶áá±á¬ááºáá«áááá·áºáááºá
áááááá¬áá
áºáá¯áááºážááá¯áááºá
wget -O tini https://github.com/krallin/tini/releases/download/v0.18.0/tini-static
chmod +x tini
kernel command line áá áºáá¯ááᯠáááºáá®ážááŒááºážá
Linux kernel ááœáẠá¡ááŒá¬ážáá±á¬áááá¯ááááºá¡áá»á¬ážá
á¯áá²á·ááá¯á·áááºá áá±á¬á·ááá¯áááºááŸááºááŒááºážááŒáá·áº áááºáá±á¬ááºááá¯ááºáá±á¬ command-line 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 ááᯠrun ááŒáá«á áá¯á·á
linux
root=/dev/root
rootfstype=hostfs
rootflags=$HOME/prefix/uml-demo
rw
mem=64M
init=/bin/sh
á¡áááºáá±á¬áºááŒáá« á á¬ááŒá±á¬ááºážáá»á¬ážááẠáá»áœááºá¯ááºááá¯á·á kernel ááᯠá¡á±á¬ááºáá«á¡ááá¯ááºáž ááŒá±á¬ááŒáááº-
- root filesystem ááẠpseudo device áá
áºáá¯áᯠáá°ááá«á
/dev/root
. - ááœá±ážáá»ááºáá«
hostfs root filesystem driver á¡ááŒá áºá - root device ááœááºáá»áœááºá¯ááºááá¯á·áááºáá®ážáá¬ážáá±á¬á§áá·áºáááºááá¯ááºá áá áºá¡á¬ážáááºáááºáá«á
- áá¯ááºáááºá áááºáá±ážáá¯ááºááŸá¬á
- RAM á 64 MB ááá¯áá¬áá¯á¶ážáá« (áááºáá¯ááºáá±á¬ááºáááºá á®á ááºáá¬ážááá·áºá¡áá±á«áºáá°áááºá áá»á¬ážá áœá¬áá»á±á¬á·áááºážá¡áá¯á¶ážááŒá¯ááá¯ááºáá±á¬áºáááºáž 64 MB ááẠá¡áá±á¬ááºážáá¯á¶ážááá¬áááŒá áºáá¯á¶ááááº)á
- kernel á¡ááá¯á¡áá»á±á¬ááºá
áááºáááºá
/bin/sh
áááºááá¯init
- áá¯ááºáááºážá ááºá
ဠcommand ááᯠrun ááŒá®ážáááºá¡á±á¬ááºáá«áá²á·ááá¯á·áá±á¬á¡áá¬áá áºáá¯áá¯ááá¯áááá·áºáááº:
áá±á¬ááºáááºáá áºááœááº
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
ááá¯á·ááá¯áẠáááºáá¶áá±á¬ááºááœááºáá±ážáá°á¡áááºá á¥ááá¬á¡á¬ážááŒáá·áºá á¡á±á¬ááºáá« command áá»á¬ážááᯠá
ááºážááŒáá·áºáá«á
- uname -av
- cat /proc/self/pid
- hostname
á§áá·áºáááºá០ááœááºááẠá
á¬ááá¯ááºáá«á exit
ááá¯á·ááá¯áẠcontrol-d ááá¯ááŸáááºáá«á áááºážááẠkernel á¡ááááºáááá·áºááŒá
áºááŒá®ážáá±á¬áẠshell ááá¯áá±á
á±áááá·áºáááº-
/ # exit
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
fish: â./linux root=/dev/root rootflagâŠâ terminated by signal SIGABRT (Abort)
Linux kernel á០á¡á
ááŒá¯ááŒááºážáá¯ááºáááºážá
ááºááẠá¡ááŒá²áááºáááºáá±áááºáá¯áááºáá±á¬ááŒá±á¬áá·áº ဠkernel á¡ááááºáááá·áºááŒá
áºáá²á·ááááºá á¡á²áá«áááŸáááẠá
áá
áºá á¡áá¯ááºááá¯ááºáá±á¬á·áá² áá»ááºááœá¬ážáááºá ááá¯á·áá±á¬áº áááºážááẠá¡áá¯á¶ážááŒá¯áá°-áá¯áẠáá¯ááºáááºážá
ááºááŒá
áºáá±á¬ááŒá±á¬áá·áºá áááŸááá¬áá±á¬ output ááẠáá°á·áá¬áá¬áá° áá±ážááá¯á·áááºá SIGABRT
output áá
áºáá¯á¡ááœááºááááºáá»á¬ážá
á§áá·áºáááºááœááºááẠá áá áºááá·áºááœááºážááŒááºážá
á€áá±áá¬á á¡áá¬áá»á¬áž ááŸá¬ážááœá¬ážáá±á¬á·áááºá á¡áá¯á¶ážááŒá¯áá°áá¯áẠLinux ááœáẠááœááºáááºáá»áááºáááºááŒááºážááẠá¡ááá·áºá¡áááºááŸááá±á¬ "á¡áá¯á¶ážááŒá¯áá°áá¯ááº" á ááá±á¬ááá¬ážáá áºáá¯áá¯á¶áž ááœá²ááœááºááœá¬ážááá·áºáá±áá¬ááŒá áºáááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá á áá áºá¡ááá·áºááœááºá ááœááºáááºááẠá¡ááá·áºá¡áááºááŸááááºá á¡ááœáá·áºáá°ážáᶠáá»áœááºá¯ááºááá¯á·á¡á¬ážáá¯á¶áž áá¬ážáááºááá¯ááºáá±á¬ á¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážá¡ááœáẠá á®áááºáá»ááºáá¯ááºáá»á¬ážá
ááŸááºáá»ááºá per .: UML ááœáẠááœááºáááºáá
áºáá¯ááŸáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠááá°áá®áá±á¬ ááœá±ážáá»ááºá
áá¬áá»á¬ážá¡ááŒá±á¬ááºáž áááºááá¯ááá¯áááºááŸá¯ááá¯ááºáá«áááºá
Slirp ááá¯á· ááá®áž
ááá¯á·áá±á¬áºá ááŸá±ážáá»ááŒá®áž áá¶á·ááá¯ážááá¬ážáá±á¬ áááááá¬áá¯áá±á«áºáá±á¬ áááááá¬áá
áºáá¯ááŸááááºá
ááá¯á·ááŒá±á¬áá·áº Ubuntu repositories á០Slirp ááᯠáá±á«ááºážáá¯ááºáá¯ááºááŒá®áž áááºážááᯠrun ááŒáá«á áá¯á·á
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's debugger ááᯠááá·áºááœááºážááŒá®áž á€áá±áá¬ááœáẠáá¬ááŒá áºáá±áááºááᯠáá»áœááºá¯ááºááá¯á· ááŸá¬ááœá±ááá¯ááºááá¬ážá
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 ááẠtimeouts ááá¯á
á
áºáá±ážáááºááŒáá¯ážá
á¬ážáá±á¬á¡áá« main loop á
áááºá
ááºá¡ááœááºáž áá»ááºá
á®ážááœá¬ážáááºááᯠá€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááœá±á·ááŒááºááá«áááºá áá®á¡áá»áááºááŸá¬ á¡ááŸá¬ážááŸá¬ááá¯á· ááŒáá¯ážá
á¬ážáá¬ááᯠá
áœáá·áºááœáŸááºááá¯ááºááááºá ááá¯á·áá±á¬áº 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
á€áá±áá¬ááœáẠáááºááŸááºááá¬ážáá±á¬ Built-in áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááŒá±á¬ááºáž ááááá±ážáá»ááºáá»á¬ážá ááá¯ááá¯áááºááŸá¬ ááá¬áá±á¬ binary ááá¯ááºááᯠááá·áºááºáá»áááºááẠáá
áœááºážáá±á¬ááºááá¯ááºááŒááºážááŸáá·áº áááºáááºá ááááá±ážáá»ááºáá»á¬áž ááœá±á·ááŸáááááºá áááá áá¯ááŸá
áºááŸáá·áº á€á¡áá»ááºááŒá¬ážááœááºá gcc ááẠá¡áááºá¡áááºá
á¯á
ááºážáá¬ážáá±á¬ááá¯ááºáá»á¬ážá built-in áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááá·áº áááºá¹áá±ááá»á¬ážáá¯ááºáá¯ááºááŒááºážááᯠáááºááœá¬ážáá¯á¶ááááºá á¡áááá
áá¬ážáá¯á¶ážááᯠá¡á
á¬ážááá¯ážááŒáá·áºáá¡á±á¬áẠinline
á¡ááœááºáááºááŒááºáá»ááºáá
áºáá¯ááœáẠááááºááá¯ááŒáá·áºáá«-
vi slirp.h
:6
a
<enter>
#define inline /**/
<escape>
:wq
make
ááá¯ááºáá°áž áá«ááááºáž á¡áá¯ááºáááŒá áºáá«áá°ážá á€áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠáááºá¹áá±ááá»á¬ážááᯠááŸá¬áááœá±á·áá±ážáá«á
áá®á¡áá»áááºááŸá¬ áá»áœááºáá±á¬áº á
áœáá·áºááœáŸááºááá¯ááºááŒá®áž Github ááᯠá
áááºááŸá¬ááœá±áá²á·áá«áááºá 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 binary ááŒá áºáááºá áá°á¡áá¯ááºáá¯ááºááá¬áž?
./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 ...
ááá»ááºá
á®ážáá°áž - áá«ááŒá±á¬áá·áº á¡áá¯ááºááŒá
áºááá·áºáááºá áá® binary ááᯠá
áá¯ááºááŒáá·áºáá¡á±á¬áẠ~/bin/slirp
:
cp slirp ~/bin/slirp
á¡áá¯ááºáááºáá®ážáá°á áááºážááᯠáááºááŸá¬ážáá«áá
ááœááºáááºááᯠConfiguration
ááá¯áá»áœááºá¯ááºááá¯á·áá§áá·áºááẠ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
ááááá¯á¶áž configuration commands ááŸá
áºáᯠ/proc
О /sys
á¡áá¯ááºá¡ááœááºááá¯á¡ááºáá±á¬ ifconfig
Slirp ááŸáá·áº áááºááœááºáááºá¡ááœáẠááœááºáááºááŒá¬ážáá¶á¡á¬áž áááºááŸááºáá±ážáááºá á¡áááºážá¡ááœá²á· route
Slirp á¥áááºááá¯ááºáá±á«ááºážááŸáááá·áº áááºážááŒá±á¬ááºážá¡á¬ážáá¯á¶ážááᯠááá¯á·áá±á¬ááºááẠkernel áááºážááŒá±á¬ááºážááŒááá¬ážááᯠáááºááŸááºáááºá áá«ááᯠ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
/ #
áááºááŸá¬ážáááºááŸá¬á kernel ááẠnetwork card driver ááŸáá·áº áááºááœááºááááá«á ááá¯ááºážáá²ááᯠkernel ááœáẠá á¯á ááºážááẠááŒáá¯ážáááºážááŸá¯ááŸá¬ áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá á¡ááŒá±á¡áá±ááᯠáááŒá±ááŸááºážááá¯ááºáá²á·áá«á áá¯ááºáá±ááá·áºá¡áá»áááºááœááºá á€ááœá²á·á ááºážáá¯á¶ááœáẠá¡ááŒá±ááᯠááŸá¬áááœá±á·áá«á ááá¯ááá¯ááá¯ážááŸááºážáá±á¬ configs (á¥ááá¬á Virtualbox ááœááº) á¡ááºáá¬áá±á·á áºááẠááŸááºáááºá áœá¬áááºáá¬áááºá
á¡á±á¬ááºáá« shell script ááŒáá·áº ááŒááºááœáŸááºážááŒááºážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºááŒáá«á áá¯á·á
#!/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 command line ááᯠá¡ááŒá±á¬ááºážá¡áá²áá¯ááºáá«áááºá
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 ááá¯ááº
áá«ááœá±á¡á¬ážáá¯á¶ážááᯠá
á
áºáá±ážááᬠááœááºáá°á
á±ááá¯á·á¡ááœáẠáá»áœááºáá±á¬áº á
á¯áá±á¬ááºážáá¬ážáá«áááºá
á€ááá¯á·á
áºááẠá§áá·áºááẠkernel ááᯠáááºááá¯á·ááŒá¯á
á¯áá»áá¯ážáá±á¬ááºááááºááᯠáá¬ážáááºááá¯ááºá
á±ááẠáá°áá®áá±ážáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá áááºážááẠááá
á¹áá¬áá
áºáá»áá¯ážáá»áá¯ážááŒá
áºáá¬áá±á¬áºáááºáž á€áááá¬ážá
á¯á áá±ááºáá®áááºáááºááŸá¯á
áá
áºáá¬ážááŸááºážáá»á¬ážá¡á±á¬ááºááœáẠLinux ááœáẠá¡áá¯á¶ážááŒá¯áá°áá¯ááºááᯠáááºáá±á¬ááºááŒááºážá ááá·áºááœááºážááŒááºážááŸáá·áº ááŒááºáááºááŒááºážááá¯ááºáᬠááŒáá·áºá
á¯á¶áá±á¬áááºážááœáŸááºáá»ááºáá
áºáá¯á¡ááŒá
Ạáá¯ááºáá±áá²á·ááŒááºážááŒá
áºáááºá áá±á¬ááºá¡ááá·áºáá»á¬ážááœáẠá§áá·áºáááºá
áá
áºá¡ááœááºáž ááŸáááŒá®ážáá¬áž áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááŒá¬ážáá±á¬á·ááºáá²áá»á¬ážááᯠááá·áºááœááºážááá·áºáááºá Docker ááœááºááááºáá¬áá¯á¶áá»á¬ážááẠáá°ááááŸááºááŒá¬ážáá¯ááºááŒááºáá¬ážáá±á¬ tarball áá»á¬ážáá¬ááŒá
áºáá±á¬ááŒá±á¬áá·áºá áááºááẠáá¯á¶ááŸáááá·áº áá¯ááºáá°ááá¯ááºááá·áºáááºá docker export
ááŒá®ážáá±á¬áẠá§áá·áºááẠkernel á ááá¯ááºá
áá
áºá á¡ááŒá
áºááœáẠáááºážá ááá·áºááœááºážááŸá¯áááºážááŒá±á¬ááºážááᯠáá¯á¶ážááŒááºáá«á áá±á¬ááºážááŒá®á ááá¯á·áá±á¬áẠshell script ááᯠexecute á
Freenode ááŸá #lobsters á០Rkeene á¡á¬áž á¡áá°ážáá»á±ážáá°ážáááºááŸááá«áááºá áá°á·á¡áá°á¡áá®áá²á· Slirp ááᯠá¡ááŸá¬ážááŸá¬ááá¯ááºáá²á áá«áá®áá±á¬ááºá¡áá ááá±á¬ááºááá¯ááºáá±ážáá°ážá áá°á Slackware á
áá
áºááẠslirp ááŒáá·áº áááºááá¯á·á¡áá¯ááºáá¯ááºáááºááᯠáá»áœááºá¯ááºááááá«á ááá¯á·áá±á¬áº áá»áœááºá¯ááºá Ubuntu ááŸáá·áº Alpine á
áá
áºáá»á¬ážááẠslirp ááᯠáááºááá¶áá² binary Rkeene á០áá»áœááºá¯ááºá¡á¬áž á¡ááŒá¶ááŒá¯áá«áááºá áá«áá±ááá·áº áá«á·á¡ááœáẠá¡áááºážáá¯á¶ážáá±á¬á· áá
áºáá¯áá¯áá±á¬á· á¡áááºááŒá±ááá¯ááºáá±á¬ááºáááºá
source: www.habr.com