个人工具

“UbuntuHelp:UEC/CreateYourImage”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
(创建新页面为 '{{From|https://help.ubuntu.com/community/UEC/CreateYourImage}} {{Languages|UbuntuHelp:UEC/CreateYourImage}} == Creating your own image == There are a few different ways one can ...')
 
 
第36行: 第36行:
  
 
mkdir ramdisk
 
mkdir ramdisk
sudo sh -c 'grep -q acpiphp ||
+
sudo sh -c 'grep -q acpiphp /etc/initramfs-tools/modules ||
 
   printf "#acpiphp needed for ebs\nacpiphp\n" > /etc/initramfs-tools/modules'
 
   printf "#acpiphp needed for ebs\nacpiphp\n" > /etc/initramfs-tools/modules'
 
sudo mkinitramfs -o ./ramdisk/initrd.img-$(uname -r)
 
sudo mkinitramfs -o ./ramdisk/initrd.img-$(uname -r)

2010年5月20日 (四) 00:38的最新版本

Creating your own image

There are a few different ways one can create his own image.

Eucalyptus procedure

The Eucalyptus project is proposing an alternate guide to create images

Using vmbuilder

If you would want to author your own image, you can use the vmbuilder utility utility to create an image that will run in Eucalyptus. First, create a partition description file called 'part'. The contents describe the size, types, and mount points of your VM disk partitions:

$ cat > part <<EOF
root 400
/mnt/ephemeral 2000 /dev/sda2 
swap 1 /dev/sda3
EOF

Next, create a simple script called 'firstboot' that will be executed the first time your image boots inside Eucalyptus to install an ssh daemon. In a file called 'firstboot' create the shell script:

$ cat >firstboot <<EOF
#!/bin/sh
apt-get -y install openssh-server 
EOF

Then, create the image with vmbuilder passing the name of the script file as an argument so that it can be installed. Note that even though we are asking vmbuilder to create a 'xen' image (this simply just means that the output format of the image is a disk partition), the resulting image will boot in Eucalyptus using KVM.

sudo vmbuilder xen ubuntu --part ./part --firstboot ./firstboot

Next, you will need to bundle, upload and register a kernel, ramdisk and finally your image. Using the EC2 API tools, perform the following steps:

mkdir kernel
euca-bundle-image --image /boot/vmlinuz-$(uname -r) \
  --destination ./kernel --kernel true
euca-upload-bundle --bucket kernel \
  --manifest ./kernel/vmlinuz-$(uname -r).manifest.xml
EKI=`euca-register kernel/vmlinuz-$(uname -r).manifest.xml | awk '{print $2}'`
echo $EKI

mkdir ramdisk
sudo sh -c 'grep -q acpiphp /etc/initramfs-tools/modules ||
   printf "#acpiphp needed for ebs\nacpiphp\n" > /etc/initramfs-tools/modules'
sudo mkinitramfs -o ./ramdisk/initrd.img-$(uname -r)
euca-bundle-image --image ./ramdisk/initrd.img-$(uname -r) \
   --destination ./ramdisk --ramdisk true
euca-upload-bundle --bucket ramdisk \
   --manifest ramdisk/initrd.img-$(uname -r).manifest.xml
ERI=`euca-register ramdisk/initrd.img-$(uname -r).manifest.xml | awk '{print $2}'`
echo $ERI

mkdir image 
euca-bundle-image --image ubuntu-xen/root.img \
   --destination ./image --kernel $EKI --ramdisk $ERI
euca-upload-bundle --bucket image --manifest ./image/root.img.manifest.xml
EMI=`euca-register image/root.img.manifest.xml | awk '{print $2}'`
echo $EMI

Note the shell variables that have been set in the above code snippets. They will be used to test the installation in the steps below. Now, your kernel, ramdisk and image will have been uploaded into Eucalyptus and should be ready to run. To confirm, run the following command:

euca-describe-images

You should see a registered kernel, ramdisk and image and they should be marked as 'available'. Please note: if you are preparing the bundle on a machine that uses encrypted filesystems be aware that you cannot bundle the machine ramdisk for your AMI. This is because your local ramdisk includes routines to decrypt your local encrypted filesystem and these will make the instance crash at boot (as the encrypted filesystem does not exist).