Tôi đã đến khá gần để Amazon Linux khởi động bên trong VirtualBox, nhờ câu trả lời này và các trang web này . Tổng quan nhanh về các bước tôi đã thực hiện:
- Khởi chạy phiên bản EC2 với Amazon Linux 2011/09 64 bit AMI
dd
nội dung của âm lượng EBS đốissh
với tệp hình ảnh cục bộ.- Gắn tệp hình ảnh dưới dạng thiết bị loopback và sau đó đến điểm gắn kết cục bộ.
- Tạo một tệp hình ảnh đĩa trống mới, phân vùng có phần bù cho bộ tải khởi động và tạo một hệ thống tệp ext4.
- Gắn phân vùng của hình ảnh mới và sao chép mọi thứ từ hình ảnh EC2.
- Cài đặt grub (sử dụng
grub-legacy-ec2
gói của Ubuntu , không phải grub2). - Chuyển đổi tập tin hình ảnh sang vmdk bằng cách sử dụng
qemu-img
. - Tạo một VirtualBox VM mới với vmdk.
Bây giờ VM khởi động, tải grub và kernel được tìm thấy. Nhưng nó không thành công khi nó cố gắn thiết bị gốc:
dracut Warning: No root device "block:/dev/xvda1" found
dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line.
dracut Warning: Signal caught!
dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line.
Kernel panic - not syncing: Attempted to kill init!
Pid: 1, comm: init Not tainted 2.6.35.14-107.1.39.amzn1.x86_64 #1
Tôi đã thử thay đổi /boot/grub/menu.lst
để tìm thiết bị gốc theo nhãn và UUID, nhưng không có gì hoạt động. Tôi đoán hạt nhân xen không tương thích với VirtualBox.
Lý do đằng sau tất cả nỗ lực này là để tạo ra một hộp Vagrant gần nhất có thể với môi trường sản xuất, vì vậy các triển khai có thể được thử nghiệm tại địa phương. Tôi biết rằng nó rẻ khi chạy thử trên EC2, nhưng kết nối kém thường làm hỏng trải nghiệm. Thêm vào đó, thật tuyệt khi có một máy ảo với môi trường sản xuất để đồng nghiệp không phải cài đặt mọi thứ dưới ánh mặt trời chỉ để bắt đầu và chạy với phát triển ứng dụng.
Nếu tôi đã thử chạy một kernel khác, tôi có thể lấy kernel nào gần nhất có thể với Amazon Linux 2011.09?