从源码编译支持玩客云的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 *****
我觉得我越来越漂了,这么复杂的我竟然打开看了,然而还是没看懂。
谢谢分享:D:D 大哥的帖,全是经典,必须得顶 不错。 。。。。 本帖最后由 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";
};
{
编译出错呀楼主。。好像报什么feed 25 谢谢分享:lol 本帖最后由 jec123456 于 2019-8-6 18:06 编辑
楼主您的板子不是玩客云3的吧 和我手上的ttl的位置也不同 请问 这款 应该短接emmc的哪些地方 真能玩,况且这给无法root的提供个思路,挂载emmc可以直接把原系统root掉了 无法启动是怎么回事,,能详细说明下怎么制作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! ClassHuang 发表于 2019-8-6 08:56
编译出错呀楼主。。好像报什么feed 25
make menucofig
make V=s
之前执行
./scripts/feeds update -a
./scripts/feeds install -a jec123456 发表于 2019-8-6 18:03
楼主您的板子不是玩客云3的吧 和我手上的ttl的位置也不同
好像是的,我的板子上写v1.2 ClassHuang 发表于 2019-8-7 00:20
无法启动是怎么回事,,能详细说明下怎么制作SD卡启动吗
Booting ...
参见第4步,你这个日志说u-boot启动成功,但是内核没从sd启动