1) Tiga baris menjawab
Untuk menggunakan gambar prebuilt / kompilasi versi qemu saya, unduh dari sini , lalu hapus kompresnya:
tar -xvzf qemu_packed.tar.gz
Anda juga dapat mengunduh gambar debian 8 saya (1.6G) dari sini :
tar -xvzf test01.qcow2.tar.gz
dan akhirnya lari
./command.sh
Anda harus memiliki Debian 8 yang berfungsi, dalam mode teks, dengan port ssh dibuka di host host di port 22222. Anda dapat login menggunakan "root" pengguna dan kata sandi "root".
2) Jawaban yang lebih panjang, buat gambar-gambar ini sendiri
QEMU memang solusi yang memungkinkan saya menginstal citra linux saya sendiri di server di mana saya tidak memiliki akses root. Ini sangat berguna, saya menggunakannya misalnya untuk melakukan reverse ssh tanpa mengungkapkan kata sandi pengguna utama saya, atau untuk tujuan pendidikan. Tetapi memang, karena Anda tidak dapat menggunakan KVM untuk virtualisasi nyata tanpa akun root, Anda hanya dapat melakukan emulasi, yang bisa sangat tidak efisien (tetapi untuk operasi baris perintah, saya tidak pernah benar-benar melihat overhead).
2.1) Pak qemu
Inilah uraian bagaimana saya melanjutkan. Langkah pertama adalah membuat qemu "portable", yaitu dapat digunakan di server tanpa akses root. Untuk melakukannya, Anda memiliki beberapa metode, saya akan mencoba menyajikannya sehingga Anda dapat memilih yang Anda inginkan.
2.1.a) Metode 1: unduh .deb yang tersedia
Solusi ini bisa sangat cepat untuk diterapkan (pada dasarnya jika berfungsi, dalam 1 perintah Anda mendapatkannya), tetapi karena skrip saya mungkin buggy / mungkin lupa beberapa lib, mungkin cukup lama untuk secara manual mengunduh semua binari ... The Keuntungan lain dari metode ini adalah Anda dapat menjalankannya dalam mode non root, langsung di server. Gagasan untuk mendapatkan binari qemu di sini adalah untuk mendapatkan file .deb / .rpm (dari apt, atau dari situs web online yang menjadi host .deb), ekstrak, periksa dependensi perpustakaan menggunakan ldd
, dan unduh semua .deb
dependensi yang ada belum ada di komputer untuk mengekstraknya ( :.so
file). Karena itu bisa sangat panjang dan berulang, saya membuat skrip kecil, tetapi jika Anda berani, Anda dapat melakukan semua itu secara manual ... Hanya perlu waktu. Untuk menggunakannya, simpan skrip ini dalam filecreate_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>"
dan jalankan dengan menggunakan:
chmod +x create_qemu_binaries.sh
./create_qemu_binaries.sh
semuanya bekerja dengan baik, pada akhirnya Anda harus memiliki dalam folder ./qemu_extract/qemu_packed/
satu file qemu-system-x86_64
(biner utama), satu folder lib
(lib yang perlu diambil qemu
), dan satu folder pc-bios
, satu set file yang qemu
perlu dijalankan. Anda kemudian dapat menjalankan qemu
dengan menggunakan (jangan lupa ganti dengan gambar sistem file Anda):
$ 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
Nikmati ! (jika skrip tidak berfungsi untuk Anda, jangan ragu untuk bertanya kepada saya, saya mengujinya hanya pada dua komputer, dan isi bebas untuk menghapus redir
jika Anda tidak perlu ssh penerusan antara host dan tebakan)
2.1.b) Metode 2: jika Anda mengakses komputer dengan akses root
Metode pertama membutuhkan komputer dengan akses root (atau qemu
diinstal). Pertama instal qemu
menggunakan sesuatu seperti
sudo apt install qemu-system-x86
dan kemudian cari path absolut dari qemu:
$ which qemu-system-x86_64
/usr/bin/qemu-system-x86_64
Lalu, buat folder untuk meletakkannya:
mkdir -p qemu_packed/lib
cd qemu_packed
cp /usr/bin/qemu-system-x86_64 qemu_packed
dan dapatkan daftar perpustakaan yang terhubung dengan qemu:
ldd qemu_packed/qemu-system-x86_64 | awk '{print "cp "$3" qemu_packed/lib"}' | bash
sekarang, kita perlu menggunakan BIOS dengan qemu. File tersebut tersedia di sistem Anda, tetapi saya tidak tahu mengapa mereka ada di folder yang berbeda, jadi saya pikir lebih mudah untuk mendapatkannya dari sumber:
git clone https://github.com/qemu/qemu.git
cp -r qemu/pc-bios qemu_packed
cd qemu_packed
Sekarang, itu harus berfungsi, Anda dapat menyalin file-file ini pada mesin non root, dan jalankan saja qemu
menggunakan baris berikut (jangan lupa untuk mengganti gambar):
$ 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) Metode 3: dari sumber
Anda juga dapat mengompilasi sumber, tetapi jika Anda tidak memiliki semua pustaka yang diinstal, mungkin sulit untuk menghindari menggunakan komputer yang di-root untuk mengkompilasi qemu. Tapi saya kira itu sedikit lebih dapat diandalkan jika kedua metode di atas tidak berfungsi. Kemudian, setelah dikompilasi, dapatkan file yang dapat dieksekusi, dan lakukan trik yang sama seperti di atas untuk mendapatkan perpustakaan (menggunakan ldd
, semua perpustakaan harus sudah ada di komputer) dan file pc-bios. Dan lagi, jalankan dengan perintah yang sama.
2.3) Buat gambar Anda sendiri
Jika Anda tidak ingin menggunakan gambar sistem file yang sudah dibuat, cukup ikuti banyak tutorial menggunakan perintah di atas sebagai ganti qemu/qemu-system-x86_64
! NB: jika Anda juga ingin menggunakan qemu-img
untuk membuat gambar sebagai non root, maka ikuti proses yang sama seperti di atas!
Nikmati !
NB: jika Anda ingin menggunakan tampilan kutukan untuk menjalankannya di server tanpa GUI, Anda harus menambahkan baris Anda pada gambar dalam opsi boot sehingga tidak mengaktifkan frame buffer di /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nofb nomodeset bochs_drm.fbdev=off"
(yang paling penting adalah yang terakhir, saya tidak yakin apakah itu diperlukan). Sebaik
GRUB_TERMINAL=console
GRUB_GFXPAYLOAD_LINUX=text
sehingga grub tetap dalam mode teks. Anda mungkin juga ingin mengaktifkan mode teks di systemd jika itu tidak cukup.