请选择 进入手机版 | 继续访问电脑版

Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3696|回复: 0

机顶盒能刷windows系统

[复制链接]

22

主题

8

回帖

156

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
156
发表于 2022-11-2 22:11:56 | 显示全部楼层 |阅读模式

机顶盒从ubuntu16更换到archLinux最新版
总体说明
方案分析
安装archLinuxARM的大体步骤
更新系统
安装软件
使用体验
更换内核和硬盘尝试
小结
总体说明
需要解决的问题:
之前完成了uboot、内核、文件系统的搭建,机顶盒利旧改造,实现安卓和Linux双系统启动。但是当时使用的Ubuntu16,apk安装的时候提示依赖包未安装,手工安装依赖包也失败。
存在困难
1、于是想安装archLinux arm版,而官网打开慢,好像资料的访问路径也有问题,其wiki都是和arch Linux公用的。即使官方支持的主板,也没有找到详细的步骤说明。
2、参考资料:
树莓派3上安装配置Archlinux
mirabox#installation 可能无法打开页面,我已上传文档,链接点我。如果打开后可点installation没有反应,可以保存再打开就能看到文字了。


方案分析
1、确认好CPU信息:hi3798mv100 通过安卓我记得只能到arm V7架构。
2、准备好内核文件:软件链接:https://download.csdn.net/download/weixin_43869959/12774894
3、通过uboot设置环境变量已经能正常引导内核了,本次只需要更换根文件系统,uboot和内核都不动。


4、由于我的uboot是从u盘引导Ubuntu,只需要把u盘插在其他linux上,把老文件备份,用新的archlinuxarm安装包ArchLinuxARM-armv7-latest.tar.gz替换就可以了。


安装archLinuxARM的大体步骤
把u盘分区,我这里就不需要分区和格式化了,
挂载第二个分区(比如 mount /dev/sdb2 /mnt),
只需要把原来ubuntu的所有目录删除或者备份


  1. mkdir /mnt/ubtbak; mv /mnt/* /mnt/ubtbak
复制代码


把新的arch linux解压就完成了系统安装



  1. <div><font color="#000000" face="Microsoft YaHei" size="3">bsdtar -xpf ArchLinuxARM-armv7-latest.tar.gz /mnt/</font>
  2. <font color="#000000" face="Microsoft YaHei" size="3">bsdtar大概是archLinux,用</font>
  3. <font color="#000000" face="Microsoft YaHei" size="3">tar -zxf ArchLinuxARM-armv7-latest.tar.gz -C /mnt</font></div>
复制代码


应该也是一样的效果,没有验证。
卸载分区


  1. umount /mnt
复制代码


把U盘插回原来的机顶盒,启动电源。
正常启动,通过路由器看IP地址,SSH登录正常,太顺利了。


更新系统
安装软件前要初始化签名,这两条命令一定不能少,否则会报keyring之类的错误



  1. <div><font color="#000000" face="Microsoft YaHei" size="3">pacman-key --init</font>
  2. <font color="#000000" face="Microsoft YaHei" size="3">pacman-key --populate archlinuxarm</font></div>
复制代码


关闭签名,也可以修改配置,不建议



  1. <div><font color="#000000" face="Microsoft YaHei" size="3">/etc/pacman.conf</font>
  2. <font color="#000000" face="Microsoft YaHei" size="3">SigNever = Never</font></div>
复制代码


先该一下镜像,加快下载速度



  1. <div><font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb ~]# more /etc/pacman.d/mirrorlist</font>
  2. <font color="#000000" face="Microsoft YaHei" size="3">Server = http://mirrors.163.com/archlinuxarm/$arch/$repo</font></div>
复制代码


先更新系统,


  1. pacman -Syyu
复制代码


安装软件
安装命令



  1. <div><font color="#000000" face="Microsoft YaHei" size="3">BT和磁链下载工具,不能下载http/s链接,服务名transmission</font>
  2. <font color="#000000" face="Microsoft YaHei" size="3">pacman -S transmission-cli</font>
  3. <font color="#000000" face="Microsoft YaHei" size="3">全能下载工具,无服务名,可以写一个服务或者启动脚本</font>
  4. <font color="#000000" face="Microsoft YaHei" size="3">pacman -S aria2</font>
  5. <font color="#000000" face="Microsoft YaHei" size="3">投屏软件,可以通过智能电视和手机vlc等软件直接播放,服务名minidlna</font>
  6. <font color="#000000" face="Microsoft YaHei" size="3">pacman -S minidlna</font>
  7. <font color="#000000" face="Microsoft YaHei" size="3">Windows共享,默认配置文件/etc/samba/smb.conf需要单独下载,服务名smb</font>
  8. <font color="#000000" face="Microsoft YaHei" size="3">pacman -S samba</font></div>
复制代码


服务管理举例



  1. <div><font color="#000000" face="Microsoft YaHei" size="3">启动服务</font>
  2. <font color="#000000" face="Microsoft YaHei" size="3">systemctl start transmission</font>
  3. <font color="#000000" face="Microsoft YaHei" size="3">如果要让开机自动运行</font>
  4. <font color="#000000" face="Microsoft YaHei" size="3">systemctl enable transmission</font>
  5. <font color="#000000" face="Microsoft YaHei" size="3">查看运行状态及最后几条日志</font>
  6. <font color="#000000" face="Microsoft YaHei" size="3">systemctl status transmission</font>
  7. <font color="#000000" face="Microsoft YaHei" size="3">更新配置后尽量重启一下,也许也可以用reload</font>
  8. <font color="#000000" face="Microsoft YaHei" size="3">systemctl restart transmission</font></div>
复制代码


配置好之后,远程下载和电视直接播放是正常的,访问smb共享正常读写。
具体配置文件可以网上参考。


使用体验
只是我那个写入速度3-5M的U盘太慢了,经常无响应,只要不写,CPU占用不到5%,内存占用一直不到200M,对于4核心1GB内存的机顶盒来说,完全不是事儿;而且功耗低完全静音,不错不错。


挂载一个2.5寸的移动硬盘,猜测读写应该没有问题(系统都读入内存了,下载软件不写U盘)。实际使用U盘的系统很快就崩溃了,大概是IO太慢文件损坏了,用硬盘启动流畅了。
后面再把WiFi配置搞一下就可以扔到角落里去啦。


更换内核和硬盘尝试
更新系统时,会自动更新/boot目录下的文件,但我写的u-boot指定的文件名并非zImage文件,通过uname -rp可以核实内核未更新。
initramfs也未用到,所以并未挂载任何模块,无任何驱动,也就是说dtb设备树都用不到。
但这些并不影响上述几个软件的运行。


尝试把U盘替换为移动硬盘(目录结构和分区相同,连接U口相同),启动后ssh和ping都失败,接TTL串口去核实原因为:移动硬盘的文件权限错误,全被改成777了,串口下都无法登录,重新解压ArchLinuxARM-armv7-latest.tar.gz即可。


尝试手工替换了内核文件,启动后ssh和ping都失败,未接TTL串口去核实原因。猜测可能是网卡未正常驱动。



  1. <div><font color="#000000" face="Microsoft YaHei" size="3">更换kernel后</font>
  2. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb mnt]# ls -l</font>
  3. <font color="#000000" face="Microsoft YaHei" size="3">total 22586</font>
  4. <font color="#000000" face="Microsoft YaHei" size="3">-rwxr-xr-x 1 root root 7406192 Mar 5 14:37 arch_kernel_can_not_boot.bin</font>
  5. <font color="#000000" face="Microsoft YaHei" size="3">-rwxr-xr-x 1 root root 1130139 May 30 2019 armroot.tar.gz</font>
  6. <font color="#000000" face="Microsoft YaHei" size="3">-rwxr-xr-x 1 root root 7243160 Mar 16 2020 hi_kernel.bin</font>
  7. <font color="#000000" face="Microsoft YaHei" size="3">-rwxr-xr-x 1 root root 7346064 Feb 5 00:26 zImage</font>
  8. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb mnt]# mv hi_kernel.bin hi_kernel.bin.bak</font>
  9. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb mnt]# mv zImage hi_kernel.bin</font>
  10. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb mnt]# ls -l</font>
  11. <font color="#000000" face="Microsoft YaHei" size="3">total 22586</font>
  12. <font color="#000000" face="Microsoft YaHei" size="3">-rwxr-xr-x 1 root root 7406192 Mar 5 14:37 arch_kernel_can_not_boot.bin</font>
  13. <font color="#000000" face="Microsoft YaHei" size="3">-rwxr-xr-x 1 root root 1130139 May 30 2019 armroot.tar.gz</font>
  14. <font color="#000000" face="Microsoft YaHei" size="3">-rwxr-xr-x 1 root root 7346064 Feb 5 00:26 hi_kernel.bin</font>
  15. <font color="#000000" face="Microsoft YaHei" size="3">-rwxr-xr-x 1 root root 7243160 Mar 16 2020 hi_kernel.bin.bak</font>
  16. <font color="#000000" face="Microsoft YaHei" size="3">
  17. </font>
  18. <font color="#000000" face="Microsoft YaHei" size="3">启动失败</font>
  19. <font color="#000000" face="Microsoft YaHei" size="3">Press Ctrl+C to stop autoboot</font>
  20. <font color="#000000" face="Microsoft YaHei" size="3">(Re)start USB...</font>
  21. <font color="#000000" face="Microsoft YaHei" size="3">USB0: Register 1212 NbrPorts 2</font>
  22. <font color="#000000" face="Microsoft YaHei" size="3">USB EHCI 1.00</font>
  23. <font color="#000000" face="Microsoft YaHei" size="3">scanning bus 0 for devices... 3 USB Device(s) found</font>
  24. <font color="#000000" face="Microsoft YaHei" size="3">USB1: Register 1111 NbrPorts 1</font>
  25. <font color="#000000" face="Microsoft YaHei" size="3">USB EHCI 1.00</font>
  26. <font color="#000000" face="Microsoft YaHei" size="3">scanning bus 1 for devices... 1 USB Device(s) found</font>
  27. <font color="#000000" face="Microsoft YaHei" size="3">scanning usb for storage devices... 1 Storage Device(s) found</font>
  28. <font color="#000000" face="Microsoft YaHei" size="3">reading hi_kernel.bin</font>
  29. <font color="#000000" face="Microsoft YaHei" size="3">................................................................................................................................................................................................................................................................................................................................................................................................................................................................</font>
  30. <font color="#000000" face="Microsoft YaHei" size="3">7346064 bytes read</font>
  31. <font color="#000000" face="Microsoft YaHei" size="3">Wrong Image Format for bootm command</font>
  32. <font color="#000000" face="Microsoft YaHei" size="3">ERROR: can't get kernel image!</font>
  33. <font color="#000000" face="Microsoft YaHei" size="3">
  34. </font>
  35. <font color="#000000" face="Microsoft YaHei" size="3">在串口用备份文件正常启动</font>
  36. <font color="#000000" face="Microsoft YaHei" size="3">usb start;fatload usb 0:1 0x1FFBFC0 hi_kernel.bin.bak;bootm 0x1FFBFC0</font>
  37. <font color="#000000" face="Microsoft YaHei" size="3">挂载查看格式不同,恢复回去</font>
  38. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb ~]# mount /dev/sda1 /mnt/</font>
  39. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb ~]# cd /mnt</font>
  40. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb mnt]# file hi_kernel.bin</font>
  41. <font color="#000000" face="Microsoft YaHei" size="3">hi_kernel.bin: ARM OpenFirmware FORTH Dictionary, Text length: -509607936 bytes, Data length: -509607936 bytes, Text Relocation Table length: -369098747 bytes, Data Relocation Table length: 24061976 bytes, Entry Point: 0x00000000, BSS length: 7346064 bytes</font>
  42. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb mnt]# file hi_kernel.bin.bak</font>
  43. <font color="#000000" face="Microsoft YaHei" size="3">hi_kernel.bin.bak: u-boot legacy uImage, Linux-3.18.24_s40, Linux/ARM, OS Kernel Image (Not compressed), 7243096 bytes, Sun Mar 15 16:37:31 2020, Load Address: 0x02000000, Entry Point: 0x02000000, Header CRC: 0xC1CAA0CA, Data CRC: 0xB6071F47</font>
  44. <font color="#000000" face="Microsoft YaHei" size="3">[root@wtstb mnt]# mv hi_kernel.bin.bak hi_kernel.bin</font>
  45. <font color="#000000" face="Microsoft YaHei" size="3">以后更新系统,也只能保持内核不变。</font></div>
复制代码




小结
只要硬件和archLinux的ARM架构相同,就可以正常运行。
内核和根文件系统/发行版,无强关联,同一个内核和ubuntu16及archLinuxArm2021版都可以兼容。如果加上声卡/网卡/显卡这些外设可能就有问题了。
uboot和板级硬件强相关,往往需要硬件厂家支持,这些资料可能无法获取。
uboot引导内核时,必须指定kernel内核及rootfs根文件系统位置,可以不指定initramfs及dtb驱动设备树,就可以进入基本的shell界面。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|博客 ( 蒙ICP备15000739号-1 )

GMT+8, 2023-3-22 20:20 , Processed in 0.088520 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表