summaryrefslogtreecommitdiff
path: root/libre-testing/uboot4extlinux-am335x_bone
diff options
context:
space:
mode:
Diffstat (limited to 'libre-testing/uboot4extlinux-am335x_bone')
-rw-r--r--libre-testing/uboot4extlinux-am335x_bone/0001-parabola-arm-modifications.patch243
-rw-r--r--libre-testing/uboot4extlinux-am335x_bone/0002-kernel-add-support-for-gcc-7.patch68
-rw-r--r--libre-testing/uboot4extlinux-am335x_bone/PKGBUILD49
-rw-r--r--libre-testing/uboot4extlinux-am335x_bone/extlinux.conf58
-rw-r--r--libre-testing/uboot4extlinux-am335x_bone/uEnv.txt1
-rw-r--r--libre-testing/uboot4extlinux-am335x_bone/uboot4extlinux-am335x_bone.install37
6 files changed, 456 insertions, 0 deletions
diff --git a/libre-testing/uboot4extlinux-am335x_bone/0001-parabola-arm-modifications.patch b/libre-testing/uboot4extlinux-am335x_bone/0001-parabola-arm-modifications.patch
new file mode 100644
index 000000000..0f1c145da
--- /dev/null
+++ b/libre-testing/uboot4extlinux-am335x_bone/0001-parabola-arm-modifications.patch
@@ -0,0 +1,243 @@
+diff -Nur u-boot-2015.04.orig/configs/am335x_evm_defconfig u-boot-2015.04/configs/am335x_evm_defconfig
+--- u-boot-2015.04.orig/configs/am335x_evm_defconfig 2015-04-13 11:53:03.000000000 -0300
++++ u-boot-2015.04/configs/am335x_evm_defconfig 2016-02-24 12:05:57.627551576 -0300
+@@ -1,7 +1,6 @@
+ CONFIG_SPL=y
+ CONFIG_SPL_STACK_R=y
+ CONFIG_SPL_STACK_R_ADDR=0x82000000
+-CONFIG_SYS_EXTRA_OPTIONS="NAND"
+-CONFIG_CONS_INDEX=1
++CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
+ CONFIG_ARM=y
+ CONFIG_TARGET_AM335X_EVM=y
+diff -Nur u-boot-2015.04.orig/include/configs/am335x_evm.h u-boot-2015.04/include/configs/am335x_evm.h
+--- u-boot-2015.04.orig/include/configs/am335x_evm.h 2015-04-13 11:53:03.000000000 -0300
++++ u-boot-2015.04/include/configs/am335x_evm.h 2016-02-24 12:09:41.983016704 -0300
+@@ -17,6 +17,7 @@
+ #define __CONFIG_AM335X_EVM_H
+
+ #include <configs/ti_am335x_common.h>
++#define CONFIG_ENV_IS_NOWHERE
+
+ #ifndef CONFIG_SPL_BUILD
+ #ifndef CONFIG_FIT
+@@ -45,6 +46,9 @@
+ /* Enhance our eMMC support / experience. */
+ #define CONFIG_CMD_GPT
+ #define CONFIG_EFI_PARTITION
++#define CONFIG_CMD_PART
++#define CONFIG_PARTITION_UUIDS
++#define CONFIG_CMD_SETEXPR
+
+ #ifdef CONFIG_NAND
+ #define NANDARGS \
+@@ -67,113 +71,90 @@
+
+ #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+
++/* Enable Extlinux boot support */
++#define CONFIG_CMD_PXE
++#define CONFIG_MENU
++#define BOOT_TARGET_DEVICES(func)
++#include <config_distro_bootcmd.h>
++
+ #ifndef CONFIG_SPL_BUILD
+ #define CONFIG_EXTRA_ENV_SETTINGS \
++ BOOTENV \
+ DEFAULT_LINUX_BOOT_ENV \
+- "boot_fdt=try\0" \
+- "bootpart=0:2\0" \
++ "bootpart=0:1\0" \
+ "bootdir=/boot\0" \
++ "fdtdir=/boot/dtbs\0" \
+ "bootfile=zImage\0" \
+ "fdtfile=undefined\0" \
++ "rdfile=initramfs-linux.img\0" \
+ "console=ttyO0,115200n8\0" \
+ "partitions=" \
+ "uuid_disk=${uuid_gpt_disk};" \
+ "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \
+ "optargs=\0" \
+- "mmcdev=0\0" \
+- "mmcroot=/dev/mmcblk0p2 ro\0" \
+- "mmcrootfstype=ext4 rootwait\0" \
+- "rootpath=/export/rootfs\0" \
+- "nfsopts=nolock\0" \
+- "static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}" \
+- "::off\0" \
+- "ramroot=/dev/ram0 rw\0" \
+- "ramrootfstype=ext2\0" \
++ "cape_disable=\0" \
++ "cape_enable=\0" \
++ "cmdline=\0" \
+ "mmcargs=setenv bootargs console=${console} " \
+ "${optargs} " \
+- "root=${mmcroot} " \
+- "rootfstype=${mmcrootfstype}\0" \
+- "spiroot=/dev/mtdblock4 rw\0" \
+- "spirootfstype=jffs2\0" \
+- "spisrcaddr=0xe0000\0" \
+- "spiimgsize=0x362000\0" \
+- "spibusno=0\0" \
+- "spiargs=setenv bootargs console=${console} " \
+- "${optargs} " \
+- "root=${spiroot} " \
+- "rootfstype=${spirootfstype}\0" \
+- "netargs=setenv bootargs console=${console} " \
+- "${optargs} " \
+- "root=/dev/nfs " \
+- "nfsroot=${serverip}:${rootpath},${nfsopts} rw " \
+- "ip=dhcp\0" \
+- "bootenv=uEnv.txt\0" \
+- "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
+- "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
+- "source ${loadaddr}\0" \
+- "loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \
+- "importbootenv=echo Importing environment from mmc ...; " \
+- "env import -t -r $loadaddr $filesize\0" \
+- "ramargs=setenv bootargs console=${console} " \
+- "${optargs} " \
+- "root=${ramroot} " \
+- "rootfstype=${ramrootfstype}\0" \
+- "loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
+- "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
+- "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
+- "mmcloados=run mmcargs; " \
+- "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+- "if run loadfdt; then " \
+- "bootz ${loadaddr} - ${fdtaddr}; " \
+- "else " \
+- "if test ${boot_fdt} = try; then " \
+- "bootz; " \
+- "else " \
+- "echo WARN: Cannot load the DT; " \
+- "fi; " \
+- "fi; " \
+- "else " \
+- "bootz; " \
+- "fi;\0" \
+- "mmcboot=mmc dev ${mmcdev}; " \
+- "if mmc rescan; then " \
+- "echo SD/MMC found on device ${mmcdev};" \
+- "if run loadbootscript; then " \
+- "run bootscript;" \
+- "else " \
+- "if run loadbootenv; then " \
+- "echo Loaded environment from ${bootenv};" \
+- "run importbootenv;" \
++ "${cape_disable} " \
++ "${cape_enable} " \
++ "root=${root} " \
++ "${cmdline}\0" \
++ "loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
++ "loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/${rdfile}\0" \
++ "loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load ${devtype} ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}\0" \
++ "mmcboot=usb start;" \
++ "for devtype in mmc usb; do " \
++ "for devnum in 0 1; do " \
++ "if ${devtype} dev ${devnum}; then " \
++ "echo ${devtype} found on device ${devnum};" \
++ "setenv bootpart ${devnum}:1;" \
++ "part uuid ${devtype} ${bootpart} uuid;" \
++ "setenv root PARTUUID=${uuid} rw rootwait fixrtc;" \
++ "echo Checking for: ${bootdir}/uEnv.txt ...;" \
++ "gpio set 54;" \
++ "if test -e ${devtype} ${bootpart} ${bootdir}/uEnv.txt; then " \
++ "load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/uEnv.txt;" \
++ "env import -t ${loadaddr} ${filesize};" \
++ "echo Loaded environment from ${bootdir}/uEnv.txt;" \
++ "if test -n ${cape}; then " \
++ "if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtbase}-${cape}.dtb; then " \
++ "setenv fdtfile ${fdtbase}-${cape}.dtb; " \
++ "fi; " \
++ "echo using: $fdtfile...; " \
++ "fi; " \
++ "echo Checking if uenvcmd is set ...;" \
++ "if test -n ${uenvcmd}; then " \
++ "echo Running uenvcmd ...;" \
++ "run uenvcmd;" \
++ "fi;" \
++ "fi;" \
++ "gpio set 55;" \
++ "run scan_dev_for_boot;" \
++ "if run loadimage; then " \
++ "run mmcargs;" \
++ "if run loadfdt; then " \
++ "gpio set 56;" \
++ "if run loadrd; then " \
++ "bootz ${loadaddr} ${rdaddr}:${filesize} ${fdtaddr};" \
++ "else " \
++ "bootz ${loadaddr} - ${fdtaddr};" \
++ "fi;" \
++ "fi;" \
++ "else " \
++ "echo No kernel found;" \
++ "fi;" \
++ "gpio clear 54; gpio clear 55;" \
++ "setexpr devnum ${devnum} + 1;" \
+ "fi;" \
+- "if test -n $uenvcmd; then " \
+- "echo Running uenvcmd ...;" \
+- "run uenvcmd;" \
+- "fi;" \
+- "if run loadimage; then " \
+- "run mmcloados;" \
+- "fi;" \
+- "fi ;" \
+- "fi;\0" \
+- "spiboot=echo Booting from spi ...; " \
+- "run spiargs; " \
+- "sf probe ${spibusno}:0; " \
+- "sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; " \
+- "bootz ${loadaddr}\0" \
+- "netboot=echo Booting from network ...; " \
+- "setenv autoload no; " \
+- "dhcp; " \
+- "tftp ${loadaddr} ${bootfile}; " \
+- "tftp ${fdtaddr} ${fdtfile}; " \
+- "run netargs; " \
+- "bootz ${loadaddr} - ${fdtaddr}\0" \
+- "ramboot=echo Booting from ramdisk ...; " \
+- "run ramargs; " \
+- "bootz ${loadaddr} ${rdaddr} ${fdtaddr}\0" \
++ "done;" \
++ "done;\0" \
+ "findfdt="\
+ "if test $board_name = A335BONE; then " \
+- "setenv fdtfile am335x-bone.dtb; fi; " \
++ "setenv fdtfile am335x-bone.dtb; setenv fdtbase am335x-bone; fi; " \
+ "if test $board_name = A335BNLT; then " \
+- "setenv fdtfile am335x-boneblack.dtb; fi; " \
++ "setenv fdtfile am335x-boneblack.dtb; setenv fdtbase am335x-boneblack; setenv umsmedia 1; fi; " \
+ "if test $board_name = A33515BB; then " \
+ "setenv fdtfile am335x-evm.dtb; fi; " \
+ "if test $board_name = A335X_SK; then " \
+@@ -185,12 +166,11 @@
+ #endif
+
+ #define CONFIG_BOOTCOMMAND \
+- "run findfdt; " \
+- "run mmcboot;" \
+- "setenv mmcdev 1; " \
+- "setenv bootpart 1:2; " \
++ "gpio set 53;" \
++ "run findfdt;" \
+ "run mmcboot;" \
+- "run nandboot;"
++ "gpio clear 54; gpio clear 55;" \
++ "gpio set 56"
+
+ /* NS16550 Configuration */
+ #define CONFIG_SYS_NS16550_COM1 0x44e09000 /* Base EVM has UART0 */
+@@ -329,9 +309,8 @@
+ #endif
+
+ #ifdef CONFIG_MUSB_GADGET
+-#define CONFIG_USB_ETHER
+-#define CONFIG_USB_ETH_RNDIS
+-#define CONFIG_USBNET_HOST_ADDR "de:ad:be:af:00:00"
++#define CONFIG_CMD_USB_MASS_STORAGE
++#define CONFIG_USB_GADGET_MASS_STORAGE
+
+ /* USB TI's IDs */
+ #define CONFIG_G_DNL_VENDOR_NUM 0x0451
diff --git a/libre-testing/uboot4extlinux-am335x_bone/0002-kernel-add-support-for-gcc-7.patch b/libre-testing/uboot4extlinux-am335x_bone/0002-kernel-add-support-for-gcc-7.patch
new file mode 100644
index 000000000..ca59b159a
--- /dev/null
+++ b/libre-testing/uboot4extlinux-am335x_bone/0002-kernel-add-support-for-gcc-7.patch
@@ -0,0 +1,68 @@
+diff --git a/include/linux/compiler-gcc7.h b/include/linux/compiler-gcc7.h
+new file mode 100644
+index 0000000..ba064fa
+--- /dev/null
++++ b/include/linux/compiler-gcc7.h
+@@ -0,0 +1,59 @@
++#ifndef __LINUX_COMPILER_H
++#error "Please don't include <linux/compiler-gcc7.h> directly, include <linux/compiler.h> instead."
++#endif
++
++#define __used __attribute__((__used__))
++#define __must_check __attribute__((warn_unused_result))
++#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
++
++/* Mark functions as cold. gcc will assume any path leading to a call
++ to them will be unlikely. This means a lot of manual unlikely()s
++ are unnecessary now for any paths leading to the usual suspects
++ like BUG(), printk(), panic() etc. [but let's keep them for now for
++ older compilers]
++
++ gcc also has a __attribute__((__hot__)) to move hot functions into
++ a special section, but I don't see any sense in this right now in
++ the kernel context */
++#define __cold __attribute__((__cold__))
++
++#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
++
++#ifndef __CHECKER__
++# define __compiletime_warning(message) __attribute__((warning(message)))
++# define __compiletime_error(message) __attribute__((error(message)))
++#endif /* __CHECKER__ */
++
++/*
++ * Mark a position in code as unreachable. This can be used to
++ * suppress control flow warnings after asm blocks that transfer
++ * control elsewhere.
++ */
++#define unreachable() __builtin_unreachable()
++
++/* Mark a function definition as prohibited from being cloned. */
++#define __noclone __attribute__((__noclone__))
++
++/*
++ * Tell the optimizer that something else uses this function or variable.
++ */
++#define __visible __attribute__((externally_visible))
++
++/*
++ * GCC 'asm goto' miscompiles certain code sequences:
++ *
++ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
++ *
++ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
++ *
++ * (asm goto is automatically volatile - the naming reflects this.)
++ */
++#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
++
++#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
++#define __HAVE_BUILTIN_BSWAP32__
++#define __HAVE_BUILTIN_BSWAP64__
++#define __HAVE_BUILTIN_BSWAP16__
++#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
++
++#define KASAN_ABI_VERSION 4
+--
+2.1.4
+
diff --git a/libre-testing/uboot4extlinux-am335x_bone/PKGBUILD b/libre-testing/uboot4extlinux-am335x_bone/PKGBUILD
new file mode 100644
index 000000000..0374e774d
--- /dev/null
+++ b/libre-testing/uboot4extlinux-am335x_bone/PKGBUILD
@@ -0,0 +1,49 @@
+# U-Boot: BeagleBone and BeagleBone Black
+# Maintainer: Isaac David <isacdaavid@at@isacdaavid.info>
+# Contributor: André Silva <emulatorman@parabola.nu>
+# Contributor: Jookia <166291@gmail.com>
+# Contributor: Márcio Silva <coadde@parabola.nu>
+
+pkgname=uboot4extlinux-am335x_bone
+pkgver=2015.04
+pkgrel=4
+pkgdesc="U-Boot with Extlinux support for BeagleBone and BeagleBone Black"
+arch=('armv7h')
+url="http://git.denx.de/u-boot.git/"
+conflicts=('uboot-am335x_bone' 'uboot4grub-am335x_bone')
+makedepends=('bc')
+license=('GPL')
+backup=(boot/extlinux/extlinux.conf)
+install=${pkgname}.install
+source=("ftp://ftp.denx.de/pub/u-boot/u-boot-${pkgver}.tar.bz2"
+ '0001-parabola-arm-modifications.patch'
+ '0002-kernel-add-support-for-gcc-7.patch'
+ 'extlinux.conf'
+ 'uEnv.txt')
+sha256sums=('0a1a70df586655f527befa6f12e184e96ed61b126e5a567382321b17200f5d60'
+ 'ba5c395e5250fa13d608823e278936862d4fc472cfbf24dc94d9d90e5d9360b7'
+ '9e80aa27cccdb07b03d56a970f247c91d586d0b936868c076c20acc2e68a3968'
+ 'e96d167d99967ebefde8d02b27b4564e46409cc0c8738d5de72f431a2e438cf8'
+ '4ef3c3177e4476cdb1790dd021d2383ef9913c029d005ffbeb61b958e753672e')
+
+prepare() {
+ cd u-boot-${pkgver}
+ patch -Np1 -i ../0001-parabola-arm-modifications.patch
+ patch -Np1 -i ../0002-kernel-add-support-for-gcc-7.patch
+}
+
+build() {
+ cd u-boot-${pkgver}
+
+ unset CFLAGS CXXFLAGS LDFLAGS
+ make distclean
+ make am335x_evm_config
+ make
+}
+
+package() {
+ cd u-boot-${pkgver}
+ mkdir -p "${pkgdir}"/boot/extlinux
+ cp MLO u-boot.img "${srcdir}"/uEnv.txt "${pkgdir}"/boot
+ cp "${srcdir}"/extlinux.conf "${pkgdir}"/boot/extlinux
+}
diff --git a/libre-testing/uboot4extlinux-am335x_bone/extlinux.conf b/libre-testing/uboot4extlinux-am335x_bone/extlinux.conf
new file mode 100644
index 000000000..3c50750b7
--- /dev/null
+++ b/libre-testing/uboot4extlinux-am335x_bone/extlinux.conf
@@ -0,0 +1,58 @@
+menu title Welcome to U-Boot with Extlinux support!
+
+timeout 50
+
+label Parabola GNU/Linux-libre, linux-libre kernel
+ kernel /boot/vmlinuz-linux-libre
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre
+
+label Parabola GNU/Linux-libre, linux-libre-lts kernel
+ kernel /boot/vmlinuz-linux-libre-lts
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-lts
+
+label Parabola GNU/Linux-libre, linux-libre-knock kernel
+ kernel /boot/vmlinuz-linux-libre-knock
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-knock
+
+label Parabola GNU/Linux-libre, linux-libre-lts-knock kernel
+ kernel /boot/vmlinuz-linux-libre-lts-knock
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-lts-knock
+
+label Parabola GNU/Linux-libre, linux-libre-hardened kernel
+ kernel /boot/vmlinuz-linux-libre-hardened
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-hardened
+
+label Parabola GNU/Linux-libre, linux-libre-apparmor kernel
+ kernel /boot/vmlinuz-linux-libre-apparmor
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-apparmor
+
+label Parabola GNU/Linux-libre, linux-libre-lts-apparmor kernel
+ kernel /boot/vmlinuz-linux-libre-lts-apparmor
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-lts-apparmor
+
+label Parabola GNU/Linux-libre, linux-libre-audit kernel
+ kernel /boot/vmlinuz-linux-libre-audit
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-audit
+
+label Parabola GNU/Linux-libre, linux-libre-pck kernel
+ kernel /boot/vmlinuz-linux-libre-pck
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-pck
+
+label Parabola GNU/Linux-libre, linux-libre-rt kernel
+ kernel /boot/vmlinuz-linux-libre-rt
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-rt
+
+label Parabola GNU/Linux-libre, linux-libre-xen kernel
+ kernel /boot/vmlinuz-linux-libre-xen
+ append root=/dev/mmcblk0p1 rw console=ttyO0,115200n8
+ fdtdir /boot/dtbs/linux-libre-xen
diff --git a/libre-testing/uboot4extlinux-am335x_bone/uEnv.txt b/libre-testing/uboot4extlinux-am335x_bone/uEnv.txt
new file mode 100644
index 000000000..f432efc6b
--- /dev/null
+++ b/libre-testing/uboot4extlinux-am335x_bone/uEnv.txt
@@ -0,0 +1 @@
+optargs=coherent_pool=1M
diff --git a/libre-testing/uboot4extlinux-am335x_bone/uboot4extlinux-am335x_bone.install b/libre-testing/uboot4extlinux-am335x_bone/uboot4extlinux-am335x_bone.install
new file mode 100644
index 000000000..93306e01e
--- /dev/null
+++ b/libre-testing/uboot4extlinux-am335x_bone/uboot4extlinux-am335x_bone.install
@@ -0,0 +1,37 @@
+flash_instructions() {
+ echo "# dd if=/boot/MLO of=/dev/mmcblk0 count=1 seek=1 conv=notrunc bs=128k"
+ echo "# dd if=/boot/u-boot.img of=/dev/mmcblk0 count=2 seek=1 conv=notrunc bs=384k"
+}
+
+extlinux_warning() {
+ echo "==> WARNING: Remember to set up your kernels in /boot/extlinux/extlinux.conf"
+}
+
+flash_uboot() {
+ root=$(mount | awk '/ on \/ / { print $1; }')
+ if [[ $root =~ ^/dev/mmcblk.*$ ]]; then
+ root=${root:0:12}
+ echo "A new U-Boot version needs to be flashed onto $root."
+ echo "Do this now? [y|N]"
+ read -r shouldwe
+ if [[ $shouldwe =~ ^([yY][eE][sS]|[yY])$ ]]; then
+ dd if=/boot/MLO of=$root count=1 seek=1 conv=notrunc bs=128k
+ dd if=/boot/u-boot.img of=$root count=2 seek=1 conv=notrunc bs=384k
+ else
+ echo "You can do this later by running:"
+ flash_instructions
+ fi
+ else
+ echo "Flash the new U-Boot version onto your boot device. For example:"
+ flash_instructions
+ fi
+ extlinux_warning
+}
+
+post_install() {
+ flash_uboot
+}
+
+post_upgrade() {
+ flash_uboot
+}