深蓝基因 发表于 2019-8-4 20:28

从源码编译支持玩客云的openwrt

本帖最后由 深蓝基因 于 2019-8-4 20:52 编辑

发现论坛各种大佬都在改造玩客云,就把之前研究玩客云改造openwrt的教程分享一下
废话不多说,按下述步骤从源码编译openwrt:

1.下载源码:
链接: https://pan.baidu.com/s/1jtmox_k9VQ81kS7NhEJQAg 提取码: ta1v

2.然后找台linux主机(建议kali 2.0)
解压源码,我将交叉编译链放在了/opt目录,如果主机空间不够的请自行安排,以免撑爆存储
mkdir amlogic
tar -xvf gnutools.tar.bz2 -C /opt
tar -xvf CodeSourcery.tar.bz2 -C /opt
tar -xvf arc-4.8-amlogic-20130904-r2.tar.bz2 -C /opt
tar -xvf openwrt-2015-04-01-8ccfe85432.tar.gz
tar -xvf packages-2015-04-01-6e8e14cd81.tar.gz
tar -xvf oldpackages-2015-04-01-c18fb70da5.tar.gz
export PATH=$PATH:/opt/gnutools/arc2.3-p0/elf32-4.2.1/bin:/opt/gnutools/arc2.3-p0/uclibc-4.2.1/bin:/opt/arc-4.8-amlogic-20130904-r2/bin:/opt/CodeSourcery/Sourcery_G++_Lite/bin:/opt/CodeSourcery/Sourcery_G++_Lite/arm-none-eabi/bin:/opt/CodeSourcery/Sourcery_G++_Lite/arm-none-linux-gnueabi/bin

3.然后配置、编译
cd openwrt
make menucofig
make V=s
编译完成后,在bin目录下会有生成的kernel、rootfs、u-boot文件
boot.img
openwrt-meson-m8b-m201-rootfs.tar.gz
openwrt-meson-m8b-m8b_m201_1G-u-boot.bin
4.制作sd卡启动系统,插图sd卡,这里假设磁盘为sdb
# 写u-boot
dd if=./openwrt-meson-m8b-m8b_m201_1G-u-boot.bin of=/dev/sdb bs=1 count=442
dd if=./openwrt-meson-m8b-m8b_m201_1G-u-boot.bin of=/dev/sdb bs=512 skip=1 seek=1
# 写kernel和cp根文件系统
fdisk /dev/sdb
mkfs.ext2 /dev/sdb1mount /dev/sdb1 /mnt
cp boot.img /mnt
tar -xvf openwrt-meson-m8b-m201-rootfs.tar.gz -C /mnt
sync
umount /mnt

5.接下来就是从sd卡启动外置openwrt了
短接emmc的黄圈两脚,加点,观察ttl输出


当出现,如下图字符串时候,可松开短接,不停按回车即可进入sd卡上的u-boot了
Boot from external device


6.然后可以用printenv bootsdcard命令看看有没有该变量,如果有运行
run bootsdcard
就可以启动openwrt
如果没有需要设置一下
setenv bootsdargs "bootargs root=/dev/mmcblk0p1 rw rootfstype=ext2 rootwait init=/sbin/init console=ttyS0,115200n8 no_console_suspend cvbsdrv=${cvbs_drv} vdaccfg=${vdac_config} logo=osd1,loaded,${fb_addr},${outputmode},full hdmimode=${hdmimode} cvbsmode=${cvbsmode} hdmitx=${hdmimode}"
setenv bootsdcard "echo Booting ...;run bootsdargs; mmcinfo;ext2load mmc 0 ${loadaddr} boot.img;bootm"

然后再运行

至此就进入了openwrt系统


7.备份原系统
原系统分部有用的主要是bootloader、kernel、boot、system分区,backup及app0、app1、data都是升级时候的备份缓存分区
dd if=/dev/mmcblk1 of=/onecloud.img bs=1Mps:我看到wz1024备份mmcblk1boot0、mmcblk1boot1分区是没用的,虽然写入BOOT Area Partition是可以做成不死u-boot(原理是),但是迅雷貌似没这么做
BOOT Area Partition 1 & 2里都空的,所以不用浪费时间

8.刷bootloader
由于我们可以甩开板载的emmc系统了,所以玩客云砖了也可以从外部启动恢复,前提是做好第7步的备份
这样可以将高版本屏蔽命令的u-boot降级
dd if=u-boot.bin of=/dev/mmcblk1
当然也可以按第4步将自己编译的u-boot刷进去,不过led灯可能不亮,我没试

尚存问题:
板载网卡工作不正常,可以起动,但是获取不了ip
按照@jocover 的patch修改了dtb文件,rtl8211f PHY驱动的代码检查了,换上迅雷系统原带的dtb文件也不行,源代码都有了,希望有大佬可以搞定


ps:迅雷原装内核是3.10.108的,试着移植了@jocover 的armbian内核,但是和armbian启动的效果一样,都是卡在了,之后乱码,不知道是不是和emmc、sd启动有关
[    3.580309@1] amlogic: Kernel Thermal management registered
[    3.585738@1] amlogic-thermal aml_thermal: amlogic thermal probe done
希望有大佬可以搞定

我编译的版本自取
**** Hidden Message *****




cg1984 发表于 2019-8-4 21:00

我觉得我越来越漂了,这么复杂的我竟然打开看了,然而还是没看懂。

jec123456 发表于 2019-8-5 08:17

谢谢分享:D:D

xiayu6186 发表于 2019-8-5 09:01

大哥的帖,全是经典,必须得顶

zxymdaddy 发表于 2019-8-5 16:01

不错。 。。。。

jocover 发表于 2019-8-5 21:02

本帖最后由 jocover 于 2019-8-5 21:04 编辑

这个补丁你看看https://gitee.com/jiangwei0402/LibreELEC.tv/blob/f4f0215b36870b5479513c88dd99bd56fd35d33b/projects/S805/patches/linux/011-linux-fix-eth-MAC.patch
原来的dtsethmac: ethernet@0xc9410000{
compatible = "amlogic,meson8b-rmii-dwmac", "snps,dwmac";
reg = <0xc9410000 0x10000
0xc1108108 0x4>;
interrupts = <0 8 1>;
interrupt-names = "macirq";
clocks = "clk81";
clock-names = "stmmaceth";
};千兆改成meson8m2-rgmii-dwmac或者meson8b-rgmii-dwmac(没试过)
ethmac: ethernet@0xc9410000{
compatible = "amlogic,meson8m2-rgmii-dwmac", "snps,dwmac";
reg = <0xc9410000 0x10000
0xc1108108 0x4>;
interrupts = <0 8 1>;
interrupt-names = "macirq";
clocks = "clk81";
clock-names = "stmmaceth";
};
{

ClassHuang 发表于 2019-8-6 08:56

编译出错呀楼主。。好像报什么feed 25

w592007 发表于 2019-8-6 11:13

谢谢分享:lol

jec123456 发表于 2019-8-6 18:03

本帖最后由 jec123456 于 2019-8-6 18:06 编辑

楼主您的板子不是玩客云3的吧 和我手上的ttl的位置也不同

jec123456 发表于 2019-8-6 18:07

请问 这款 应该短接emmc的哪些地方

hzexe 发表于 2019-8-6 23:00

真能玩,况且这给无法root的提供个思路,挂载emmc可以直接把原系统root掉了

ClassHuang 发表于 2019-8-7 00:20

无法启动是怎么回事,,能详细说明下怎么制作SD卡启动吗

Booting ...
Unknown command 'bootargs' - try 'help'
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: Tran Speed: 20000000
Rd Block Len: 512
SD version 2.0
High Capacity: Yes
Capacity: 15728640000
Boot Part Size: 0
Bus Width: 4-bit
** Can't read partition table on 0:0 **
** Bad partition 1 **
## ANDROID Format IMAGE
## Booting kernel from Legacy Image at 12000000 ...
   Image Name:   Linux-3.10.33
   Image Type:   ARM Linux Kernel Image (gzip compressed)
   Data Size:    6157838 Bytes = 5.9 MiB
   Load Address: 00208000
   Entry Point:00208000
   Verifying Checksum ... Bad Data CRC
ERROR: can't get kernel image!

深蓝基因 发表于 2019-8-7 09:17

ClassHuang 发表于 2019-8-6 08:56
编译出错呀楼主。。好像报什么feed 25

make menucofig
make V=s
之前执行

./scripts/feeds update -a
./scripts/feeds install -a

深蓝基因 发表于 2019-8-7 09:19

jec123456 发表于 2019-8-6 18:03
楼主您的板子不是玩客云3的吧 和我手上的ttl的位置也不同

好像是的,我的板子上写v1.2

深蓝基因 发表于 2019-8-7 09:22

ClassHuang 发表于 2019-8-7 00:20
无法启动是怎么回事,,能详细说明下怎么制作SD卡启动吗

Booting ...


参见第4步,你这个日志说u-boot启动成功,但是内核没从sd启动
页: [1] 2 3 4 5 6 7 8
查看完整版本: 从源码编译支持玩客云的openwrt