OS Builder/Run under emulation

From OLPC
Jump to: navigation, search

Purpose: bootstrapping XO-4 to Fedora 20 using QEMU.

Outcome: a .zd file for installation.

Ingredients

  • an XO-4, the target,
  • a conventional 32-bit or 64-bit computer running Ubuntu 14.04, the host,
  • a USB drive.

Recipe

  • install needed tools on the host,
apt-get install qemu-system-arm libguestfs-tools
wget http://mirror.aarnet.edu.au/pub/fedora/linux/releases/20/Images/armhfp/Fedora-Minimal-armhfp-20-1-sda.raw.xz
  • decompress and copy the image
xzcat Fedora-Minimal-armhfp-20-1-sda.raw.xz > Fedora-Minimal-armhfp-20-1-sda.raw
  • extract the kernel and initramfs from the image,
sudo virt-copy-out -a Fedora-Minimal-armhfp-20-1-sda.raw \
   /boot/vmlinuz-3.11.10-301.fc20.armv7hl .
sudo virt-copy-out -a Fedora-Minimal-armhfp-20-1-sda.raw \
   /boot/initramfs-3.11.10-301.fc20.armv7hl.img .
  • resize the disk image
qemu-img resize Fedora-Minimal-armhfp-20-1-sda.raw +10G
  • boot the emulated system,
sudo qemu-system-arm -machine vexpress-a9 -m 1024 -nographic \
   -net nic -net user \
   -append "console=ttyAMA0,115200n8 rw root=/dev/mmcblk0p3 rootwait physmap.enabled=0" \
   -kernel vmlinuz-3.11.10-301.fc20.armv7hl \
   -initrd initramfs-3.11.10-301.fc20.armv7hl.img \
   -sd Fedora-Minimal-armhfp-20-1-sda.raw
  • complete the Fedora guided installation,
  • grow the filesystem to fit the disk image,
sudo resize2fs /dev/mmcblk0p3