美文网首页
BeagleBone Back Rev C制作image

BeagleBone Back Rev C制作image

作者: RawHeart心然 | 来源:发表于2019-03-21 17:24 被阅读0次

    https://www.digikey.com/eewiki/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-Availability

    在BBB板上直接做image, 由于板上空间不够做不了,所以用虚拟机制作BBB image

    一、环境:

    主机:win10

    虚拟机:vmware player安装ubuntu16.04 server版

    软硬件条件:

    MicroSD card:不小于1GB,使用USB卡托插入主机才能被虚拟机正确识别

    Cross compiler:(似乎国内总是下载失败,找Fernado在国外下载)https://releases.linaro.org/components/toolchain/binaries/6.4-2018.05/arm-linux-gnueabihf/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz

    u-boot: https://github.com/u-boot/u-boot

    Linux Kernel: https://github.com/RobertCNelson/bb-kernel

    TI Kernel: https://github.com/RobertCNelson/ti-linux-kernel-dev.git

    Debian Root File Sytem(rootfs): https://rcn-ee.com/rootfs/eewiki/minfs/debian-9.5-minimal-armhf-2018-07-30.tar.xz

    二、制作步骤:

    用root登录ubuntu16.04虚拟机

    mkdir -p /root/beaglebone

    cd /root/beaglebone

    1,安装cross compiler:

    wget -c https://releases.linaro.org/components/toolchain/binaries/6.4-2018.05/arm-linux-gnueabihf/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz

    sudo tar xf gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz

    root@ubuntu:~/beaglebone# export CC=`pwd`/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-

    root@ubuntu:~/beaglebone# ${CC}gcc --version

    arm-linux-gnueabihf-gcc (Linaro GCC 6.4-2018.05) 6.4.1 20180425 [linaro-6.4-2018.05 revision 7b15d0603ad63dc19ab7cf035eb70]

    Copyright (C) 2017 Free Software Foundation, Inc.

    This is free software; see the source for copying conditions.  There is NO

    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    2,安装编译u-boot

    cd /root/beaglebone

    git clone https://github.com/u-boot/u-boot

    cd u-boot/

    git checkout v2018.09 -b tmp

    cd /root/beaglebone/u-boot

    wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2018.09/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch

    wget -c https://rcn-ee.com/repos/git/u-boot-patches/v2018.09/0002-U-Boot-BeagleBone-Cape-Manager.patch

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

    patch -p1 < 0002-U-Boot-BeagleBone-Cape-Manager.patch

    make ARCH=arm CROSS_COMPILE=${CC} distclean

    make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_defconfig

    vi /root/beaglebone/u-boot/.config

    CONFIG_BOOTDELAY=0

    make ARCH=arm CROSS_COMPILE=${CC}

    3,安装编译Linux kernel

    3.1 通用Linux Kernel

    cd /root/beaglebone

    git clone https://github.com/RobertCNelson/bb-kernel

    cd bb-kernel/

    git checkout origin/am33x-rt-v4.9 -b tmp

    提前把编译器安装好,因为直接下载失败

    mkdir -p /root/beaglebone/bb-kernel/dl/

    sudo cp /root/beaglebone/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz /root/beaglebone/bb-kernel/dl/

    ./build_kernel.sh

    结束时注意看屏幕输出,后面会用:export kernel_version=4.9.146-bone-rt-r12

    3.2 TI Kernel

    git clone https://github.com/RobertCNelson/ti-linux-kernel-dev.git

    cd ti-linux-kernel-dev/

    git checkout origin/ti-linux-rt-4.14.y -b tmp

    提前把编译器安装好,因为直接下载失败

    mkdir -p /root/ti-linux-kernel-dev/bb-kernel/dl/

    sudo cp /root/beaglebone/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz /root/ti-linux-kernel-dev/bb-kernel/dl/

    ./build_kernel.sh

    4,安装Root FileSytem

    cd /root/beaglebone

    wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-9.5-minimal-armhf-2018-07-30.tar.xz

    root@ubuntu:~/beaglebone# sha256sum debian-9.5-minimal-armhf-2018-07-30.tar.xz

    9399d649d1ce9910bbfc745f59dc57ee0e1134f57e8cae01c8cd75a8bd9d1e1e  debian-9.5-minimal-armhf-2018-07-30.tar.xz

    sudo tar xf debian-9.5-minimal-armhf-2018-07-30.tar.xz

    5,安装microSD card并制作image

    5.1 fdisk -l #找出sd card Disk /dev/sdb

    export DISK=/dev/sdb

    cd /root/beaglebone

    5.2 # Erase partition table/labels on microSD card:

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

    5.3 # Install Bootloader:

    sudo dd if=./u-boot/MLO of=${DISK} count=1 seek=1 bs=128k

    sudo dd if=./u-boot/u-boot.img of=${DISK} count=2 seek=1 bs=384k

    5.4 # Create Partition Layout:先查看sfdisk 版本

    查看sfdisk版本:

    root@ubuntu:~/beaglebone# sfdisk -v

    sfdisk from util-linux 2.27.1

    输入以下命令:

    sudo sfdisk ${DISK} <<-__EOF__

    4M,,L,*

    __EOF__

    如果sfdisk版本低于2.25x,则输入以下命令:

    5.5 分区格式化:

    sudo mkfs.ext4 -L rootfs ${DISK}1

    一路回车,不用输入信息。

    5.6 Mount Partition:

    mkdir -p /media/rootfs/

    for: DISK=/dev/sdX

    sudo mount ${DISK}1 /media/rootfs/

    for: DISK=/dev/mmcblk0

    sudo mount ${DISK}p1 /media/rootfs/

    5.7 Backup Bootloader

    cd  /root/beaglebone

    sudo  mkdir -p /media/rootfs/opt/backup/uboot/

    sudo cp -v ./u-boot/MLO /media/rootfs/opt/backup/uboot/

    sudo cp -v ./u-boot/u-boot.img /media/rootfs/opt/backup/uboot/

    5.8 Install Kernel and Root File System

    #在上面build_kernel执行完会看见kernel_version

    cat ~/beaglebone/ti-linux-kernel-dev/kernel_version

    4.14.79-ti-rt-r86

    export kernel_version=4.9.146-bone-rt-r12

    或export kernel_version=4.14.79-ti-rt-r86

    5.8.1 copy root file system

    cd /root/beaglebone/

    sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/

    sync

    sudo chown root:root /media/rootfs/

    sudo chmod 755 /media/rootfs/

    5.8.2 set uname_r in /boot/uEnv.txt

    cd /root/beaglebone/

    sudo sh -c "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"

    5.8.3 copy kernel image

    cd /root/beaglebone/

    sudo cp -v ./bb-kernel/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}

    或sudo cp -v ./ti-linux-kernel-dev/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}

    5.8.4 copy kernel device tree binaries

    cd /root/beaglebone/

    sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/

    sudo tar xfv ./bb-kernel/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/

    或sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/

    5.8.5 Copy Kernel Modules

    cd /root/beaglebone/

    sudo tar xfv ./bb-kernel/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

    或sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

    5.8.6 File Systems Table (/etc/fstab)

    sudo sh -c "echo '/dev/mmcblk0p1  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

    5.8.7 Networking

    vi  /media/rootfs/etc/network/interfaces

    iface eth0 inet static

    address 192.168.2.183

    netmask 255.255.255.0

    gateway 192.168.2.1

    5.8.8 Networking: Using a shared SD card with Multiple BeagleBone

    vi  /media/rootfs/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"

    5.8.9 配置

    1)允许root远程登录

    vi /media/rootfs/etc/ssh/sshd_config

    PermitRootLogin yes

    2)安装烧录脚本

    cd /root/beaglebone/

    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

    cp bbb-eMMC-flasher-eewiki-ext4.sh /media/rootfs/boot/

    5.8.10 Remove SD card

    sync

    sudo umount /media/rootfs

    如果一切顺利,至此启动u盘制作成功,断电下插入BBB版,hold BOOT按键(S2),再摁Power键上电,当看到四个灯都亮时,可以松开S2,等待启动完成。

    Notes:

    1,避免git超时

    git config --system http.postBuffer 524288000

    git config --system http.sslVerify false

    三、第一次启动

    1)初始登录:debian/temppwd

    2)第一次可以设置root密码

    sudo passwd root

    3)设置时区和时间

    dpkg-reconfigure tzdata

    date -s "2019-01-05 14:54:56"

    hwclock --systohc //设置硬件时钟与系统时间同步,关机重启时间就复原,需要纽扣电池

    4)安装开发调试工具

    apt-get update

    apt-get install gcc

    apt-get install make

    apt-get install gdb

    apt-get install build-essential

    apt-get install linux-perf

    apt-get install man

    apt-get install tree

    apt-get install python

    git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git

    cd rt-tests

    git checkout stable/v1.0

    make all

    make install

    编译安装最新valgrind,因为apt-get install valgrind 3.12版本有问题

    wget http://www.valgrind.org/downloads/valgrind-3.14.0.tar.bz2

    安装gprof2dot和dot工具分析valgrind结果

    https://files.pythonhosted.org/packages/9d/36/f977122502979f3dfb50704979c9ed70e6b620787942b089bf1af15f5aba/gprof2dot-2017.9.19.tar.gz

    https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/graphviz.tar.gz

    四、优化启动时间:

    1,禁止启动不需要服务

    systemctl disable nginx.service

    systemctl disable unattended-upgrades.service

    systemctl disable binfmt-support.service

    systemctl disable ofono.service

    systemctl disable bluetooth.service  //仍然可以被其它进程启动

    systemctl mask bluetooth.service //屏蔽后不能被启动

    systemctl disable wpa_supplicant.service //wifi服务

    systemctl mask wpa_supplicant.service

    systemctl set-default multi-user.target

    systemctl disable graphical.target

    systemctl disable loadcpufreq.service

    systemctl disable cpufrequtils.service

    systemctl disable dundee.service  //dundee/ofono与移动通讯有关ofono.org

    systemctl disable hostapd.service  //802.11无线通讯

    systemctl disable networking.service  //不影响ssh登录

    systemctl disable dnsmasq.service

    systemctl mask dnsmasq.service

    systemctl disable udhcpd.service

    systemctl mask udhcpd.service

    systemctl mask  remote-fs.target

    systemctl disable rsyslog.service  //默认日志服务用不到

    systemctl disable apt-daily.timer

    systemctl disable apt-daily.service

    systemctl disable apt-daily-upgrade.timer

    systemctl disable avahi-daemon.service

    systemctl disable avahi-daemon.socket

    systemctl disable systemd-timesyncd.service

    connman.service不能停,否则ssh连接断,生产版可以停

    ssh.service 生产版可以disable

    2,修改配置

    root@arm:~# cat /boot/uEnv.txt

    optargs=quiet lpj=1990656(通过dmesg -d查询lpj实际value)

    #disable_uboot_overlays=1

    disable_uboot_overlay_video=1

    disable_uboot_overlay_audio=1

    disable_uboot_overlay_wireless=1

    disable_uboot_overlay_adc=1

    vi /etc/systemd/journald.conf

    Storage=none 可以减掉0.5秒,但不建议

    vi /etc/systemd/system.conf

    DefaultTimeoutStartSec=1s

    DefaultTimeoutStopSec=1s

    禁用swap分区

    swapoff -a

    查询swap优先级

    sysctl -q vm.swappiness

    降低swap优先级

    vi /etc/sysctl.conf

    增加

    vm.swappiness=0

    3,增加串口终端登录服务

    新建文件/etc/rc.local,内容如下,并增加+x权限

    root@arm:~# cat /etc/rc.local

    #!/bin/sh -e

    # ttyS0 - getty

    #

    # This service maintains a getty on ttyS0 from the point the system is

    # started until it is shut down again.

    exec /sbin/getty -L 115200 ttyS0 vt102 &

    exit 0

    EOF

    通过USB线连接BBB板PIN口,需要安装USB驱动。

    4,SD卡系统烧录到BBB板flash

    用SD卡启动BBB板

    cd /boot

    /bin/bash ./bbb-eMMC-flasher-eewiki-ext4.sh

    五、linux系统备份image

    需要硬件环境:

    a)BeagleBoneBack开发板

    b)4GB MicroSD卡

    目标是把BeagleBoneBack开发板上的Linux系统做成镜像文件或复制系统到SD卡

    特别注意:源盘和目的盘必须不同!

    1,插入足够大备份sd卡,查看当前系统disk

            fdisk -l

    系统盘:Disk /dev/mmcblk0

    备份盘:Disk /dev/sda

    2,分区备份image

    mkdir -p /mnt/backup

    mount /dev/sda1 /mnt/backup

    dd bs=512 count=7744512 if=/dev/mmcblk0 of=/mnt/backup/linux_ghost.img;sync

    #dd bs=512 count=7471104 if=/dev/mmcblk1 of=/mnt/root/linux_ghost-4.9.146-bone-rt-r12.img;sync

    #bs=512(根据源盘mmcblk0 Units: sectors of 1 * 512 = 512 bytes) count=[fdisk命令中系统盘End列最大数+1]

    注意要执行sync同步磁盘

    3,整个系统全盘复制到SD卡制作启动盘

    dd if=/dev/mmcblk0 of=/dev/sda;sync

    六、镜像恢复到SD卡

    目标是把镜像备份img恢复成可以SD卡启动盘

    需要硬件环境:

    a)PC机和imag镜像文件

    b)4GB MicroSD卡

    c)在window上安装镜像刻录软件Etcher

    https://www.balena.io/etcher/

    如下图,打开Etcher软件,选择镜像文件和目的SD盘,点击Flash开始刻录。

    相关文章

      网友评论

          本文标题:BeagleBone Back Rev C制作image

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