网上其他教程十有八九各种问题,要么拿着debian官方的固件,花了40分钟烧完,有什么意思呢,还是要自己完全编译固件并烧写进去才有意思,这个教程应该没有任何问题,国产版的没有emmc的请绕道
buildroot编译方法:
可能很多人并不知道buildroot是什么东西,以前很多人说起定制文件系统,就想起怎么一步一步拷贝文件最后生成rootfs,这种方式太原始了,有更先进的方式来生成文件系统,那就是buildroot,以后再不要提定制文件系统怎么弄怎么弄,直接上buildroot
1、修改buildroot/configs/beaglebone_defconfig内容如下:
BR2_arm=y
BR2_cortex_a8=y
BR2_TARGET_GENERIC_GETTY_PORT=“console”
BR2_GLOBAL_PATCH_DIR=“board/beaglebone/patches”
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
BR2_ROOTFS_POST_IMAGE_SCRIPT=“board/beaglebone/post-image.sh”
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE=“2018.07”
BR2_TARGET_UBOOT_BOARD_DEFCONFIG=“am335x_evm”
BR2_TARGET_UBOOT_NEEDS_DTC=y
BR2_TARGET_UBOOT_FORMAT_IMG=y
BR2_TARGET_UBOOT_SPL=y
BR2_TARGET_UBOOT_SPL_NAME=“MLO”
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y
BR2_PACKAGE_GLIBC=y
BR2_KERNEL_HEADERS_4_14=y
BR2_KERNEL_MIRROR=“http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/”
BR2_GNU_MIRROR=“https://mirrors.tuna.tsinghua.edu.cn/gnu/”
#BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_TOOLCHAIN=y
BR2_TOOLCHAIN_USES_GLIBC=y
BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y
BR2_TOOLCHAIN_EXTERNAL_LINARO_ARM=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL=“toolchain-external-linaro-arm”
BR2_TOOLCHAIN_EXTERNAL_PREFIX=“arm-linux-gnueabihf”
BR2_PACKAGE_UTIL_LINUX=y
BR2_PACKAGE_UTIL_LINUX_BINARIES=y
BR2_PACKAGE_BC=y
2、make beaglebone_defconfig
3、修改buildroot/package/busybox目录的busybox.config文件,内容如下
CONFIG_MKFS_EXT2=y
CONFIG_MKFS_VFAT=y
3、make -j8
4、等待一段时间,有错误,需要编译Kernel,之后将kernel编译后的zImage和am335x-boneblack.dtb文件复制到buildroot/output/images/目录下重新make -j8
编译kernel前先配置交叉工具链:
1、下载交叉工具链
2、解压到指定的目录,然后gedit ~./profile将gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin目录添加到PATH路径,之后source ~/.profile使能,或者重启系统(不懂的用户自行搜索)
kernel编译其他步骤:
1、kernel 下载路径:github地址国际惯例
2、配置,修改Makefile如下
VERSION = 4
PATCHLEVEL = 14
SUBLEVEL = 108
EXTRAVERSION =
NAME = Petit Gorille
ARCH=arm
CROSS_COMPILE=ccache arm-linux-gnueabihf-
3、make -j8,等待结束,在arch/arm/boot目录下会生成zImage文件,在arch/arm/boot/dts目录中下生成am335x-boneblack.dtb
SD卡烧写方法:
1、输入如下命令,格式化并一键分区SD卡
#sudo sfdisk --force /dev/sdb << EOF
1,104447,b,*
,
EOF
#sudo mkfs.vfat /dev/sdb1
#sudo mkfs.ext4 /dev/sdb2
2、拷贝buildroot/output/images目录下的这几个文件到/dev/sdb1分区(该分区大约50MB左右)
├── am335x-boneblack.dtb
├── MLO
├── u-boot.img
├── uEnv.txt
└── zImage
3、烧写rootfs.ext2到/dev/sdb2分区
#sudo umount /dev/sdb2
#sudo dd if=rootfs.ext2 of=/dev/sdb2 bs=128
#sync
4、修改uEnv.txt为如下内容,给emmc启动使用:
bootpart=0:1
devtype=mmc
bootdir=
bootfile=zImage
bootpartition=mmcblk1p2
set_mmc1=if test
b
o
a
r
d
n
a
m
e
=
A
33515
B
B
;
t
h
e
n
s
e
t
e
n
v
b
o
o
t
p
a
r
t
i
t
i
o
n
m
m
c
b
l
k
1
p
2
;
f
i
s
e
t
b
o
o
t
a
r
g
s
=
s
e
t
e
n
v
b
o
o
t
a
r
g
s
c
o
n
s
o
l
e
=
t
t
y
O
0
,
115200
n
8
r
o
o
t
=
/
d
e
v
/
board_name = A33515BB; then setenv bootpartition mmcblk1p2; fi set_bootargs=setenv bootargs console=ttyO0,115200n8 root=/dev/
boardname=A33515BB;thensetenvbootpartitionmmcblk1p2;fisetbootargs=setenvbootargsconsole=ttyO0,115200n8root=/dev/{bootpartition} rw rootfstype=ext4 rootwait
uenvcmd=run set_mmc1; run set_bootargs;run loadimage;run loadfdt;printenv bootargs;bootz ${loadaddr} - ${fdtaddr}
4、打包MLO和u-boot.img和uEnv.txt到boot_partition.tar
sudo tar -cf boot_partition.tar MLO u-boot.img uEnv.txt
5、拷贝rootfs.ext2、boot_partition.tar、am335x-boneblack.dtb和zImage到/dev/sdb2分区
至此,SD卡工作完毕
emmc烧写方法:
1、插入SD卡,按住S2按键,给板子上电,就会从SD卡启动系统,输入root进系统
2、给emmc一键分区
#sfdisk --force /dev/mmcblk1 << EOF
1,104447,b,*
,
EOF
3、格式化emmc分区
#mkfs.vfat /dev/mmcblk1p1
#mkfs.ext2 /dev/mmcblk1p2
4、解压boot_partition.tar到emmc p1分区
#mount /dev/mmcblk1p1 /tmp/
#tar -xf /boot_partition.tar -C /tmp/
#sync
#umount /tmp
5、解压rootfs.ext2到emmc p2分区
#dd if=/rootfs.ext2 of=/dev/mmcblk1p2 bs=128
#sync
6、其他收尾工作
#mount /dev/mmcblk1p2 /tmp/
#mkdir /tmp/boot/
#cp /am335x-boneblack.dtb /zImage /tmp/boot
#sync
7、拔掉SD卡,重启系统