#!/usr/bin/env zsh # # Copyright (c) 2016 Dyne.org Foundation # ARM SDK is written and maintained by parazyd # # 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 . # # ARM SDK build script for BeagleBone Black devices (armhf) # -- settings -- device_name="beagleboneblack" arch="armhf" size=1666 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" sudo chown $USER ${strapdir}/lib make INSTALL_MOD_PATH=${strapdir} modules_install sudo chown root ${strapdir}/lib 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 # hack sudo cp .config ../${device_name}.config 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" }