URI:
       tbeaglebone-black.sh - 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
       ---
       tbeaglebone-black.sh (5282B)
       ---
            1 #!/usr/bin/env zsh
            2 # Copyright (c) 2016-2021 Ivan J. <parazyd@dyne.org>
            3 # This file is part of arm-sdk
            4 #
            5 # This source code is free software: you can redistribute it and/or modify
            6 # it under the terms of the GNU General Public License as published by
            7 # the Free Software Foundation, either version 3 of the License, or
            8 # (at your option) any later version.
            9 #
           10 # This software is distributed in the hope that it will be useful,
           11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
           12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
           13 # GNU General Public License for more details.
           14 #
           15 # You should have received a copy of the GNU General Public License
           16 # along with this source code. If not, see <http://www.gnu.org/licenses/>.
           17 
           18 ## kernel build script for BeagleBone Black boards
           19 
           20 ## settings & config
           21 vars+=(device_name arch size inittab)
           22 vars+=(parted_type parted_boot parted_root bootable_part bootfs)
           23 vars+=(gitkernel gitbranch)
           24 arrs+=(custmodules)
           25 
           26 device_name="beagleboneblack"
           27 arch="armhf"
           28 size=1666
           29 inittab=("T0:12345:respawn:/sbin/getty -L ttyS0 115200 vt100")
           30 
           31 parted_type="dos"
           32 bootfs="vfat"
           33 rootfs="ext4"
           34 dos_boot="fat32 2048s 264191s"
           35 dos_root="$rootfs 264192s 100%"
           36 bootable_part="1"
           37 
           38 extra_packages+=()
           39 custmodules=()
           40 
           41 gitkernel="https://github.com/beagleboard/linux"
           42 gitbranch="4.9"
           43 
           44 
           45 prebuild() {
           46         fn prebuild
           47         req=(device_name strapdir)
           48         ckreq || return 1
           49 
           50         notice "executing $device_name prebuild"
           51 
           52         copy-root-overlay
           53 
           54         mkdir -p $R/tmp/kernels/$device_name
           55 }
           56 
           57 postbuild() {
           58         fn postbuild
           59 
           60         notice "executing $device_name postbuild"
           61 
           62         notice "building u-boot"
           63 
           64         pushd $R/extra/u-boot
           65 
           66         git checkout -b build "v2017.05"
           67         wget "https://rcn-ee.com/repos/git/u-boot-patches/v2017.05/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch"
           68         patch -p1 < "0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch"
           69 
           70         make distclean
           71         make $MAKEOPTS ARCH=arm CROSS_COMPILE=$compiler am335x_evm_defconfig
           72         make $MAKEOPTS ARCH=arm CROSS_COMPILE=$compiler || zerr
           73 
           74         sudo cp -v MLO u-boot.img "$strapdir"/boot/
           75 
           76         git reset --hard
           77         git checkout -
           78         git branch -D build
           79 
           80         popd
           81 
           82         ## {{{ uEnv.txt
           83         notice "creating uEnv.txt file"
           84         cat <<EOF | sudo tee ${strapdir}/boot/uEnv.txt
           85 #u-boot eMMC specific overrides; Angstrom Distribution (BeagleBone Black) 2013-06-20
           86 kernel_file=zImage
           87 initrd_file=uInitrd
           88 
           89 loadaddr=0x82000000
           90 fdtaddr=0x88000000
           91 initrd_addr=0x88080000
           92 
           93 loadzimage=load mmc \${mmcdev}:\${mmcpart} \${loadaddr} \${kernel_file}
           94 loadinitrd=load mmc \${mmcdev}:\${mmcpart} \${initrd_addr} \${initrd_file}; setenv initrd_size \${filesize}
           95 loadfdt=load mmc \${mmcdev}:\${mmcpart} \${fdtaddr} /dtbs/\${fdtfile}
           96 #
           97 
           98 console=ttyO0,115200n8
           99 mmcroot=/dev/mmcblk0p2 rw net.ifnames=0
          100 mmcrootfstype=ext4 rootwait fixrtc
          101 
          102 ##To disable HDMI/eMMC...
          103 #optargs=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN,BB-BONE-EMMC-2G
          104 
          105 ##3.1MP Camera Cape
          106 #optargs=capemgr.disable_partno=BB-BONE-EMMC-2G
          107 
          108 mmcargs=setenv bootargs console=\${console} root=\${mmcroot} rootfstype=\${mmcrootfstype} \${optargs}
          109 
          110 #zImage:
          111 uenvcmd=run loadzimage; run loadfdt; run mmcargs; bootz \${loadaddr} - \${fdtaddr}
          112 
          113 #zImage + uInitrd: where uInitrd has to be generated on the running system
          114 #boot_fdt=run loadzimage; run loadinitrd; run loadfdt
          115 #uenvcmd=run boot_fdt; run mmcargs; bootz \${loadaddr} \${initrd_addr}:\${initrd_size} \${fdtaddr}
          116 EOF
          117         ## }}}
          118         ## {{{ xorg.conf
          119         notice "writing xorg.conf for future use"
          120         cat <<EOF | sudo tee ${strapdir}/root/xorg.conf
          121 # For using Xorg, move this file to /etc/X11/xorg.conf
          122 Section "Monitor"
          123         Identifier    "Builtin Default Monitor"
          124 EndSection
          125 
          126 Section "Device"
          127         Identifier    "Builtin Default fbdev Device 0"
          128         Driver        "fbdev"
          129         Option        "SWCursor" "true"
          130 EndSection
          131 
          132 Section "Screen"
          133         Identifier    "Builtin Default fbdev Screen 0"
          134         Device        "Builtin Default fbdev Device 0"
          135         Monitor       "Builtin Default Monitor"
          136         DefaultDepth  16
          137         # Comment out the above and uncomment the below if using a
          138         # bbb-view or bbb-exp
          139         #DefaultDepth  24
          140 EndSection
          141 
          142 Section "ServerLayout"
          143         Identifier    "Builtin Default Layout"
          144         Screen        "Builtin Default fbdev Screen 0"
          145 EndSection
          146 EOF
          147         ## }}}
          148 
          149         notice "grabbing script for using usb as ethernet device"
          150         sudo wget -c \
          151                 https://raw.github.com/RobertCNelson/tools/master/scripts/beaglebone-black-g-ether-load.sh \
          152                 -O $strapdir/root/bbb-ether-load.sh
          153 
          154         postbuild-clean
          155 }
          156 
          157 build_kernel_armhf() {
          158         fn build_kernel_armhf
          159         req=(R arch device_name gitkernel gitbranch MAKEOPTS)
          160         req+=(strapdir)
          161         req+=(loopdevice)
          162         ckreq || return 1
          163 
          164         notice "building $arch kernel"
          165 
          166         prebuild || zerr
          167 
          168         get-kernel-sources
          169         pushd $R/tmp/kernels/$device_name/${device_name}-linux
          170                 make \
          171                         ARCH=arm \
          172                         CROSS_COMPILE=$compiler \
          173                                 bb.org_defconfig || zerr
          174 
          175                 make \
          176                         $MAKEOPTS \
          177                         ARCH=arm \
          178                         CROSS_COMPILE=$compiler || zerr
          179 
          180                 sudo cp -v arch/arm/boot/zImage $strapdir/boot/zImage
          181                 sudo mkdir -p $strapdir/boot/dtbs
          182                 sudo cp -v arch/arm/boot/dts/*.dtb $strapdir/boot/dtbs/
          183 
          184                 sudo -E PATH="$PATH" \
          185                         make \
          186                                 $MAKEOPTS \
          187                                 ARCH=arm \
          188                                 CROSS_COMPILE=$compiler \
          189                                 INSTALL_MOD_PATH=$strapdir \
          190                                         modules_install || zerr
          191 
          192                 sudo -E PATH="$PATH" \
          193                         make \
          194                                 $MAKEOPTS \
          195                                 ARCH=arm \
          196                                 CROSS_COMPILE=$compiler \
          197                                 INSTALL_MOD_PATH=$strapdir \
          198                                         firmware_install || zerr
          199         popd
          200 
          201         postbuild || zerr
          202 }