After following Brian's guide on installing
Fedora 15 on OpenStack, I thought I would try my hand at Fedora 16. There where a few differences.
Filesystem Differences
Brian's guide installed Fedora using LVM. I installed Fedora without LVM (there's a little checkbox on the partition page of Anaconda). Without LVM, I can skip the steps on listing the physical volumes and logical volumes to find the start and end of the partition.
Also, Fedora 16 uses gpt partition. fdisk command cannot read the partition table, therefore I had to install gdisk (in epel). Running it has very similar command and output:
$ /usr/sbin/gdisk -l /tmp/fedora16
GPT fdisk (gdisk) version 0.8.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk /tmp/fedora16: 20971520 sectors, 10.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): A351197B-8233-4811-9B28-69A1DE121AD2
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 20971486
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)
Number Start (sector) End (sector) Size Code Name
1 2048 4095 1024.0 KiB EF02
2 4096 1028095 500.0 MiB EF00 ext4
3 1028096 16777215 7.5 GiB 0700
4 16777216 20969471 2.0 GiB 8200
Then, to extract the image:
dd if=/tmp/fedora16 of=/tmp/server-extract.img skip=1028096 count=$((16777215-1028096)) bs=512
SSH Key Differences
Brian's guide instructed you to create a /etc/rc.local. Fedora 16 sees the introduction of systemd, which no longer executes rc.local. Instead, it looks for the file /etc/rc.d/rc.local (possibly a symlink to /etc/rc.local?). This file needs to be executable and be sure to include the shebang.
Also, Fedora 16's selinux doesn't label the root file system correctly (
BUG), and simply making the .ssh directory doesn't not allow sshd to read it. To solve selinux problem, I disabled selinux (bad, bad me).
Common Commands
After installing Fedora 16 into an image, and extracting the kernel and ramdisk, there where a few commands that where executed over and over as I debugged the image:
Make the changes to the image:
sudo /usr/libexec/qemu-kvm -m 2048 -drive file=/tmp/fedora16 -net nic -net user -vnc 127.0.0.1:0 -cpu qemu64 -M rhel5.6.0 -smp 2 -daemonize
Extract the partition:
dd if=/tmp/fedora16 of=/tmp/server-extract.img skip=1028096 count=$((16777215-1028096)) bs=512
Start the VM to change the label on the image:
sudo /usr/libexec/qemu-kvm -m 2048 -drive file=/tmp/fedora16 -net nic -net user -vnc 127.0.0.1:0 -cpu qemu64 -M rhel5.6.0 -smp 2 -daemonize -drive file=/tmp/server-extract.img
Rename the image to something appropriate:
mv /tmp/server-extract.img /tmp/fedora16-extracted.img
Bundle the image for OpenStack:
euca-bundle-image --kernel aki-0000002e --ramdisk ari-0000002f -i /tmp/fedora16-extracted.img -r x86_64
Upload the image to OpenStack:
euca-upload-bundle -b derek-bucket -m /tmp/fedora16-extracted.img.manifest.xm
Register the image (this command completes fast, but openstack takes for ever to decrypt and untar the image):
euca-register derek-bucket/fedora16-extracted.img.manifest.xml
Now to build OSG packages for Fedora... maybe not.