Difference between revisions of "U-booting Funtoo on the TI AM335x X2 SBC-B2"

From Funtoo
Jump to: navigation, search
m (Copy Over Kernel Files)
m (Copy Over U-Boot Files)
Line 52: Line 52:
 
{{console|body=
 
{{console|body=
 
# cp $XC_UBOOT/$XC_LINUX_PREFIX/{MLO,u-boot.img,u-boot.bin} $XC_STAGE3S/boot/uboot
 
# cp $XC_UBOOT/$XC_LINUX_PREFIX/{MLO,u-boot.img,u-boot.bin} $XC_STAGE3S/boot/uboot
 +
# cp arch/arm/boot/uImage $XC_STAGE3S/boot/uboot
 
# echo "bootargs=console=ttyS0,115200n8 root=/dev/mmcblk0p2 mem=128M rootwait
 
# echo "bootargs=console=ttyS0,115200n8 root=/dev/mmcblk0p2 mem=128M rootwait
 
bootcmd=mmc rescan; fatload mmc 0 0x82000000 uImage; bootm 0x82000000
 
bootcmd=mmc rescan; fatload mmc 0 0x82000000 uImage; bootm 0x82000000

Revision as of 16:33, February 7, 2017

Introduction

Installing Funtoo to a Raspberry Pi is fun, but there are a lot more boards out there. For example, the AM335x series. To get this going, we need to use the U-Boot bootloader.

See http://funtoo.org/Crossdev_Automation for the xcompile_variables.sh script referenced here, and a more complete introduction to the process.

U-Boot Building

root # wget $UBOOT_URL -O $UBOOTS/$UBOOT
root # cd $UBOOTS
root # mkdir u-boot && tar xf $UBOOT -C u-boot --strip-components 1
root # cd $XC_UBOOT
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make mrproper
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make distclean
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make O=$XC_LINUX_PREFIX am335x_evm_config
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make O=$XC_LINUX_PREFIX DTC=$XC_KERNEL_SRC/scripts/dtc/dtc

Kernel Building

Defconfig Generation

root # cd $XC_KERNEL_SRC
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET ti_config_fragments/defconfig_builder.sh -t ti_sdk_am3x_release
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET make ti_sdk_am3x_release_defconfig
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make zImage
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make modules
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make uImage dtbs LOADADDR=0x82000000
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make am335x-evm.dtb am335x-evmsk.dtb am335x-bone.dtb am335x-boneblack.dtb am335x-bonegreen.dtb am335x-icev2.dtb

Setup Stage3

We set up the boot partion differently. The rest of the steps are the same.

root # sed -i "s/\/dev\/sda1.*/\/dev\/mmcblk0p1 \/boot/uboot vfat defaults 0 2/" $XC_STAGE3S/etc/fstab

Copy Over Kernel Files

root # cd $XC_KERNEL_SRC
root # ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- INSTALL_MOD_PATH=$XC_STAGE3S INSTALL_MOD_STRIP=1 make modules_install
root # cp arch/arm/boot/zImage $XC_STAGE3S/boot
root # cp arch/arm/boot/dts/*.dtb  $XC_STAGE3S/boot
root # get_kernel_release() { (cd $XC_KERNEL_SRC ; ARCH=$ARCH CROSS_COMPILE=$CROSSDEV_TARGET- make kernelrelease;) }
root # rm $XC_STAGE3S/lib/modules/`get_kernel_release`/{build,source}

Copy Over U-Boot Files

root # cp $XC_UBOOT/$XC_LINUX_PREFIX/{MLO,u-boot.img,u-boot.bin} $XC_STAGE3S/boot/uboot
root # cp arch/arm/boot/uImage $XC_STAGE3S/boot/uboot
root # echo "bootargs=console=ttyS0,115200n8 root=/dev/mmcblk0p2 mem=128M rootwait
bootcmd=mmc rescan; fatload mmc 0 0x82000000 uImage; bootm 0x82000000
uenvcmd=boot" > $XC_STAGE3S/boot/uboot/uEnv.txt

Install to the Board

root # mkdir -p /mnt/funtoo
root # mount /dev/<your_dev>2 /mnt/funtoo
root # mkdir -p /mnt/funtoo/boot/uboot
root # mount /dev/<your_dev>1 /mnt/funtoo/boot/uboot
root # rsync -avz --exclude "usr/portage/*" $XC_STAGE3S/{boot,bin,etc,home,lib,mnt,opt,root,run,sbin,srv,tmp,usr,var,dev} /mnt/funtoo
root # mkdir /mnt/funtoo/{proc,sys}
root # umount -R /mnt/funtoo