花费 60 大洋购买了一台天敏电视精灵 3 安卓机顶盒。买来的目的就是为了刷入原生的 Debian 或其他发行版本。

查看了一下具体的硬件:全志 Allwinner A20 双核 CPU,Cortex-A7 架构;内存 1G;闪存 4G;两个 USB,一个 HDMI,一个 AV。大体看了一下 Sunxi 的 Wiki,发现可以按照以下的办法来刷入。最好有一根 ttl 线来接入盒子的 UART 接口查看输出信息。

下面是操作步骤:

第一部分:

进入默认的安卓系统,通过 ttl,使用 root 账户直接挂载 nanda 分区,获取其中的 script.bin。如果你没有 ttl 线,可以先尝试用 adb 连接盒子,然后用 root 大师来获取 root 权限,之后顺序操作即可:先把盒子连接上 Wifi,然后 adb connect IPADDRESS,root。总之,就是为了获取 script.bin。

获取 script.bin方法:

# mkdir /sdcard/nanda

# mount -t vfat /dev/block/nanda /sdcard/nanda

# exit

# adb pull /sdcard/nanda/script.bin

取得 script.bin 后,如果要修改其中的节点,那么需要 sunxi-tools:

# git clone https://github.com/linux-sunxi/sunxi-tools

# make

./bin2fex script.bin script.fex

编辑 fex 文件,编辑后,重新生成二进制文件:

./fex2bin script.fex script.bin

script.bin 文件是 fex 文件的二进制实现,fex 文件定义 SoC 是如何工作的,它配置 GPIO 引脚并设置 DRAM、显示(如 HDMI、VGA、分辨率)等参数。

第二部分:

1、编译 uboot

这边的编译环境为 Linux version 3.16.0-4-686-pae (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04),默认的编译工具为 gcc-arm-linux-gnueabihf,在“deb http://emdebian.org/tools/debian/ jessie main”源中可以找到。

因为我这边没有也找不到盒子的 uboot 源码,我尝试用了 cubieboard2 的 uboot 源码,编译后可以正常使用。

git clone https://github.com/linux-sunxi/u-boot-sunxi -b wip/a20

make cubieboard2 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-

找一个 SD 卡,用来引导,全志盒子默认为 SD 卡引导。用 fdisk 给 SD 卡分两个区,第一个为 fat,第二个为 ext4 格式,具体不再赘述。按照我的是 sdb1、sdb2。

将编译好的 uboot 写入到 sdcard:

# dd if=spl/sunxi-spl.bin of=/dev/sdb bs=1024 seek=8

# dd if=u-boot.bin of=/dev/sdb bs=1024 seek=32

新建一个 boot.cmd 文件,输入以下内容:

setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait

panic=10 ${extra}

fatload mmc 0 0x48000000 uImage

bootm 0x48000000

使用 cmd 文件来生成 scr 文件:

mkimage -C none -A arm -T script -d boot.cmd boot.scr

2、编译内核

依旧使用 cubieboard2 的内核,因为我使用 Sunxi 的内核编译后无法启动,本人菜鸟折腾了几天没精力了。直接使用 cubieboard2 的内核可以启动,但是需要添加盒子的 PHY 网卡驱动。天敏电视精灵 3 的 PHY 为 ICplus 芯片。如下操作:

# git clone https://github.com/cubieboard2/linux-sunxi

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun7i_defconfig

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

进入 menuconfig 状态,添加 ICplus 网卡的支持:

# make -j$(nproc) ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules

# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output modules_install

生成的内核和模块路径:

arch/arm/boot/uImage

output/lib/

制作 Debian rootfs:

# debootstrap --verbose --arch=armhf --foreign jessie debian http://ftp.cn.debian.org/debian

# cd debian

# cp /usr/bin/qemu-arm-static usr/bin/

# LC_ALL=C LANGUAGE=C LANG=C chroot . /debootstrap/debootstrap --second-stage

# LC_ALL=C LANGUAGE=C LANG=C chroot . dpkg --configure -a

chroot 并部署 rootfs:

passwd

echo "a20" > etc/hostname

echo "127.0.0.1 a20" >> etc/hostname

echo T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100 >> etc/inittab

echo deb http://ftp.cn.debian.org/debian/ jessie main contrib non-free > etc/apt/sources.list

echo deb http://security.debian.org/ jessie/updates main contrib non-free >> etc/apt/sources.list

apt-get update

apt-get dist-upgrade

apt-get install openssh-server

apt-get install locales

echo "en_US.UTF-8 UTF-8" > etc/locale.gen

echo "zh_CN.UTF-8 UTF-8" >> etc/locale.gen

locale-gen

需要修改 rootfs 下的两个文件 /etc/network/interfaces 和 /etc/ssh/sshd_config,开启静态 ip 地址和支持 root 登录。

所有的制作完成了,下面拷贝文件到 SD 卡相应分区:

拷贝到 sdb1 下的文件:

uImage script.bin boot.scr

然后将 Debian 的 rootfs 文件拷贝到 sdb2,内核模块拷贝到 /lib 下。

插入 SD 卡到盒子,通电后等待片刻即可用 ssh 登录盒子了,一个完整原生的 Debian 系统跑起来了。

目前先研究到这里,使用 /dev/fb0 应该可以继续启动 Xorg,跑跑 LXDE 应该没什么问题。

目前存在的问题:盒子上的两个 USB 接口无法使用!因为是套用的 cubieboard2 的源码和 uboot,具体到底是 script.bin 的缘故还是源码的缘故,我折腾了几天,依然搞不定。希望有精通嵌入式的朋友帮我看下能否解决该问题,谢谢大家!

安卓盒子运行 linux,全志 Allwinner A20 机顶盒刷入原生 Debian相关推荐

  1. 全志Linux下载工具,全志 Allwinner A20 机顶盒刷入原生 Debian

    花费 60 大洋购买了一台天敏电视精灵 3 安卓机顶盒.买来的目的就是为了刷入原生的 Debian 或其他发行版本. 查看了一下具体的硬件:全志 Allwinner A20 双核 CPU,Cortex ...

  2. s805b刷Linux系统,如何在机顶盒中刷入原生的Debian系统

    Debian系统虽然在国内用得比较少,但是在国外是非常流行的Linux系统.其实Debian的用途非常广泛.只要配置过关,用户甚至可以在机顶盒中刷入Debian系统.那么如何在机顶盒中刷入原生的Deb ...

  3. 小米盒子运行linux,小米盒子刷机成砖的解救措施攻略详解

    刷成砖的一个表现就是进不了系统,开不了机. 从开机的步骤上就是安卓电视&机顶盒通电后首先要启动BootLoader->再是Linux kernel->最后再Android系统,安卓 ...

  4. iphone7运行linux,iPhone 7成新一代刷机神机!继安卓后,又成功运行Linux

    iPhone 7成新一代刷机神机!继安卓后,又成功运行Linux 2020年04月27日 14:32作者:NJNR205编辑:陈惺惺文章出处:泡泡网原创 分享 4月27日消息,据外媒报道,继前段时间i ...

  5. 全志A20 刷入Ubuntu/Debian Linux固件 亲测能用

    测试盒子:小美盒子(好像是杂牌的)  有疑问交流可以加微信:1755337994 PCB板号:RM-MPEG-107G VER1.0  20140422 用PhoenixUSBPro刷入就行,要刷50 ...

  6. 荣耀平板5鸿蒙降级安卓并刷入原生Android12系统——麒麟659,4+64G,10英寸wifi版本

    荣耀平板5降级安卓,并刷入LineageOS12系统 0.前言 一.开刷 1.解锁BL 二.刷入第三方rec 三.刷入LineageOS系统 四.优化篇 0.前言   在学习Linux时,一边看手册和 ...

  7. htc+one+m7+linux驱动,htc one m7刷入recovery的教程

    在这里给大家来说一下htc one m7怎么刷第三方的recovery吧,为什么要刷第三方的recovery呢,因为只有刷入了第三方的recovery才可以刷入第三方的rom包,一般第三方的rom包都 ...

  8. 安卓手机能装鸿蒙,小米手机能否刷入鸿蒙系统?给你答案

    自从华为发布了鸿蒙/harmonyOS后,这两天看到小米论坛上有很多的米粉在问小米能否刷入鸿蒙OS?今天来深入解答一下. 华为如今的智能手机大多以Android系统为主,目前也还没有发行首部搭载Har ...

  9. 安卓 qemu 运行linux,在Qemu的beagleboard上运行Android

    如之前的文章提到的,现在我们已经可以在Ubuntun上通过qemu模拟beagleboard了,进一步可以测试的是在这个qemu的beagleboard上运行Android. 相关阅读: 主要工作是制 ...

最新文章

  1. Twitter-Snowflake,64位自增ID算法详解
  2. 如何使用GeneralUpdte构建客户端自动升级功能
  3. 求职信计算机工程师英语作文,开发工程师英文求职信范文
  4. scrolling=no 无法根据坐标获取元素_科曼尼KOMANIE三坐标测量仪命令不执行【维修】北京303所...
  5. Java基础学习总结(46)——JAVA注解快速入门
  6. #C++初学记录(素数判断)
  7. linux下qt加载boost,信号槽的实现实例—— Qt 和 Boost
  8. KinectFusion: Real-Time Dense Surface Mapping and Tracking
  9. 每秒处理10万高并发订单的乐视集团支付系统架构分享
  10. 2021年第十一届MathorCup高校数学建模挑战赛比赛占坑
  11. Bartender 连接MySql数据库并对模板赋值打印标签二维码
  12. 二级展开式斜齿圆柱齿轮减速器
  13. [blender]图片模糊不清楚怎么变清晰
  14. Word跨文件使用格式刷
  15. 阿里云CDN 使用问题汇总
  16. 驾考计算机播报原理,科目三电子路考流程详解 考驾照的都看看!
  17. 微信公众号里如何上传html,微信公众号怎么做表单,微信万能表单如何添加到公众号里...
  18. 【移动安全高级篇】————3、Android系统ShellCode编写
  19. jmeter巧用ForEach控制器
  20. 合天网安 CTF之第六周-套娃一样的上传

热门文章

  1. 分类9个无理数并比较他们之间的分布差异
  2. 卷积核一定可以提升网络性能吗?-分类0,2
  3. bsc是指什么_掌握BSC,实现企业数字化管理
  4. 3.6 权值初始化-机器学习笔记-斯坦福吴恩达教授
  5. Android Studio错误代码汇总
  6. STM32 基础系列教程 43 – SRAM
  7. 2_指令集、体系架构、微架构
  8. 【PC工具】Windows 上编辑树莓派(linux EXT)分区文件工具——Ext2Fsd
  9. 【雷达对抗】频率测量与频谱分析-频率搜索与测频技术
  10. OQPSK:Offset Quadrature Phase Shift Keying偏移正交相移键控的MATLAB仿真/FPGA实现