initial commit - working archlinuxarm boot for versatile express emulation
This commit is contained in:
commit
282f805d6d
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
# image files
|
||||
*.qcow2
|
||||
*.raw
|
||||
|
||||
# tarballs
|
||||
*.tar.*
|
64
create.sh
Executable file
64
create.sh
Executable file
@ -0,0 +1,64 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -eu
|
||||
|
||||
# this script prepares an archlinuxarm image for use with start.sh
|
||||
|
||||
OUTFILE=${OUTFILE:-armv7h.raw}
|
||||
SIZE=${SIZE:-64G}
|
||||
|
||||
_builddir=build
|
||||
_outfile=$_builddir/$(basename $OUTFILE)
|
||||
|
||||
mkdir -p $_builddir
|
||||
|
||||
# create an empty image
|
||||
rm -f $_outfile
|
||||
qemu-img create -f raw $_outfile $SIZE
|
||||
|
||||
# setup an available loop device
|
||||
_loopdev=$(losetup -f --show $_outfile)
|
||||
|
||||
# setup an error exit handler for cleanup
|
||||
function cleanup {
|
||||
echo "exiting due to earlier errors..." >&2
|
||||
for part in p1 p2; do
|
||||
umount $_loopdev$part || true
|
||||
done
|
||||
losetup -d $_loopdev || true
|
||||
rm -rf $_builddir/boot $_builddir/root
|
||||
rm -f $_outfile
|
||||
}
|
||||
trap cleanup ERR
|
||||
|
||||
# fetch latest archlinuxarm tarball
|
||||
wget -nc http://os.archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz
|
||||
|
||||
# following are the installation instructions provided on
|
||||
# https://archlinuxarm.org/platforms/armv7/arm/versatile-express
|
||||
dd if=/dev/zero of=$_loopdev bs=1M count=8
|
||||
parted -s $_loopdev \
|
||||
mklabel gpt \
|
||||
mkpart ESP fat32 1MiB 513MiB \
|
||||
set 1 boot on \
|
||||
mkpart primary ext4 513MiB 100%
|
||||
mkfs.vfat -F 32 ${_loopdev}p1
|
||||
mkdir -p $_builddir/boot
|
||||
mount ${_loopdev}p1 $_builddir/boot
|
||||
mkfs.ext4 ${_loopdev}p2
|
||||
mkdir $_builddir/root
|
||||
mount ${_loopdev}p2 $_builddir/root
|
||||
bsdtar -vxpf ArchLinuxARM-armv7-latest.tar.gz -C $_builddir/root
|
||||
sync
|
||||
mv -v $_builddir/root/boot/* $_builddir/boot
|
||||
cat >> $_builddir/root/etc/fstab << EOF
|
||||
/dev/mmcblk0p1 /boot vfat defaults 0 0
|
||||
EOF
|
||||
|
||||
# tie up any loose ends
|
||||
for part in p1 p2; do
|
||||
umount $_loopdev$part
|
||||
done
|
||||
losetup -d $_loopdev
|
||||
mv -v $_outfile $OUTFILE
|
||||
rm -rf $_builddir
|
25
start.sh
Executable file
25
start.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
|
||||
IMAGE=${IMAGE:-armv7h.raw}
|
||||
|
||||
_loopdev=$(sudo losetup -f --show $IMAGE)
|
||||
_bootdir=.boot
|
||||
|
||||
function cleanup {
|
||||
sudo umount ${_loopdev}p1
|
||||
sudo losetup -d $_loopdev
|
||||
rm -rf $_bootdir
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
mkdir -p $_bootdir
|
||||
sudo mount ${_loopdev}p1 $_bootdir
|
||||
|
||||
qemu-system-arm \
|
||||
-M vexpress-a9 \
|
||||
-dtb $_bootdir/dtbs/vexpress-v2p-ca9.dtb \
|
||||
-kernel $_bootdir/zImage \
|
||||
--append "root=/dev/mmcblk0p2 rw roottype=ext4 console=ttyAMA0" \
|
||||
-drive if=sd,driver=raw,cache=writeback,file=$IMAGE \
|
||||
--nographic \
|
||||
-snapshot
|
Loading…
Reference in New Issue
Block a user