Cài đặt máy ảo như không root?


15

Có thể cài đặt bất kỳ phần mềm máy ảo nào với tư cách là người dùng không root và chạy nó không?

Những máy ảo nào có thể được cài đặt mà không cần quyền truy cập root?

Nếu không thể thì máy ảo nào có trọng lượng nhẹ nhất sẽ sử dụng cho một vài máy ảo đang chạy windows xp sp3?

Câu trả lời:


5

Bất kỳ ảo hóa thực sự nào cũng cần truy cập cấp thấp vào CPU, và do đó root phải cài đặt nó. Sau khi cài đặt, bạn không cần phải root để chạy nó. Bạn có thể có thể cài đặt và chạy một trình giả lập không phải là root, chẳng hạn như bochs hoặc bộ chuyển đổi như rượu vang. Nếu bạn có một ứng dụng Windows cụ thể, bạn chỉ có thể chạy nó dưới rượu (có thể).


có thể nhưng tôi sẽ phải yêu cầu một ứng dụng được chuyển đổi thành đơn để nó hoạt động tốt, điều này sẽ gây ra nhiều rắc rối thậm chí không biết liệu họ có thực sự làm điều đó không, cảm ơn vì câu trả lời. Bạn có tình cờ biết được máy ảo nào chạy nhẹ nhất xp sp3 với 2 ứng dụng sử dụng bộ nhớ thực sự nhỏ không?
Giải thưởng

Có lẽ đặt cược tốt nhất của bạn sẽ là người chơi VMware . Nó miễn phí từ VMware.
Keith

11

Đối với KVM , bạn cần truy cập vào thiết bị/dev/kvm . Nếu người dùng của bạn có thể đọc / ghi vào thiết bị này, thì bạn có thể chạy các máy ảo dựa trên KVM với tư cách là người dùng của mình.

Trong hầu hết các bản phân phối, các thành viên của kvmnhóm có quyền truy cập vào thiết bị này, vì vậy tất cả những gì bạn cần làm là thêm người dùng của mình vào kvmnhóm.

Đối với hầu hết các công nghệ được tăng tốc khác, bạn sẽ cần các mô-đun hạt nhân được tải (bao gồm cả hộp ảo và VMWare). Điều này gần như chắc chắn đòi hỏi quyền truy cập cấp gốc.

Bạn có thể chạy các công nghệ ảo hóa không tăng tốc như bất kỳ người dùng nào. Ví dụ, qemu ở chế độ không tăng tốc. Hãy lưu ý rằng nó sẽ rất chậm so với ảo hóa tăng tốc.


thông tin không được tăng tốc là hữu ích;)
Prix

7

Chế độ người dùng Linux là một giải pháp ảo hóa Linux chạy hoàn toàn trong không gian người dùng - không yêu cầu quyền root.

Tuy nhiên, nó chỉ có thể chạy một khách Linux trong máy chủ Linux, vì vậy nó không phù hợp nếu bạn muốn chạy bất cứ thứ gì khác.


4

Một máy ảo cần truy cập khá thấp vào bộ xử lý (và phần cứng khác) để có hiệu quả. Do đó, bạn sẽ không thấy bất kỳ phần mềm VM hoạt động tốt nào có thể được cài đặt không root.

Đối với các máy ảo nhẹ, độ sáng đạt được chỉ bằng cách bao gồm các tính năng cần thiết. Điều này đòi hỏi một số kiến ​​thức về HĐH sẽ được chạy và do đó, các máy ảo nhẹ nguồn mở ( Plex86 , LilyVM ) chỉ hỗ trợ các hệ điều hành nguồn mở. Theo logic này, có thể Microsoft Virtual PC nhẹ hơn VirtualBox / VMWare / etc. nhưng tôi thực sự không biết VirtualBox có sẵn trong nguồn mở, khá hữu dụng và luôn đủ cho mục đích của tôi (nhưng tôi đã thử người khác).


2

Virtualbox 4.0.8 cần được cài đặt dưới dạng root, nhưng sau đó bạn có thể cho phép người dùng tạo VM của riêng họ. Bạn chỉ cần là thành viên của nhómvboxusers

usermod -G vboxusers USERNAME

Có một cái nhìn vào liên kết này , bài viết hay làm thế nào để chạy nó không đầu, trực tiếp từ vỏ. Tôi cũng thực sự đào rằng nó hỗ trợ giao thức RDP, nghĩa là bạn chỉ có thể sử dụng rdesktopđể kết nối.


2

QEmu có thể làm điều đó. Tôi đã làm điều đó nhiều lần. Không phải là cực kỳ hiệu quả mặc dù


2

1) Ba dòng trả lời

Để sử dụng hình ảnh dựng sẵn / phiên bản qemu đã biên dịch của tôi, hãy tải xuống từ đây và sau đó giải nén nó:

tar -xvzf qemu_packed.tar.gz

bạn cũng có thể tải xuống hình ảnh debian 8 của tôi (1.6G) từ đây :

tar -xvzf test01.qcow2.tar.gz

và cuối cùng chạy

./command.sh

Bạn nên có một Debian 8 hoạt động, ở chế độ văn bản, với cổng ssh được mở trong máy khách lưu trữ tại cổng 22222. Bạn có thể đăng nhập bằng cách sử dụng "root" của người dùng và mật khẩu "root".

2) Câu trả lời dài hơn, hãy tự tạo những hình ảnh này

QEMU thực sự là một giải pháp cho phép tôi cài đặt hình ảnh linux của riêng mình trên một máy chủ mà tôi không có quyền truy cập root. Nó rất hữu ích, tôi sử dụng nó để làm ssh ngược mà không tiết lộ mật khẩu người dùng chính của tôi, hoặc cho mục đích giáo dục. Nhưng thực tế, vì bạn không thể sử dụng KVM cho ảo hóa thực sự mà không có tài khoản root, bạn sẽ chỉ có thể thực hiện mô phỏng, điều này có thể khá kém hiệu quả (nhưng đối với các hoạt động dòng lệnh, tôi không bao giờ thực sự thấy chi phí hoạt động).

2.1) Gói qemu

Dưới đây là mô tả về cách tôi tiến hành. Bước đầu tiên là làm cho qemu "di động", tức là có thể sử dụng được trên máy chủ không có quyền truy cập root. Để làm như vậy bạn có một số phương pháp, tôi sẽ cố gắng trình bày chúng để bạn có thể chọn phương pháp bạn thích.

2.1.a) Cách 1: tải xuống .deb có sẵn

Giải pháp này có thể thực sự nhanh chóng để áp dụng (về cơ bản nếu nó hoạt động, trong 1 lệnh bạn nhận được), nhưng vì tập lệnh của tôi có thể bị lỗi / có thể quên một số lib, nên có thể khá lâu để tải xuống tất cả các nhị phân ... lợi thế khác của phương pháp này là bạn có thể chạy nó ở chế độ không root, trực tiếp trên máy chủ. Ý tưởng để có các tệp nhị phân qemu ở đây là lấy tệp .deb / .rpm (từ apt hoặc từ các trang web trực tuyến lưu trữ .deb), giải nén nó, kiểm tra các phụ thuộc thư viện bằng cách sử dụng lddvà tải xuống tất cả :.deb các phụ thuộc chưa có trên máy tính để giải nén chúng (các .sotập tin). Bởi vì nó có thể khá dài và lặp đi lặp lại, tôi đã tạo ra một kịch bản nhỏ, nhưng nếu bạn dũng cảm, bạn có thể làm tất cả những thứ đó một cách thủ công ... Nó chỉ mất thời gian. Để sử dụng nó, lưu tập lệnh này trong một tập tincreate_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>"

và chạy nó bằng cách sử dụng:

chmod +x create_qemu_binaries.sh 
./create_qemu_binaries.sh 

mọi thứ đều hoạt động tốt, cuối cùng bạn nên có trong thư mục ./qemu_extract/qemu_packed/một tệp qemu-system-x86_64( tệp nhị phân chính), một thư mục lib(các lib cần được thực hiện qemu) và một thư mục pc-bios, một tập hợp các tệp qemucần chạy. Sau đó, bạn có thể chạy qemubằng cách sử dụng (đừng quên thay thế bằng hình ảnh hệ thống tập tin của bạn):

$ 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

Thưởng thức ! (nếu tập lệnh không phù hợp với bạn, đừng ngần ngại hỏi tôi, tôi chỉ thử nghiệm nó trên hai máy tính và điền miễn phí để xóa redirnếu bạn không cần chuyển tiếp ssh giữa máy chủ và đoán)

2.1.b) Cách 2: nếu bạn truy cập vào máy tính có quyền truy cập root

Phương pháp đầu tiên cần một máy tính có quyền truy cập root (hoặc qemucài đặt). Cài đặt đầu tiên qemubằng cách sử dụng một cái gì đó như

sudo apt install qemu-system-x86

và sau đó xác định vị trí đường dẫn tuyệt đối của qemu:

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

Sau đó, tạo một thư mục để đặt nó:

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

và lấy danh sách các thư viện được liên kết với qemu:

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

Bây giờ, chúng ta cần sử dụng BIOS bằng qemu. Tệp có sẵn trên hệ thống của bạn, nhưng tôi không biết tại sao chúng lại nằm trong các thư mục khác nhau, vì vậy tôi nghĩ việc lấy chúng từ các nguồn dễ dàng hơn:

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

Bây giờ, nó sẽ hoạt động, bạn có thể sao chép các tệp này trên máy không root và chỉ cần chạy qemubằng dòng sau (đừng quên thay thế hình ảnh):

$ 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) Cách 3: từ các nguồn

Bạn cũng có thể biên dịch các nguồn, nhưng nếu bạn chưa cài đặt tất cả các thư viện, thì có thể khó tránh sử dụng máy tính đã root để biên dịch qemu. Nhưng tôi đoán nó đáng tin cậy hơn một chút nếu hai phương pháp trên không hoạt động. Sau đó, khi nó được biên dịch, hãy lấy tệp thực thi và thực hiện thủ thuật tương tự như trên để có được các thư viện (sử dụng ldd, tất cả các thư viện đã có trên máy tính) và tệp pc-bios. Và một lần nữa, chạy nó với cùng một lệnh.

2.3) Tạo hình ảnh của riêng bạn

Nếu bạn không muốn sử dụng hình ảnh hệ thống tập tin được tạo sẵn, chỉ cần làm theo nhiều hướng dẫn sử dụng các lệnh ở trên thay cho qemu/qemu-system-x86_64! NB: nếu bạn cũng muốn sử dụng qemu-imgđể tạo hình ảnh dưới dạng không root, thì hãy làm theo quy trình tương tự như trên!

Thưởng thức !

Lưu ý: nếu bạn muốn sử dụng màn hình lời nguyền để chạy nó trên máy chủ không có GUI, bạn nên thêm vào hình ảnh của mình một dòng trong tùy chọn khởi động để nó không bật bộ đệm khung trong /etc/default/grub:

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

(điều quan trọng nhất là cuối cùng, tôi không chắc là nó có cần không). Cũng như

GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text

để grub ở trong chế độ văn bản. Bạn cũng có thể muốn bật chế độ văn bản trong systemd nếu nó không đủ.


1
Làm ơn, anh chàng đã đặt tôi -1, bạn có thể vui lòng giải thích cho tôi tại sao không?
tobiasBora

Tôi không có ý tưởng nhưng điều này là tuyệt vời, cảm ơn bạn.
wb Khang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.