Được chứ, đây là hướng dẫn tôi thấy nó hiệu quả sau hai ngày thử và sai. Ubuntu sẽ làm tốt cộng đồng của họ để đăng một số hướng dẫn cho người dùng địa phương. https://www.agiliq.com/blog/2012/07/using-ubuntu-cloud-images-in-kvm/
Tôi đã có thể tìm thấy kernel phiên bản "vmlinuz-virtual-generic" trong thư mục "đã giải nén" bị chôn vùi trong liên kết phát hành hình ảnh trên đám mây ở trên. https://cloud-images.ubuntu.com/focal/current/unpacked/. Trang chính có các phiên bản khác với Focal https://cloud-images.ubuntu.com. Đây là phần quan trọng nhất vì initrd-userve.img sẽ không nhận ra đĩa gốc. Bạn cũng có thể sử dụng một thông thường nhân ubuntu.
Các Ý chính của nó là sử dụng qemu-img tạo -b ubuntu-*-server-cloudimg-amd64.img -f qcow2 samename.img.qcow2
để tạo VM (hoặc chỉ sử dụng GUI tạo trong virt-mgr). Nó sẽ cung cấp tùy chọn cấu hình trước khi cài đặt và sau đó khởi động VM. Bạn sẽ muốn thêm kernel và initrd từ các bản tải xuống "đã giải nén" vào phần Khởi động trực tiếp trong Tùy chọn khởi động cùng với các đối số khởi động sau: ro init=/usr/lib/cloud-init/uncloud-init root=/dev/vda ds=nocloud ubuntu-pass=initialpassword
. Bạn phải khởi động hai lần để mật khẩu hoạt động. Trên thực tế, chỉ rw root=/dev/vda1 init=/bin/bash
sẽ hoạt động để tạo một người dùng và mật khẩu mới.
Lưu ý những hướng dẫn này nói vđa
. tôi đã phải sử dụng vda1
bởi vì có hai phân vùng khởi động vda14 cho GPT/bios_boot và vda15 cho phân vùng EFI/ESP/boot-flagged. Tệp .img thô ban đầu sử dụng sdaX, fyi.. chuyển đổi sang qcow2 hoặc chỉ sử dụng qemu-img là những thay đổi rõ ràng.
Một vài chi tiết khác:
Các trang trợ giúp cũ hơn cho biết các tệp hạt nhân và đĩa mềm được gói trong tệp tar. Rõ ràng đây không còn là trường hợp nữa và khiến tôi phải thử và sai nhiều hơn. Các lỗi phổ biến là treo trên "GRUB_FORCE_PARTUUID đang cố khởi động không cần khởi động", "Lỗi lệnh không xác định hwmatch" và "ngẫu nhiên: khởi tạo nhanh xong". Trên thực tế, hai cái đầu tiên là khi không sử dụng Khởi động trực tiếp. Quá trình nhập Ova trong VirtualBox tự khởi động, do đó, bằng cách nào đó, nó đang tìm ra các tệp kernel bên trong. Tôi rất muốn biết cách thực hiện điều đó trong KVM. Tôi đã xem các tệp XML nhưng không thấy manh mối rõ ràng nào bên cạnh việc thiết lập một đĩa mềm, khiến tôi phải tìm kiếm để tìm đĩa mềm dẫn tôi đến trang hướng dẫn chính ở trên. Lỗi thứ ba mà tôi đã trích dẫn là khi không tìm thấy các tệp hạt nhân bên trong này, mặc dù fstab có các lables chính xác cho các ổ đĩa khởi động. Nó thậm chí không nhận được grub, vì vậy tôi không thể chỉ định UUID đĩa ở đó, mặc dù chúng khớp với tệp grub (rõ ràng là vì sử dụng Khởi động trực tiếp không thay đổi bất kỳ thứ gì trong số đó).
Đây là một câu trả lời cho câu hỏi ban đầu của tôi. Một lần nữa dựa trên nội dung tar cũ hơn với đĩa mềm, v.v. Nó đã khiến tôi phải tìm kiếm sâu hơn các tệp "vmlinuz-virtual": Việc sử dụng hình ảnh khách trên đám mây Ubuntu trên OpenStack được ghi lại ở đâu?
Các nguồn lực khác:
Hạt nhân lập luận uncloud-init
nói với cloud-init rằng đó là một máy ảo cục bộ và không có mây
arg thiết lập mạng cục bộ (thay vì phải truy cập và thay đổi /etc/netplan/*yaml để xóa địa chỉ mac cố định và sử dụng áp dụng kế hoạch mạng
và sau đó systemctl khởi động lại mạng
)
Dưới đây là một số thông tin tôi đã học được:
Việc cố gắng đặt các tệp yaml khởi tạo trên đám mây một cách dễ dàng với tệp cục bộ đã đưa tôi đến giải pháp này để sử dụng khởi tạo đám mây với iso máy chủ Ubuntu: https://discourse.ubuntu.com/t/automated-server-install-quickstart/16614. Nó có một vài lệnh đơn giản để tạo các tệp và sau đó chạy một máy chủ một lớp nhỏ gọn gàng để tạo vị trí mạng từ hạt giống. Nó cài đặt và khởi động với Kvm. Thật không may, sau khi sử dụng hình ảnh thô để tạo VM trong Virtmanager, nó không khởi động được vì không thể tìm thấy /stillmount/casper/initrd vì một số lý do. Vì vậy, tôi đã sao chép các tệp kernel ra khỏi iso đã gắn và thử sử dụng chúng (vì tôi nghi ngờ hình ảnh đám mây ở trên không có trình điều khiển âm thanh trong kernel của nó), nhưng nó cũng bị treo trên các tệp casper/initrd.
Vì vậy, tôi đã quay lại VirtualBox ova. my-seed.iso đã hoạt động để thay đổi tên máy chủ.Sau một thời gian dài tìm kiếm về cách chuyển các tham số kernel (bạn không thể sử dụng vboxmanage setextradata bên cạnh), tôi đã phát hiện ra rằng bạn có thể nhấn shift trong khi khởi động để chỉnh sửa các đối số Grub. Sau khi sử dụng init=/bin/bash để đặt mật khẩu và vga=792 để tăng kích thước hiển thị, tôi đã tìm thấy một lỗi trong hình ảnh trong tệp visudo mà #bao gồm..
đang thiếu một khoảng trống giết chết sudo. Sau khi nhận được apt để cập nhật, tôi thấy có một lỗi VirtualBox không cho phép khay nhớ tạm hai chiều trong các phiên bản gần đây: https://superuser.com/questions/1293042/bidirection-clipboard-not-working-in-virtualbox. Nhưng mà ít nhất cuối cùng tôi cũng có cách tạo Ubuntu VM cơ bản mà không cần phải trải qua toàn bộ quá trình cài đặt. Phương pháp này sẽ hoạt động cho nhiều bản phân phối khác. (Ồ, còn nữa, chạm vào /etc/cloud/cloud-init.disabled
lệnh trên dường như hoạt động).
Các mẩu tin tiếp theo:
- my-config.iso chỉ hoạt động trong lần chạy đầu tiên. (trừ khi có cách kích hoạt cloud-init).
- Giữ shift để vào Grub. Sử dụng hạt nhân arg
vga=792
cho một thiết bị đầu cuối lớn hơn. Đặt thời gian chờ grub trong /etc/default/grub và chạy update-grub.
- Âm thanh không hoạt động trên những hình ảnh đám mây này mà không cần cài đặt
apt cài đặt chung linux
(khoảng 800Mbs). Và đặt đầu ra âm thanh được bật trong Vbox.
Cập nhật cuối cùng: Cuối cùng tôi đã tìm ra chìa khóa để khởi động hình ảnh đám mây mà không cần sử dụng các tệp Khởi động trực tiếp. Về cơ bản, hãy cài đặt phiên bản hạt nhân chung, không phải kvm bằng cách sử dụng apt cài đặt linux-image-$(uname -r)
và thay đổi kvm thành chung (~ 90Mb) hoặc sử dụng kernel kvm và ssh vào VM bằng cách sử dụng systemctl enable [email protected] && systemctl start [email protected]
, sau đó bảng điều khiển virtsh <vm-name>
. Để vào ban đầu để khiến người dùng sử dụng root=/dev/vda1 init=/bin/bash rw
cho kernel args. Sau đó xóa hoặc di chuyển hai tệp /etc/grub.d/01.. và /etc/default/grub.d/50.., đồng thời nhận xét dòng đầu tiên của /etc/default/grub.d/40-force- partuuid.cfg. Thay đổi /etc/default/grub ẩn giấu
đến thực đơn
, điều chỉnh thời gian chờ, v.v. nếu muốn. sau đó cập nhật-grub
và nó sẽ hoạt động.