การแปลง EC2 AMI เป็นอิมเมจ vmdk


18

ฉันได้มาค่อนข้างใกล้เคียงกับการได้รับ Amazon Linux เพื่อบูตภายใน VirtualBox ขอบคุณคำตอบนี้และเหล่านี้ เว็บไซต์ ภาพรวมอย่างย่อของขั้นตอนที่ฉันได้ทำไป:

  1. เรียกใช้อินสแตนซ์ EC2 ด้วย Amazon Linux 2011.09 64-bit AMI
  2. ddเนื้อหาของปริมาณ EBS ไปsshยังไฟล์ภาพในเครื่อง
  3. เมาท์ไฟล์รูปภาพเป็นอุปกรณ์ย้อนกลับแล้วไปยังจุดเมานต์ท้องถิ่น
  4. สร้างไฟล์อิมเมจดิสก์เปล่าใหม่แบ่งพาร์ติชันด้วยออฟเซ็ตสำหรับ bootloader และสร้างระบบไฟล์ ext4
  5. เมานต์พาร์ติชั่นของอิมเมจใหม่และคัดลอกทุกอย่างจากอิมเมจ EC2
  6. ติดตั้งด้วง (ใช้grub-legacy-ec2แพ็คเกจของ Ubuntu ไม่ใช่ด้วง 2 )
  7. การแปลงไฟล์ภาพเพื่อ vmdk qemu-imgใช้
  8. สร้าง VirtualBox VM ใหม่ด้วย vmdk

ตอนนี้ VM boots, grub load และเคอร์เนลถูกพบ แต่มันล้มเหลวเมื่อพยายามติดตั้งอุปกรณ์รูท:

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

ฉันพยายามเปลี่ยน/boot/grub/menu.lstเพื่อค้นหาอุปกรณ์รูทตามเลเบลและ UUID แต่ไม่มีอะไรทำงาน ฉันคาดเดาเคอร์เนล xen เข้ากันไม่ได้กับ VirtualBox

เหตุผลที่อยู่เบื้องหลังความพยายามทั้งหมดนี้คือการสร้างกล่อง Vagrant ที่ใกล้เคียงที่สุดเท่าที่เป็นไปได้เช่นเดียวกับสภาพแวดล้อมการผลิตดังนั้นจึงสามารถทดสอบ Deploys ในพื้นที่ได้ ฉันรู้ว่าการทดสอบทำงานบน EC2 นั้นถูกกว่า แต่การเชื่อมต่อที่ไม่ดีมักจะทำลายประสบการณ์ นอกจากนี้ยังเป็นการดีที่จะมีเครื่องเสมือนที่มีสภาพแวดล้อมการผลิตเพื่อให้เพื่อนร่วมงานไม่ต้องติดตั้งทุกอย่างภายใต้ดวงอาทิตย์เพียงเพื่อเริ่มต้นและทำงานกับการพัฒนาแอป

ถ้าฉันจะลองใช้เคอร์เนลตัวอื่นฉันจะสามารถปิดเคอร์เนลอะไรได้ใกล้เคียงกับ Amazon Linux 2011.09 มากที่สุด


กำลังทำงานคล้ายกับคุณและพบวิธีแก้ปัญหาในลิงค์อื่น ๆ .. แบ่งปันกับคุณเช่นกัน ผ่านการทดสอบและใช้งานได้กับฉัน ... blog.zorangagic.com/2015/03/…
Pratap

คำตอบ:


7

ฉันพยายามมากและก็ยอมแพ้ แต่ในที่สุดฉันก็ประสบความสำเร็จ!

ฉันจัดการเพื่อบูตด้วย Amazon Linux AMI ที่พอร์ตภายใต้ vmware!

ฉันเกือบจะเป็นมือใหม่ แต่ฉันก็ทำหลังจากการทดลองหลายชั่วโมงแทนที่เคอร์เนล amazon ดั้งเดิมด้วย vmlinuz-2.6.32-38-generic ที่นำมาจาก Ubuntu 64 10.04 distro

ฉันเพิ่งได้รับข้อผิดพลาดมากมายเนื่องจากการกำหนดค่า amazon ภายใน AMI กำลังมองหาบางสิ่งในที่อยู่ภายในที่เห็นได้ชัดว่าไม่พบ ฉันคิดว่าเป็น / usr / bin / cloud-init

แต่ฉันสามารถเข้าสู่ระบบภายในและดูเหมือนว่าทุกอย่างทำงานได้!

ขอบคุณสำหรับความช่วยเหลือของคุณ!!

ฉันได้เขียนblogpost นี้พร้อมคำแนะนำทีละขั้นตอนในการโยกย้ายจาก AMI ไปยัง Vmware

หวังว่านี่จะช่วยได้!


BTW, กกฉันมาถึงจุดที่คุณระบุไว้ (dracut บอกว่า "ไม่พบอุปกรณ์รูท" ... คุณย้ายไปอีกหรือเปล่า?
Emanuele Preda

ฉันมาถึงวิธีเดียวกับที่คุณทำ: คัดลอกเคอร์เนลจาก Ubuntu ใช้งานได้ แต่ ณ จุดนั้นฉันไม่ทราบว่าระบบจะทำงานคล้ายกับ Amazon Linux AMI อย่างไร
กกกกฎหมาย

โปรดดูคำตอบของฉันที่นี่ซึ่งมี 2 วิธีการอัปเดตทางเลือกสำหรับการส่งออกไปยัง VirtualBox / VMWare VMDK เช่นเดียวกับคำแนะนำเกี่ยวกับการใช้ VMDK ที่สร้างขึ้นใหม่ของคุณกับ Vagrant
รหัส Bling

2

เคอร์เนลอย่างเป็นทางการของอเมซอนได้รับมาจากพวกเขาในการจัดจำหน่าย 2011.09 ของพวกเขาเช่น 2.6.35.14

คุณอาจจะได้รับซอร์สโค้ดสำหรับ Amazon ด้วยget_reference_sourceแต่ฉันไม่คิดว่ามันจะทำงานนอก Amazon ได้อยู่ดี


1

ผู้คนที่ Cloudify แบ่งปันวิธีการสร้าง VirtualBox Ready Vagrant โดยไม่ต้องเข้าถึงเครื่องโลหะเปลือยพวกเขาใช้ AWS

9 ขั้นตอนสู่สวรรค์:

  • สร้างอิมเมจต้นฉบับ (AMI) [... ] โดยใช้ Packer
  • เรียกใช้อินสแตนซ์ของผู้ปฏิบัติงานใน AWS ด้วยสแน็ปช็อตหรืออิมเมจต้นฉบับเป็นหนึ่งในดิสก์
  • ที่อิมเมจของผู้ปฏิบัติงาน: สร้างวอลุ่มอิมเมจดิบเป็นไฟล์และสร้างพาร์ติชัน ext4 ขึ้นมา
  • คัดลอกข้อมูลจากดิสก์อิมเมจต้นฉบับไปยังพาร์ติชัน ext4 ที่สร้างขึ้นก่อนหน้านี้
  • ติดตั้ง bootloader (extlinux) บนพาร์ติชัน ext4
  • แปลงอิมเมจดิบเป็น VMDK
  • บันเดิล VMDK โดยใช้ OVF descriptor และข้อมูลเมตาของ Vagrant และสร้างไฟล์ tar ที่มีเนื้อหาและส่วนขยาย. box
  • อัปโหลดเป็น S3 [หรืออะไรก็ได้ที่คุณชอบ]
  • ทำความสะอาด.

ที่มา : โพสต์บล็อกที่http://www.developer.com/design/creating-a-reproducible-and-portable-development-environment.htmlด้วย 9 ขั้นตอนข้างต้น

รหัส : https://github.com/cloudify-cosmo/cloudify-packager/tree/3.2m4/image-builder

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