tbeaglebone build - arm-sdk - os build toolkit for various embedded devices HTML git clone https://git.parazyd.org/arm-sdk DIR Log DIR Files DIR Refs DIR Submodules DIR README DIR LICENSE --- DIR commit fab5000ac84100acff46f291eca125be5c5e394f DIR parent 1a5d313f9b0a9e7576d33c84d3fea18d4f5829a1 HTML Author: parazyd <parazyd@dyne.org> Date: Mon, 25 Apr 2016 17:56:15 +0200 beaglebone build Diffstat: M README.md | 21 +++++++++++---------- M arm/init-arm | 1 + M arm/profiles/common-devuan | 6 +++--- A arm/scripts/beaglebone-black.sh | 140 +++++++++++++++++++++++++++++++ 4 files changed, 155 insertions(+), 13 deletions(-) --- DIR diff --git a/README.md b/README.md t@@ -16,7 +16,7 @@ from shell scripts. For a Debian-based OS, install the following packages: ``` -gnupg2 debootstrap curl rsync gcc-arm-none-eabi parted kpartx qemu-user-static sudo git-core parted gcc-multilib lib32z1 u-boot-tools device-tree-compiler cgpt xz-utils +gnupg2 debootstrap curl rsync gcc-arm-none-eabi parted kpartx qemu-user-static sudo git-core parted gcc-multilib lib32z1 u-boot-tools device-tree-compiler cgpt xz-utils lzop ``` On any other, find the equivalents of the aforementioned packages. t@@ -53,13 +53,14 @@ you can choose between these distros: and one of the following devices: -* `raspi2` -* `bananapi` -* `bananapro` -* `cubieboard2` -* `cubietruck` -* `chromeacer` -* `odroidxu` +* `raspi2` - Raspberry Pi 2 and 3 +* `bananapi` - Banana Pi +* `bananapro` - Banana Pi Pro +* `cubieboard2` - Cubieboard 2 +* `cubietruck` - Cubietruck +* `chromeacer` - Acer ARM Chromebook +* `odroidxu` - ODROID-XU +* `bbb`- BeagleBone Black ``` ; init devuan raspi2 t@@ -87,8 +88,8 @@ If you are using a custom toolchain, add it to the PATH as described. instead. ### Raspberry Pi 2 -* This build script will create an image that also works on the Raspberry Pi 3. - It also includes the required firmware for getting onboard Wifi/Bluetooth +* This build script will create an image that works on the Raspberry Pi 3 as + well. It also includes the required firmware for getting onboard Wifi/Bluetooth working. ### Acer Chromebook DIR diff --git a/arm/init-arm b/arm/init-arm t@@ -41,6 +41,7 @@ init() { "cubietruck" "$R/arm/scripts/cubietruck.sh" "chromeacer" "$R/arm/scripts/chromebook-acer.sh" "odroidxu" "$R/arm/scripts/odroid-xu.sh" + "bbb" "$R/arm/scripts/beaglebone-black.sh" ) arm_build_device=${arm_map[$armdev]} DIR diff --git a/arm/profiles/common-devuan b/arm/profiles/common-devuan t@@ -242,6 +242,9 @@ ${device_name}-secondstage() { write-debconf write-third-stage + export ARCH=arm + export CROSS_COMPILE=${compiler} + notice "Finished second-stage" notice "Next step is: ${device_name}-thirdstage" } t@@ -411,9 +414,6 @@ copy-kernel-config() { cd ${strapdir}/usr/src/kernel cp -v ${workdir}/../kernel-configs/${device_name}.config .config sudo cp -v ${workdir}/../kernel-configs/${device_name}.config ../${device_name}.config - - export ARCH=arm - export CROSS_COMPILE=${compiler} } make-kernel-modules() { DIR diff --git a/arm/scripts/beaglebone-black.sh b/arm/scripts/beaglebone-black.sh t@@ -0,0 +1,140 @@ +#!/usr/bin/env zsh +# +# Copyright (c) 2016 Dyne.org Foundation +# ARM SDK is written and maintained by parazyd <parazyd@dyne.org> +# +# This file is part of ARM SDK +# +# This source code is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This software is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this source code. If not, see <http://www.gnu.org/licenses/>. +# +# ARM SDK build script for BeagleBone Black devices (armhf) + +# -- settings -- +device_name="beagleboneblack" +arch="armhf" +size=1337 +extra_packages=() +# Ones below should not need changing +parted_boot=(fat32 2048s 264191s) +parted_root=(ext4 264192s 100%) +inittab="T1:12345:respawn:/sbin/agetty 115200 ttyO0 vt100" +custmodules=() +# source common commands +workdir="$R/arm/${device_name}-build" +strapdir="${workdir}/${os}-${arch}" +source $common +image_name="${os}_${release}_${version}_${arch}_${device_name}" +# -- end settings -- + + +${device_name}-build-kernel() { + fn ${device_name}-build-kernel + + notice "Grabbing kernel sources" + + cd ${workdir} + sudo mkdir ${strapdir}/usr/src/kernel && sudo chown $USER ${strapdir}/usr/src/kernel + git clone https://github.com/beagleboard/linux -b 4.1 --depth 1 ${strapdir}/usr/src/kernel + + notice "Compiling kernel" + cd ${strapdir}/usr/src/kernel + ARCH=arm make bb.org_defconfig + make -j $(grep -c processor /proc/cpuinfo) + sudo cp arch/arm/boot/zImage ${workdir}/bootp/zImage + sudo mkdir -p ${workdir}/bootp/dtbs + sudo cp arch/arm/boot/dts/*.dtb ${workdir}/bootp/dtbs/ + notice "Installing kernel modules" + make INSTALL_MOD_PATH=${strapdir} modules_install + + notice "Creating uEnv.txt file" + cat << EOF | sudo tee ${workdir}/bootp/uEnv.txt +#u-boot eMMC specific overrides; Angstrom Distribution (BeagleBone Black) 2013-06-20 +kernel_file=zImage +initrd_file=uInitrd + +loadzimage=load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file} +loadinitrd=load mmc \${mmcdev}:\${mmcpart} 0x81000000 \${initrd_file}; setenv initrd_size \${filesize} +loadfdt=load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile} +# + +console=ttyO0,115200n8 +mmcroot=/dev/mmcblk0p2 rw net.ifnames=0 +mmcrootfstype=ext4 rootwait fixrtc + +##To disable HDMI/eMMC... +#optargs=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN,BB-BONE-EMMC-2G + +##3.1MP Camera Cape +#optargs=capemgr.disable_partno=BB-BONE-EMMC-2G + +mmcargs=setenv bootargs console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} \${optargs} + +#zImage: +uenvcmd=run loadzimage; run loadfdt; run mmcargs; bootz \${loadaddr} - \${fdtaddr} + +#zImage + uInitrd: where uInitrd has to be generated on the running system. +#boot_fdt=run loadzimage; run loadinitrd; run loadfdt +#uenvcmd=run boot_fdt; run mmcargs; bootz \${loadaddr} 0x81000000:\${initrd_size} \${fdtaddr} +EOF + + notice "Writing Xorg conf for future use" + cat << EOF | sudo tee ${strapdir}/root/xorg.conf +# For using Xorg, move this file to /etc/X11/xorg.conf +Section "Monitor" + Identifier "Builtin Default Monitor" +EndSection + +Section "Device" + Identifier "Builtin Default fbdev Device 0" + Driver "fbdev" + Option "SWCursor" "true" +EndSection + +Section "Screen" + Identifier "Builtin Default fbdev Screen 0" + Device "Builtin Default fbdev Device 0" + Monitor "Builtin Default Monitor" + DefaultDepth 16 + # Comment out the above and uncomment the below if using a + # bbb-view or bbb-exp + #DefaultDepth 24 +EndSection + +Section "ServerLayout" + Identifier "Builtin Default Layout" + Screen "Builtin Default fbdev Screen 0" +EndSection +EOF + + notice "Installing firmware..." + sudo rm -r ${strapdir}/lib/firmware + sudo chown $USER ${strapdir}/lib + get-kernel-firmware + cp -ra $R/tmp/firmware ${strapdir}/lib/firmware + cd ${strapdir}/usr/src/kernel + make INSTALL_MOD_PATH=${strapdir} firmware_install + make mrproper + ARCH=arm make bb.org_defconfig + make modules_prepare + + notice "Grabbing script for using usb as an ethernet device" + sudo wget -c \ + https://raw.github.com/RobertCNelson/tools/master/scripts/beaglebone-black-g-ether-load.sh \ + -O ${strapdir}/root/beaglebone-black-g-ether-load.sh + + cd ${workdir} + + notice "Finished building kernel" + notice "Next step is: ${device_name}-finalize" +}