Skip to content

Instantly share code, notes, and snippets.

@amalbuquerque
Created February 22, 2020 22:38
Show Gist options
  • Save amalbuquerque/6d2bbfb8ba80b606a4b68d200661800a to your computer and use it in GitHub Desktop.
Save amalbuquerque/6d2bbfb8ba80b606a4b68d200661800a to your computer and use it in GitHub Desktop.
Building and burning the Nerves firmware
~/projs/personal/minefield
❯ mix firmware
Nerves environment
MIX_TARGET: rpi0
MIX_ENV: dev
==> socket
Compiling 11 files (.ex)
Generated socket app
==> uboot_env
Compiling 7 files (.ex)
Generated uboot_env app
==> ring_logger
Compiling 4 files (.ex)
Generated ring_logger app
==> dns
Compiling 7 files (.ex)
Generated dns app
==> mdns
Compiling 5 files (.ex)
Generated mdns app
==> system_registry
Compiling 13 files (.ex)
Generated system_registry app
==> elixir_make
Compiling 1 file (.ex)
Generated elixir_make app
==> nerves_runtime
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_
runtime/ebin/../obj
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_runtime/ebin/../priv
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -I/home/andre/.nerves
/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/erts-10.2.5/include -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/lib/erl_interface-3.10.4/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -std=gnu99 -o /home/andre/projs/personal/minefield/_build/rpi0_dev
/lib/nerves_runtime/ebin/../obj/nerves_runtime.o src/nerves_runtime.c
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -I/home/andre/.nerves
/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/erts-10.2.5/include -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/lib/erl_interface-3.10.4/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -std=gnu99 -o /home/andre/projs/personal/minefield/_build/rpi0_dev
/lib/nerves_runtime/ebin/../obj/uevent.o src/uevent.c
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -I/home/andre/.nerves
/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/erts-10.2.5/include -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/lib/erl_interface-3.10.4/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -std=gnu99 -o /home/andre/projs/personal/minefield/_build/rpi0_dev
/lib/nerves_runtime/ebin/../obj/kmsg_tailer.o src/kmsg_tailer.c
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_runtime/ebin/../obj/nerves_runtime.o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_runtime/ebin/../obj/uevent.o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_runtime/ebin/../obj/kmsg_tailer.o -L/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/erts-10.2.5/lib -L/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1
/staging/usr/lib/erlang/lib/erl_interface-3.10.4/lib -lerts -lerl_interface -lei --sysroot=/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging -lmnl -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_runtime/ebin/../priv/nerves_runtime
Compiling 12 files (.ex)
Generated nerves_runtime app
==> toolshed
Compiling 8 files (.ex)
Generated toolshed app
==> nerves_firmware_ssh
Compiling 9 files (.ex)
Generated nerves_firmware_ssh app
==> one_dhcpd
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/one_dhcpd/ebin/../priv
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/one_dhcpd/ebin/../obj
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/one_dhcpd/ebin/../obj/arp_set.o src/arp_set.c /home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/one_dhcpd/ebin/../priv/arp_set --sysroot=/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/one_dhcpd/ebin/../obj/arp_set.o
Compiling 9 files (.ex)
Generated one_dhcpd app
==> nerves_network_interface
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../priv
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../obj
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/erts-10.2.5/include -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/lib/erl_interface-3.10.4/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -std=c99 -D_XOPEN_SOURCE=600 -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../obj/erlcmd.o src/erlcmd.c /home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/erts-10.2.5/include -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/lib/erl_interface-3.10.4/include -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -std=c99 -D_XOPEN_SOURCE=600 -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../obj/netif.o src/netif.c
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../obj/erlcmd.o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../obj/netif.o -L/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/erts-10.2.5/lib -L/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/lib/erl_interface-3.10.4/lib -lerts -lerl_interface -lei --sysroot=/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging -lmnl -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../priv/netif
# setuid root net_basic so that it can configure network interfaces
SUDO_ASKPASS= true -- sh -c 'chown root:root /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../priv/netif; chmod +s /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network_interface/ebin/../priv/netif'
Compiling 3 files (.ex)
Generated nerves_network_interface app
==> nerves_wpa_supplicant
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../priv
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../obj/wpa_ctrl
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../obj/wpa_ex.o src/wpa_ex.c
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../obj/wpa_ctrl/os_unix.o src/wpa_ctrl/os_unix.c
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -DCONFIG_CTRL_IFACE -DCONFIG_CTRL_IFACE_UNIX -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../obj/wpa_ctrl/wpa_ctrl.o src/wpa_ctrl/wpa_ctrl.c
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../obj/wpa_ex.o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../obj/wpa_ctrl/os_unix.o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../obj/wpa_ctrl/wpa_ctrl.o --sysroot=/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging -lrt -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../priv/wpa_ex
# setuid root wpa_ex so that it can interact with the wpa_supplicant
SUDO_ASKPASS= true -- sh -c 'chown root:root /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../priv/wpa_ex; chmod +s /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_wpa_supplicant/ebin/../priv/wpa_ex'
Compiling 3 files (.ex)
Generated nerves_wpa_supplicant app
==> nerves_network
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network/ebin/../obj
mkdir -p /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network/ebin/../priv
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -I/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/include -std=c99 -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network/ebin/../obj/udhcpc_wrapper.o src/udhcpc_wrapper.c
/home/andre/.nerves/artifacts/nerves_toolchain_armv6_rpi_linux_gnueabi-linux_x86_64-1.1.0/bin/armv6-rpi-linux-gnueabi-gcc /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network/ebin/../obj/udhcpc_wrapper.o -L/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/erts-10.2.5/lib -L/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging/usr/lib/erlang/lib/erl_interface-3.10.4/lib -lerts -lerl_interface -lei --sysroot=/home/andre/.nerves/artifacts/nerves_system_rpi0-portable-1.7.1/staging -o /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network/ebin/../priv/udhcpc_wrapper
# setuid root udhcpc_wrapper so that it can call udhcpc
SUDO_ASKPASS= true -- sh -c 'chown root:root /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network/ebin/../priv/udhcpc_wrapper; chmod +s /home/andre/projs/personal/minefield/_build/rpi0_dev/lib/nerves_network/ebin/../priv/udhcpc_wrapper'
Compiling 12 files (.ex)
Generated nerves_network app
==> nerves_init_gadget
Compiling 5 files (.ex)
Generated nerves_init_gadget app
==> shoehorn
Compiling 7 files (.ex)
Generated shoehorn app
==> minefield
Compiling 2 files (.ex)
Generated minefield app
|nerves_bootstrap| Building OTP Release...
Updating base firmware image with Erlang release...
Copying rootfs_overlay: /home/andre/projs/personal/minefield/rootfs_overlay
Parallel mksquashfs: Using 8 processors
Creating 4.0 filesystem on /home/andre/projs/personal/minefield/_build/_nerves-tmp/combined.squashfs, block size 131072.
Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
compressed data, compressed metadata, compressed fragments, compressed xattrs
duplicates are removed
Filesystem size 24522.59 Kbytes (23.95 Mbytes)
56.12% of uncompressed filesystem size (43696.65 Kbytes)
Inode table size 19705 bytes (19.24 Kbytes)
29.35% of uncompressed inode table size (67139 bytes)
Directory table size 21669 bytes (21.16 Kbytes)
42.33% of uncompressed directory table size (51185 bytes)
Number of duplicate files found 11
Number of inodes 2046
Number of files 1644
Number of fragments 191
Number of symbolic links 142
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 260
Number of ids (unique uids + gids) 3
Number of uids 3
root (0)
www-data (33)
andre (1000)
Number of gids 3
root (0)
www-data (33)
andre (1000)
Building /home/andre/projs/personal/minefield/_build/rpi0_dev/nerves/images/minefield.fw...
~/projs/personal/minefield 30s
❯ mix firmware.burn
Nerves environment
MIX_TARGET: rpi0
MIX_ENV: dev
|nerves_bootstrap| Building OTP Release...
Updating base firmware image with Erlang release...
Copying rootfs_overlay: /home/andre/projs/personal/minefield/rootfs_overlay
Parallel mksquashfs: Using 8 processors
Creating 4.0 filesystem on /home/andre/projs/personal/minefield/_build/_nerves-tmp/combined.squashfs, block size 131072.
Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
compressed data, compressed metadata, compressed fragments, compressed xattrs
duplicates are removed
Filesystem size 24522.58 Kbytes (23.95 Mbytes)
56.12% of uncompressed filesystem size (43696.65 Kbytes)
Inode table size 19703 bytes (19.24 Kbytes)
29.35% of uncompressed inode table size (67139 bytes)
Directory table size 21658 bytes (21.15 Kbytes)
42.31% of uncompressed directory table size (51185 bytes)
Number of duplicate files found 11
Number of inodes 2046
Number of files 1644
Number of fragments 191
Number of symbolic links 142
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 260
Number of ids (unique uids + gids) 3
Number of uids 3
root (0)
www-data (33)
andre (1000)
Number of gids 3
root (0)
www-data (33)
andre (1000)
Building /home/andre/projs/personal/minefield/_build/rpi0_dev/nerves/images/minefield.fw...
Use 28.83 GiB memory card found at /dev/sda? [Yn] Y
|====================================| 100% (31.74 / 31.74) MB
Success!
Elapsed time: 6.805 s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment