Debian8 build minix rpi samples

Install packages required

apt-get install build-essential curl git zlibc zlib1g zlib1g-dev dosfstools mtools

We also need to use a special build qemu-system-arm to emulate raspi2.

git clone https://github.com/0xabu/qemu.git -b raspi
git submodule update --init dtc
./configure
make -j$(nproc)
sudo make install

In this compile process we may need to install some packages.

git submodule update --init pixman
apt-get install autoconf
apt-get install libglib2.0-dev zlib1g-dev
apt-get install dh-autoreconf

More info at:
http://blog.3mdeb.com/2015/12/30/emulate-rapberry-pi-2-in-qemu/

Back to the main target, there is 2 samples to compile:

  • minix-rpi3
  • minix-rpi_clean

Samples build summary

minix-rpi3 – https://github.com/boricj/minix/tree/rpi3

Problem: Break on rpi-firmware checkout firmware

Solution: Got it from https://github.com/boricj/rpi-firmware, unpack it and copy to releasetools/rpi-firmware

End result

Disk image at /root/minix/minix-rpi3/minix-rpi3/minix_arm_sd_rpi2.img

To boot this image on kvm:
qemu-system-arm -M raspi2 -drive if=sd,cache=writeback,format=raw,file=/root/minix/minix-rpi3/minix-rpi3/minix_arm_sd_rpi2.img -bios /root/minix/minix-rpi3/obj.evbearm-el-rpi/work/fs/minix_rpi2.bin

Using local compiled qemu 2.6

/usr/local/bin/qemu-system-arm -M raspi2 -nographic -drive if=sd,cache=writeback,format=raw,file=/root/minix/minix-rpi3/minix-rpi3/minix_arm_sd_rpi2.img -bios /root/minix/minix-rpi3/obj.evbearm-el-rpi/work/fs/minix_rpi2.bin

Runing result

root@debian:~/minix/qemu# /usr/local/bin/qemu-system-arm -M raspi2 -nographic -drive if=sd,cache=writeback,format=raw,file=/root/minix/minix-rpi3/minix-rpi3/minix_arm_sd_rpi2.img -bios /root/minix/minix-rpi3/obj.evbearm-el-rpi/work/fs/minix_rpi2.bin

 

MINIX 3 unpacker for Raspberry Pi
Current mode: supervisor
Extracting modules…
kernel.bin size:0x0004CA10 address:0x00200000
mod01_ds.elf size:0x00021377 address:0x02000000
mod02_rs.elf size:0x00028AE0 address:0x02800000
mod03_pm.elf size:0x0007983B address:0x03000000
mod04_sched.elf size:0x000163B8 address:0x03800000
mod05_vfs.elf size:0x00113278 address:0x04000000
mod06_memory.elf size:0x0059086C address:0x04800000
mod07_tty.elf size:0x00040279 address:0x05000000
mod08_mfs.elf size:0x00027894 address:0x05800000
mod09_vm.elf size:0x000F6D77 address:0x06000000
mod10_pfs.elf size:0x0001987C address:0x06800000
mod11_init.elf size:0x0006C13C address:0x07000000
Jumping into kernel, argv[1]=”board_name=RPI_2_B console=tty00″

MINIX 3.3.0. Copyright 2014, Vrije Universiteit, Amsterdam, The Netherlands
MINIX is open source software, see http://www.minix3.org
pagefault in kernel at pc 0xf0425678 address 0x8
cpu 0 is_nested = 1 scheduled was: process -4 (idle0), pc = 0x0
idle0 -4 0x0
kernel panic: Unhandled kernel exception
kernel on CPU 0: 0xf04369c4 0xf0427488 0xf042726c 0xf0426f24 0xf0425dc4 0xf042fde8 0xf042de1c 0xf042e860 0x2028c0
MINIX will now reset.
Reset not supported


minix-rpi_clean – https://github.com/boricj/minix/tree/rpi_clean

End result

Disk image at /root/minix/minix-rpi_clean/minix-rpi_clean/minix_arm_sd_rpi.img

To boot this image on kvm:
qemu-system-arm -M raspi2 -drive if=sd,cache=writeback,format=raw,file=/root/minix/minix-rpi_clean/minix-rpi_clean/minix_arm_sd_rpi.img -bios /root/minix/minix-rpi_clean/obj.evbearm-el-rpi/work/fs/minix_rpi2.bin

Using local compiled qemu 2.6

/usr/local/bin/qemu-system-arm -M raspi2 -nographic -drive if=sd,cache=writeback,format=raw,file=/root/minix/minix-rpi_clean/minix-rpi_clean/minix_arm_sd_rpi.img -bios /root/minix/minix-rpi_clean/obj.evbearm-el-rpi/work/fs/minix_rpi2.bin

Runing result

root@debian:~/minix/qemu# /usr/local/bin/qemu-system-arm -M raspi2 -nographic -drive if=sd,cache=writeback,format=raw,file=/root/minix/minix-rpi_clean/minix-rpi_clean/minix_arm_sd_rpi.img -bios /root/minix/minix-rpi_clean/obj.evbearm-el-rpi/work/fs/minix_rpi2.bin

 

MINIX 3 unpacker for Raspberry Pi
Current mode: supervisor
Extracting modules…
kernel.bin size:0x0003FD50 address:0x00200000
mod01_ds.elf size:0x00017B4F address:0x02000000
mod02_rs.elf size:0x00021398 address:0x02800000
mod03_pm.elf size:0x000197F6 address:0x03000000
mod04_sched.elf size:0x0000EBE2 address:0x03800000
mod05_vfs.elf size:0x00030E57 address:0x04000000
mod06_memory.elf size:0x0029FF70 address:0x04800000
mod07_tty.elf size:0x000142DA address:0x05000000
mod08_mib.elf size:0x00018296 address:0x05800000
mod09_vm.elf size:0x0003513E address:0x06000000
mod10_pfs.elf size:0x0001222E address:0x06800000
mod11_mfs.elf size:0x000203BC address:0x07000000
mod12_init.elf size:0x00059B70 address:0x07800000
Jumping into kernel, argv[1]=”board_name=RPI_2_B console=tty00″

MINIX 3.4.0. Copyright 2014, Vrije Universiteit, Amsterdam, The Netherlands
MINIX is open source software, see http://www.minix3.org
Started VFS: 9 worker thread(s)
# ls
ls: not found