Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Dec 2014 10:21:11 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org>
Subject:   building a raspberry pi -head image, the dirty non-root way
Message-ID:  <CAJ-Vmon7Tpcgs-OX0HT=1q9H0n4P2vXSLVYA-tsL1yehiHHDfA@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi,

In frustration, I decided to take a crack at building a raspberry pi
image from -HEAD without using crochet and trying to use the non-root
build things we have in the tree.

I was mostly successful. I'll be 100% successful after christmas. :)

So I don't lose it and so we can all hopefully improve upon it:


  1013  4:09    env
MAKEOBJDIRPREFIX=/home/adrian/work/freebsd/head-arm/obj make -j4
buildworld buildkernel
__MAKE_CONF=/home/adrian/work/freebsd/head-arm/make.conf
SRCCONF=/home/adrian/work/freebsd/head-arm/src.conf KERNCONF=RPI-B
INSTALL_AS_USER=yes TARGET_ARCH=armv6
DESTDIR=/home/adrian/work/freebsd/head-arm/root

then

  1013  4:09    env
MAKEOBJDIRPREFIX=/home/adrian/work/freebsd/head-arm/obj make -j4
buildworld buildkernel
__MAKE_CONF=/home/adrian/work/freebsd/head-arm/make.conf
SRCCONF=/home/adrian/work/freebsd/head-arm/src.conf KERNCONF=RPI-B
INSTALL_AS_USER=yes TARGET_ARCH=armv6
DESTDIR=/home/adrian/work/freebsd/head-arm/root

.. then I end up with a ../root/METALOG file, which I can feed into makefs:

  1052  5:25    makefs -t ffs -o version=2 -F ../root/METALOG -B le -m
1073741824 -M 1073741824 -f 1000000 -x ../rootfs-img ../root/

Then we need to build a FAT partition with all the boot bits. Ian gave
me a tarball of his; it turned out it included his netboot uboot
environment so I didn't finish booting. However, that shouldn't be
hard to fix.

So then: msdos partition:

cd ..


   54  dd if=/dev/zero of=msdos.img bs=1m count=32
   55  newfs_msdos ./msdos.img

.. and then populating it, using the "mtools" GNU package:

   35  for i in `ls rpigoo/`; do echo $i; mcopy -i ./test-img
rpigoo/$i "::$i" ; done

then to see what's in there:

   34  mdir -i ./test-img

Finally, build a complete image using mkimg:

   49  mkimg -s mbr -p fat32:=./test-img -p freebsd:=./bsd.img -o mbr-bsd.img

I'm not sure if we should be using the FAT32 partition type, but hey,
it actually worked.

So uboot booted, and then it tried netbooting. I'll redo this tonight
without Ian's custom environment and see if it boots to a login
prompt.

Now, I don't think I'm going to turn this into a public script - what
I am hoping we can do is teach nanobsd about these steps so it stops
being x86 and "build as root" centric.

The only gotcha so far? When using metalog to make an image with
makefs, the symlinks show up as owned by adrian, not by root. I'll go
set a bug for that soon.



-adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmon7Tpcgs-OX0HT=1q9H0n4P2vXSLVYA-tsL1yehiHHDfA>