$ ./flash-tool.sh --img=/path/to/aml_upgrade_package.img --parts=all --wipe --soc=g12a --reset=y
构建 Android 源代码获取Android 9.0源代码git clone https://github.com/BPI-SINOVOIP/BPI-A311D-Android9复制或者您可以从百度盘(pincode:8888)或GoogleDrive获取源代码tar存档构建Android 9.0源码请阅读源码README.mdAndroid DTB 覆盖
Bananapi M2S DTBO idx 值表,发布镜像中默认 idx 值为 0。
Bananapi M2S DTBO idx值表
idx值
设备树覆盖
描述
0
android_p_overlay
默认dtbo,没用
1
wifi_bt_rtl8822cs
启用 bpi rtl8822cs wifi/bt 模块
2
i2c1
启用 i2c 1
3
i2c2
启用 i2c 2
4
sdio
启用sdio
5
串口1
启用 2 引脚 UART 1
6
uart1_cts_rts
启用4针UART 1
7
串口2
启用 2 引脚 UART 2
8
hifi_pcm5122
启用 i2s pcm5122 HiFi DAC
如何运用新的 dtbo
通过 sysfs 的 ADB 命令root@dangku-desktop:/tmp# adb root restarting adbd as root root@dangku-desktop:/tmp# adb remount remount succeeded root@dangku-desktop:/tmp# adb shell bananapi_m2s:/ # echo dtbo > /sys/class/unifykeys/name bananapi_m2s:/ # echo "1" > /sys/class/unifykeys/write bananapi_m2s:/ # reboot复制通过 sysfs 的 Uart 掌握台命令console:/ $ console:/ $ su console:/ # echo dtbo > /sys/class/unifykeys/name [ 115.702781@0] unifykey: name_store() 1302, name dtbo, 4 [ 115.702856@0] unifykey: name_store() 1311 console:/ # console:/ # echo "1" > /sys/class/unifykeys/write [ 129.262659@0] unifykey: write_store() is a string [ 129.262733@0] unifykey: dtbo, 1, 1 [ 129.265312@0] unifykey: amlkey_write 393 [ 129.292347@1] emmc_key_write:149, write ok console:/ # console:/ # reboot复制设置运用程序(待办事项)检讨启动uart调试并确认实际加载了哪个dtbo,这里“1”表示设置idx=1以运用wifi_bt_rtl8822cs dtbo。load dtb from 0x1000000 ...... Amlogic multi-dtb tool Single dtb detected find 2 dtbos dtbos to be applied: 1 Apply dtbo 1复制Unifykeys 存储在特定的 emmc 部分中,在 USB_Burning_Tool 中选择的“正常擦除”不会不才次更新时擦除此数据,如果您希望在映像下载后运用默认的 dtbo idx,则必须选择“擦除全部”。利用特定的 DTBO 默认值构建 Android 映像。
默认内置覆盖层在 device/bananapi/bananapi_m2s/Kernel.mk 中定义,您可以在此处添加新的覆盖层 dtbo。DTBO_DEVICETREE := android_p_overlay wifi_bt_rtl8822cs i2c1 i2c2 sdio uart1 uart1_cts_rts uart2 hifi_pcm5122复制默认运用 DTBO idx 在 device/bananapi/bananapi_m2s/BoardConfig.mk 中定义,您可以变动 idx 值来设置默认运用哪个覆盖 dtbo。BOARD_KERNEL_CMDLINE += androidboot.dtbo_idx=0复制DTS 文件位于 common/arch/arm64/boot/dts/amlogic/overlay/bananapi_m2s/更多关于 android 设备树覆盖的信息,请参考google android 官方网站安装 OpenGapps从OpenGapps下载安装包,Android版本镜像是arm/android 9.0变体。下载device_id.apk。将 OpenGapp 包复制到 udisk 或 sdcard 根目录。在udisk或sdcard根目录下创建一个名为factory_update_param.aml的txt文件,个中包含以下android规复参数内容,并将文件名更换为实际下载的包。优盘:--wipe_cache --update_package=/udisk/open_gapps-arm-9.0-pico-20210327.zip复制SD卡:--wipe_cache --update_package=/sdcard/open_gapps-arm-9.0-pico-20210327.zip复制将 udisk 或 sdcard 插入开拓板并开机。OpenGapps 安装并认证。YouTube 视频:https://youtu.be/fXOKmWfpqF8您也可以在bilibili上不雅观看该视频开关Mipi面板默认的android发布镜像只支持一个mipi面板,由于硬件在启动时没有检测不同面板的逻辑,以是默认启用[800x1280 bpi面板],但你可以在设置→面板输出中变动为默认[1200x1920 bpi面板]
面板旋转
两个 10" mipi 面板都是纵向硬件显示,因此默认的 android 发布图像是纵向模式,但您可以通过两种办法将其旋转到 90/180/270。
设置中的UI旋转→显示→屏幕旋转SurfaceFlinger旋转,须要修正android源码并构建变动默认的 sf 旋转属性diff --git a/device/bananapi/bananapi_m2s/bananapi_m2s.mk b/device/bananapi/bananapi_m2s/bananapi_m2s.mk index 1f51703..d592a44 100644 --- a/device/bananapi/bananapi_m2s/bananapi_m2s.mk +++ b/device/bananapi/bananapi_m2s/bananapi_m2s.mk @@ -579,6 +579,6 @@ PRODUCT_PROPERTY_OVERRIDES += \ else PRODUCT_PROPERTY_OVERRIDES += \ ro.sf.lcd_density=213 \ - ro.sf.primary_display_orientation=0 + ro.sf.primary_display_orientation=90 endif复制变动 dts 中的触摸面板旋转diff --git a/common/arch/arm64/boot/dts/amlogic/bananapi_m2s.dts b/common/arch/arm64/boot/dts/amlogic/bananapi_m2s.dts index 4a698b0..3d41b63 100755 --- a/common/arch/arm64/boot/dts/amlogic/bananapi_m2s.dts +++ b/common/arch/arm64/boot/dts/amlogic/bananapi_m2s.dts @@ -876,8 +876,8 @@ reg = <0x5d>; reset-gpio = <&gpio GPIOA_6 GPIO_ACTIVE_HIGH>; irq-gpio = <&gpio GPIOA_5 GPIO_ACTIVE_HIGH>; - rotation = <4>; / sf_rotation 0 / - //rotation = <0>; / sf_rotation 90/ + //rotation = <4>; / sf_rotation 0 / + rotation = <0>; / sf_rotation 90/ //rotation = <5>; / sf_rotation 180 / //rotation = <3>; / sf_rotation 270 /复制自定义 Android 启动徽标Android bootloader 限定 boot logo fb 显示大小默认为 1080p60hz/1920x1080,并且 android kernel dtb 分区表将 boot logo 分区大小默认限定为 16MB。
准备一个16位bmp文件,命名为boot-logo.bmp将bmp文件压缩为boot-logo.bmp.gz$ gzip boot-logo.bmp复制下载m2s_android_bootlogo_tool.zip提取此工具$ unzip m2s_android_bootlogo_tool.zip $ cd m2s_android_bootlogo_tool/ $ ls -l logo/ -rwxr--r-- 1 dangku dangku 525054 Sep 25 16:54 bootup.bmp -rwxr--r-- 1 dangku dangku 525054 Sep 25 16:54 bootup_secondary.bmp -rwxr--r-- 1 dangku dangku 184 May 19 2020 upgrade_bar.bmp -rwxr--r-- 1 dangku dangku 180072 May 19 2020 upgrade_error.bmp -rwxr--r-- 1 dangku dangku 180072 May 19 2020 upgrade_fail.bmp -rwxr--r-- 1 dangku dangku 180072 May 19 2020 upgrade_logo.bmp -rwxr--r-- 1 dangku dangku 180072 May 19 2020 upgrade_success.bmp -rwxr--r-- 1 dangku dangku 184 May 19 2020 upgrade_unfocus.bmp -rwxr--r-- 1 dangku dangku 180072 May 19 2020 upgrade_upgrading.bmp复制复制 boot-logo.bmp.gz$ cp boot-logo.bmp.gz logo/bootup.bmp $ cp boot-logo.bmp.gz logo/bootup_secondary.bmp复制利用img pack工具创建目标logo.img,m2s_android_bootlogo_tool的二进制文件和干系库从<android-source-dir>/out/host/linux-x86复制$ ./logo_img_packer -r logo logo.img复制带有 fastboot 的 Flash 启动徽标$ adb root $ adb remount $ adb reboot fastboot复制等待几秒,检讨fastboot是否连接$ fastboot device 1234567890 fastboot $ fastboot flashing unlock_critical $ fastboot flashing unlock $ fastboot flash logo logo.img $ fastboot reboot复制Linux准备Linux 镜像支持 SDcard 或 EMMC 启动。建议利用A1级卡,至少8GB。如果您想从 SD 卡启动,请确保可启动 EMMC 已格式化如果您想从 EMMC 启动并利用 Sdcard 作为存储,请确保 SD 卡已格式化且没有 Linux 映像。在您的 Linux PC 上安装 bpi-tools(如果利用其他工具刷新映像,请忽略此步骤)。如果您无法访问此 URL 或涌现任何其他安装问题,请转至bpi-tools源代码库,手动下载并安装此工具。$ apt-get install pv $ curl -sL https://github.com/BPI-SINOVOIP/bpi-tools/raw/master/bpi-tools | sudo -E bash复制下载Linux最新的Linux Image,并确认md5校验和精确。默认登录名:pi/bananapi 或 root/bananapiwiki 指南仅适用于 Bananapi 4.9 bsp ubuntu/debian 映像。将映像安装到 SD 卡在 Windows、Linux 和 MacOS 上利用 Balena Etcher 安装映像。
Balena Etcher是 Balena 的一款开源 GUI 闪存工具,可将操作系统映像闪存到 SD 卡或 USB 驱动器。
单击“Flash from file”以选择图像。单击“选择目标”以选择 USB 设备。点击“闪光!
” 开始燃烧。
在 Windows、Linux 和 MacOS 上利用 Balena Cli 安装映像。
Balena CLI是 balenaCloud 或 openBalena 的命令行界面。它可用于刷新 linux 映像。从balena-io下载安装程序或独立包并将其精确安装到您的 PC,然后您可以利用 balena 的“ local flash ”命令选项将 Linux 映像刷新到 sdcard 或 USB 驱动器。
$ sudo balena local flash path/to/xxx-bpi-m2s-xxx.img.zip$ sudo balena local flash path/to/xxx-bpi-m2s-xxx.img.zip --drive /dev/disk2$ sudo balena local flash path/to/xxx-bpi-m2s-xxx.img.zip --drive /dev/disk2 --yes
复制
在 Linux 上利用 dd 命令安装镜像
如果自动安装,则安装 SD 卡设备 /dev/sdX 分区。实际上 bpi-copy 和这个 dd 命令是一样的。
$ sudo apt-get install pv unzip$ sudo unzip -p xxx-bpi-m2s-xxx.img.zip | pv | dd of=/dev/sdX bs=10M status=noxfer
复制
在 Linux 上利用 bpi-tools 安装映像
将SD卡插入Linux PC并运行
$ sudo apt-get install pv unzip$ sudo bpi-copy xxx-bpi-m2s-xxx.img.zip /dev/sdX
复制
将映像安装到 eMMC准备一张带有 Linux 镜像的 SD 卡,并用此 SD 卡启动板。将 Linux 镜像复制到 udisk,将 udisk 插入主板并安装。有两种方法可以将 Linux 映像安装到主板上。利用 dd 命令安装,如果自动安装则卸载 mmcblk0p1 和 mmcblk0p2 分区。实际上 bpi-copy 和这个 dd 命令是一样的。$ sudo apt-get install pv unzip $ sudo unzip -p xxx-bpi-m2s-xxx.img.zip | pv | dd of=/dev/mmcblk0 bs=10M status=noxfer复制利用 bpi-tools 命令在 udisk 中安装 linux 映像$ sudo apt-get install pv unzip $ sudo bpi-copy xxx-bpi-m2s-xxx.img.zip /dev/mmcblk0复制下载完成后,安全关闭电源并弹出 SD 卡。构建 Linux 源代码获取Linux bsp源代码$ git clone https://github.com/BPI-SINOVOIP/BPI-M2S-bsp复制构建bsp源码请阅读源码README.md如果您想分别构建uboot和内核,请仅下载u-boot内核,从BPI-M2S-bsp获取工具链、启动脚本和其他配置文件DTB 叠加DTB 覆盖用于 40pin gpios 多功能配置并安装在 vfat 勾引分区中,您可以利用 mount 命令检讨挂载点。root@bananapi:~# ls /boot/overlays/ custom_ir.dtbo pwm_b-backlight.dtbo spi0.dtbo ds3231.dtbo pwm_c-beeper.dtbo uart1_cts_rts.dtbo hifi_pcm5102a.dtbo pwm_cd-c.dtbo uart1.dtbo hifi_pcm5122.dtbo pwm_cd.dtbo uart2.dtbo i2c1.dtbo pwm_ef.dtbo waveshare_tft24_lcd.dtbo i2c2.dtbo pwm_ef-f.dtbo waveshare_tft35c_lcd.dtbo pwm_ab.dtbo sdio.dtbo waveshare_tft35c_rtp.dtbo复制更新 vfat /boot/env.txt 中的覆盖环境以启用您想要的功能。# Device Tree Overlays # uart1 -- Enable UART1 (uart_A, GPIO Header PIN8 & PIN10) # pwm_c -- Enable PWM_C (GPIO Header PIN7) # i2c2 -- Enable i2c2 (GPIO Header PIN3 & PIN5) # spi0 -- Enable SPI0 (GPIO Header PIN19 & PIN21 & PIN23 & PIN24) overlays="i2c2 spi0 uart1"复制必须重新启动板才能加载覆盖 dtb。启用相机linux版本镜像默认是关闭摄像头的,按照如下配置,可以自行开启。
更新/boot/env.txt 中的dtb 覆盖环境以启用相机 dtbo。overlays="os08a10"复制将摄像头模块添加到/etc/modulesiv009_isp_iq iv009_isp_lens iv009_isp_sensor iv009_isp复制创建相机模块选项并将其添加到 /etc/modprobe.d/os08a10.conf#choose camera calibration parameters options iv009_isp_iq cali_name=0 #choose isp register sequence options iv009_isp_sensor isp_seq_num=0复制启用相机 isp systemd 做事$ sudo systemctl enable camera_isp_3a_server.service复制重启后摄像头设备为/dev/video0。开关Mipi面板默认的 linux 版本镜像仅支持一种 mipi 面板,由于硬件在启动时没有检测不同面板的逻辑,因此默认启用 800x1280 bpi 面板,但您可以在 /boot/lcd_env.txt 中变动为默认 [1200x1920 bpi 面板]
# Mipi panel type# Symbol | Resolution# ----------------------+-------------# "lcd_0" | 10" 800x1280 panel# "lcd_1" | 10" 1200x1920 panelpanel_type=lcd_0
复制
把稳:Linux 上不支持双显,以是利用 mipi 时请断开 HDMI 线。
面板旋转两个 10" mipi 面板都是纵向硬件显示,因此默认发布图像是纵向模式,但您可以将其旋转到 90/180/270。对付桌面图像,创建 xorg 配置文件 /usr/share/X11/xorg .conf.d/10-fbdev-rotate.conf 内容:
Section "Device" Identifier "Configured Video Device" # Rotate off# Option "Rotate" "off" # Rotate Right / clockwise, 90 degrees Option "Rotate" "CW" # Rotate upside down, 180 degrees# Option "Rotate" "UD" # Rotate counter clockwise, 270 degrees# Option "Rotate" "CCW"EndSectionSection "InputClass" Identifier "Coordinate Transformation Matrix" MatchIsTouchscreen "on" MatchProduct "goodix-ts" MatchDevicePath "/dev/input/event0" MatchDriver "libinput" # Rotate Right / clockwise, 90 degrees Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1" # Rotate upside down, 180 degrees# Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1" # otate counter clockwise, 270 degrees# Option "CalibrationMatrix" "0 -1 1 1 0 0 0 0 1"EndSection
复制
对付做事器图像,您可以通过两种办法变动帧缓冲区旋转:
Sysfs 动态变革。echo 0 > /sys/class/graphics/fbcon/rotate //origin 0 degree echo 1 > /sys/class/graphics/fbcon/rotate //90 degree echo 2 > /sys/class/graphics/fbcon/rotate //180 degree echo 3 > /sys/class/graphics/fbcon/rotate //270 degree复制勾引配置变动。变动 /boot/env.txt 中的 fb_rotate 环境# Framebuffer Rotate # 0 - origin 0 degree # 1 - 90 degree # 2 - 180 degree # 3 - 270 degree fb_rotate=0复制接线Pi把稳:此 WiringPi 仅支持将 40pin gpio 设置为输出、输入、pwm 或软件 pwm,对付 i2c、spi 等 io 功能,您必须在 boot.ini 中启用 dtb 覆盖
构建并安装wiringPi,对付debian,必须在构建之前安装sudo$ sudo apt-get update $ sudo apt-get install build-essential git $ git clone https://github.com/Dangku/amlogic-wiringPi $ cd amlogic-wiringPi $ chmod a+x build $ sudo ./build复制运行 gpio readall 显示所有 40 针状态。BPI GPIO 扩展板和amlogic-wiringPi/示例中的示例 blinkall,闪烁所有引脚接头gpios,无扩展板。lcd-bpi,BPI LCD 1602 显示模块示例。52pi-bpi,BPI OLED 显示模块示例。matled-bpi,BPI RGB LED 矩阵扩展模块示例。berryclip-bpi,BPI BerryClip 模块Raspberry Pi GPIO构建并安装,对付 debian,必须在构建之前安装 sudo
$ sudo apt-get update$ sudo apt-get install build-essential python3 python3-pip python3-dev python3-setuptools git$ git clone https://github.com/Dangku/RPi.GPIO-Amlogic.git$ cd RPi.GPIO-Amlogic$ sudo python3 setup.py clean --all$ sudo python3 setup.py install
复制
创建并安装wheel包
$ sudo python3 setup.py bdist_wheel$ sudo pip3 install dist/RPi.GPIO-XXX.whl
复制
直接从git源码安装,无需开拓
$ sudo pip3 install git+https://github.com/Dangku/RPi.GPIO-Amlogic.git
复制
如果该软件包已安装,则应在安装新软件包之前将其卸载,或者利用 --force-reinstall 选项安装新软件包。
WiringPi2-Python构建并安装,对付 debian,必须在构建之前安装 sudo
$ sudo apt-get update$ sudo apt-get install build-essential python3 python3-dev python3-setuptools swig git$ git clone --recursive https://github.com/Dangku/WiringPi2-Python-Amlogic.git$ cd WiringPi2-Python-Amlogic$ sudo python3 setup.py install
复制
亮度示例Luma.examples默认利用 GPIO.BCM gpio 模式,因此您该当将 40pin 接头引脚映射到 bcm gpio 编号并精确连接硬件。
构建并安装 RPi.GPIO 利用 python3 而不是 python 构建bananapi m2s RPi.GPIO,由于 luma 利用 python3。$ sudo apt-get update $ sudo apt-get install build-essential python3 python3-dev python3-setuptools git $ git clone https://github.com/Dangku/RPi.GPIO-Amlogic.git $ cd RPi.GPIO-Amlogic $ sudo python3 setup.py clean --all $ sudo python3 setup.py install复制您可以将 test/led.py 中的 bcmledpin 变量变动为硬件背光 gpio 并运行它以检讨 RPi.GPIO 是否正常事情。$ sudo python3 test/led.py复制硬件背光将重复打开和关闭luma.examples 库安装$ sudo usermod -a -G i2c,spi,gpio pi复制如果组不存在,以下命令将创建它:$ sudo groupadd --system xxx $ sudo apt-get install python3-dev python3-pip libfreetype6-dev libjpeg-dev build-essential $ sudo apt-get install libsdl-dev libportmidi-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libsdl-image1.2-dev $ git clone https://github.com/rm-hull/luma.examples.git $ cd luma.examples复制安装luma.core、luma.emulator、luma.lcd、luma.le-matrix、luma.oled pip libs,确保这一步没有缺点或下载中断,如果出错请重试$ sudo -H pip install -e .复制或者$ sudo -H pip3 install -e .复制对付 debian buster(python 3.7),它在 python3-pip 包中不包含 /usr/bin/pip,并且在利用 pip3 安装 luma 包时会涌现以下缺点... WARNING, No "Setup" File Exists, Running "buildconfig/config.py" Using UNIX configuration... /bin/sh: 1: sdl2-config: not found /bin/sh: 1: sdl2-config: not found /bin/sh: 1: sdl2-config: not found ...复制安装 sdl2 干系软件包来办理此问题,然后利用 pip3 再次安装 luma libs$ sudo apt-get install libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libsdl2-image-dev $ sudo -H pip3 install -e . check installed luma pip libs $ pip3 list | grep luma luma.core 2.4.0 luma.emulator 1.4.0 luma.lcd 2.10.0 luma.led-matrix 1.7.0 luma.oled 3.11.0复制示例测试在运行测试示例之前启用 i2c 或 spi覆盖$ cd examples $ sudo python3 bounce.py --config ../conf/ili9341.conf复制HDMI液晶屏Bananapi M2 经由超级测试的 HDMI LCD
掌握板
/boot/boot.ini
微享 3.5寸 480x320
setenv display_autoDetect“假”setenv hdmimode“480x320p60hz”
微享 3.5寸 640x480
威享4寸720x720
威享5寸960x544
威享5寸800x480
微享 5.5寸 1440x2560
setenv display_autoDetect “假”setenv hdmimode “1440x2560p60hz”
威享 7寸 800x480
威享 7寸 1024x600
微享 7.9英寸 400x1280
威享 8寸 1536x2048
setenv display_autoDetect “假”setenv hdmimode “1536x2048p60hz”
微享 8.8寸 480x1920
威享9寸2560x1600
setenv display_autoDetect “假”setenv hdmimode “2560x1600p60hz”
微享 10.1英寸 1024x600
微享 10.1寸 1280x800
微享 11.9英寸 320x1480
微享 12.3英寸 1920x720
微享 13.3英寸 1920x1080
微享 15.6英寸 1920x1080
背光掌握:https://github.com/Dangku/Waveshare-USB-Brightness
自定义 Linux 启动徽标Linux uboot 默认将启动徽标 fb 大小限定为 1080p60hz/1920x1080,因此默认图像将不支持过大的分辨率,但您可以修正 uboot 源代码以支持它。
准备一个24位bmp文件,命名为boot-logo.bmp将目标文件复制到 /boot/firmware/ 或 /boot/ 目录。其他发展启动顺序在掌握台调试的开头检讨从 SDcard 或 EMMC 加载的勾引加载程序
Rom 从 SD 卡加载勾引加载程序(Linux 日志示例)... BL2 Built : 15:21:42, Mar 26 2020. g12a g486bc38 - gongwei.chen@droid11-sz Board ID = 1 Set cpu clk to 24M Set clk81 to 24M Use GP1_pll as DSU clk. DSU clk: 1200 Mhz CPU clk: 1200 MHz Set clk81 to 166.6M board id: 1 Load FIP HDR DDR from SD, src: 0x00010200, des: 0xfffd0000, size: 0x00004000, part: 0 fw parse done PIEI prepare done fastboot data verify result: 255 Cfg max: 12, cur: 1. Board id: 255. Force loop cfg DDR4 probe ...复制ROM 从 EMMC 加载勾引加载程序(Android 日志示例)... Board ID = 1 Set cpu clk to 24M Set clk81 to 24M Use GP1_pll as DSU clk. DSU clk: 1200 Mhz CPU clk: 1200 MHz Set clk81 to 166.6M eMMC boot @ 0 sw8 s board id: 1 Load FIP HDR DDR from eMMC, src: 0x00010200, des: 0xfffd0000, size: 0x00004000, part: 0 fw parse done PIEI prepare done 00000000 emmc switch 1 ok ddr saved addr:00016000 Load ddr parameter from eMMC, src: 0x02c00000, des: 0xfffd0000, size: 0x00001000, part: 0 00000000 ...复制擦除 EMMC 以用于 SD 卡启动有四种可能的情形须要把稳,EMMC 已经刷入 Android 镜像、EMMC 已经刷入 Linux 镜像、BL2 中启动进程挂起以及 EMMC 为空。
带有 Android 映像的可启动 EMMC 已闪存利用USB烧录工具,在7%格式化下载过程中拔掉Type-C USB线利用 Android Fastboot 工具,请确保 adb/fastboot 工具在您的 PC 上正常运行,然后再实行此操作。root@dangku-desktop:/tmp# adb root adbd is already running as root root@dangku-desktop:/tmp# adb remount remount succeeded root@dangku-desktop:/tmp# adb shell bananapi_m2s:/ # reboot fastboot复制等待几秒钟,让主板重新启动至快速启动模式root@dangku-desktop:/tmp# fastboot devices 1234567890 fastboot root@dangku-desktop:/tmp# fastboot flashing unlock_critical ... OKAY [ 0.044s] finished. total time: 0.044s root@dangku-desktop:/tmp# fastboot flashing unlock ... OKAY [ 0.047s] finished. total time: 0.047s root@dangku-desktop:/tmp# fastboot erase bootloader erasing 'bootloader'... OKAY [ 0.059s] finished. total time: 0.059s root@dangku-desktop:/tmp# fastboot erase bootloader-boot0 erasing 'bootloader-boot0'... OKAY [ 0.036s] finished. total time: 0.036s root@dangku-desktop:/tmp# fastboot erase bootloader-boot1 erasing 'bootloader-boot1'... OKAY [ 0.035s] finished. total time: 0.035s复制利用uboot命令,连接调试掌握台电缆并在开机时按ESC键进入uboot命令行bananapi_m2s_v1#amlmmc erase 1 emmckey_is_protected(): protect start = 0,end = 57343 start = 221184,end = 30535679 Erasing blocks 0 to 8192 @ boot0 start = 0,end = 8191 Erasing blocks 0 to 8192 @ boot1 start = 0,end = 8191 bananapi_m2s_v1#reset resetting ... SM1:BL:511f6b:81ca2f;FEAT:A0F83180:20282000;POC:F;RCY:0;EMMC:0;READ:0;CHK:1F;READ:0;CHK:1F;READ:0;CHK;复制这两种办法实际上擦除了 EMMC android 的 bootloader 部分,从 SDcard Linux 启动后,最好通过 dd 命令格式化全体 EMMC。最大略的方法是在开机前插入带有 Linux 映像的 SD 卡,Android 勾引加载程序将检讨 SD 卡 vfat 分区中是否存在 boot.ini 文件,以便 SD 卡 Linux 启动。启动后,您可以通过 dd 命令格式化全体 EMMC,然后将 Linux 映像刷新到 EMMC。... BPI: try boot from sdcard reading boot.ini 2453 bytes read in 3 ms (797.9 KiB/s) ## Executing script at 03080000 Starting boot.ini... reading env.txt 3483 bytes read in 7 ms (485.4 KiB/s) HDMI: Autodetect: 1080p60hz reading Image.gz 10924573 bytes read in 611 ms (17.1 MiB/s) reading bananapi_m2s.dtb 88054 bytes read in 12 ms (7 MiB/s) reading uInitrd 11704481 bytes read in 655 ms (17 MiB/s) reading overlays/wifi_bt_rtl8822cs.dtbo 729 bytes read in 6 ms (118.2 KiB/s)复制带有 Linux 映像的可启动 EMMC 已闪存利用uboot命令,连接调试掌握台电缆并在开机时按ESC键进入uboot命令行bananapi_m2s# mmc erase 0 1000复制Linux u-boot 还会检讨 SDcard vfat 分区中是否存在 boot.ini 文件,以便 SDcard Linux 启动。启动后,您可以通过 dd 命令格式化全体 EMMC 或将 Linux 映像直接刷新到 EMMC。极度情形是bootloader或uboot破坏,ROM从EMMC加载,但在u-boot或BL2中挂起,例如如果dram init失落败,启动过程将挂在EMMC的BL2中,唯一的方法是利用USB烧录工具格式化EMMC ,或者完备下载 Android 映像,然后考试测验其他方法擦除 EMMC 或将 Linux 映像刷新到 EMMC。如果 EMMC 为空,Rom 将考试测验直接从 SD 卡加载 bootloader。通过dd命令擦除Emmc Android如果板子以前刷过android,如果你想用SDcard Linux镜像启动它,全体emmc必须被这些命令擦除。
$ sudo dd if=/dev/zero of=/dev/mmcblk0boot0 bs=1M status=noxfer$ sudo dd if=/dev/zero of=/dev/mmcblk0boot1 bs=1M status=noxfer$ sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1M status=noxfer$ sync
复制
无线网络/蓝牙支持Android 测试和支持。rtl8723bu wifi/bt(usb) rtl8188eu wifi(usb) rtl8821cu wifi/bt(usb) rtl8822cs wifi/bt(sdio/uart) rtl8814au wifi(usb), please get the aircrack-ng driver and install.复制如何启用 Android Wifi/BTUSB 类型:将 USB 加密狗插入 USB 主机端口并重新启动系统,启动后,您可以在“设置”运用程序中启用或禁用 wifi 和蓝牙。SDIO/UART 类型:将硬件模块精确连接到 40 针接头并配置 Android DTB 覆盖以启用它。把稳:Android不支持以太网和wifi同时连接,以太网比wifi具有更高的优先级,这意味着如果以太网已连接,则wifi无法连接网络,如果以太网电缆插件,wifi将断开连接。Linux 测试和支持。rtl8188eu wifi(usb) rtl8192eu wifi(usb) rtl8723bu wifi/bt(usb) rtl8811au wifi(usb) rtl8812au wifi(usb) rtl8812bu wifi(usb) rtl8821cu wifi/bt(usb) rtl8822cs wifi/bt(sdio/uart)复制如何启用 Linux WifiWifi 模块驱动程序已在发布映像中预构建。USB类型:将USB加密狗插入USB主机端口,驱动程序将自动加载。SDIO/UART 类型:将硬件模块精确连接至 40pin 排座。配置dtb 覆盖overlays="wifi_bt_rtl8822cs"复制将 wifi 模块名称添加到 /etc/modules 中,以便下次启动时自动加载。# This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. 88x2cs复制如何启用 Linux 蓝牙请下载rtk-linux-bt-driver源代码,构建并安装 USB 或 uart rtk linux 蓝牙驱动程序/固件到您的映像。对付 USB 类型,将 USB 加密狗插入 USB 主机端口,驱动程序将自动加载。对付 UART 类型,在安装蓝牙驱动程序/固件之前,将 dtb 覆盖配置为与 wifi 相同。hci_uart 驱动程序将在 rtk-hciuart.service 启动时加载。云初始化&SnapCloud-init 和 Snap 做事默认启用,您可以禁用或删除它们。
禁用或删除 cloud-init$ sudo touch /etc/cloud/cloud-init.disabled复制或者$ sudo apt purge cloud-init复制禁用或删除快照$ sudo apt purge snapd复制启用 rc-localsystemd 做事 rc-local.service 已存在于发布映像中,但单元文件中没有 [Install] 部分。因此,Systemd 无法启用它。首先,我们必须更新文件。
$ sudo nano /lib/systemd/system/rc-local.service
复制
[Unit]Description=/etc/rc.local CompatibilityDocumentation=man:systemd-rc-local-generator(8)ConditionFileIsExecutable=/etc/rc.localAfter=network.target[Service]Type=forkingExecStart=/etc/rc.local startTimeoutSec=0RemainAfterExit=yesGuessMainPID=no[Install]WantedBy=multi-user.targetAlias=rc-local.service
复制
创建 /etc/rc.local 文件。
sudo nano /etc/rc.local#!/bin/sh## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the script will "exit 0" on success or any other# value on error.## In order to enable or disable this script just change the execution# bits.## By default this script does nothing.exit 0
复制
给/etc/rc.local添加可实行权限
$ sudo chmod +x /etc/rc.local
复制
启用 rc-local.service 并重新启动
$ sudo systemctl enable rc-local.service$ sudo reboot
复制
为 Debian 启用 sudo发布的 Debian 镜像默认不安装 sudo,利用“su -”命令,用户可以变动为 root。如果你喜好sudo,可以安装它。
$ su rootPassword:(enter bananapi)# apt-get update# apt-get install sudo# adduser pi sudo
复制
然后请注销并重新登录
安装 Docker 引擎在 Ubuntu 20.04 做事器上安装 Docker 引擎
设置存储库 更新 apt 软件包索引并安装软件包以许可 apt 通过 HTTPS 利用存储库:$ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release复制添加Docker官方GPG密钥:$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg复制设置稳定存储库$ echo \ "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null复制安装 Docker 引擎$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io复制通过运行 hello-world 映像来验证 Docker 引擎是否已精确安装。$ sudo docker run hello-world复制利用大略的命令安装 docker$ curl -sSL get.docker.com | sudo sh复制