我正在尝试在Amazon云中创build一个ec2实例的映像。 到目前为止,这已经有点冒险了。 我确实设法安装了Amazon的ec2-api-tools,比想象的要难。 然后我跑了:
ec2-bundle-vol -d /mnt -k pk-{key}.pem -c cert-{cert}.pem -u {uid} -s 1536
其中返回:
复制/进入图像文件/ mnt / image …不包括:
/sys/kernel/debug /sys/kernel/security /sys /proc /dev/pts /dev /dev /media /mnt /proc /sys /etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/z25_persistent-net.rules /mnt/image /mnt/img-mnt 1+0 records in 1+0 records out 1048576 bytes (1.0 MB) copied, 0.00677357 s, 155 MB/s mkfs.ext3: option requires an argument -- 'L' Usage: mkfs.ext3 [-c|-l filename] [-b block-size] [-f fragment-size] [-i bytes-per-inode] [-I inode-size] [-J journal-options] [-G meta group size] [-N number-of-inodes] [-m reserved-blocks-percentage] [-o creator-os] [-g blocks-per-group] [-L volume-label] [-M last-mounted-directory] [-O feature[,...]] [-r fs-revision] [-E extended-option[,...]] [-T fs-type] [-U UUID] [-jnqvFKSV] device [blocks-count] ERROR: execution failed: "mkfs.ext3 -F /mnt/image -U 1c001580-9118-4a50-9a25-dcf02be6d25f -L "
所以mkfs.ext3需要-L,这是一个卷名。 但是,ec2-bundle-vol似乎没有将卷名称作为参数,并且文档( http://docs.amazonwebservices.com/AmazonEC2/gsg/2006-06-26/creating-an-image。 HTML )似乎并不认为应该需要。 当然他们的示例命令:
# ec2-bundle-vol -d /mnt -k ~root/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem -u 495219933132 -s 1536
没有指定任何东西。
那么…有什么帮助? 我错过了什么?
那么,我没有弄清楚是什么原因导致了错误,但我确实find了一个更好的方法。
而不是从命令行使用ec2-bundle-vol来创build映像,事实certificate,您可以从AWS控制台执行此操作。
右键单击EC2选项卡中的实例下面列出的实例,创build图像是一个选项(如果亚马逊在他们的文档中提到过,那么会很好)。 这没有错误的工作,虽然它最终停止并重新启动实例,我没有料到。
经过一番研究,我发现标签参数缺less,因为它是一个空string(并不是如预期的那样)。 我不知道是谁的责任,但我find了解决办法。
注意 :我从来没有写过ruby单行。
在/usr/lib/ec2-ami-tools/lib/ec2/platform/linux/image.rb文件的第141行周围replace:
mkfs += [ '-L', label ] if label
通过
mkfs += [ '-L', label ] if !label.to_s.empty?
然后它应该工作!
尝试标记你的根分区:
$ sudo e2label /dev/sda1 root
它为我工作。
使用更新版本的ec2-ami-tools(1.3.49953)。 人们可以从这里拿走它:
https://launchpad.net/ubuntu/lucid/amd64/ec2-ami-tools/1.3.49953-0ubuntu1~lucid1 (对于64位)
和
https://launchpad.net/ubuntu/lucid/i386/ec2-ami-tools/1.3.49953-0ubuntu1~lucid1(32位)