Skip to content

Building for the RaspberryPi?Β #126

@chrisruk

Description

@chrisruk

Hi,

I'm just wondering if anyone has managed to build rumprun for the Pi?

I'm trying the following so far:

docker run -it resin/rpi-raspbian:jessie 

Then in the docker:

sudo apt-get update
sudo apt-get install make
sudo apt-get install git
sudo apt-get install gcc-4.9
sudo apt-get install zlib1g-dev

git clone https://github.com/dave-tucker/rumprun.git
git checkout raspberrypi

Modify:

./src-netbsd/sys/arch/arm/include/aeabi.h
./src-netbsd/sys/sys/cdbr.h
./src-netbsd/lib/libc/locale/setlocale_local.h
./src-netbsd/sys/crypto/camellia/camellia.h
./src-netbsd/crypto/external/bsd/openssl/dist/crypto/camellia/camellia.h

adding:

typedef	unsigned int size_t;

I also commented out

TARGETS+=	compiler_rt

In platform/Makefile.inc.

Then ran:

export HOST_CC=gcc-4.9
export CC=gcc-4.9

./build-rr.sh -b rpi -j4 hw -- -r -j4 -F ACFLAGS="-march=armv6k -march=armv6zk -mcpu=arm1176jz-s -mfloat-abi=hard" 

Which gave:

>>
>> Finished ./build-rr.sh for hw
>>
>> For Rumprun developers (if you're not sure, you don't need it):
. "/root/tucker2/rumprun/./obj-evbearmhf-el-hw-raspberrypi/config"
>>
>> toolchain tuple: arm-rumprun-netbsdelf-eabihf
>> cc wrapper: arm-rumprun-netbsdelf-eabihf-gcc
>> installed to "/root/tucker2/rumprun/./rumprun-raspberrypi"
>>
>> ./build-rr.sh ran successfully

I then did:

Created file rumprun-bake2.conf:

#
# rumpbake default configuration file
#

version 20150930

#
# First, define internal convenience sets.
#
create _foundation "basic components for the Rumprun unikernel"
	add _foundation				\
		-lrumpvfs			\
		-lrumpkern_bmktc		\
		-lrumpkern_mman			\
		-lrumpdev			\
		-lrumpfs_tmpfs			\
		-lrumpnet_config		\
		-lrumpnet			\
		-lrumpdev_bpf			\
		-lrumpdev_vnd			\
		-lrumpdev_rnd

create _virtio "virtio drivers"
	add _virtio				\
		-lrumpdev_virtio_if_vioif	\
		-lrumpdev_virtio_ld		\
		-lrumpdev_virtio_viornd		\
		-lrumpdev_pci_virtio		\
		-lrumpdev_pci

create _audio "audio subsystem and some PCI audio device drivers"
	add _audio				\
		-lrumpdev_audio			\
		-lrumpdev_audio_ac97		\
		-lrumpdev_pci_auich		\
		-lrumpdev_pci_eap		\
		-lrumpdev_pci_hdaudio		\
		-lrumpdev_hdaudio_hdafg

create _netinet "TCP/IP (v4)"
	add _netinet				\
		-lrumpnet_netinet		\
		-lrumpnet_net			\
		-lrumpnet

create _netinet6 "TCP/IP (v6)"
	add _netinet6				\
		-lrumpnet_netinet6		\
		-lrumpnet_net			\
		-lrumpnet

create _netunix "local domain sockets"
	add _netunix				\
		-lrumpnet_local			\
		-lrumpnet

create _stdfs "selection of file system drivers"
	add _stdfs				\
		-lrumpfs_ffs			\
		-lrumpfs_cd9660			\
		-lrumpfs_ext2fs			\
		-lrumpdev_disk			\
	-lrumpvfs

create _pciether "PCI Ethernet NIC drivers"
	add _pciether				\
		-lrumpdev_pci_if_wm		\
		-lrumpdev_miiphy		\
		-lrumpdev_pci

create _usb "USB stack incl. PCI USB host controllers"
	add _usb				\
		-lrumpdev_pci_usbhc		\
		-lrumpdev_usb			\
		-lrumpdev_umass			\
		-lrumpdev_scsipi		\
		-lrumpdev_pci

# this is a config so that it can be assimilated
create _sysproxy "system call proxy support"
	add _sysproxy				\
		-lrumpkern_sysproxy

create _miconf "general useful MI/pseudo driver set"
	assimilate _miconf		\
		_foundation		\
		_stdfs			\
		_sysproxy



create hw_generic2 "generic targets, includes (almost) all drivers"
	assimilate hw_generic2		\
		_miconf			\

CC=rumprun/rumprun-raspberrypi/bin/arm-rumprun-netbsdelf-eabihf-gcc
$CC 1.c -o a.out
rumprun-bake -c rumprun-bake2.conf hw_generic2 test2.bin a.out 
qemu-system-arm -cpu arm1176 -m 128 -M raspi2 -kernel test2.bin
qemu-system-arm -nographic -cpu arm1176 -m 256 -M raspi2 -serial mon:stdio -kernel test2.bin

However no output is produced either graphically or via the serial output (I listed the command for the serial version above). And it seems to give high CPU usage on all cores.

Without the custom conf file I get:

root@56604f6e742f:~# rumprun-bake hw_generic a2.bin a.out 

!!!
!!! NOTE: rumprun-bake is experimental. syntax may change in the future
!!!

/usr/bin/ld: cannot find -lrumpdev_virtio_if_vioif
/usr/bin/ld: cannot find -lrumpdev_virtio_ld
/usr/bin/ld: cannot find -lrumpdev_virtio_viornd
/usr/bin/ld: cannot find -lrumpdev_pci_virtio
/usr/bin/ld: cannot find -lrumpdev_pci
/usr/bin/ld: cannot find -lrumpdev_audio_ac97
/usr/bin/ld: cannot find -lrumpdev_pci_auich
/usr/bin/ld: cannot find -lrumpdev_pci_eap
/usr/bin/ld: cannot find -lrumpdev_pci_hdaudio
/usr/bin/ld: cannot find -lrumpdev_hdaudio_hdafg
/usr/bin/ld: cannot find -lrumpdev_pci_if_wm
/usr/bin/ld: cannot find -lrumpdev_miiphy
/usr/bin/ld: cannot find -lrumpdev_pci_usbhc
collect2: error: ld returned 1 exit status

Any suggestions would be most appreciated!

Cheers
Chris

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions