找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 5680|回复: 20

赚钱宝Pro折腾随手记

[复制链接]
发表于 2022-5-11 11:19 | 显示全部楼层 |阅读模式
本帖最后由 achaoge 于 2022-5-11 11:27 编辑

有几个吃灰的赚钱宝,跟着论坛里面的教程,折腾了一下,踩了一些坑,随手记录一下。

硬件:S805、512M内存,4G emmc存储,大致硬件跟 odroidc1 类似,还有文档可以参考。


参考文档:
论坛: 【赚钱宝2代 Armbian 直刷包】软件随便装,可以apt-get,可以挂甜糖~
自行编译5.10镜像:https://soulteary.com/2021/11/10/low-power-device-trial-notes-wyk-part-1.html
内核3.10.108 的编译: github 3.10.108镜像资源

测试的结果:
1,3.10.108 内核可以运行(也可以自行编译内核及需要的模块,拿了来做打印服务器,所以加了usblp 模块,可以网络打印),各个硬件的功能模块都没有问题。
2,5.10.21 的内核可以运行(来源Armbian的 odroidc1 镜像,或者 dietpi 的 odroidc1),因为没有原厂的 dtb文件(5.10 用了 meson8b-ec100.dtb),所以这个版本上USB不可用,其它能看到的比如led灯、网络等等可以用,如果不纠结usb口的话,这个版本的可玩性应该高一些。
3,可以刷入 odroidc1 的 u-boot.bin 模块,替换原厂的uboot,这个模式下的uboot 可以启动 fastboot 和 ums,方便救砖用(踩了无数坑的血泪),但这个uboot 下网络不正常;也可以自行编译 odroidc1 的uboot,以便于网卡正常工作,但无论哪个Uboot,都不能正常使用U盘,所以无法实现U盘启动。
4,原始的uboot 下,只能读取类似 android 的 boot.img 来启动,好在有 kernel\uboot\misc\boot 等分区供使用,所以把boot.img 文件写入这些分区,并修改uboot 环境变量就可以实现启动不同的内核版本(也就是说可以保留原始的版本,多系统共存,虽然对于4G的存储来说并没有什么鸟用)
5,5.10 的内核不能识别原始uboot 的分区,解决办法是用 odroidc1 的uboot 进行分区;并且odroid uboot 的好处是可以直接读取 ext4 分区的文件进行引导; 如果用原始uboot 又想引导5.10,也有两个选项:
5.1 用 fdisk 给emmc分区,为避免分区混乱,需要参考分区表、16进制和10进制转换,以及 blocksize 的大小。这里注意分区最好是在3.10内核下做(血泪:5.10 下分的区给文件系统添加了一些标记,导致3.10的内核无法挂载,最后参考了前面说的 uboot下启动 ums ,利用外部的电脑去掉了文件系统的特定功能才好)
5.2 给内核启动的参数加 blkdevparts,当然还需要内核开启了相应的开关,这个参数也需要自己计算大小、位移。
6 替换uboot: 注意!注意!注意!换uboot 的前提是你有 ttl线并已经完成了拆机!在Linux系统下:先取消uboot分区的强制写标记,再写入 u-boot.
echo 0 > /sys/block/mmcblk1boot0/force_ro
dd if=u-boot.bin of=/dev/mmcblk1boot0 bs=512 seek=64
7 Linux下查看和修改 uboot 变量,以实现多系统启动的命令是 fw_printenv, fw_setenv,注意 odroid 和原厂 的uboot 分区表并不一致,所以 env 分区位置不一样,使用命令的时候注意修改相应的配置文件。(顺便说一句,原厂的uboot 支持 tftp 引导,所以我还尝试过如果接上网络,就从网络下载引导文件启动;如果没有,就从自身的emmc引导启动)

最后设备安安心心的安装了 dietpi 加上 cups ,在3.10.108内核下当作了打印服务器。


附一下原始的分区表及uboot变量:

Partition table get from SPL is :
        name                        offset              size              flag
=================================================================================
==
   0: bootloader                         0            400000                  0
   1: reserved                     2400000           4000000                  0
   2: cache                        6c00000                 0                  0
   3: env                          7400000            800000                  0
   4: uboot                        8400000           2000000                  1
   5: kernel                       ac00000           2000000                  1
   6: misc                         d400000           2000000                  1
   7: boot                         fc00000           2000000                  1
   8: system                      12400000          10000000                  1
   9: backup                      22c00000          10000000                  1
  10: data                        33400000          b5c00000                  4




==========原始uboot参数============
stat /dev/nand_env OK
env device is  /dev/nand_env  erasesize=(0x00000) envsize=(0x10000)
baudrate=115200
boardname=m8_board
bootargs=root=/dev/system rootfstype=ext4 init=/sbin/init console=ttyS0,115200n8 no_console_suspend ramoops.mem_address=0x04e00000 ramoops.mem_size=0x100000 ramoops.record_size=0x8000 ramoops.console_size=0x4000 cvbsdrv=0 vdaccfg=0xa000 logo=osd1,loaded,0x7900000,1080p,full hdmimode=1080p cvbsmode=576cvbs androidboot.firstboot=1 hdmitx=
bootcmd=run storeboot
bootdelay=1
bootfile=boot.img
bootm_low=0x00000000
bootm_size=0x80000000
bootpart=kernel
bootpath=u-boot.bin
bootrecovery=run revertbootpart; run storeboot
bootsize=100000
bootstart=0
check_rebootmode=get_rebootmode; clear_rebootmode; echo reboot_mode=${reboot_mode};if test ${reboot_mode} = factory_reset; then defenv; fi;
checkbootpart=if test ${second_image_load} = off; then setenv bootpart boot;else if test ${second_image_load} = on; then setenv bootpart kernel; fi;fi;
checkrootfspart=if test ${second_rootfs_load} = off; then setenv rootfs_part system;else if test ${second_rootfs_load} = on; then setenv rootfs_part backup; fi;fi;
chipname=8726m8
console=ttyS0,115200n8 ignore_loglevel
cvbs_drv=0
cvbsmode=576cvbs
display_bpp=16
display_color_bg=0
display_color_fg=0xffff
display_color_format_index=16
display_height=1080
display_layer=osd2
display_width=1920
enable_halt=0
ethact=Meson_Ethernet
ethaddr=00:15:18:01:81:31
fb_addr=0x7900000
fb_height=1080
fb_width=1920
firstboot=1
gatewayip=10.18.9.1
get_dt=checkhw
hdmimode=1080p
hostname=arm_m8
identifyWaitTime=750
initargs=root=/dev/system rootfstype=ext4 init=/sbin/init console=ttyS0,115200n8 no_console_suspend ramoops.mem_address=0x04e00000 ramoops.mem_size=0x100000 ramoops.record_size=0x8000 ramoops.console_size=0x4000
initrd_high=60000000
ipaddr=10.18.9.97
loadaddr=0x12000000
loadaddr_logo=0x13000000
netmask=255.255.255.0
normalsize=400000
normalstart=1000000
outputmode=1080p
p0path=uImage
p0size=400000
p0start=1000000
p1path=android.rootfs
p1size=8000000
p1start=1400000
partnum=2
preboot=run test_facreset;if itest ${upgrade_step} == 3; then run prepare; run storeargs; run update; fi; if itest ${upgrade_step} == 1; then  defenv_reserve_env; setenv upgrade_step 2; saveenv;fi; run check_rebootmode;run prepare;run storeargs;run update_ir; run switch_bootmode
preloaddtb=imgread dtb boot ${loadaddr}
prepare=logo size ${outputmode}; video open; video clear; video dev open ${outputmode};imgread pic logo bootup ${loadaddr_logo}; bmp display ${bootup_offset}; bmp scale;
reboot_mode=normal
recovery=echo enter recovery;setenv bootargs ${bootargs} wipeinstaboot;if mmcinfo; then if fatload mmc 0 ${loadaddr} recovery.img; then bootm;fi;fi; if usb start 0; then if fatload usb 0 ${loadaddr} recovery.img; then bootm; fi;fi;if imgread kernel recovery ${loadaddr}; then bootm; else echo no recovery in flash; fi;
resetinitargs=setenv initargs root=/dev/${rootfs_part} rootfstype=ext4 init=/sbin/init console=ttyS0,115200n8 no_console_suspend ramoops.mem_address=0x04e00000 ramoops.mem_size=0x100000 ramoops.record_size=0x8000 ramoops.console_size=0x4000
revertbootpart=if test ${second_image_load} = off; then setenv second_image_load on; else if test ${second_image_load} = on;then setenv second_image_load off; fi; fi; saveenv
rootfs_part=system
sdc_burning=sdc_burn ${sdcburncfg}
sdcburncfg=aml_sdc_burn.ini
second_image_load=on
second_rootfs_load=off
serverip=10.18.9.113
stderr=serial
stdin=serial
stdout=serial
stop_dcdn=0
store=1
storeargs=setenv bootargs ${initargs} cvbsdrv=${cvbs_drv} vdaccfg=${vdac_config} logo=osd1,loaded,${fb_addr},${outputmode},full hdmimode=${hdmimode} cvbsmode=${cvbsmode} androidboot.firstboot=${firstboot} hdmitx=${cecconfig}
storeboot=if test ${reboot_mode} = charging; then run try_auto_burn; fi;echo Booting...; run checkbootpart; run checkrootfspart; run resetinitargs; run storeargs;save; if unifykey get usid; then  setenv bootargs ${bootargs} androidboot.serialno=${usid};fi;if unifykey get mac; then  setenv bootargs ${bootargs} mac=${mac};fi;imgread kernel ${bootpart} ${loadaddr};bootm;run bootrecovery
switch_bootmode=if test ${reboot_mode} = factory_reset; then run recovery;else if test ${reboot_mode} = update; then run update;else if test ${reboot_mode} = usb_burning; then run usb_burning;else if test ${wipe_data} = failed; then echo wipe_data=${wipe_data}; run recovery;else   fi;fi;fi;fi
test_facreset=if test ${wipe_data} = failed; then echo -wipe_data=${wipe_data}; run prepare; run storeargs; run recovery;fi; if test ${wipe_cache} = failed; then echo -wipe_cache=${wipe_cache}; run prepare; run storeargs; run recovery;fi;
testaddr=0x12400000
try_auto_burn=update 700 750;
update=run usb_burning; if mmcinfo; then if fatexist mmc 0 ${sdcburncfg}; then run sdc_burning; else if fatload mmc 0 ${loadaddr} aml_autoscript; then autoscr ${loadaddr}; fi;run recovery;fi;else run recovery;fi;
update_ir=if irdetect; then run update; fi
upgrade_step=2
usb_burning=update 1000
vdac_config=0xa000
video_dev=tvout
wipe_cache=success
wipe_data=success
xl_default=1
xl_kernel_ver=V1.2.138
xl_plug_init=1
xl_softmode=usermode





我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2022-5-11 17:51 | 显示全部楼层
多系统启动:现有系统为 dietpi, 在此基础上增加OpenWRT 赚钱宝1代2代3代openwrt官网固件线刷包

从包里面解出 boot.PARTITION 和 system.PARTITION,把boot.PARTITION 写入 /dev/kernel , 把 system.PARTITION 写入 /dev/backup,并且设置uboot变量,就可以启动OpenWRT了
  1. dd if=boot.PARTITION of=/dev/kernel
  2. dd if=system.PARTITION of=/dev/backup

  3. fw_setenv second_image_load on
  4. fw_setenv second_rootfs_load on
复制代码


启动之后,如果要从OpenWrt回到其它系统,比如说我现在的dietpi,就把前面的second_image_load, second_rootfs_load 设置为 off。
OpenWRT需要安装 uboot-envtools 才会有 fw_printenv 工具,同时需要设置 /etc/fw_env.config 文件,内容为:
  1. /dev/env 0      0x10000 0x200
复制代码


注意!! 需要检查uboot 的变量: resetinitargs,我的系统里面是根据我的实际情况修改了root 分区为data 的。

固定mac地址也可以通过修改 uboot 里面的变量,给内核加上 mac=xx:xx:xx:xx:xx:xx 的参数,OpenWRT会识别这个参数,armbian 也认可(dietpi 也认)

以下是我的uboot 里面 storeboot 及 resetinitargs 的变量设置,相比原版的内容,主要修改了 mac 参数和默认的 rootfs 分区
  1. checkrootfspart=if test ${second_rootfs_load} = off; then setenv rootfs_part data;
  2. else if test ${second_rootfs_load} = on; then setenv rootfs_part backup; fi;fi;
复制代码

OpenWRT


DietPi

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-5-12 02:15 | 显示全部楼层
能用docker吗?

点评

5.10 的内核有 docker ,但没有USB。  详情 回复 发表于 2022-5-12 08:49
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-5-12 08:49 | 显示全部楼层

5.10 的内核有 docker ,但没有USB。

点评

5.10不能用3.10的dtb文件支持usb吗?大佬  详情 回复 发表于 2022-5-12 12:17
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-5-12 12:17 | 显示全部楼层
achaoge 发表于 2022-5-12 08:49
5.10 的内核有 docker ,但没有USB。

5.10不能用3.10的dtb文件支持usb吗?大佬

点评

不能。这个只有一个USB口,odroidc1 上的otg 的USB口也不是很正常,都是过时的设备了,没希望了。  详情 回复 发表于 2022-5-12 12:50
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-5-12 12:50 | 显示全部楼层
wang25669 发表于 2022-5-12 12:17
5.10不能用3.10的dtb文件支持usb吗?大佬

不能。这个只有一个USB口,odroidc1 上的otg 的USB口也不是很正常,都是过时的设备了,没希望了。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-5-13 19:05 来自手机 | 显示全部楼层
能麻烦提供下文件吗

点评

解包工具来自于 cnx-software,需要自行编译:https://www.cnx-software.com/2016/11/19/how-to-create-a-bootable-recovery-sd-card-for-amlogic-tv-boxes/ Linux下的解包打包工具下面链接里面比较全 https://git  详情 回复 发表于 2022-5-18 10:12
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-5-13 22:59 | 显示全部楼层
大佬,咋这个教程能再详细点吗
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-5-18 10:12 | 显示全部楼层
本帖最后由 achaoge 于 2022-5-18 10:27 编辑
伊漠然 发表于 2022-5-13 19:05
能麻烦提供下文件吗

解包工具来自于 cnx-software,需要自行编译:https://www.cnx-software.com/201 ... r-amlogic-tv-boxes/
Linux下的解包打包工具下面链接里面比较全
https://github.com/natinusala/linux-amlogic-toolkit

赚钱宝原版的固件无法解包,需要用 amlogic customize tools 处理一下才能解包。

解包出来类似这样:
boot.PARTTION 是 boot.img 的分区文件,
bootloader.PARTITION 是uboot分区文件,从0字节开始的,
UBOOT_COMP.USB 是u-boot.bin 文件,从64块开始写入的,如果写入了 bootloader.PARTITION 就不用写这个。
meson.dtb 是dtb文件,可以用来合成 boot.img 文件
system.PARTITION 这个就是 rootfs 分区了。

如果不方便用双公头刷机的话,这些文件都可以在Linux下用dd命令写入磁盘相对应的位置。

有的镜像还有 data.PARTITION 文件,相应的就是写入data 分区的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-5-18 19:35 | 显示全部楼层
大佬,您好,我想问一下怎么自行编译3.10.108内核,需要用到usb功能,十分感谢

点评

【赚钱宝2代 Armbian 直刷包】软件随便装,可以apt-get,可以挂甜糖~ 帖子被锁了,回复也看不到了,在这里再说一下编译3.10.108 下载源代码: https://github.com/osdu/150balbes-Build-Armbian 编译型号为aml-  详情 回复 发表于 2022-5-19 12:08
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-5-19 12:08 | 显示全部楼层
1437390834 发表于 2022-5-18 19:35
大佬,您好,我想问一下怎么自行编译3.10.108内核,需要用到usb功能,十分感谢

【赚钱宝2代 Armbian 直刷包】软件随便装,可以apt-get,可以挂甜糖~ 帖子被锁了,回复也看不到了,在这里再说一下编译3.10.108

下载源代码: https://github.com/osdu/150balbes-Build-Armbian
编译型号为aml-s805
内核源修改文件config/sources/aml-s805.conf)
KERNELSOURCE='https://github.com/osdu/Amlogic_s8xx-kernel'
编辑内核 config 文件,选择自己需要的模块(文件:config/kernel/linux-aml-s805-default.config)
运行编译脚本(只编译内核)
./compile.sh BOARD=aml-s805 BRANCH=default RELEASE=jessie BUILD_MINIMAL=yes BUILD_DESKTOP=no  KERNEL_CONFIGURE=no COMPRESS_OUTPUTIMAGE=sha,gpg,img DOWNLOAD_MIRROR=china MAINLINE_MIRROR=tuna EXTRAWIFI=no KERNEL_ONLY=yes

因为版本比较老又没有人修,下载编译环境会出错,自己手动下载相关的跨平台文件放到 cache/toolchains 目录里面并解压。
toolchains 国内有镜像: https://mirrors.bfsu.edu.cn/armbian-releases/_toolchain/ 自行参考代码看需要下哪些。

问题会比较多,没有一定的Linux基础知识,还是不要尝试自己玩这个编译。





点评

太感谢您了,我对liunx确实是新手,但是还是感谢您的回答  详情 回复 发表于 2022-5-19 13:16
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-5-19 13:16 | 显示全部楼层
achaoge 发表于 2022-5-19 12:08
【赚钱宝2代 Armbian 直刷包】软件随便装,可以apt-get,可以挂甜糖~ 帖子被锁了,回复也看不到了,在这 ...

太感谢您了,我对liunx确实是新手,但是还是感谢您的回答
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-5-29 14:05 | 显示全部楼层
没有看懂大佬讲的,由此鉴定自己小白一个。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2022-6-11 15:36 | 显示全部楼层
大佬可以讲下dietpi 是怎么安装的吗?谢谢。

点评

两个方法都可以: 1,刷 armbian,通过脚本转换成 dietpi 2,下载odroidc1 的dietpi,把 rootfs 提取出来写入到emmc里面,把 boot 分区里面的文件拷贝到 boot 目录里面。  详情 回复 发表于 2022-6-14 12:40
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2022-6-14 12:40 | 显示全部楼层
wsxiaoping3 发表于 2022-6-11 15:36
大佬可以讲下dietpi 是怎么安装的吗?谢谢。

两个方法都可以:
1,刷 armbian,通过脚本转换成 dietpi
2,下载odroidc1 的dietpi,把 rootfs 提取出来写入到emmc里面,把 boot 分区里面的文件拷贝到 boot 目录里面。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-19 20:08

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

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