ααΆαααααΆαααΈα’αααααααααα αααααΆααααΉαααααααΆααααααααααΆαα
αΌααα
αααα»αααΈαα·αααααααΎαααΌααα»αααΆα
αααΎααααααα ααΆα’αΆα
αα½αα±ααα
αΆααα’αΆαααααα αα·αααΆααααααααααααα»αααΆαααααααααααΆααΎαα
αα
αααα·ααααΆα’αααΈαααααΆααΆαα
αΆααααααΎαααααα αα½αααΆααααα’αΆα
ααααΎααααΆααααΆααααΆαααΆαααΆαααααααααααα αΌααααααααααααααααα ααα»αααααα·αααααααααααααΆα
αα
αΆααα·ααΈααΆααααααααααααα (α¬ααΉαααΆααΎαα½ααααα·αααααΌαααΆαααα
αΆααααΆααααα»αα’αα‘α»ααααααααΆαα’αα·αααααααααΆαααΆαααα αααααααα½ααααα)α αα
αα
αααα·ααααΆαα½αααααααααΊ User Mode Linux α α’ααααα·αααααααααααααΎαααΆαααααΎααΆαααΈααααΆαααΆα
αααΎα αααααααΎαααΆααΎααΆααα·ααααααα
αΆαααα½αααΆαα
ααααααΎαααΆα α αΎαααααα·αααΆααααααΎαααΆα α αΎαααΆαααααα
αΌαααααΆααΌαα’αααΈαα½αααΌα
ααΆααΆαααααΆαααΆααα αΆα α α’αααΈααααααααΎα±αααααα½αα’αααααααΆαααΆ UML homebrew αααα»α 2k19 α α αΎαααΆα ααΎαααΆαα’ααααΎαα’ααααα·αααααααααααΆαααΎααα
Habr
ααααα’αααααααΎααααΆαααα
αααα»αααΈαα»α
ααΆααα·αααΊααΆα
αααααααΊαααααΈαα»α
αα
αααα½αααΆααααΆααα αααααααα’αα»ααααΆαα±ααα’αααααααΎαααΆαααΊαααααΈαα»α
ααααααααΆααααΎαααΆαα’αααααααΎααααΆαα α αΎαααΆααΌαα
ααααΌαααΆαααααΎααααΆαααααα’αααα’αα·ααααααααΎααααΈααΆααααααααααα·ααΈαααααΆα ααα»ααααβααααβαααβααβααΆαβααααααααβααΆβα§αααααβα―ααβααΌαα
βααααα αααβαααααΆαααβααααααβααΉαβααααα·ααααα·ααΆαβααααβαααΆαααΈαβαα·αααα·αα ααααααααααααααΌαααΆαα―ααα
αααΎαααΆα Docker ααα»αααααα·α
ααΆααααΆαααΈααα·αααα·αααααααααΌα
ααΆ KVM α¬ Virtual Box α
ααΆααΌαα
User Mode α’αΆα
α αΆααααΌα
ααΆα§αααααα
ααααα αα·ααα·ααΆαααααΎ ααα»ααααααΆαα
ααααΆαααΆαααααΎααααΆααααααααΆα αααΆαααΆαα·α αααααΊααΆααΊαααααΈαα»α
αααααααααααααΎαααΆαααΈα’αααααααΎααααΆαααααααααΆααα·αααα·α αααααααα·ααααααα’αα»ααααΆαα±ααααΌαααααα·ααα½αα±αααα»αα
α·αααα’αΆα
ααααΎαααΆααααααααΆαααΆαααααΆαααα ααααααααΆαααΈαααα α αΎαα
αΆααααΆααααΈαααααΊααΆααΊααααααααα ααααΎαααΆαααααααΆααααΌαααΆαααΆα
ααααα‘ααααΈαααΆαααΈααααΆαααΈα αααααΊ ααααΎαααΆαααααααα»αααααΎαααΆααα
αααα»αααααα’αααααααΎααααΆααααΉααα·αα’αΆα
ααΎαααΎαααααααΆαααΈαααα. ααααα·αααΌα
αα»αααΊααα 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ββ¬β5*[linux]
ββslirp
αα αααααααΎααΆαααΆαα½α Docker containers αααα»αα’αΆα ααΎαααΎαααΈ host αααααααααΎαααΆαααααααα»αααααΎαααΆααα αααα»ααααααα ααΆαα½αααΉαααααα’αααααααΎααααΆααααΈαα»α ααΆαα·αα’αΆα αα αα½α ααα ααΎβααΆβααΆααααβαααΆαβααΌα ααααα ? αααααΆααααααΆα§ααααααααα½ααα·αα·ααααααααααΎαααΆαααΆαααααααααααααααααααααααααααΈαα»α αα·αααΎα ααααΎαααΆαααααΎαααΆααα αααα»ααααααααααααααα ααα»αααααα αααα»αααααΆαααΆααααα αααααααα·ααααααα’αΆα ααααΆαααΆααΆααα»αααΈαα
ααΆααΌαα αααααΆαααΆααααΌαααΆααααααααΊααΆααΆααααααΌααααα»αααααΆαααααΆαααααΆα αα·αααΆαααααΆααΆααααΆαααααΆαααΎααααΈαααααα ααΆααααααααααα ααααΆαα ααΎααααΈααααΎααΌα ααααααΆα αααα»αααααΌαααααΎα§ααααααα»ααΆααααααα α’αΆααααααααΊααα ααααΎααΆαααααα α»ααααααΉαααα’ααααααΆααααααΌααααααααααααα»αααααααααααα»ααα ααααα ααααα·ααααΆ α αΎααααααΆααααααΎ Heroku αααααΎααααααααΎαααααααααααααΈααα·αααααΎααααΈαααααααα§αααααααααααα»αααααΌαααΆαα . ααΆαααΆαααΆααα’αααααααΆαα±αααα»αααα ααΎ IRC αααααααα»αα α αααα»αααΆαααααααα αααα»ααααααΉαααΆααΆααααα ααααααααααΎααΆα―αααΆααααα’αΆα αα»αα α·αααααΆααααααΆααααααΆααααΆααααΎααααΈααΆαααααααΏαααΌα ααααΆααΆαα½αααΉαααΊαααααααΈ αα·αααααααααααααααααα·ααααα·ααΆαα
ααΆααααααααΌα
ααΆαααα‘αΎαααααα’αααααααΎααααΆααααΈαα»α ααΊααααΎα‘αΎααααα»αααα αΆαααΆα αααΎαα
- ααΆαααα‘αΎαααΆαα’αΆααααααα ααΎαααΆαααΈα;
- ααΆαααααΊαααααΈαα»α ;
- ααΆαααααααα ααΆααααααααααΊααα;
- ααΆααααααΌααααα»αααΊααα;
- ααΆαααα‘αΎααααααααααααααΈα;
- ααααααα ααΆααααααααααααααααα―αααΆαααααα;
- ααΆαααααΎαααΎααααΆαααΆααααααα αΆααααααΎαααΊααα;
- αααααΎααααααΆαααααα;
- α αΆααααααΎαααΊααααααααα
αααα»αααααααααΆ ααααα·αααΎα’ααααααααα α α·αααααααΎααΆααααααα½αα―α α’αααααααααΆααΉαααααΎα’αααΈααααααααΆααααααΆααα·αααααΆαα αααα»ααααααααα Ubuntu α¬ Debian αα½αα ααα½αα αααα»αααΆαααααΆααΆαα’αα»ααααααΆααα’ααααΆαααΎαα αααα»αααΆαα ααα αΆαααααααα»αα αΌαα α·ααα - Alpine ααα»ααααααααΆαα’αααΈααΎαα‘αΎααα ααΆααααααααααααΆαααααΊαααααΈαα»α ααΆα 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)
α
αααΆαααΆααααΎαααΆααααααα·ααΈααα‘αΎααααΊαα»αααΊαααααΈαα»α
ααΉαααΆαααΆαααΆαααα‘αΎα libncurses-dev
. ααΌαααααΆααααΆααΆααααΌαααΆαααα‘αΎααααααααΎααΆααααααααΆααΆαααααα (ααΆ root α¬ααΆαα½α sudo)α
apt-get -y install libncurses-dev
ααΆαααΆαααααΊααα
αααααα α α·ααααααααααααααααΌαααΆααα α αΎααααααΆαααααααααΎαααΊαααα αααααΆααααααα·ααααα·ααΆαααα α’αααααΉαααααΌααααα ααααα αααΆαααΉααααα αα 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
ααΆαααα‘αΎαααΊααα
αααααααααααααΎαααΊαααααΊααΆαααα»α
make ARCH=um menuconfig
ααΆααΉααααααΎα αα·ααααα αΆααααα’αααα½αααααααααααΆααα’αααα αααααΆβ '[Select]
', α’αααααΉαα’αΆα
ααααααα
ααΆαααααααααααααααΎααααΆααα
α»α
Space α¬ 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 build α
αααααΆααααΈααααααα ααΊαααααααααΎαααΉαααααΌαααΆαα
αααααααΆα―αααΆααααα’αΆα
ααααα·ααααα·ααΆαα ./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
αααααααΆααααααΆααα·αααααΆααΉααααααΎαααααΌααααααααα―αααΆαααΌα αα½αα αααααΆααααααααααααααααααα ααΆααΉααα·ααΆαααααΆαααααα»αααΆαααα‘αΎααααα ααααΆαααααααααα·ααΈααααααααα apk Alpineα ααα»αααα FS αααααΉααααααααααΆααααΎααααΈααΆαααααααααα·αααΌαα α
ααΎαααααααΌαααΆαα§ααααααααααα
wget -O tini https://github.com/krallin/tini/releases/download/v0.18.0/tini-static
chmod +x tini
ααΆααααααΎααααααΆααααΆααααααααΆααΊαααα
ααΊαααααΈαα»α
ααΌα
αααααα·ααΈααααααααααΆαα
αααΎαααΆαα’αΆαα»ααααααααααΆααααΆααααααααΆαααα’αΆα
α
αΌαααααΎααΆαααααααααΆαααα --help
.
αααα½αααΆαα - αα½α
linux --help
User Mode Linux v5.1.16
available at http://user-mode-linux.sourceforge.net/
--showconfig
Prints the config file that this UML binary was generated from.
iomem=<name>,<file>
Configure <file> as an IO memory region named <name>.
mem=<Amount of desired ram>
This controls how much "physical" memory the kernel allocates
for the system. The size is specified as a number followed by
one of 'k', 'K', 'm', 'M', which have the obvious meanings.
This is not related to the amount of memory in the host. It can
be more, and the excess, if it's ever used, will just be swapped out.
Example: mem=64M
--help
Prints this message.
debug
this flag is not needed to run gdb on UML in skas mode
root=<file containing the root fs>
This is actually used by the generic kernel in exactly the same
way as in any other kernel. If you configure a number of block
devices and want to boot off something other than ubd0, you
would use something like:
root=/dev/ubd5
--version
Prints the version number of the kernel.
umid=<name>
This is used to assign a unique identity to this UML machine and
is used for naming the pid file and management console socket.
con[0-9]*=<channel description>
Attach a console or serial line to a host channel. See
http://user-mode-linux.sourceforge.net/old/input.html for a complete
description of this switch.
eth[0-9]+=<transport>,<options>
Configure a network device.
aio=2.4
This is used to force UML to use 2.4-style AIO even when 2.6 AIO is
available. 2.4 AIO is a single thread that handles one request at a
time, synchronously. 2.6 AIO is a thread which uses the 2.6 AIO
interface to handle an arbitrary number of pending requests. 2.6 AIO
is not available in tt mode, on 2.4 hosts, or when UML is built with
/usr/include/linux/aio_abi.h not available. Many distributions don't
include aio_abi.h, so you will need to copy it from a kernel tree to
your /usr/include/linux in order to build an AIO-capable UML
nosysemu
Turns off syscall emulation patch for ptrace (SYSEMU).
SYSEMU is a performance-patch introduced by Laurent Vivier. It changes
behaviour of ptrace() and helps reduce host context switch rates.
To make it work, you need a kernel patch for your host, too.
See http://perso.wanadoo.fr/laurent.vivier/UML/ for further
information.
uml_dir=<directory>
The location to place the pid and umid files.
quiet
Turns off information messages during boot.
hostfs=<root dir>,<flags>,...
This is used to set hostfs parameters. The root directory argument
is used to confine all hostfs mounts to within the specified directory
tree on the host. If this isn't specified, then a user inside UML can
mount anything on the host that's accessible to the user that's running
it.
The only flag currently supported is 'append', which specifies that all
files opened by hostfs will be opened in append mode.
ααααααααααααα ααΌααααΆαααΆααααααα αααααααΆαααΎαααααΎαααΆαα α αΌαααααΎαααΆαααΊαααααΆαα½αααΉααααα»ααααααΎαα’αααααααΆαααααααΌαααΆαα
linux
root=/dev/root
rootfstype=hostfs
rootflags=$HOME/prefix/uml-demo
rw
mem=64M
init=/bin/sh
αααααΆααααΆαααΎααααΆααααΊαααααααααΎαααΌα ααΆααααααα
- ααααααααΆααααααααα―αααΆα root ααΊααΆα§ααααααααααααααΆα
/dev/root
. - ααααΎαααΎα
hostfs ααΆαααααα·ααΈαααααΆααααααααα―αααΆα root α - ααα‘αΎαααααααααα―αααΆαααααααααααΎαααΆααααααΎααα ααΎα§αααααα«αα
- α αΎαααΆα αααα»αααααα’αΆα-αααααα
- ααααΎαα 64 MB αα 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
αααααΆαα’ααααΆαααααααα
ααΆαααα‘αΎααααααΆαααααα
α αΎααααααΊααΆαααααααααα’αααΈαα αΆααααααΎααα»αα αααααΆααα αααα»αααααα’αααααααΎααΈαα»α ααΊααΆααααααααααααα·αααΆααααΌααα "ααααα’αααααααΎααααΆαα" ααΆααααααα αΆααααααΎαααΆα αααΈααααΆα αααΆαααΆαα·αααΆααααααΆαα ααααα·ααααααααααααααΆαααααΌαααΆαααααα α―ααα·αααα· ααααααααα·ααααα·αααααΆααααΎαααΆααα’ααααααΆ α ααα»αααααα’αΆα αααααΆαα
α
αααΆαα per .: α’αααα’αΆα
α’αΆαααααααα’αααΈαααααΎααααααααααααΆααααααΎααΆαααΆαα½ααααααΆααααα»α UML
ααααΎααα ααΆαα Slirp
ααααααΆαααΆααααα ααΆαα§ααααααα»ααΆα αα·αααααΎααααα·αα’αΆα
ααΆααααααΆαα α
ααΆ
ααΌα ααααααΌαααΆααα 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.
ααα α»αααΆααααα
αααα»ααααα½αααΎα
(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 ααααΌαααΆααααααΎαα‘αΎαααΈααααααααααΎαααΆααααα¬ααα αααα»αααΆαααΆαααααααααΆαα‘αΎααα·ααααααααΆααααΈααα ααααα
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 uml.tar.gz
α αΎαααΆαααααΎαααΌα
ααΆααααααα
total 6136
-rwxr-xr-x 1 cadey cadey 79744 Dec 10 2017 ifconfig*
-rwxr-xr-x 1 cadey cadey 373 Dec 13 2017 init*
-rwxr-xr-x 1 cadey cadey 149688 Dec 10 2017 insmod*
-rwxr-xr-x 1 cadey cadey 66600 Dec 10 2017 route*
-rwxr-xr-x 1 cadey cadey 181056 Jun 26 2015 slirp*
-rwxr-xr-x 1 cadey cadey 5786592 Dec 15 2017 uml*
-rwxr-xr-x 1 cadey cadey 211 Dec 13 2017 uml_run*
αααααΊααΆαααααααααααααΈααααα Slirp! ααΎααΆααααααΎααΆααα?
./slirp
Slirp v1.0.17 (BETA) FULL_BOLT
Copyright (c) 1995,1996 Danny Gasparovski and others.
All rights reserved.
This program is copyrighted, free software.
Please read the file COPYRIGHT that came with the Slirp
package for the terms and conditions of the copyright.
IP address of Slirp host: 127.0.0.1
IP address of your DNS(s): 1.1.1.1, 10.77.0.7
Your address is 10.0.2.15
(or anything else you want)
Type five zeroes (0) to exit.
[autodetect SLIP/CSLIP, MTU 1500, MRU 1500]
SLiRP Ready ...
αα·αααΆαα - ααΌα
ααααααΆαα½αααααααΎαααΆα! α
αΌαααΎαααΆααααααααααααααΈααααα ~/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
ααααααααα
ααα»α
αααααΆαααααααΆαααΎααααΈααααΆααααααααΆαα½α Slirp α αααα»α route
αααααααΆααΆααααααααααΌαααααααΊααα ααΎααααΈαααααα±ααα
ααΆα
αααΆααα’ααααααΌαααΆααααααΌαααΆααααααααΌαααΌααααααααΈ Slirp α ααααα·αα·αααααΎαααΆααΆαα½αααΉααααα½α DNSα
nslookup google.com 8.8.8.8
Server: 8.8.8.8
Address 1: 8.8.8.8 dns.google
Name: google.com
Address 1: 172.217.12.206 lga25s63-in-f14.1e100.net
Address 2: 2607:f8b0:4006:81b::200e lga25s63-in-x0e.1e100.net
Π Π°Π±ΠΎΡΠ°Π΅Ρ!
α αααΆααααααΆαα .: ααΆααααααα ααΆααααα ααααΎαααααΌαααΆαααααααα ααΎαα»αααααΌααααααααΆαααΆααααααΆααααα α¬ααΆαααααααα ααΆααααααααααααααααααααα·αααααΌαααΆααααααα·ααΈαααααΆααααααα αα ααΎαα»αααααΌααααα½ααααααααΆααααααααα WiFi 8265 ααΈ Intel ααα α»αααΎαα‘αΎααα αααααα‘αΎααααααΆα
/ # ifconfig eth0 10.0.2.14 netmask 255.255.255.240 broadcast 10.0.2.15
slirp_tramp failed - errno = 2
ifconfig: ioctl 0x8914 failed: No such file or directory
/ #
ααΆααααααα ααΊααααα·αα’αΆα ααΆααααααΆαα½ααααααα·ααΈαααααΆααΆααααααΆαααΆαααα ααΆαααα»ααααααΎααααΈα ααααααααααα·ααΈαααααααα αααα»αααΊααα ααΆα’αα»αααα·αααΆααα½ααα»αααααΆαααΆααααααα αα αααααααα»αααααααΆα ααΆαα·αα’αΆα ααααααααααααααααΆααααα»αααΆαααααααα ααΆαααααααααααααΆαααα αα ααΎααΆαααααααα ααΆααααααααααΆααααααΆα (α§ααΆα ααααα αααα»α 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
αααααΆαααΆααααααααΆα!
α―αααΆα docker
ααΎααααΈααααΎα±ααααΆααΆααααααΆααααα½ααααααΆααα’ααααααα»αααΆααααα½ααα·αα·αααααΆααα’ααααα αααα»αααΆααααααΌα
αααα»ααααααΉαααΆααΆααααα αααααααΆααα½αα’αααα±αααααααΈαααααααααΎαααΊααααααααα ααΆααΆαααααααααΆααα
ααΆαα·ααΆα
αα½αα
ααα½α ααα»ααααααΆαααααα»αααααααΆαααααΌαααΆααααααΎαα‘αΎαααΆααααα»αααααααααααΌααααΌααΆαααααΈααΈααΆααααΆα ααα‘αΎα αα·αααααααα
ααΆαααααααα User Mode αα
αααα»αααΈαα»α
αααααααααααααΎαααααααααααααααα·ααααα·ααΆααααααα½ααΆααααα ααα αΆααααααΆαααα½ααααα½ααααα
αΌαααΆαααα‘αΎαααααΆαααα αα·ααααααα·ααΈαααααααααααααΆαααααΆαααα
αααα»ααααααααααααααα αααααΆαααΌαααΆααα»αααΊααα Docker ααααΆααααααΆααΆαααααααααααΆαααΆααΆααΆααα α’ααααα½αααα’αΆα
ααΆαααααΌαααΆαααΆαααα docker export
α αΎααααααΆαααααααααααααΌαααα‘αΎαααααααΆαα
αααα»α root ααααααααααα―αααΆαααααααΊααααααααα ααΆααΆααααααΎαααΆαα, αααααΆααααααααα·ααααα·ααααααΈααααα
ααΌαα’ααα»αααΆαα·αααα
αααα Rkeene ααΈ #lobsters αα
ααΎ Freenode α ααΎααααΆααααα½αααααααΆαααααα»αααΆαααααΆααααα α»α Slirp αα αααα»ααα·αα’αΆα
ααα½αααΆαααααΆαααα αααα»ααα·αααΉαααΈααααααααααααααα Slackware ααααααΆααααααΎαααΆαααΆαααααΉαααααΌαααΆαα½α slirp ααα»αααααααααααα Ubuntu αα·α Alpine αααααααα»ααα·αααα½ααα slirp α αΎααααααααααααααΈα Rkeene ααΆαααααΎαααααα»αα ααα»ααααααΆαααααααααΆαααααααΆαααααα»α ααααααΆαα αα
ααΆααα’αααΈαα½αααααΎαααΆααααααΆαααααα»αα
ααααα: www.habr.com