루트가 아닌 가상 머신을 설치 하시겠습니까?


15

루트가 아닌 사용자로 가상 머신 소프트웨어를 설치하고 실행할 수 있습니까?

루트 액세스없이 어떤 VM을 설치할 수 있습니까?

가능하지 않은 경우 몇 개의 VM을 실행하는 Windows xp sp3에 사용할 가장 가벼운 가상 머신은 무엇입니까?

답변:


5

실제 가상화에는 CPU에 대한 저수준 액세스가 필요하므로 루트가 설치해야합니다. 일단 설치되면 루트가 아니어도 실행할 수 있습니다. 에뮬레이터를 보치와 같은 비 루트 또는 와인과 같은 어댑터로 설치하고 실행할 수 있습니다. 특정 Windows 앱을 염두에두고 있으면 와인 아래에서 실행할 수 있습니다.


가능하지만 응용 프로그램을 모노로 변환하여 응용 프로그램을 작동 시키려면 모노로 변환하도록 요청해야 할 것입니다. 2 개의 매우 작은 메모리 사용량 앱으로 간단한 실행 창 XP SP3에 가장 가벼운 VM이 무엇인지 알고 있습니까?
Prix

아마도 가장 좋은 방법은 VMware 플레이어 일입니다 . VMware에서 무료입니다.
Keith

11

들어 KVM , 장치에 액세스 할 수 있어야합니다 /dev/kvm. 사용자가이 장치를 읽고 쓸 수 있으면 사용자로 KVM 기반 가상 머신을 실행할 수 있습니다.

대부분의 배포에서 kvm그룹 구성원은 이 장치에 액세스 할 수 있으므로 사용자를 kvm그룹에 추가하기 만하면됩니다 .

대부분의 다른 가속화 된 기술의 경우 커널 모듈을로드해야합니다 (virtualbox 및 VMWare 포함). 이를 위해서는 루트 수준의 액세스가 거의 필요합니다.

가속되지 않은 가상화 기술을 모든 사용자로 실행할 수 있습니다. 예를 들어, 비가 속 모드의 qemu 입니다. 가속화 된 가상화에 비해 속도가 매우 느릴 것입니다.


비 가속 정보가 유용했다 thaks)
그랑프리

7

사용자 모드 Linux 는 루트 권한이 없어도 사용자 공간에서 완전히 실행되는 Linux 가상화 솔루션입니다.

그러나 Linux 호스트 내에서만 Linux 게스트를 실행할 수 있으므로 다른 것을 실행하려는 경우 적합하지 않습니다.


4

가상 머신은 효율적으로 프로세서 (및 기타 하드웨어)에 대한 저수준 액세스가 필요합니다. 따라서 루트가 아닌 것으로 설치할 수있는 성능이 우수한 VM 소프트웨어가 표시되지 않습니다.

경량 가상 머신의 경우 필요한 기능 만 포함하면 가벼움이 달성됩니다. 여기에는 실행될 OS에 대한 지식이 필요하므로 오픈 소스 경량 VM ( Plex86 , LilyVM )은 오픈 소스 운영 체제 만 지원합니다. 이 논리에 따르면 Microsoft Virtual PC가 VirtualBox / VMWare / etc보다 더 가벼울 수 있습니다. 그러나 나는 정말로 모른다. VirtualBox는 오픈 소스로 제공되며 매우 유용하며 항상 내 목적에 충분했습니다 (그러나 나는 다른 것을 시도했습니다).


2

Virtualbox 4.0.8은 루트 외부로 설치해야하지만 나중에 사용자가 VM을 소유하도록 할 수 있습니다. 당신은 단지 그룹의 회원이어야합니다vboxusers

usermod -G vboxusers USERNAME

이 링크 , 멋진 기사를 쉘에서 직접 헤드리스로 실행하는 방법을 살펴보십시오 . 또한 RDP 프로토콜을 지원한다는 사실을 알고 있으므로 rdesktop연결 하는 데 사용할 수 있습니다.


2

QEmu는 그렇게 할 수 있습니다. 나는 여러 번 해냈다. 하지만 성능이 좋지는 않습니다.


2

1) 세 줄 답변

사전 빌드 된 이미지 / 컴파일 된 qemu 버전을 사용하려면 여기 에서 다운로드 한 후 압축을 해제하십시오.

tar -xvzf qemu_packed.tar.gz

여기 에서 내 데비안 8 이미지 (1.6G)를 다운로드 할 수도 있습니다 .

tar -xvzf test01.qcow2.tar.gz

그리고 마지막으로 실행

./command.sh

호스트 모드에서 포트 22222의 ssh 포트가 열려있는 텍스트 모드에서 작동중인 Debian 8이 있어야합니다. "root"사용자와 "root"비밀번호를 사용하여 로그인 할 수 있습니다.

2) 더 긴 답변, 직접 이미지를 만드십시오

QEMU는 실제로 루트 액세스 권한이없는 서버에 자체 Linux 이미지를 설치할 수있는 솔루션입니다. 그것은 매우 유용합니다. 예를 들어 기본 사용자 비밀번호를 밝히지 않고 교육 목적으로 역 ssh를 수행하는 데 사용합니다. 그러나 실제로는 루트 계정이없는 실제 가상화에 KVM을 사용할 수 없기 때문에 에뮬레이션 만 수행 할 수 있으며 이는 매우 비효율적 일 수 있습니다 (그러나 명령 행 작업의 경우 실제로 오버 헤드를 보지 못했습니다).

2.1) 팩 qemu

다음은 진행 방법에 대한 설명입니다. 첫 번째 단계는 qemu를 "휴대용"으로 만드는 것입니다. 즉 루트 액세스 권한이없는 서버에서 사용할 수 있습니다. 이를 위해 몇 가지 방법이 있으므로 원하는 방법을 선택할 수 있도록 제시 할 것입니다.

2.1.a) 방법 1 : 사용 가능한 .deb 다운로드

이 솔루션은 실제로 빠르게 적용 할 수 있습니다 (기본적으로 1 명령으로 작동하면). 스크립트가 버그가 있거나 일부 lib를 잊어 버릴 수 있기 때문에 모든 바이너리를 수동으로 다운로드하는 데 시간이 오래 걸릴 수 있습니다 ... 이 방법의 다른 장점은 서버에서 직접 루트가 아닌 모드로 실행할 수 있다는 것입니다. 여기서 qemu 바이너리를 얻는 아이디어는 apt 또는 .deb를 호스팅하는 온라인 웹 사이트에서 .deb / .rpm 파일을 가져 와서 추출하고 라이브러리 종속성을 사용하여 라이브러리 종속성을 확인하고 ldd모든 .deb종속성을 다운로드하는 것 입니다. .so파일 을 추출하기 위해 컴퓨터에 아직 없습니다 . 꽤 길고 반복적 일 수 있기 때문에 작은 스크립트를 만들었지 만 용감한 경우 수동으로 모든 작업을 수행 할 수 있습니다. 시간이 걸립니다. 사용하려면이 스크립트를 파일로 저장하십시오create_qemu_binaries.sh:

#!/usr/bin/env bash
mkdir qemu_extract
cd qemu_extract
echo "########## Downloading qemu... ##########"
apt-get download qemu-system-x86
echo "########## Extracting qemu... ##########"
dpkg -x qemu-system-*.deb .
mkdir -p qemu_packed/lib
cp usr/bin/qemu-system-x86_64 qemu_packed
echo "########## Copy libs... ##########"
ldd usr/bin/qemu-system-x86_64 | grep "=>" | grep -v "not found" | awk '{print "cp "$3" qemu_packed/lib/"}' | bash
mkdir not_found
cd not_found
echo "########## Get not found libs... ##########"
ldd ../usr/bin/qemu-system-x86_64 | grep "not found" | awk '{print $1}' > not_found.txt
echo "########## Download not found libs... ##########"
for lib in $(cat not_found.txt); do echo "=== Dealing with $lib ==="; apt-file search --regexp "/${lib}\$" | sed 's/:.*//' | xargs apt-get download; done
echo "########## Extracting not found libs... ##########"
ls *.deb | xargs -I{} dpkg -x "{}" .
echo "########## Copying not found libs... ##########"
find . | grep ".so" | xargs -I{} cp "{}" ../qemu_packed/lib
cd ..
echo "########## Getting pc-bios... ##########"
git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
echo "########## Finished !!! ##########"
echo "The output file should be in the folder qemu_extract/qemu_packed."
echo "Once you have a filesystem image, you can run it using:"
echo "$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none -display curses -k fr -redir tcp:22222::22"
echo "Don't forget to replace <your image>"

다음을 사용하여 실행하십시오.

chmod +x create_qemu_binaries.sh 
./create_qemu_binaries.sh 

마지막에는 ./qemu_extract/qemu_packed/하나의 파일 qemu-system-x86_64(주 바이너리), 하나의 폴더 lib(와 함께 가져와야하는 라이브러리 qemu) 및 하나의 폴더 ( 실행 해야하는 pc-bios파일 세트)에 qemu있어야합니다. 그런 다음 다음 qemu을 사용하여 실행할 수 있습니다 (파일 시스템 이미지로 바꾸는 것을 잊지 마십시오).

$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none -redir tcp:22222::22

즐겨 ! (스크립트가 작동하지 않으면 주저하지 말고 주저하지 말고 두 대의 컴퓨터에서만 테스트 redir했으며 호스트와 추측 사이에 ssh 전달이 필요하지 않은 경우 자유롭게 제거하십시오 )

2.1.b) 방법 2 : 루트 액세스 권한이있는 컴퓨터에 액세스하는 경우

첫 번째 방법은 루트 액세스 (또는 qemu설치) 된 컴퓨터가 필요합니다 . 먼저 qemu다음과 같은 것을 사용하여 설치하십시오.

sudo apt install qemu-system-x86

qemu의 절대 경로를 찾으십시오.

$ which qemu-system-x86_64 
/usr/bin/qemu-system-x86_64

그런 다음 폴더를 만들어 넣습니다.

mkdir -p qemu_packed/lib
cd qemu_packed
cp /usr/bin/qemu-system-x86_64 qemu_packed

qemu와 연결된 라이브러리 목록을 가져옵니다.

ldd qemu_packed/qemu-system-x86_64 | awk '{print "cp "$3" qemu_packed/lib"}' | bash

이제 qemu가 BIOS를 사용해야합니다. 파일은 시스템에서 사용할 수 있지만 파일이 다른 폴더에있는 이유를 모르겠으므로 소스에서 가져 오는 것이 더 쉽다고 생각합니다.

git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
cd qemu_packed

이제 작동합니다. 루트가 아닌 머신에서 이러한 파일을 복사 qemu하고 다음 줄을 사용하여 실행 하면됩니다 (이미지를 바꾸는 것을 잊지 마십시오).

$ LD_LIBRARY_PATH=$(pwd)/lib ./qemu-system-x86_64 -L pc-bios -no-kvm -m 256 -drive if=virtio,file=<your image>.qcow2,cache=none

2.1.c) 방법 3 : 출처

소스를 컴파일 할 수도 있지만 모든 라이브러리가 설치되어 있지 않으면 루팅 된 컴퓨터를 사용하여 qemu를 컴파일하지 않는 것이 까다로울 수 있습니다. 그러나 위의 두 가지 방법이 효과가 없다면 조금 더 안정적이라고 생각합니다. 그런 다음 일단 컴파일되면 실행 파일을 가져오고 위와 동일한 트릭을 수행하여 라이브러리를 사용하여 ldd(모든 라이브러리가 이미 컴퓨터에 있어야 함) pc-bios 파일을 가져옵니다. 그리고 다시 같은 명령으로 실행하십시오.

2.3) 나만의 이미지 만들기

사전 작성된 파일 시스템 이미지를 사용하지 않으려면 위의 명령을 사용하여 수많은 자습서 를 따르십시오 qemu/qemu-system-x86_64! 주의 : qemu-img루트가 아닌 이미지를 만드는 데 사용 하려면 위와 동일한 프로세스를 따르십시오!

즐겨 !

NB : GUI가없는 서버에서 curses 디스플레이를 사용하려면 이미지에서 부트 옵션에 라인을 추가하여 프레임 버퍼가 켜지지 않도록해야합니다 /etc/default/grub.

GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nofb nomodeset bochs_drm.fbdev=off"

(가장 중요한 것은 마지막입니다. 필요한지 확실하지 않습니다). 만큼 잘

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text

따라서 grub은 텍스트 모드를 유지합니다. 충분하지 않은 경우 systemd에서 텍스트 모드를 활성화 할 수도 있습니다.


1
저에게 -1을 넣어주세요, 왜 그런지 설명해 주시겠습니까?
tobiasBora

잘 모르겠지만 이것은 훌륭합니다. 감사합니다.
wbkang
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.