This script assumes that the rootfs git repo has been cloned into
the same directory as the script. It also assumes that qemu is installed.
John Dulaney
#!/bin/bash -x
# script for creating a filesystem image for Fedora's Aarch64 port
# Copyright 2012 John Dulaney jdulaney(a)fedoraproject.org
# Licensed under the GPLv3+
# Dependancies: qemu
# Set image size
imgsize=8G
# Create image
qemu-img create rootfs.img $imgsize
# Add partitions to the image, a 50 MB DOS bootable partition for
# uboot, and the rest will be for /
parted rootfs.img mklabel msdos
parted rootfs.img mkpart primary fat16 1 50
parted rootfs.img mkpart primary ext3 50 $imgsize
parted rootfs.img set 1 boot on
# Mount the image in /tmp
mkdir /tmp/ext3
mkdir /tmp/vfat
sudo kpartx -a -v rootfs.img
sudo mkfs.vfat /dev/mapper/loop0p1
sudo mkfs.ext3 /dev/mapper/loop0p2
sudo mount /dev/mapper/loop0p1 /tmp/vfat
sudo mount /dev/mapper/loop0p2 /tmp/ext3
# Put uboot into the vfat partition for booting
wget
http://fedorapeople.org/groups/armv8/u-boot.bin
sudo cp u-boot.bin /tmp/vfat
sudo sync
sudo umount /tmp/vfat
# Copy file system into image
cd rootfs
sudo sh -c "find . -print | cpio -pdumv /tmp/ext3"
#Create /proc, /sys, /dev, etc. since Git doesn't seem to like empty directories
sudo mkdir /tmp/ext3/proc
sudo mkdir /tmp/ext3/sys
sudo mkdir /tmp/ext3/dev
sudo mkdir /tmp/ext3/tmp
sudo mkdir /tmp/ext3/var/tmp
# Create special files in /dev
chdir /tmp/ext3/dev
sudo mknod null c 1 3
sudo mknod zero c 1 5
sudo mknod tty c 5 0
sudo mknod console c 5 1
sudo mknod sda b 8 0
sudo mknod sda1 b 8 1
sudo mknod sda2 b 8 2
sudo mknod sda3 b 8 3
sudo mknod sda4 b 8 4
sudo mknod mmcblk0 b 179 0
sudo mknod mmcblk0p1 b 179 1
sudo mknod mmcblk0p2 b 179 2
sudo mknod mmcblk0p3 b 179 3
sudo mknod mmcblk0p4 b 179 4
sudo mknod ttyO0 c 253 0
sudo mknod ttyO1 c 253 1
sudo mknod ttyO2 c 253 2
sudo mknod ttyO3 c 253 3
sudo mknod tty2 c 4 2
sudo mknod tty3 c 4 3
sudo mknod tty4 c 4 4
sudo mknod ttyS0 c 4 64
sudo mknod ttyS1 c 4 65
sudo mknod ttyS2 c 4 66
sudo mknod ttyS3 c 4 67
sudo chmod a+rw null zero
# Unmount the image.
sudo sync
sudo umount /tmp/ext3
echo 'Completed.'