diff --git a/README.md b/README.md new file mode 100644 index 0000000..64e2129 --- /dev/null +++ b/README.md @@ -0,0 +1,81 @@ +This is the Buildroot repoistory used to build system images and updates for the MynaPlayer project. + +BUILDING +-------- + +Building MynaPlayer is a process, though it requires decent hardware. + +Set up the required source code: + +``` +mkdir MYNA && cd MYNA +git clone -b v3.0.7 'https://github.com/OpenVPN/easy-rsa' +git clone -b 2020.05.x 'https://git.buildroot.net/buildroot' +git clone 'https://git.lumina-sensum.com/git/LuminaSensum/buildroot-MynaPlayer.git' +export BR2_EXTERNAL="$PWD/buildroot-MynaPlayer" +cd buildroot +git am ../buildroot-MynaPlayer/buildroot-patches/*.patch +cd .. +``` + +Create keys for RAUC updates: + +``` +cd easy-rsa +sed -i "s/extendedKeyUsage/#extendedKeyUsage/g" easy-rsa/easyrsa3/x509-types/code-signing +./easyrsa3/easyrsa init-pki +./easyrsa3/easyrsa build-ca +./easyrsa3/easyrsa gen-req rauc +./easyrsa3/easyrsa sign-req code-signing rauc +cd .. +echo "Certificate authority: $PWD/easy-rsa/pki/ca.crt" > certs.txt +echo "Private key: $PWD/easy-rsa/pki/private/rauc.key" >> certs.txt +echo "Public key: $PWD/easy-rsa/pki/issued/rauc.crt" >> certs.txt +mv certs.txt buildroot-MynaPlayer/board/myna-player-odyssey/utilities/certs.txt +``` + +Build the image: + +``` +cd buildroot +utils/brmake O=output_initramfs myna_player_odyssey_initramfs_defconfig +utils/brmake O=output_initramfs toolchain +utils/brmake O=output_initramfs -j8 +# If you get errors, run 'make O=output_initramfs -j1' to see the messages +utils/brmake O=output_rootfs myna_player_odyssey_defconfig +utils/brmake O=output_rootfs toolchain +utils/brmake O=output_rootfs -j8 +# If you get errors, run 'make O=output_rootfs -j1' to see the messages +cd .. +``` + +Copy RAUC bundles and keys to a server (jookia.org in this example): + +``` +ls buildroot/output_rootfs/images/ +# Find the file ending in *.raucb +# You can also just flash MynaPlayer.img using dd but it takes a long time +mv buildroot/output_rootfs/images/bundle-MynaPlayer-2020-08-06.fe2ca3ce-be36-4f33-94d4-e295cd0518be.raucb /usr/local/webapps/jookia/ +cp $PWD/easy-rsa/pki/ca.crt /usr/local/webapps/jookia +``` + +Install the update on the device from the server (jookia.org in this example): + +``` +wget 'https://www.jookia.org/ca.crt' +cp /etc/rauc/keyring.pem{,.bak} +mv ca.crt /etc/rauc/keyring.pem +rauc install https://www.jookia.org/bundle-MynaPlayer-2020-08-06.6d113d3a-f77f-447a-ad7d-b8d605824c00.raucb +mv /etc/rauc/keyring.pem{.bak,} +reboot +``` + +Future updates won't need to copy the keyring, a single 'rauc install' +invocation should download and install the image without trouble. + +You should now be running a system you've just built (check the kernel build date): + +``` +uname -a +# Linux MynaPlayer 5.8.0 #3 SMP PREEMPT Thu Aug 6 03:21:30 EDT 2020 armv7l GNU/Linux +```