odroid-xu.sh (5654B)
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 ODROID XU boards 19 20 ## settings & config 21 vars+=(device_name arch size parted_type parted_boot parted_root bootfs inittab) 22 vars+=(gitkernel gitbranch hosttuple) 23 arrs+=(custmodules extra_packages) 24 25 device_name="odroidxu" 26 arch="armhf" 27 size=1337 28 inittab=("T1:12345:respawn:/bin/login -f root ttySAC2 /dev/ttySAC2 2>&1") 29 30 ## this is used for crosscompiling exynos5-hwcomposer. 31 ## without it there is no framebuffer console. 32 hosttuple=${compiler:0:-1} 33 34 parted_type="dos" 35 bootfs="vfat" 36 rootfs="ext4" 37 dos_boot="fat32 2048s 264191s" 38 dos_root="$rootfs 264192s 100%" 39 40 extra_packages+=() 41 custmodules=() 42 43 gitkernel="https://github.com/hardkernel/linux.git" 44 gitbranch="odroidxu-3.4.y" 45 46 47 prebuild() { 48 fn prebuild 49 req=(device_name strapdir) 50 ckreq || return 1 51 52 notice "executing $device_name prebuild" 53 54 copy-root-overlay 55 56 mkdir -p $R/tmp/kernels/$device_name 57 58 print "M ttySAC2 c 5 1" | sudo tee -a $strapdir/etc/udev/links.conf 59 cat <<EOF | sudo tee -a $strapdir/etc/securetty 60 ttySAC0 61 ttySAC1 62 ttySAC2 63 EOF 64 } 65 66 postbuild() { 67 fn postbuild 68 69 notice "executing $device_name postbuild" 70 71 ## {{{ boot txts 72 notice "Writing bootinfos..." 73 # 720p 74 cat << EOF | sudo tee ${strapdir}/boot/boot-hdmi-720.txt 75 setenv initrd_high "0xffffffff" 76 setenv fdt_high "0xffffffff" 77 setenv fb_x_res "1280" 78 setenv fb_y_res "720" 79 setenv hdmi_phy_res "720" 80 setenv bootcmd "fatload mmc 0:1 0x40008000 zImage; fatload mmc 0:1 0x42000000 uInitrd; bootz 0x40008000 0x42000000" 81 setenv bootargs "console=tty1 console=ttySAC2,115200n8 vmalloc=512M fb_x_res=\${fb_x_res} fb_y_res=\${fb_y_res} hdmi_phy_res=\${hdmi_phy_res} vout=hdmi led_blink=1 fake_fb=true root=/dev/mmcblk0p2 rootwait rootfstype=ext4 rw net.ifnames=0" 82 boot 83 EOF 84 # 1080p 85 cat << EOF | sudo tee ${strapdir}/boot/boot-hdmi-1080.txt 86 setenv initrd_high "0xffffffff" 87 setenv fdt_high "0xffffffff" 88 setenv fb_x_res "1920" 89 setenv fb_y_res "1080" 90 setenv hdmi_phy_res "1080" 91 setenv bootcmd "fatload mmc 0:1 0x40008000 zImage; fatload mmc 0:1 0x42000000 uInitrd; bootz 0x40008000 0x42000000" 92 setenv bootargs "console=tty1 console=ttySAC2,115200n8 vmalloc=512M fb_x_res=\${fb_x_res} fb_y_res=\${fb_y_res} hdmi_phy_res=\${hdmi_phy_res} vout=hdmi led_blink=1 fake_fb=true root=/dev/mmcblk0p2 rootwait rw rootfstype=ext4 net.ifnames=0" 93 boot 94 EOF 95 ## }}} 96 97 notice "creating u-boot script images" 98 sudo mkimage -A arm -T script -C none -d $strapdir/boot/boot-hdmi-720.txt \ 99 $strapdir/boot/boot-720.scr 100 sudo mkimage -A arm -T script -C none -d $strapdir/boot/boot-hdmi-1080.txt \ 101 $strapdir/boot/boot-1080.scr 102 sudo cp $CPVERBOSE $strapdir/boot/boot-720.scr $strapdir/boot/boot.scr 103 104 notice "doing u-boot magic" 105 pushd $R/tmp/kernels/$device_name/${device_name}-linux/tools/hardkernel/u-boot-pre-built 106 sudo sh sd_fusing.sh $loopdevice 107 act " ^ not this time :)" 108 109 postbuild-clean 110 } 111 112 build_kernel_armhf() { 113 fn build_kernel_armhf 114 req=(R arch device_name gitkernel gitbranch MAKEOPTS) 115 req+=(strapdir loopdevice) 116 ckreq || return 1 117 118 notice "building $arch kernel" 119 120 prebuild || zerr 121 122 get-kernel-sources 123 pushd $R/tmp/kernels/$device_name/${device_name}-linux 124 make \ 125 $MAKEOPTS \ 126 ARCH=arm \ 127 CROSS_COMPILE=$compiler \ 128 odroidxu_ubuntu_defconfig || zerr 129 make \ 130 $MAKEOPTS \ 131 ARCH=arm \ 132 CROSS_COMPILE=$compiler || zerr 133 sudo -E PATH="$PATH" \ 134 make \ 135 $MAKEOPTS \ 136 ARCH=arm \ 137 CROSS_COMPILE=$compiler \ 138 INSTALL_MOD_PATH=$strapdir \ 139 modules_install || zerr 140 sudo cp -v arch/arm/boot/zImage $strapdir/boot/ 141 popd 142 143 notice "building hwcomposer" 144 pushd $R/tmp/kernels/$device_name/${device_name}-linux/tools/hardkernel/exynos5-hwcomposer 145 ## it's quite chatty still, so we if 0 the logging, and also add a missing #define 146 sed -i -e 's/if 1/if 0/g' include/log.h 147 sed -i -e 's/#define ALOGD/#define ALOGD\r#define ALOGF/g' include/log.h 148 149 ./configure --prefix=/usr --build x86_64-pc-linux-gnu --host $hosttuple || zerr 150 make \ 151 $MAKEOPTS \ 152 ARCH=arm \ 153 CROSS_COMPILE=$compiler || zerr 154 sudo -E PATH="$PATH" \ 155 make \ 156 $MAKEOPTS \ 157 ARCH=arm \ 158 CROSS_COMPILE=$compiler \ 159 DESTDIR=$strapdir \ 160 install || zerr 161 sudo sed -i -e \ 162 's:^exit 0:exynos5-hwcomposer > /dev/null 2\&1 \&\nexit 0:' \ 163 $strapdir/etc/rc.local 164 165 #sudo rm -rf $strapdir/lib/firmware 166 #get-kernel-firmware 167 #sudo cp $CPVERBOSE -ra $R/tmp/linux-firmware $strapdir/lib/firmware 168 169 pushd $R/tmp/kernels/$device_name/${device_name}-linux 170 sudo -E PATH="$PATH" \ 171 make \ 172 $MAKEOPTS \ 173 ARCH=arm \ 174 CROSS_COMPILE=$compiler \ 175 INSTALL_MOD_PATH=$strapdir \ 176 firmware_install || zerr 177 make \ 178 $MAKEOPTS \ 179 ARCH=arm \ 180 CROSS_COMPILE=$compiler \ 181 mrproper 182 #copy-kernel-config 183 make \ 184 $MAKEOPTS \ 185 ARCH=arm \ 186 CROSS_COMPILE=$compiler \ 187 odroidxu_ubuntu_defconfig || zerr 188 sudo -E PATH="$PATH" \ 189 make \ 190 $MAKEOPTS \ 191 ARCH=arm \ 192 CROSS_COMPILE=$compiler \ 193 modules_prepare || zerr 194 popd 195 196 postbuild || zerr 197 }