debian 编译linux内核源码,源码编译TF卡启动BBB的debian系统

为了后期使用一些开源框架(后期会有博文说明)的需求,不得不移植一套能满足需求的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

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

3.下载dtc工具生成脚本

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

cd ..

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 ..

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

1

+48MB

t

e

a

1

n

p

2

+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.参考网址:

10.文档资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值