700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > magicbox linux教程 天猫魔盒安装原生linux的一些初步成果

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

时间:2021-12-05 14:03:45

相关推荐

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

## 按

/ j! g3 F8 V: \0 w4 _

! G' G]) J, {+ m0 |" C/ Y一开始,我是想试试看能不能借由原生linux解决魔盒伪1080输出的问题。毕竟国内厂商靠不住这件事人尽皆知,求人不如求己。现在新版魔盒已经出来了,这个问题原厂就更加不会管了。, p; ?# s" g/ Z$ c

% U) H, Q0 S& k, s目前debian可以在魔盒上跑起来了,但问题还是很多。首先是音频驱动存在问题,alsamixer显示找不到控制器,aplay不报错但电视机端也没有音频输出。其次是遥控和usb口也都无法使用。

5 {# g. E& }! l( L]1 A) T/ K5 v. p* W+ ]4 G4 v6 d- E

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

: D: h5 z# J2 |5 C* m) l; x) h# V7 L8 M* e" s# Z- P- N7 a/ }; w

哈哈6014和1024255317给我提供了不少帮助,一并在此表示感谢。$ B, M# X) ^. c" b0 a6 z

' m5 V) s* W8 P: i- w# Z: V9 \## UBOOT. U& T% A8 T. Y7 U1 v- |' w* E

! X* s% S& q, ^4 N) J' t^6 \" {' ]因为我希望保留nand内的安卓系统,所以linux就只能安装在tf卡中。虽然有朝一日如果能研究出点成果,拆机并不是必须的步骤。但就目前而言,没有uart接口就看不到输出,没法折腾,所以拆机焊线就目前来说仍然是必须的。

/ @( s7 `2 j% I6 D* o( L

& }2 E9 T, ^, G为了一张tf卡在两个系统中都派上用场,我把一张16G的tf卡为了两个区,第一个分区4G的fat32,剩余部分则格式化为ext3。/ M' M% G6 Q9 z: s- h; {' u! r

C# X3 x' d- A/ D) OF2 ?想要启动时加载tf卡上根目录中名为uImage的内核文件,我们可以在uboot中这么做:

: v' x& u6 L3 t( N8 x0 Y

mmcinfo0 `6 z" X# J@" {* i# b

fatload mmc 0 ${loadaddr} uImage% l8 z6 [, t, z2 o- z

bootm

5 u, ^5 }# V$ Q+ }% Y7 o# a复制代码如果希望启动时默认加载tf卡上的linux内核,则可以这样做:

7 C2 B7 W6 O1 v0 p0 M" a. @: i

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

, D8 K" _% }* D% h, wu, z

setenv bootcmd 'run bootlnx'

* \1 h" z# N: J: l; s3 S

saveenv

u% n* Z9 Q5 S4 L; C. Q0 W复制代码另外还有个法子,可以在上电时通过狂按遥控上的菜单键加载tf卡上的系统:

6 `9 n& g8 ]; E# m; k! K; o

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

7 C0 Y) i$ D- W) |7 h

setenv irremote_update 'if irkey 0x1f2d12e 500000 ;then run bootlnx; fi'$ R2 d) f0 j- W5 L: e+ [

saveenv

) ~5 d9 i: Y( ]( J0 jv1 p复制代码关于uboot的更多内容,可以参考一下这张帖子:/thread-235366-1-1.html0 \2 z: N. Z4 r1 n1 O

7 B$ P, D) T6 X7 F## 内核

: f2 B7 {% u|0 P5 f* @! S* {% ^9 d" u7 e

amlogic官方放出的内核以及驱动源码这里有::8000/download/ARM/

3 K: k. l" s) H( ag7 R. c

/ B( v; Z7 V$ E8 F! r# ~7 e# E8 W' M不过直接用这里的代码虽然能够成功编译,但实际使用时有非常多的问题,所以我用的是wjb@github修改整理的版本。

5 v% ^; B( C3 [3 F8 H6 V

; ]" `+ N( `& ^& b; k编译内核使用的是ubuntu 12.04,安装必须的软件包什么的我就不废话了,具体编译过程大概是这样:

( ?. O# v$ b5 k6 t

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

9 J" l1 x5 A2 \

( \4 D& C8 Z$ Z7 |1 ]6 X

git clone /wjb/mx-common.git

& H1 O' y6 @3 J2 s

cd mx-common

% g( T: @4 x& a* m

6 @/ b; G; K4 ~9 l

export CROSS_COMPILE=arm-linux-gnueabihf-# ^7 M+ Q( ]3 ?+ y7 w! X

export ARCH=arm3 g8 i# M' U' o

make mrproper$ L" ?# Q+ |4 v

make meson6_g18_mx2_defconfig

# w) R6 O8 C, t- {' s4 i/ N

make menuconfig

0 c0 }! w' n( T' @

make uImage -j4

& [+ Y: }/ J6 I/ R

make modules -j4

7 e# v9 n3 L8 n) g- S/ c; y

+ h) h5 _5 u0 t5 a) w; s8 H( q

sudo cp arch/arm/boot/uImage /media/BOOT: o! vJ5 ~0 Y6 d1 m

sudo make INSTALL_MOD_PATH=/media/AMLinux modules_install

8 d! h% Q7 H3 ]5 ]1 ~9 v复制代码## Debian! h* d, E6 l* c; A, Y( m4 a

3 n6 E$ J' u: H) tUbuntu和Debian都提供了ARM支持,下面的方法两个发行版都适用。不过只用命令行的话,Ubuntu远不如Debian好用,再加上stable的Debian软件包太老,所以下面安装的是sid的Debian。7 `3 P" }# wN2 Z; C4 ^7 J

, s8 J0 J+ i% `/ R

* Y: |4 Q. u$ c. s0 U, F# I9 X

sudo apt-get install qemu-arm-static debootstrap

. C- x8 S9 M- B9 o: Ghmkdir debian-armhf-sid

1 `# N9 J* _0 R1 P# L& f+ Lsudo debootstrap --foreign --arch armhf sid debian-armhf-sid http://ftp./debian/% R7 w' d- O6 M$ Z

sudo cp /usr/bin/qemu-arm-static debian-armhf-sid/usr/bin/% L6 H( o# `! u* D' S

sudo chroot debian-armhf-sid /debootstrap/debootstrap --second-stage

, U& I/ Q6 \0 R9 K* z. nsudo chroot debian-armhf-sid

1 t" n8 P7 W}0 j1 _# T

2 J- S$ w0 Z: f4 e5 N

, K6 b8 M' ^$ V: G2 g4 A3 R9 k

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

( i6 S0 O$ F0 C: k: G3 ]' V8 m" r& G7 b+ B

然后就是一些基本设置:6 f9 |4 C' [3 L* `# C/ d% Q* a

! |( `( _( K$ T; o`) C. J

3 Q/ w' x; i) `passwd) F1 j" x9 N0 J; p( v

echo AMLinux > /etc/hostname1 E- B0 W' E4 l; J$ W6 N7 F

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

% J& `; `- w* g2 o+ capt-get update

" W8 h$ }" MV# L8 A4 uapt-get install locales$ L+ g; A7 l1 |4 ]j: ]

dpkg-reconfigure locales# ~1 p$ \% u! n) W0 r8 x

apt-get install wireless-tools wpasupplicant" @+ F/ K- J9 f/ K* A0 `1 }* N

mknod -m 660 /dev/ttyS0 c 4 64

' p5 [. Q; a$ d# ?' D0 ~

: L2 K9 w3 t6 I6 J9 n3 G$ r! c! a9 n

% D$ c8 Y9 yL/ d; M

编辑/etc/inittab,将ttyS0所在行改为:

1 R! _/ f. k9 G2 O

/ ]7 y$ d; S1 T- T8 }

, L0 u% x0 K+ U% p! D" s( n

T0:2345:respawn:/sbin/agetty -L ttyS0 115200 vt100

7 B( J! n4 R% S6 g; @" f

) S5 |( ]1 s4 _! u5 \6 z

. ?: ]' I. x" g& M4 OL2 J1 @2 g6 W完成后cp -a将debian-armhf-sid复制到TF卡的ext3分区,到这里该TF卡就可以在魔盒中成功启动了。

$ w! ?5 R) T4 J: L6 c0 _# [3 w0 }

## 现存问题

; q/ d. @# G+ Pt+ H& R( p9 @8 q3 s4 l% v9 g

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

5 M2 Z1 i1 @1 y4 S9 N: x

$ C9 U- V- \6 t2 g+ O# i! c, o在启动linux时,log里有一句未配置mac地址,使用随机地址的信息。进入linux后重启进入android,系统会自动运行一个叫MiptAutoTestForAli-10030的程序。虽然看起来很吓人,但其实只要在这个程序中选择写入随机mac地址再退出,就可以正常使用android系统了。

. ?9 ~, z+ t. ?) r

2 k9 z" _, i' I; u: I% b这有可能是linux下的网卡驱动不完善导致的,不过也不是什么大问题就是。( H' d% k# V( O' B- o

- {% G9 j. \, p4 Q}+ u$ P### usb口无法使用* T6 t0 n6 \- O& Yi1 [* ]9 L: }

# s# @% C/ j; ~* z" g

启动信息看不出什么问题,usb相关内容都有也都正常,但不管是启动前还是启动后插入usb设备,系统都认不出来。

$ h- l% a- ~7 W6 |

3 ?. I# t( @1 M- S### 音频输出c: M0 w1 I$ q# e. K9 C- ~

" u& q* ], O0 u: Q/ cY6 Z9 X

amlogic虽然也用了alsa,但似乎没有提供/dev/dsp一类标准接口。在android中我用optware安装了alsa相关工具,同样有alsamixer显示无控制器,aplay无法输出的问题,所以这究竟是怎么回事还有待研究。

' c6 O+ L8 U4 j& O3 W: {0 A1 n. F6 t' Q% l7 E7 s: ~) g7 L

### 遥控器不能用5 i. X* R! c- V6 @4 a

$ O" f`5 P8 E/ p& I, h; y应该也是驱动问题,不过只要usb口可以正常使用了,大不了用鼠标不用遥控就是,问题不大。% ]! i: A: X0 d) Z

8 W1 }+ l{0 G( c0 q3 T

7 Y- y: e& ^2 Dh# D

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。