美文网首页程序员
源码编译TF卡启动BBB的debian系统

源码编译TF卡启动BBB的debian系统

作者: 网路元素 | 来源:发表于2018-04-07 08:10 被阅读94次

    为了后期使用一些开源框架(后期会有博文说明)的需求,不得不移植一套能满足需求的debian系统,下面是相应的过程(在Ubuntu14.04下进行):  

    1.创建bbb-debian目录并进入到该目录下:  

    mkdir bbb-debian  

    cd bbb-debian  

    2.准备u-boot源码  

    1).执行如下命令获取u-boot源码:  

    git clone git://git.denx.de/u-boot.git  

    2).进入下载的源码目录并下载补丁包及打补丁:  

    cd u-boot  

    wget -c https://raw.github.com/eewiki/u-boot-patches/master/v2013.10/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch 

    patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch  

    3.下载dtc工具生成脚本  

    本步骤用于下载dtc工具的生成及安装脚本(后期编译脚本里会执行,但注释掉,仅执行一次即可,可不执行):  

    cd ..  

    wget -c https://raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh 

    chmod +x dtc.sh  

    4.下载kernel源码  

    1).下载linux stable分支源码:  

    git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git  

    2).下载BBB的linux编译配置包并进行相应修改:  

    git clone git://github.com/RobertCNelson/linux-dev.git  

    cd linux-dev  

    cp system.sh.sample system.sh  

    修改system.sh,在适当位置添加如下语句:  

    CC=`pwd`/../gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-  

    LINUX_GIT=`pwd`/../linux-stable/  

    执行如下命令切换BBB的编译包分支:  

    git checkout am33x-v3.8  

    5.下载BBB的debian根文件系统  

    cd ..  

    wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-8.0-minimal-armhf-2015-04-27.tar.xz 

    6.准备相关文件(均在bbb-debian目录下进行)  

    1).创建编译脚本build_all.sh,内容如下:  

    #!/bin/sh 

    export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf- 

    cd u-boot/  

    make ARCH=arm CROSS_COMPILE=${CC} distclean  

    make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_config  

    make ARCH=arm CROSS_COMPILE=${CC}  

    cd .. 

    # just build and install device tree tools on x86/x64 based platform  

    #./dtc.sh 

    cd linux-dev/  

    ./build_kernel.sh  

    cd ..  

    2).创建TF启动所需文件:  

    a.创建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 ro  

    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}  

    b.创建interfaces文件,内容如下:  

    # interfaces(5) file used by ifup(8) and ifdown(8)  

    auto lo  

    iface lo inet loopback 

    auto eth0  

    iface eth0 inet dhcp 

    allow-hotplug usb0  

    iface usb0 inet dhcp  

    c.创建fstab文件,内容如下:  

    /dev/mmcblk0p2   /           ext4   ro,noatime                0   0  

    /dev/mmcblk0p1   /boot/uboot vfat   ro,user,umask=000         0   0  

    tmpfs            /tmp        tmpfs  nodev,nosuid,size=10m     0   0  

    tmpfs            /var/log    tmpfs  nodev,nosuid,size=10m     0   0  

    tmpfs            /var/tmp    tmpfs  nodev,nosuid,size=10m     0   0  

    d.创建serial.conf文件,内容如下:  

    start on stopped rc RUNLEVEL=[2345]  

    stop on runlevel [!2345] 

    respawn  

    exec /sbin/getty 115200 ttyO0  

    e.创建inittab文件,内容如下:  

    T0:23:respawn:/sbin/getty -L ttyO0 115200 vt102  

    3).创建TF制作脚本make_tfcard.sh,内容如下:  

    #!/bin/sh 

    DISK=/dev/sdc 

    dd if=/dev/zero of=${DISK} bs=1M count=16 

    fdisk ${DISK}<

    n  

    p  

    +48MB  

    t  

    e  

    a  

    1  

    n  

    p  

    +1024MB  

    w  

    EOF 

    mkfs.vfat -F 16 ${DISK}1 -n boot  

    mkfs.ext4 ${DISK}2 -L rootfs -O ^has_journal 

    mkdir -p /tmp/boot/  

    mkdir -p /tmp/rootfs/ 

    mount ${DISK}1 /tmp/boot/  

    mount ${DISK}2 /tmp/rootfs/ 

    cp -v ./u-boot/MLO /tmp/boot/  

    cp -v ./u-boot/u-boot.img /tmp/boot/ 

    cp uEnv.txt /tmp/boot/ 

    tar xJvpf ./debian-8.0-minimal-armhf-2015-04-27.tar.xz  

    tar xpf ./debian-8.0-minimal-armhf-2015-04-27/armhf-rootfs-debian-jessie.tar -C /tmp/rootfs 

    cp -v ./linux-dev/deploy/*.zImage /tmp/boot/zImage  

    mkdir -p /tmp/boot/dtbs/  

    tar xfov ./linux-dev/deploy/*-dtbs.tar.gz -C /tmp/boot/dtbs/  

    tar xfov ./linux-dev/deploy/*-firmware.tar.gz -C /tmp/rootfs/lib/firmware/  

    tar xfov ./linux-dev/deploy/*-modules.tar.gz -C /tmp/rootfs/ 

    mkdir -p /tmp/rootfs/etc  

    mkdir -p /tmp/rootfs/etc/network  

    mkdir -p /tmp/rootfs/etc/init 

    cp fstab /tmp/rootfs/etc/fstab  

    cp interfaces /tmp/rootfs/etc/network/interfaces  

    cp inittab /tmp/rootfs/etc/inittab  

    cp serial.conf /tmp/rootfs/etc/init/serial.conf 

    sync  

    umount /tmp/rootfs/  

    umount /tmp/boot  

    该脚本中的DISK=/dev/sdc一行数据请根据实际情况修改。  

    7.编译源码及制作启动TF卡(在bbb-debian目录下)  

    使用bash -e build_all.sh命令编译源码并生成所需镜像,编译完成后,将TF卡插到电脑上,再执行sudo ./make_tfcard.sh命令即可生成可启动的TF卡。  

    8.运行验证TF卡  

    将制作好的TF卡插入到BBB的TF卡槽里,然后上电启动(需要按住TF卡上面的按键后再进行该操作),在相应的调试串口可以看到最后有如下命令打印出来:  

    Debian GNU/Linux 8 arm ttyO0 

    default username:password is [debian:temppwd]  

    此时按上面的提示用户名和密码进行登陆即可。  

    9.参考网址:  

     http://adis.ca/article/debian-wheezy-beaglebone-black 

     https://www.eewiki.net/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-Debian8 

    10.文档资料  

    上述过程中涉及到自己添加的相关文件,可由bbb-debian-related-files.tar.gz链接下载。

    相关文章

      网友评论

        本文标题:源码编译TF卡启动BBB的debian系统

        本文链接:https://www.haomeiwen.com/subject/qrlshftx.html