arm-sdk/arm/scripts/beaglebone-black.sh

146 lines
4.6 KiB
Bash
Executable File

#!/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=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"
}