You are not logged in.
after having some trouble getting archlinux running on amazon ec2, i want to share my steps of how to get things working.
this is no deepdive tutorial on ec2 in general, nor a "run a server"-guide. i prerequisite you have a amazon ec2, s3 account and a basic understanding of amazon cloud service.
we will bootstrap our archlinux from within a running karmic instance, provided by the ubuntu folks. they ship a recent kernel 2.6.31-302-ec2, amazon still has a 2.6.21 which will have trouble with current udev-versions.
official ubuntu ami and informations can be found here: https://help.ubuntu.com/community/EC2StartersGuide
*** step I - starting a ubuntu instance ***
start up ami-a62a01d2 - (ubuntu 9.10 europe) and login (as user ubuntu) via ssh
*** step II - prepare archlinux chroot ***
# change to root
sudo su
cd /
# mount newarch on existing ubuntu swap partition
mkdir /newarch
swapoff /dev/sda3
mkfs.ext3 /dev/sda3
mount /dev/sda3 /newarch
# download and extract pacman.static
wget http://repo.archlinux.fr/i686/pacman-static-3.2.2-1.pkg.tar.gz
tar xzvf pacman-static-3.2.2-1.pkg.tar.gz
mkdir -p /newarch/var/lib/pacman
cat >/etc/pacman.conf <<\EOF
[options]
HoldPkg = pacman glibc
SyncFirst = pacman
[core]
Server = http://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/i686
Server = http://mirror.umoss.org/archlinux/$repo/os/i686
Server = http://mirror.rit.edu/archlinux/$repo/os/i686
Server = http://mirrors.gigenet.com/archlinux/$repo/os/i686
Include = /etc/pacman.d/mirrorlist
[extra]
Server = http://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/i686
Server = http://mirror.umoss.org/archlinux/$repo/os/i686
Server = http://mirror.rit.edu/archlinux/$repo/os/i686
Server = http://mirrors.gigenet.com/archlinux/$repo/os/i686
Include = /etc/pacman.d/mirrorlist
[community]
Server = http://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/i686
Server = http://mirror.umoss.org/archlinux/$repo/os/i686
Server = http://mirror.rit.edu/archlinux/$repo/os/i686
Server = http://mirrors.gigenet.com/archlinux/$repo/os/i686
Include = /etc/pacman.d/mirrorlist
EOF
pacman.static --noconfirm -Sy base -r /newarch
# prepare chroot
mount /dev/ /newarch/dev/ --bind
mount /sys/ /newarch/sys/ --bind
mount /proc/ /newarch/proc/ --bind
cp /etc/resolv.conf /newarch/etc/
cp -R /lib/modules/2.6.31-302-ec2 /newarch/lib/modules/
*** step III - entering chroot, complete installation and leaving chroot ***
# entering chroot
chroot /newarch
cat >/etc/locale.gen <<\EOF
en_US.UTF-8 UTF-8
en_US ISO-8859-1
EOF
locale-gen
# TODO do we really need this ?
grep -v rootfs /proc/mounts > /etc/mtab
cat >/etc/fstab <<\EOF
# /etc/fstab: static file system information.
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/sda3 None swap defaults 0 0
/dev/sda1 / ext3 defaults 0 0
/dev/sda2 /mnt ext3 defaults 0 0
EOF
# take a mirror in your country
cat >/etc/pacman.d/mirrorlist <<\EOF
Server = http://archlinux.limun.org/$repo/os/i686
Server = ftp://www.archlinuxppc.org/i686/$repo/os/i686
Server = ftp://mirror.giantix-server.de/archlinux/$repo/os/i686
Server = http://mirror.giantix-server.de/archlinux/$repo/os/i686
Server = ftp://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/i686
Server = http://ftp5.gwdg.de/pub/linux/archlinux/$repo/os/i686
Server = ftp://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/i686
Server = http://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/i686
Server = ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/i686
Server = http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/i686
EOF
# install openssh
pacman --noconfirm -S openssh curl
# add sshd in DAEMONS array
sed -i 's/netfs crond)/netfs crond sshd)/' /etc/rc.conf
# enable remote access
cat >/etc/hosts.allow <<\EOF
sshd: ALL: ALLOW
EOF
cat >/etc/rc.local <<\EOF
mkdir -p /root/.ssh
curl --retry 3 --retry-delay 5 --silent --fail -o /root/.ssh/authorized_keys http://169.254.169.254/1.0/meta-data/public-keys/0/openssh-key
if curl --retry 3 --retry-delay 5 --silent --fail -o /root/user-data http://169.254.169.254/1.0/user-data; then
bash /root/user-data
fi
rm -f /root/user-data
EOF
# leaving chroot
exit
*** step IV - install ec2 tools and do some cleanup ***
# enable multiverse in source.list
sed -i 's/karmic main universe/karmic main universe multiverse/' /etc/apt/sources.list
apt-get update
apt-get --yes install ec2-api-tools ec2-ami-tools
# do some cleanup before rebundling
rm -f /root/.*hist* $HOME/.*hist*
rm -f /var/log/*.gz
*** step V - export your amazon security credentials ***
export AMAZON_USER_ID='XXXXXXXXXXX'
export AMAZON_ACCESS_KEY_ID='XXXXXXXXXXXXXX'
export AMAZON_SECRET_ACCESS_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
export RELEASE=`date '+%Y%m%d%H%M%S'`
# enter your s3 bucket here
export BUCKET="XXXXXXXXXXXXX"
export PREFIX="archlinux-i686-${RELEASE}"
cat >/mnt/pk.pem <<\EOF
-----BEGIN PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX
-----END PRIVATE KEY-----
EOF
cat >/mnt/cert.pem <<\EOF
-----BEGIN CERTIFICATE-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX
-----END CERTIFICATE-----
EOF
export EC2_PRIVATE_KEY=/mnt/pk.pem
export EC2_CERT=/mnt/cert.pem
*** step VI - bundle, upload and register your archlinux instance ***
ec2-bundle-vol \
-v /newarch \
-r i386 \
-d /mnt \
-p ${PREFIX} \
-u ${AMAZON_USER_ID} \
-k ${EC2_PRIVATE_KEY} \
-c ${EC2_CERT} \
-s 10000 \
-e /mnt,/root
ec2-upload-bundle \
-b ${BUCKET} \
-m /mnt/${PREFIX}.manifest.xml \
-a ${AMAZON_ACCESS_KEY_ID} \
-s ${AMAZON_SECRET_ACCESS_KEY}
ec2-register --region eu-west-1 -K ${EC2_PRIVATE_KEY} -C ${EC2_CERT} ${BUCKET}/${PREFIX}.manifest.xml
the last command will print out something like this:
IMAGE ami-affbd0db
congratulations, this is your very own archlinux ami.
regards
jan zimmek
Offline
Cool stuff jzimmek - you should consider adding it to the wiki, which is more appropriate for howtos like this.
Offline
Thanks for the excelent tutorial, I've followed (when the instructions still working) it and sucessfully generated my ami, (now that pacman-static doesn't exists its a bit tricky)... now my only problem is that instances aren't booting, the log is also empty... maybe the kernel version isn't compatible or something similar? Any suggestions? Thank you
Last edited by RkG (2010-06-23 02:29:58)
"Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity." — Jazz composer and bassist, Charles Mingus
Offline
Just curious, how much do you end up paying for archlinux ami? Do you think I can convert my free-trial ubuntu ami into Archlinux? That would be great.
Also, are there any archlinux pre-made ami's available?
Last edited by drozzy (2012-06-26 17:23:00)
Offline
Just curious, how much do you end up paying for archlinux ami? Do you think I can convert my free-trial ubuntu ami into Archlinux? That would be great.
Also, are there any archlinux pre-made ami's available?
I run this instance https://aws.amazon.com/amis/archlinux under free tier. No issues of being charged at all.
Last edited by shadyabhi (2012-06-29 05:46:39)
My blog:-
http://blog.abhijeetr.com
Offline