制作更新BeagleBone-Black的Bootloader内核和文件系统
来源:互联网 发布:java开发实战经典 编辑:程序博客网 时间:2024/05/29 10:56
本博客翻译自:https://www.eewiki.net/display/linuxonarm/BeagleBone%20Black
基本要求:
- ARM 交叉编译器
- Linaro: http://www.linaro.org/downloads/
- Bootloader
- Das U-Boot – the Universal Boot Loader http://www.denx.de/wiki/U-Boot
- 源码地址 – http://git.denx.de/?p=u-boot.git;a=summary
- Linux Kernel
- 主线内核: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git
- 基于ARM的 rootfs
- Debian: https://www.debian.org/
- Ubuntu: http://www.ubuntu.com
ARM 交叉编译器: GCC
这是一个32位预编译的工具链,如果你的发行版为64位系统,请确保安装了32位库,安装方法如下表所示:
基于Debian (deb)
extra
pkgs: (sudo apt-get update ; sudo apt-get install xyz)
Ubuntu 14.04 -> 14.10
libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386
Debian 7 -> 8 (Jessie)
sudo dpkg --add-architecture i386
libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386
基于RedHat (rpm)
extra
pkgs: (yum install xyz)
Red Hat/Centos/Fedora
libstdc++.i686 ncurses-devel.i686 zlib.i686
下载/解压:
测试: 如果未通过测试, 确认你的系统是否正确安装32位库.
Bootloader: U-Boot
Das U-Boot -- 通用的Bootloader http://www.denx.de/wiki/U-Boot
下载:
git clone git:
//git.denx.de/u-boot.git
cd u-boot/
git checkout v2014.
10
-b tmp
补丁:
配置和编译:
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_defconfig
make ARCH=arm CROSS_COMPILE=${CC}
升级发行版中的Device Tree 编译工具包
wget -c https:
//raw.github.com/RobertCNelson/tools/master/pkgs/dtc.sh
chmod +x dtc.sh
./dtc.sh
Linux 内核
这个脚本将会编译内核和模块,并将它们拷贝至 deploy 目录.
主线内核
下载:
切出 v3.8.x 分支 (支持所有Cape):
或切出 v3.18.x 分支 (支持SGX 并且对 usb & ethernet有更好的支持):
TI BSP
警告: 如果你没有经常rebase你分支的习惯, 由于该源码是基于 http://git.ti.com/gitweb/?p=ti-linux-kernel/ti-linux-kernel.git;a=shortlog;h=refs/heads/ti-linux-3.14.y,是稳定内核的一个替代. 因此你必须经常做如下操作: (git checkout master -f ; git branch -D tmp ; git pull ; git checkout origin/ti-linux-3.14.y -b tmp) .
下载:
编译:
根文件系统
Debian 7
User
Password
debian
temppwd
root
root
这个镜像包含Systemd: https://wiki.debian.org/systemd, 打开systemd,添加下列参数到uEnv.txt:
下载:
wget -c https:
//rcn-ee.net/deb/minfs/wheezy/debian-7.7-minimal-armhf-2014-11-10.tar.xz
验证:
解压:
Debian 8 (pre-release)
User
Password
debian
temppwd
root
root
下载:
wget -c https:
//rcn-ee.net/deb/minfs/jessie/debian-jessie-minimal-armhf-2014-11-10.tar.xz
验证:
解压:
Ubuntu 14.04.1
User
Password
ubuntu
temppwd
下载:
wget -c https:
//rcn-ee.net/deb/minfs/trusty/ubuntu-14.04.1-minimal-armhf-2014-11-10.tar.xz
验证:
解压:
根文件系统 (精简版)
64M大小的根文件系统, 适用于烧写应用.
Debian 7 (small flash)
User
Password
debian
temppwd
root
root
下载:
验证:
解压:
设置 microSD/SD 卡
对于下面的指令, 我们假设: DISK=/dev/mmcblk0, 对于决定设备ID, "lsblk" 是非常有用的.
擦除 microSD/SD 卡:
安装 Bootloader:
创建分区:
格式化分区:
挂载分区:
在一些系统上, 这些分区可能会自动被挂载...
备份 Bootloader
复制 MLO/u-boot.img 到boot目录
处理eMMC中老的bootloader
如果你不想清除eMMC中的老的bootloader,添加下面uEnv.txt到 /media/rootfs/ 中
##This will work with: Angstrom's
2013.06
.
20
u-boot.
loadaddr=
0x82000000
fdtaddr=
0x88000000
rdaddr=
0x88080000
initrd_high=
0xffffffff
fdt_high=
0xffffffff
mmcroot=/dev/mmcblk0p1
loadximage=load mmc
0
:
1
${loadaddr} /boot/vmlinuz-${uname_r}
loadxfdt=load mmc
0
:
1
${fdtaddr} /boot/dtbs/${uname_r}/${fdtfile}
loadxrd=load mmc
0
:
1
${rdaddr} /boot/initrd.img-${uname_r}; setenv rdsize ${filesize}
loaduEnvtxt=load mmc
0
:
1
${loadaddr} /boot/uEnv.txt ; env
import
-t ${loadaddr} ${filesize};
loadall=run loaduEnvtxt; run loadximage; run loadxfdt;
mmcargs=setenv bootargs console=tty0 console=${console} ${optargs} ${cape_disable} ${cape_enable} root=${mmcroot} rootfstype=${mmcrootfstype} ${cmdline}
uenvcmd=run loadall; run mmcargs; bootz ${loadaddr} - ${fdtaddr};
安装内核和根文件系统
由于内核版本每天都可能有变化,为了帮助新的用户,本页列出的内核编译脚本将会给出你所编译内核的版本。
复制并粘贴你自己编译环境中显示的"export kernel_version=3.X.Y-Z"确切信息,然后按回车键创建一个环境变量,这个变量随后会用到。
复制根文件系统
创建 /boot/uEnv.txt
提示:使用开发板对应的Device Tree文件,下面以操作以BeagleBone-Black为例,所以fdtfile=am335x-boneblack.dtb。
Debian /boot/uEnv.txt (启用 systemd)
sudo sh -c
"echo 'cmdline=quiet init=/lib/systemd/systemd' >> /media/rootfs/boot/uEnv.txt"
复制内核文件
Kernel Image:
mainline:
sudo cp -v ./bb-kernel/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}
bsp:
sudo cp -v ./ti-linux-kernel-dev/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}
内核 Device Tree 二进制文件:
sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/
mainline:
sudo tar xfv ./bb-kernel/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/
bsp:
sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/
内核模块:
mainline:
sudo tar xfv ./bb-kernel/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/
bsp:
sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/
文件系统表 (/etc/fstab)
sudo sh -c
"echo '/dev/mmcblk0p1 / auto errors=remount-ro 0 1' >> /media/rootfs/etc/fstab"
网络
编辑: /etc/network/interfaces
添加如下内容:
网络: 多个BeagleBone共享同一张SD卡
总是启用Ethernet接口作为 eth0.
编辑文件: /etc/udev/rules.d/70-persistent-net.rules
添加:
# BeagleBone: net device ()
SUBSYSTEM==
"net"
, ACTION==
"add"
, DRIVERS==
"?*"
, ATTR{dev_id}==
"0x0"
, ATTR{type}==
"1"
, KERNEL==
"eth*"
, NAME=
"eth0"
串口登录
Debian
sudo sh -c
"echo 'T0:23:respawn:/sbin/getty -L ttyO0 115200 vt102' >> /media/rootfs/etc/inittab"
Ubuntu
创建新文件: /etc/init/serial.conf
添加如下内容:
从主机上移除 microSD/SD 卡:
usb gadget
支持通过usb使用http访问BeagleBone-Black.
安装 udhcpd
编辑: /etc/network/interfaces 并添加如下内容:
临时脚本:
wget -c https:
//raw.github.com/RobertCNelson/tools/master/scripts/beaglebone-black-g-ether-load.sh
chmod +x beaglebone-black-g-ether-load.sh
sudo ./beaglebone-black-g-ether-load.sh
HDMI
本段内容假设你已经安装你最喜欢的基于xorg的窗口管理器,例如lxde,xfce,kde,gnome等等。有一些安装包需要在你选择窗口管理器之前被安装,并且需要一个xorg.conf配置文件来正确的设置视频接口。
提示: 如果光标没有立即显示出来,首先按下 ctlr-alt-f1 ,然后: ctrl-alt-f7 ,此后光标应该已经显示...
确定已经安装, modesetting 驱动 和 xrandr 工具:
sudo apt-get update
sudo apt-get install read-edid xserver-xorg-video-fbdev xserver-xorg-video-modesetting x11-xserver-utils
xrandr:
xrandr (通过 serial/ssh)
eMMC
这个脚本用来复制你的microSD卡的系统到板子上的eMMC中: (这个脚本需要安装以下包: initramfs-tools dosfstools rsync )
wget https:
//raw.githubusercontent.com/RobertCNelson/boot-scripts/master/tools/eMMC/bbb-eMMC-flasher-eewiki-ext4.sh
chmod +x bbb-eMMC-flasher-eewiki-ext4.sh
sudo /bin/bash ./bbb-eMMC-flasher-eewiki-ext4.sh
SGX
编译 SGX 模块/用户空间程序 (必须在x86系统上做这些操作,这是因为 TI 5.01.01.01 blob extractor)
复制 ./deploy/GFX_5.01.01.01.tar.gz 到 BeagleBone/BeagleBone Black 并安装
验证 omaplfb & pvrsrvkm模块是否加载
SGX Demos
常见问题(FAQ)
BeagleBone Black Angstrom usb 网络加载失败
dmesg 将出现类似如下错误:
原因:
hexdump有个功能,就是将重复字符替换为*, 因此读出来的MAC地址不正确:
hexdump -e
'1/1 "%02X" ":"'
/proc/device-tree/ocp/ethernet
@4a100000
/slave
@4a100300
/mac-address
90
:
59
:AF:5C:*
C7:root
@beaglebone
:~#
hexdump -v -e
'1/1 "%02X" ":"'
/proc/device-tree/ocp/ethernet
@4a100000
/slave
@4a100300
/mac-address
90
:
59
:AF:5C:5C:C7:root
@beaglebone
:~#
添加一个 "-v" 到hexdump调用中.
补丁通告:
https://github.com/beagleboard/meta-beagleboard/pull/12
- 制作更新BeagleBone-Black的Bootloader内核和文件系统
- beaglebone black debian 系统内核更新 方法
- Beaglebone black开发板更新内核
- Beaglebone Black更新系统的方法
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作--Bootloader的执行过程
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作--Bootloader的功能
- 【BeagleBone Black Rev. C试用体验】+内核更新
- Beaglebone black-固件更新
- Beaglebone Black——制作自己的SD启动卡
- Beaglebone Black——制作自己的SD启动卡
- Beaglebone Black的启动
- Beaglebone Black 串口的操作(一)(更新)
- beaglebone black tftp与nfs挂载根文件系统
- beaglebone black tftp与nfs挂载根文件系统
- Beaglebone Black——理论篇beaglebone black启动——从串口获得SPL、U-BOOT,TFTP服务器获得内核,NFS服务器挂载根文件系统
- Beaglebone Black——实践篇beaglebone black启动——从串口获得SPL、U-BOOT,TFTP服务器获得内核,NFS服务器挂载根文件系统
- 如何把BOOTLOADER,内核,文件系统,制作成一个文件
- BeagleBone Black教程之BeagleBone Black设备的连接
- 如何简单快速修改bootstrap
- 最大公约数和最小公倍数
- BZOJ 3744 Gty的妹子序列 分块+fenwick
- Longest Common Prefix
- linux之SQL语句简明教程---INSERT INTO
- 制作更新BeagleBone-Black的Bootloader内核和文件系统
- sharepoint powershell脚本
- Groovy动态语言
- 统计出其中英文字母、数字、空格和其他字符的个数
- 透视投影 在不同图形API实现,如OpenGL和D3D
- Extjs实用技巧
- Android之Service学习
- sharepoint cmdlet脚本2
- 第十六周项目三—用函数指针调用函数