全志Linux下载工具,全志 Allwinner A20 机顶盒刷入原生 Debian
花費(fèi) 60 大洋購買了一臺(tái)天敏電視精靈 3 安卓機(jī)頂盒。買來的目的就是為了刷入原生的 Debian 或其他發(fā)行版本。
查看了一下具體的硬件:全志 Allwinner A20 雙核 CPU,Cortex-A7 架構(gòu);內(nèi)存 1G;閃存 4G;兩個(gè) USB,一個(gè) HDMI,一個(gè) AV。大體看了一下 Sunxi 的 Wiki,發(fā)現(xiàn)可以按照以下的辦法來刷入。最好有一根 ttl 線來接入盒子的 UART 接口查看輸出信息。
下面是操作步驟:
第一部分:
進(jìn)入默認(rèn)的安卓系統(tǒng),通過 ttl,使用 root 賬戶直接掛載 nanda 分區(qū),獲取其中的 script.bin。如果你沒有 ttl 線,可以先嘗試用 adb 連接盒子,然后用 root 大師來獲取 root 權(quán)限,之后順序操作即可:先把盒子連接上 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 后,如果要修改其中的節(jié)點(diǎn),那么需要 sunxi-tools:
# git clone https://github.com/linux-sunxi/sunxi-tools
# make
./bin2fex script.bin script.fex
編輯 fex 文件,編輯后,重新生成二進(jìn)制文件:
./fex2bin script.fex script.bin
script.bin 文件是 fex 文件的二進(jìn)制實(shí)現(xiàn),fex 文件定義 SoC 是如何工作的,它配置 GPIO 引腳并設(shè)置 DRAM、顯示(如 HDMI、VGA、分辨率)等參數(shù)。
第二部分:
1、編譯 uboot
這邊的編譯環(huán)境為 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),默認(rèn)的編譯工具為 gcc-arm-linux-gnueabihf,在“deb http://emdebian.org/tools/debian/ jessie main”源中可以找到。
因?yàn)槲疫@邊沒有也找不到盒子的 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-
找一個(gè) SD 卡,用來引導(dǎo),全志盒子默認(rèn)為 SD 卡引導(dǎo)。用 fdisk 給 SD 卡分兩個(gè)區(qū),第一個(gè)為 fat,第二個(gè)為 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
新建一個(gè) boot.cmd 文件,輸入以下內(nèi)容:
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、編譯內(nèi)核
依舊使用 cubieboard2 的內(nèi)核,因?yàn)槲沂褂?Sunxi 的內(nèi)核編譯后無法啟動(dòng),本人菜鳥折騰了幾天沒精力了。直接使用 cubieboard2 的內(nèi)核可以啟動(dòng),但是需要添加盒子的 PHY 網(wǎng)卡驅(qū)動(dòng)。天敏電視精靈 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
進(jìn)入 menuconfig 狀態(tài),添加 ICplus 網(wǎng)卡的支持:
# 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
生成的內(nèi)核和模塊路徑:
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 下的兩個(gè)文件 /etc/network/interfaces 和 /etc/ssh/sshd_config,開啟靜態(tài) ip 地址和支持 root 登錄。
所有的制作完成了,下面拷貝文件到 SD 卡相應(yīng)分區(qū):
拷貝到 sdb1 下的文件:
uImage script.bin boot.scr
然后將 Debian 的 rootfs 文件拷貝到 sdb2,內(nèi)核模塊拷貝到 /lib 下。
插入 SD 卡到盒子,通電后等待片刻即可用 ssh 登錄盒子了,一個(gè)完整原生的 Debian 系統(tǒng)跑起來了。
目前先研究到這里,使用 /dev/fb0 應(yīng)該可以繼續(xù)啟動(dòng) Xorg,跑跑 LXDE 應(yīng)該沒什么問題。
目前存在的問題:盒子上的兩個(gè) USB 接口無法使用!因?yàn)槭翘子玫?cubieboard2 的源碼和 uboot,具體到底是 script.bin 的緣故還是源碼的緣故,我折騰了幾天,依然搞不定。希望有精通嵌入式的朋友幫我看下能否解決該問題,謝謝大家!
#
Tagged as
debian ·
Edit on GitHub
總結(jié)
以上是生活随笔為你收集整理的全志Linux下载工具,全志 Allwinner A20 机顶盒刷入原生 Debian的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apollo星火计划学习笔记——Apol
- 下一篇: 软件水文