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 ldd
và 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 .so
tậ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 qemu
cần chạy. Sau đó, bạn có thể chạy qemu
bằ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 redir
nế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 qemu
cài đặt). Cài đặt đầu tiên qemu
bằ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 qemu
bằ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 đủ.