magicbox linux教程,天猫魔盒安装原生linux的一些初步成果

## 按

% O6 x9 ?3 b" a. e6 x9 ?5 ^. A; J" S$ o5 r# G! x: O* l

一开始,我是想试试看能不能借由原生linux解决魔盒伪1080输出的问题。毕竟国内厂商靠不住这件事人尽皆知,求人不如求己。现在新版魔盒已经出来了,这个问题原厂就更加不会管了。

`+ j3 d9 P0 K

3 W0 V- A. e6 C/ B9 Y目前debian可以在魔盒上跑起来了,但问题还是很多。首先是音频驱动存在问题,alsamixer显示找不到控制器,aplay不报错但电视机端也没有音频输出。其次是遥控和usb口也都无法使用。@9 y. N3 y- n& ~, [; k- Y

" v2 c& H( W9 C+ o

这些问题不解决,即使花很多功夫把xbmc编译出来也没有实用价值。而我最近事情有些多,暂时没办法继续搞下去了。写这张帖子是希望,如果有人对这个问题有兴趣,可以通过我的帖子节约一点时间,也算是回馈论坛了吧。6 e2 s( V$ d' l* n

# {3 }; g  }8 ?. B* r  U哈哈6014和1024255317给我提供了不少帮助,一并在此表示感谢。+ P9 ~; S2 j' H

o9 k; ~  U# t4 Q' L* P9 A' [4 j. K* N## UBOOT% j9 V/ Q  D( n& S' j8 j) d

' h% I" f; X; U6 @( t因为我希望保留nand内的安卓系统,所以linux就只能安装在tf卡中。虽然有朝一日如果能研究出点成果,拆机并不是必须的步骤。但就目前而言,没有uart接口就看不到输出,没法折腾,所以拆机焊线就目前来说仍然是必须的。5 P. d! Z8 k6 c* t6 K( K. x

I, z2 r7 h2 u7 d* _

为了一张tf卡在两个系统中都派上用场,我把一张16G的tf卡为了两个区,第一个分区4G的fat32,剩余部分则格式化为ext3。

' Z. O% e' z; w) k8 _; |/ D4 B- |6 ]# j! J# w" g& F" U

想要启动时加载tf卡上根目录中名为uImage的内核文件,我们可以在uboot中这么做:

) g# t+ D- m8 S; ]- J8 X! g

mmcinfo

6 l, e# h* e) D# B, P8 k8 w

fatload mmc 0 ${loadaddr} uImage

( R( k  g) q9 a' q; h( |

bootm0 \) ~4 D% v0 K/ i* B复制代码如果希望启动时默认加载tf卡上的linux内核,则可以这样做:

+ Y0 n( v9 P- q! b# q: L' g* p

setenv bootlnx 'mmcinfo; fatload mmc 0 ${loadaddr} uImage; bootm; '

$ t8 ^& {- |- o# b6 p4 n

setenv bootcmd 'run bootlnx'

2 }5 S' t9 U1 V- b

saveenv

! F. X# L+ N1 y: }: J复制代码另外还有个法子,可以在上电时通过狂按遥控上的菜单键加载tf卡上的系统:

7 c: @  s9 o2 h" Z

setenv bootlnx 'mmcinfo; fatload mmc 0 ${loadaddr} uImage; bootm; '

. g) ^; P+ V1 F+ T# [

setenv irremote_update 'if irkey 0x1f2d12e 500000 ;then run bootlnx; fi'

( m7 e) q- s/ h! A

saveenv8 s9 H& N& s, u/ G. s+ k3 h: u5 [复制代码关于uboot的更多内容,可以参考一下这张帖子:http://www.7po.com/thread-235366-1-1.html

2 ]$ O7 n) V3 s; p0 H

$ ?- [4 ]8 n( y1 _' M6 g## 内核

& ^. |6 ]* c3 ?

/ g6 P& I. x9 J! k; n- V& n4 K( }amlogic官方放出的内核以及驱动源码这里有:http://openlinux.amlogic.com:8000/download/ARM/- W0 k/ n, U7 F1 l2 j

/ s$ S$ J9 _5 I

不过直接用这里的代码虽然能够成功编译,但实际使用时有非常多的问题,所以我用的是wjb@github修改整理的版本。, _* p% `7 X4 m; V* q, x

1 N/ j6 R) W' L9 u. A. ~

编译内核使用的是ubuntu 12.04,安装必须的软件包什么的我就不废话了,具体编译过程大概是这样:

" [" l! z! f' P

sudo apt-get install gcc-arm-linux-gnueabihf

: [3 K2 R. U$ r* f% z

$ f8 h, x, h5 m+ b

git clone https://github.com/wjb/mx-common.git' f4 O! T4 d! i/ `

cd mx-common

- Z% T) Y* F% g0 t! V2 s( ?2 G

% Z) M. D7 l- y$ G( C

export CROSS_COMPILE=arm-linux-gnueabihf-x. ~3 n7 M. [* r7 `% K( X. U9 @

export ARCH=arm

/ h" r. @" {4 ^- i

make mrproper

$ M' A  _! }7 L- l& Y' L

make meson6_g18_mx2_defconfig% M$ Q* d. \0 q; e+ J# ]4 w3 o& V

make menuconfig

! a9 ]! Y1 F4 D5 r! A" e2 m

make uImage -j4

5 I5 P  P8 \% y7 o$ C

make modules -j46 c8 d$ C8 s$ q/ U# J! M

6 ^; J1 U( r! a" h

sudo cp arch/arm/boot/uImage /media/BOOT

* V7 @7 D8 ]! H% M# h; M

sudo make INSTALL_MOD_PATH=/media/AMLinux modules_install

" K9 U2 ~/ F& ^- j; M+ I8 V复制代码## Debian( P3 H  Q& {# `4 h1 j* W

8 k% p$ [1 C/ r8 r4 Q! v

Ubuntu和Debian都提供了ARM支持,下面的方法两个发行版都适用。不过只用命令行的话,Ubuntu远不如Debian好用,再加上stable的Debian软件包太老,所以下面安装的是sid的Debian。

, ~, t) z) D% y. w1 E  Z0 }, Q# b7 [& w

! u/ A" V( B7 p4 {, x

sudo apt-get install qemu-arm-static debootstrap

% @( L! N: u  R, ], L4 I  Rmkdir debian-armhf-sid

4 c& {! J8 w3 Bsudo debootstrap --foreign --arch armhf sid debian-armhf-sid http://ftp.tw.debian.org/debian/

$ t) z: c9 n1 t' z: A  b! f  u! Lsudo cp /usr/bin/qemu-arm-static debian-armhf-sid/usr/bin/

6 ?0 l7 H" o' isudo chroot debian-armhf-sid /debootstrap/debootstrap --second-stage

2 k* B( h6 g8 z' osudo chroot debian-armhf-sid

# t2 ^: N- q5 Z1 G: L

* n8 V: a9 R0 `3 d, ^3 w/ {8 a7 F* Y- s! \' h1 M

qemu-arm-static很不错,可以直接在PC上chroot进ARM系统,相当方便。

! u5 t* B6 v2 `# v$ `  i' G+ J  Z* m9 ?+ e0 a) L' L

然后就是一些基本设置:$ q1 ]" j5 i( M7 p

* `3 v$ u/ _1 _* w

# K; t( C" B9 {: M1 R

passwd

3 |6 E* }# D7 A. r8 {" gecho AMLinux > /etc/hostname% c1 l% @( z' K5 p5 r) G

echo deb http://ftp.tw.debian.org/debian sid main contrib non-free >> /etc/apt/sources.list1 G! U, e# s* ]8 K

apt-get update2 k& X$ f9 r: i( l9 r" d

apt-get install locales

) g; {/ v% s2 B8 e" X/ ddpkg-reconfigure locales

( k; P6 @0 R1 j+ Hapt-get install wireless-tools wpasupplicant

5 h7 q& e$ J) i% ^, \mknod -m 660 /dev/ttyS0 c 4 645 c8 W0 h4 T4 \' q2 ]

1 G* O. H8 ?- Q- k

; E; }0 O. H0 q6 S& S

编辑/etc/inittab,将ttyS0所在行改为:U/ W# p! x4 D. t

" [, B. f/ O6 M# V( ^  V0 e

 
 

+ r8 `, }! e. T* Q: F: `T0:2345:respawn:/sbin/agetty -L ttyS0 115200 vt100

0 s/ l( R4 b# C+ A$ ^, O) d# r

4 w5 O  @6 t1 @/ c4 _, R6 b& ~. Z+ H  a3 q6 C5 [

完成后cp -a将debian-armhf-sid复制到TF卡的ext3分区,到这里该TF卡就可以在魔盒中成功启动了。, X0 H4 y, O( v5 Z2 t! n

8 y3 E8 ]* C: k+ v

## 现存问题

4 I) v9 }& y# b# @: \: u, V" M* o( {( L* {% g: K! G. l

### 有线网卡的mac地址问题

* l! C; f% f. G2 v% X9 t

9 h9 L$ m9 L8 }+ x$ N在启动linux时,log里有一句未配置mac地址,使用随机地址的信息。进入linux后重启进入android,系统会自动运行一个叫MiptAutoTestForAli-10030的程序。虽然看起来很吓人,但其实只要在这个程序中选择写入随机mac地址再退出,就可以正常使用android系统了。

% K: C, c* d( ?! l6 c/ k- n' D& D! E1 P! ?/ j- @0 ~# l- H

这有可能是linux下的网卡驱动不完善导致的,不过也不是什么大问题就是。

) y5 I2 M' j8 z6 `  @* b

" @$ m# F6 v6 y: ], ~### usb口无法使用

" Z' C7 z; f1 v& o( c

8 m( V- T5 Q# y* s3 y9 K  i; _启动信息看不出什么问题,usb相关内容都有也都正常,但不管是启动前还是启动后插入usb设备,系统都认不出来。

4 ^6 p8 t- A5 p* b7 b# X' W7 U9 Y% ^

# c( Q% O% ]+ n$ Z### 音频输出$ B2 n: z( ^0 k

~) ~6 Z7 B- x# N, R$ s% zamlogic虽然也用了alsa,但似乎没有提供/dev/dsp一类标准接口。在android中我用optware安装了alsa相关工具,同样有alsamixer显示无控制器,aplay无法输出的问题,所以这究竟是怎么回事还有待研究。5 o0 f9 U0 i, y1 @( M) Q. B

( L7 Y  i1 h$ j; j### 遥控器不能用! q: K9 T2 u# n& x8 b$ Q

3 |5 q( m# _2 m应该也是驱动问题,不过只要usb口可以正常使用了,大不了用鼠标不用遥控就是,问题不大。% V) n; H1 i0 H) q; c

6 {* I( ~6 d7 ^# v

. }/ O- ^! e! \4 ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值