มีภาพ QEMU Ubuntu (32 บิต) ที่สร้างไว้ล่วงหน้าทางออนไลน์หรือไม่


12

ฉันกำลังเล่นกับ QEMU ที่นี่ฉันพบภาพ OS ที่สร้างไว้ล่วงหน้า:

http://docs.openstack.org/trunk/openstack-compute/admin/content/starting-images.html

แต่มันมีความหมายสำหรับระบบ 64 บิตในขณะที่ระบบของฉันเป็น 32 บิต ไม่มีใครทราบว่ามีภาพที่สร้างไว้ล่วงหน้าแบบ 32 บิตหรือไม่

ดังนั้นฉันสามารถใช้พวกเขาโดยตรงและไม่ต้องกังวลกับการติดตั้ง

ขอบคุณ


คุณคิดว่าคุณมีระบบปฏิบัติการ 32 บิตหรือไม่ มันขึ้นอยู่กับซีพียูเท่านั้น
อัลวาร์

@Alvar ฉันไม่แน่ใจ โฮสต์ของฉันคือ Fedora 12 พร้อมเคอร์เนล 2.6.29 ฉันเชื่อว่าระบบปฏิบัติการของฉันคือ 32 บิต หน่วยประมวลผลคือ Intel Core 2 Duo CPU E8400 ฉันใช้คำสั่ง "qemu-kvm -m 1024 img" Img ถูกดาวน์โหลดจากเว็บไซต์ที่ฉันให้ มันหยุดที่ "กำลังโหลด ramdisk เริ่มต้น" ....
Hao Shen

2
ใช่ CPU ของคุณมีความเข้ากันได้ 64 บิต ที่มา
อัลวาร์

คำตอบ:


11

การค้นหาโดย Google อย่างรวดเร็วเปิดเผยสิ่งต่อไปนี้(ฉันไม่ได้ลองเลย) :

นอกจากนี้คุณยังสามารถใช้vmbuilder (เรียกที่นี่เป็นubuntu-vmbuilder) เพื่อสร้างภาพ Ubuntu อย่างรวดเร็วไปยัง KVM, VirtualBox และอื่น ๆ

เป็นทางเลือกสุดท้ายคุณสามารถใช้qemu-imgคำสั่งเพื่อแปลงอิมเมจดิสก์จาก VirtualBox / VMware เป็นรูปแบบที่เหมาะสมกับ QEMU / KVM (อาจไม่จำเป็นต้องใช้: ฉันคิดว่า QEMU / KVM สามารถทำงานกับอิมเมจประเภทอื่นเช่น vdi หรือ vmdk)

$ qemu-img convert -f [vdi|vmdk|...] -O qcow2 OriginalImage NewImage

หมายเหตุ : หากคุณใช้ระบบปฏิบัติการ 32 บิตคุณไม่สามารถเรียกใช้เครื่องเสมือน 64 บิตด้วย KVM ได้ แต่ QEMU เป็นอีมูเลเตอร์ดังนั้นจึงควรให้คุณรัน 64 บิต vm บนระบบปฏิบัติการ 32 บิต แต่ค่าโสหุ้ยในการแสดงน่าจะสูงมาก!


10

คำตอบนี้ประกอบด้วยขั้นตอนโดยละเอียดสำหรับการตั้งค่าต่อไปนี้:

  • รูปภาพเมฆ amd64 และ arm64
  • debootstrap amd64 และ arm64
  • รูปภาพบนเดสก์ท็อป amd64

ทั้งหมดได้รับการทดสอบบนโฮสต์ Ubuntu 18.04 ที่กำหนดเป้าหมายไปที่แขก 18.04

ภาพคลาวด์ amd64

อิมเมจคลาวด์ Ubuntu เป็นอิมเมจที่ติดตั้งไว้ล่วงหน้าซึ่งอนุญาตให้คุณบูตได้โดยตรงโดยไม่ต้องทำการติดตั้งระบบเดสก์ท็อปตามปกติ ดูเพิ่มเติมที่: /server/438611/what-are-ubuntu-cloud-images

#!/usr/bin/env bash

sudo apt-get install cloud-image-utils qemu

# This is already in qcow2 format.
img=ubuntu-18.04-server-cloudimg-amd64.img
if [ ! -f "$img" ]; then
  wget "https://cloud-images.ubuntu.com/releases/18.04/release/${img}"

  # sparse resize: does not use any extra space, just allows the resize to happen later on.
  # /superuser/1022019/how-to-increase-size-of-an-ubuntu-cloud-image
  qemu-img resize "$img" +128G
fi

user_data=user-data.img
if [ ! -f "$user_data" ]; then
  # For the password.
  # /programming/29137679/login-credentials-of-ubuntu-cloud-server-image/53373376#53373376
  # /server/920117/how-do-i-set-a-password-on-an-ubuntu-cloud-image/940686#940686
  # /ubuntu/507345/how-to-set-a-password-for-ubuntu-cloud-images-ie-not-use-ssh/1094189#1094189
  cat >user-data <<EOF
#cloud-config
password: asdfqwer
chpasswd: { expire: False }
ssh_pwauth: True
EOF
  cloud-localds "$user_data" user-data
fi

qemu-system-x86_64 \
  -drive "file=${img},format=qcow2" \
  -drive "file=${user_data},format=raw" \
  -device rtl8139,netdev=net0 \
  -enable-kvm \
  -m 2G \
  -netdev user,id=net0 \
  -serial mon:stdio \
  -smp 2 \
  -vga virtio \
;

GitHub ต้นน้ำ

หลังจากเริ่ม QEMU คุณอาจต้องกด Enter เพื่อให้เมนูการบู๊ตปรากฏขึ้น เลือกUbuntuจากที่นั่น

จากนั้นจุดเริ่มต้นของการบูตพูดว่า:

error: no such device: root.

Press any key to continue...

แต่แม้ว่าคุณจะไม่ได้กดปุ่มใด ๆ ก็ตามการบู๊ตก็จะดำเนินต่อไปหลังจากหมดเวลาอันสั้น ไปที่โหวตรายงานข้อผิดพลาดนี้: https://bugs.launchpad.net/cloud-images/+bug/1726476

เมื่อบูตเสร็จสิ้นให้เข้าสู่ระบบด้วย:

  • ชื่อผู้ใช้: ubuntu
  • รหัสผ่าน: asdfqwer

อินเทอร์เน็ตทำงานได้ตามปกติ

ภาพเมฆแขน 64

สิ่งที่ต้องทำ: ฉันสังเกตเห็นว่ามีข้อผิดพลาดที่เกิดขึ้นบางครั้งเมื่อใช้สิ่งนี้: https://bugs.launchpad.net/cloud-images/+bug/1818197

คล้ายกันมากกับ amd64 แต่เราต้องการเวทย์มนตร์ดำ UEFI เพื่อทำการบู๊ต

sudo apt-get install cloud-image-utils qemu-system-arm qemu-efi

# Get the image.
img=ubuntu-18.04-server-cloudimg-arm64.img
if [ ! -f "$img" ]; then
  wget "https://cloud-images.ubuntu.com/releases/18.04/release/${img}"
  qemu-img resize "$img" +128G
fi

# For the password.
user_data=user-data.img
if [ ! -f "$user_data" ]; then
  cat >user-data <<EOF
#cloud-config
password: asdfqwer
chpasswd: { expire: False }
ssh_pwauth: True
EOF
  cloud-localds "$user_data" user-data

  # Use the EFI magic. Picked up from:
  # https://wiki.ubuntu.com/ARM64/QEMU
  dd if=/dev/zero of=flash0.img bs=1M count=64
  dd if=/usr/share/qemu-efi/QEMU_EFI.fd of=flash0.img conv=notrunc
  dd if=/dev/zero of=flash1.img bs=1M count=64
fi

qemu-system-aarch64 \
  -M virt \
  -cpu cortex-a57 \
  -device rtl8139,netdev=net0 \
  -m 4096 \
  -netdev user,id=net0 \
  -nographic \
  -smp 4 \
  -drive "if=none,file=${img},id=hd0" \
  -device virtio-blk-device,drive=hd0 \
  -drive "file=${user_data},format=raw" \
  -pflash flash0.img \
  -pflash flash1.img \
;

GitHub ต้นน้ำ

debootstrap amd64

ไม่ใช่รูปภาพที่สร้างไว้ล่วงหน้า แต่ดาวน์โหลดแพ็คเกจที่สร้างไว้ล่วงหน้าทั้งหมดดังนั้นจึงรวดเร็ว แต่ก็สามารถกำหนดค่าได้และมีประโยชน์มากกว่า

#!/usr/bin/env bash

set -eux

debootstrap_dir=debootstrap
root_filesystem=debootstrap.ext2.qcow2

sudo apt-get install \
  debootstrap \
  libguestfs-tools \
  qemu-system-x86 \
;

if [ ! -d "$debootstrap_dir" ]; then
  # Create debootstrap directory.
  # - linux-image-generic: downloads the kernel image we will use under /boot
  # - network-manager: automatically starts the network at boot for us
  sudo debootstrap \
    --include linux-image-generic \
    bionic \
    "$debootstrap_dir" \
    http://archive.ubuntu.com/ubuntu \
  ;
  sudo rm -f "$root_filesystem"
fi

linux_image="$(printf "${debootstrap_dir}/boot/vmlinuz-"*)"

if [ ! -f "$root_filesystem" ]; then
  # Set root password.
  echo 'root:root' | sudo chroot "$debootstrap_dir" chpasswd

  # Remount root filesystem as rw.
  cat << EOF | sudo tee "${debootstrap_dir}/etc/fstab"
/dev/sda / ext4 errors=remount-ro,acl 0 1
EOF

  # Automaticaly start networking.
  # Otherwise network commands fail with:
  #     Temporary failure in name resolution
  # /ubuntu/1045278/ubuntu-server-18-04-temporary-failure-in-name-resolution/1080902#1080902
  cat << EOF | sudo tee "$debootstrap_dir/etc/systemd/system/dhclient.service"
[Unit]
Description=DHCP Client
Documentation=man:dhclient(8)
Wants=network.target
Before=network.target
[Service]
Type=forking
PIDFile=/var/run/dhclient.pid
ExecStart=/sbin/dhclient -4 -q
[Install]
WantedBy=multi-user.target
EOF
  sudo ln -sf "$debootstrap_dir/etc/systemd/system/dhclient.service" \
    "${debootstrap_dir}/etc/systemd/system/multi-user.target.wants/dhclient.service"

  # Why Ubuntu, why.
  # https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725
  sudo chmod +r "${linux_image}"

  # Generate image file from debootstrap directory.
  # Leave 1Gb extra empty space in the image.
  sudo virt-make-fs \
    --format qcow2 \
    --size +1G \
    --type ext2 \
    "$debootstrap_dir" \
    "$root_filesystem" \
  ;
  sudo chmod 666 "$root_filesystem"
fi

qemu-system-x86_64 \
  -append 'console=ttyS0 root=/dev/sda' \
  -drive "file=${root_filesystem},format=qcow2" \
  -enable-kvm \
  -serial mon:stdio \
  -m 2G \
  -kernel "${linux_image}" \
  -device rtl8139,netdev=net0 \
  -netdev user,id=net0 \
;

GitHub ต้นน้ำ

บูทนี้ไม่มีข้อผิดพลาดหรือคำเตือนของ systemd

ตอนนี้จากเทอร์มินัลเข้าสู่ระบบด้วยroot/ rootแล้วตรวจสอบว่าอินเทอร์เน็ตใช้งานได้กับคำสั่งต่อไปนี้:

printf 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | nc example.com 80
apt-get update
apt-get install hello
hello

เราใช้ncตามที่อธิบายไว้ที่/programming/32341518/how-to-make-an-http-get-request-manually-with-netcat/52662497#52662497เพราะ:

เวอร์ชั่นเดเบียนแบบอะนาล็อก: /unix/275429/creating-bootable-debian-image-with-debootstrap/473256#473256

สร้างเคอร์เนลของคุณเอง

เนื่องจากเราอยู่ที่นี่:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git
cd ubuntu-bionic
# Tag matches the working kernel that debootstrap downloaded for us.
git checkout Ubuntu-4.15.0-20.21
fakeroot debian/rules clean
debian/rules updateconfigs
fakeroot debian/rules build-generic
linux_image="$(pwd)/debian/build/build-generic/arch/x86_64/boot/bzImage"

สิ่งนี้สร้างการกำหนดค่าที่แน่นอนเหมือนกันและฉันเชื่อว่าใช้ซอร์สโค้ดเดียวกันกับ Ubuntu ที่debootstrapดาวน์โหลดตามที่อธิบายไว้ที่: ฉันจะหาไฟล์. config ของเคอร์เนล. 11.04 ได้ที่ไหน

จากนั้นฉันก็แก้ไขมันด้วย:

diff --git a/init/main.c b/init/main.c
index b8b121c17ff1..542229349efc 100644
--- a/init/main.c
+++ b/init/main.c
@@ -516,6 +516,8 @@ asmlinkage __visible void __init start_kernel(void)
        char *command_line;
        char *after_dashes;

+ pr_info("I'VE HACKED THE LINUX KERNEL!!!");
+
        set_task_stack_end_magic(&init_task);
        smp_setup_processor_id();
        debug_objects_early_init();

และสร้างใหม่:

fakeroot debian/rules build-generic

และมันพิมพ์ข้อความของฉันในระหว่างการบูต:

I'VE HACKED THE LINUX KERNEL!!!

การสร้างใหม่ไม่เร็วมากนักดังนั้นอาจมีคำสั่งที่ดีกว่า ฉันแค่รอให้มันพูดว่า:

Kernel: arch/x86/boot/bzImage is ready  (#3)

และเดินไปข้างหน้าด้วยการวิ่ง

debootstrap arm64

กระบวนการนี้คล้ายกับ amd64 แต่มีความแตกต่างดังต่อไปนี้:

1)

เราต้องทำสองขั้นตอนdebootstrap:

  • ก่อนอื่น--foreignเพียงดาวน์โหลดแพ็คเกจ
  • จากนั้นเราติดตั้ง QEMU คงที่เข้าไป chroot
  • จากนั้นเราทำการติดตั้งแพคเกจด้วยการ--second-stageใช้การจำลองโหมดผู้ใช้ QEMU +binfmt_misc

ดูเพิ่มเติม: debootstrap คืออะไร - วินาทีสำหรับ

2) การบูตเคอร์เนลเริ่มต้นล้มเหลวในตอนท้ายด้วย:

[    0.773665] Please append a correct "root=" boot option; here are the available partitions:
[    0.774033] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

รายการพาร์ติชันที่ว่างเปล่าบ่งชี้ว่ามีข้อผิดพลาดร้ายแรงกับไดรเวอร์ดิสก์หลังจากลองตัวเลือกที่หายไปเล็กน้อยคือ:

CONFIG_VIRTIO_BLK=y

ฉันคิดว่ามันใช้งานได้เมื่อฉันใช้ ISO เพราะโมดูลจะต้องโหลดจาก initrd

ฉันพยายามใช้ดิสก์ชนิดอื่น แต่ virtio เป็นค่าที่ถูกต้องเพียงอย่างเดียว-drive if=เมื่อ-M virtซึ่งเป็นเครื่อง saner ทุกวันนี้

ดังนั้นเราจะต้องคอมไพล์เคอร์เนลของเราอีกครั้งโดยเปิดใช้งานตัวเลือกดังที่อธิบายไว้ที่นี่: เมื่อทำการคอมไพล์เคอร์เนลฉันจะหยุดมันจากการล้างทุกครั้งเมื่อฉันแค่ต้องการแก้ไขไฟล์เดียวได้อย่างไร

ผู้พัฒนา Ubuntu ควรเปลี่ยน CONFIG นี้เป็นค่าyเริ่มต้น! มันมีประโยชน์มาก!

สิ่งที่ต้องทำ: เครือข่ายไม่ทำงานข้อความแสดงข้อผิดพลาดคือ:

root@ciro-p51:~# systemctl status dhclient.service
root@ciro-p51:~# cat f
● dhclient.service - DHCP Client
   Loaded: loaded (/etc/systemd/system/dhclient.service; enabled; vendor preset: enabled)
   Active: failed (Result: protocol) since Sun 2018-01-28 15:58:42 UTC; 2min 2s ago
     Docs: man:dhclient(8)
  Process: 171 ExecStart=/sbin/dhclient -4 -q (code=exited, status=0/SUCCESS)

Jan 28 15:58:40 ciro-p51 systemd[1]: Starting DHCP Client...
Jan 28 15:58:42 ciro-p51 dhclient[171]: No broadcast interfaces found - exiting.
Jan 28 15:58:42 ciro-p51 systemd[1]: dhclient.service: Can't open PID file /var/run/dhclient.pid (yet?) after start: No such file or directory
Jan 28 15:58:42 ciro-p51 systemd[1]: dhclient.service: Failed with result 'protocol'.
Jan 28 15:58:42 ciro-p51 systemd[1]: Failed to start DHCP Client.

นี่คือสคริปต์อัตโนมัติเต็มรูปแบบ:

#!/usr/bin/env bash

# /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171

set -eux

debootstrap_dir=debootstrap
root_filesystem=debootstrap.ext2.qcow2

sudo apt-get install \
  gcc-aarch64-linux-gnu \
  debootstrap \
  libguestfs-tools \
  qemu-system-aarch64 \
  qemu-user-static \
;

if [ ! -d "$debootstrap_dir" ]; then
  sudo debootstrap \
    --arch arm64 \
    --foreign \
    bionic \
    "$debootstrap_dir" \
    http://ports.ubuntu.com/ubuntu-ports \
  ;
  sudo mkdir -p "${debootstrap_dir}/usr/bin"
  sudo cp "$(which qemu-aarch64-static)" "${debootstrap_dir}/usr/bin"
  sudo chroot "$debootstrap_dir" /debootstrap/debootstrap --second-stage
  sudo rm -f "$root_filesystem"
fi

linux_image="$(printf "${debootstrap_dir}/boot/vmlinuz-"*)"

if [ ! -f "$root_filesystem" ]; then
  # Set root password.
  echo 'root:root' | sudo chroot "$debootstrap_dir" chpasswd

  # Remount root filesystem as rw.
  cat << EOF | sudo tee "${debootstrap_dir}/etc/fstab"
/dev/sda / ext4 errors=remount-ro,acl 0 1
EOF

  # Automaticaly start networking.
  # Otherwise network commands fail with:
  #     Temporary failure in name resolution
  # /ubuntu/1045278/ubuntu-server-18-04-temporary-failure-in-name-resolution/1080902#1080902
  cat << EOF | sudo tee "${debootstrap_dir}/etc/systemd/system/dhclient.service"
[Unit]
Description=DHCP Client
Documentation=man:dhclient(8)
Wants=network.target
Before=network.target

[Service]
Type=forking
PIDFile=/var/run/dhclient.pid
ExecStart=/sbin/dhclient -4 -q

[Install]
WantedBy=multi-user.target
EOF
  sudo ln -sf "${debootstrap_dir}/etc/systemd/system/dhclient.service" \
    "${debootstrap_dir}/etc/systemd/system/multi-user.target.wants/dhclient.service"

  # Why Ubuntu, why.
  # https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725
  sudo chmod +r "${linux_image}"

  # Generate image file from debootstrap directory.
  # Leave 1Gb extra empty space in the image.
  sudo virt-make-fs \
    --format qcow2 \
    --size +1G \
    --type ext2 \
    "$debootstrap_dir" \
    "$root_filesystem" \
  ;
  sudo chmod 666 "$root_filesystem"
fi

# Build the Linux kernel.
linux_image="$(pwd)/linux/debian/build/build-generic/arch/arm64/boot/Image"
if [ ! -f "$linux_image" ]; then
  git clone --branch Ubuntu-4.15.0-20.21 --depth 1 git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git linux
  cd linux
patch -p1 << EOF
diff --git a/debian.master/config/config.common.ubuntu b/debian.master/config/config.common.ubuntu
index 5ff32cb997e9..8a190d3a0299 100644
--- a/debian.master/config/config.common.ubuntu
+++ b/debian.master/config/config.common.ubuntu
@@ -10153,7 +10153,7 @@ CONFIG_VIDEO_ZORAN_ZR36060=m
 CONFIG_VIPERBOARD_ADC=m
 CONFIG_VIRTIO=y
 CONFIG_VIRTIO_BALLOON=y
-CONFIG_VIRTIO_BLK=m
+CONFIG_VIRTIO_BLK=y
 CONFIG_VIRTIO_BLK_SCSI=y
 CONFIG_VIRTIO_CONSOLE=y
 CONFIG_VIRTIO_INPUT=m
EOF
  export ARCH=arm64
  export $(dpkg-architecture -aarm64)
  export CROSS_COMPILE=aarch64-linux-gnu-
  fakeroot debian/rules clean
  debian/rules updateconfigs
  fakeroot debian/rules DEB_BUILD_OPTIONS=parallel=`nproc` build-generic
  cd -
fi

qemu-system-aarch64 \
  -append 'console=ttyAMA0 root=/dev/vda rootfstype=ext2' \
  -device rtl8139,netdev=net0 \
  -drive "file=${root_filesystem},format=qcow2" \
  -kernel "${linux_image}" \
  -m 2G \
  -netdev user,id=net0 \
  -serial mon:stdio \
  -M virt,highmem=off \
  -cpu cortex-a57 \
  -nographic \
;

GitHub ต้นน้ำ

ภาพบนเดสก์ท็อป

ดู: วิธีการรัน Ubuntu บนเดสก์ท็อปของ QEMU

มันต้องผ่านตัวติดตั้งด้วยตนเอง แต่มันเป็นสิ่งที่เสถียรที่สุดที่คุณสามารถทำได้และใช้ได้ทั้งหมดถ้าคุณแค่ต้องการใช้ VM สำหรับการใช้งานแบบอินเทอร์แอคทีฟทำงานเป็นครั้งคราว

สำหรับ aarch64 ฉันยังไม่ได้เดสก์ท็อปทำงาน แต่อาจต้องจับตามอง: วิธีการรัน Ubuntu 16.04 ARM ใน QEMU?


1
ฉันปรับเปลี่ยนสคริปต์เล็กน้อย: gist.github.com/lnyng/8342947a1d5455303fd8730c9ca35da0การเปลี่ยนแปลงหลักคือการสร้างหน่วย systemh dhclient เพื่อหลีกเลี่ยงการติดตั้งตัวจัดการเครือข่ายซึ่งต้องใช้ไลบรารี UI ที่เกี่ยวข้องจำนวนมาก (ประมาณ 300 + MB สำหรับการติดตั้งของฉัน)
lyang

@lyang ขอบคุณ! คุณอนุญาตให้ฉันไม่ได้เรียนรู้ systemd อย่างถูกต้องอีกครั้ง :-)
Ciro Santilli 法轮功病毒审查六四事件法轮功

@lyang เมื่อฉันลองใช้ arm64 ตามที่อธิบายไว้ในคำตอบที่อัพเดตแล้วฉันได้รับข้อผิดพลาด: dhclient.service: Can't open PID file /var/run/dhclient.pid (yet?) after start: No such file or directoryมีเบาะแสอะไรบ้าง touch /var/run/aหลังจากบูตฉันสามารถที่จะ
Ciro Santilli 冠状病毒审查六四事件法轮功

ดูเหมือนว่าจะเป็นข้อผิดพลาดในการอนุญาต อาจจะเปลี่ยนเส้นทาง pid เป็นสถานที่อื่นเช่น /tmp/dhclient.pid? หรือเพียงแค่เอามันออกไปโดยสิ้นเชิงถ้าเราไม่สนใจจริงๆที่จะฆ่ากระบวนการที่ ...
lyang

0

อ้างถึงhttp://cloud-images.ubuntu.com/ซึ่งมีรูปเมฆซึ่งสามารถใช้กับ qemu / kvm


1
คุณใช้ภาพเหล่านั้นอย่างไร แม่นยำยิ่งขึ้น: คุณเข้าสู่ระบบได้อย่างไร?
Frederick Nord

คุณสามารถเพิ่มคีย์ ssh ของคุณผ่าน cloud-init
Dilip Renkila

0

https://www.turnkeylinux.org/มีมานานแล้ว พวกเขามีแคตตาล็อกขนาดใหญ่ที่สามารถดาวน์โหลดได้เครื่องใช้ที่ทำไว้ล่วงหน้าเช่นภาพในรูปแบบต่าง ๆ (ova, iso, vdmk, openstack, xen) พวกเขายังสามารถเปิดภาพใน AWS เพื่อคุณ

เมื่อฉันต้องการเริ่มสำรวจสแต็คโดยเฉพาะหรือต้องการที่จะทำให้เกิดปัญหาฉันมักจะดาวน์โหลดในภาพของพวกเขาแปลงเป็น Cow2 และใช้งานได้

นอกจากนี้คุณยังสามารถคว้าภาพจากhttps://app.vagrantup.com/boxes/searchหรือhttps://virtualboxes.org/images/และแปลงภาพเหล่านั้นได้เช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.