刷机 刷机教程很多很多,这边就不赘述了
https://www.jianshu.com/p/77e529fb35f9
https://www.huakings.cn/post/283.html
建议备好串口刷砖必备 猫盘ssh 用户名 root 密码 Etech12 变砖刷机 参考资料 https://www.bilibili.com/video/av73492887
https://www.huakings.cn/post/186.html
http://wiki.espressobin.net/tiki-index.php?page=Bootloader+recovery+via+UART
背景知识 猫盘引导过程
从 A3720 机器引导,再到SPI FLASH引导,再到SATA硬盘或者EMMC启动
出现>E
就是SPI引导没了,需要用厂商工具把SPI引导刷一遍。
步骤
发现出现>E
,这就说明猫盘SPI引导没了,需要重新刷入uboot,进行救砖。
首先,需要预装VM启用厂商的Linux环境(ezremaster.iso),安装VM这步跳过。
创建虚拟机的时候操作系统可以选择Linux 2.2.x内核,
串口的USB设备加到VM内,然后开机。
输入如下代码,回车运行后会让输入port,/dev/ttyUSB0
一般是0
输入0回车就会开始刷SPI,然后会出现++++++++,在此期间可以按几下回车。
等一段时间就会出现marvell>>
,至此就已经救砖成功。
接下来就可以用bubt
命令正常刷SPI引导了。
Note LED FAN 控制脚本 参考: https://bbs.nas66.com/thread-9007-1-1.html
参考: https://bbs.nas66.com/thread-13810-1-1.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 mkdir -p /a_usr cat > /a_usr/ledfan.sh <<EOF# !/bin/sh if [ ! -d /sys/class/gpio/gpio450 ] ; then echo 450 > /sys/class/gpio/export fi echo out > /sys/class/gpio/gpio450/direction i2cset -y -f 0 0x45 0x00 0x55 i2cset -y -f 0 0x45 0x01 0x01 i2cset -y -f 0 0x45 0x30 0x07 rm -r /tmp/led/ mkdir /tmp/led/ echo 1 > /tmp/led/leds.flag while true do sata_temp="\$(smartctl -a /dev/hda -d ata | sed -n '/Temperature_Celsius/p' | awk '{print $10}')" sata="\$(hdparm -C /dev/sda |grep 'drive'|awk '{print \$4}')" ledss="\$(cat /tmp/led/leds.flag)" if [ \$sata = standby ];then led="0x03" leds="0" fi if [ \$sata = active/idle ];then led="0x73" leds="1" fi if [ \$sata_temp -ge 55 ];then if [ -f "/tmp/led/led31.flag" ] && [ \$ledss = \$leds ];then sleep 15 continue fi i2cset -y -f 0 0x45 0x32 0x00 i2cset -y -f 0 0x45 0x33 0x00 i2cset -y -f 0 0x45 0x31 \${led} i2cset -y -f 0 0x45 0x34 255 echo 1 > /sys/class/gpio/gpio450/value rm -rf /tmp/led/led*.flag touch /tmp/led/led31.flag echo \${leds} > /tmp/led/leds.flag fi if [ \$sata_temp -ge 45 ] && [ \$sata_temp -lt 55 ];then if [ -f "/tmp/led/led33.flag" ] && [ \$ledss = \$leds ];then sleep 15 continue fi i2cset -y -f 0 0x45 0x31 0x00 i2cset -y -f 0 0x45 0x32 0x00 i2cset -y -f 0 0x45 0x33 \${led} i2cset -y -f 0 0x45 0x36 255 echo 1 > /sys/class/gpio/gpio450/value rm -rf /tmp/led/led*.flag touch /tmp/led/led33.flag echo \${leds} > /tmp/led/leds.flag fi if [ \$sata_temp -lt 45 ];then if [ -f "/tmp/led/led32.flag" ] && [ \$ledss = \$leds ];then sleep 15 continue fi i2cset -y -f 0 0x45 0x31 0x00 i2cset -y -f 0 0x45 0x33 0x00 i2cset -y -f 0 0x45 0x32 \${led} i2cset -y -f 0 0x45 0x35 255 echo 0 > /sys/class/gpio/gpio450/value rm -rf /tmp/led/led*.flag touch /tmp/led/led32.flag echo \${leds} > /tmp/led/leds.flag fi sleep 15 done EOF bash /a_usr/ledfan.sh
修改SN半白脚本 下面的00:11:32:12:34:56
最好改成壳子上自己的MAC
1 cd ~ && wget -N --no-check-certificate https://www.huakings.cn/mp202003/macsn.sh && chmod +x macsn.sh && bash macsn.sh 00:11:32:12:34:56 1860ABCDE1860 && rm -f /root/macsn.sh
macsn.sh脚本详细内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 macstr=$1 sn=$2 mac=(${macstr//:/ }) if [ ${#mac[@]} != 6 ]; then echo mac address error! exit fi for var in ${mac[@]} do if echo $var | grep -q '[^0-9A-F]' then echo mac address error! exit fi if [[ ${#var} != 2 ]] then echo mac address error!! exit fi done if [[ ${#sn} != 13 ]] then echo sn error:The SN Length must be 13 exit fi for((i=0;i<6;i++)); do declare -i macchecksum+=0x${mac[i]} done declare -i macchecksum=$macchecksum%256 for((i=0;i<13;i++)); do declare -i checksum+=$(printf '%d' "'${sn:$i:1}") done if [ ${#checksum} == 3 ]; then echo -e -n "\x${mac[0]}\x${mac[1]}\x${mac[2]}\x${mac[3]}\x${mac[4]}\x${mac[5]}\ \x$(printf '%x' $macchecksum)\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0"\ \SN=$sn",CHK="$checksum\ "\x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x3C\x0\x0\x0\ \x0\x0\x0\x0\x1\x1\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x1\x1\x1\x1\ \x0\x1\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x1\x1\x1\x1\ \x1\x0\x1\x1\x1\x1\x1\x0\ \x1\x1\x1\x0\x0\x0\x0\x0\ \x0\x0\x0\x1\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0" > vender.bin else echo -e -n "\x${mac[0]}\x${mac[1]}\x${mac[2]}\x${mac[3]}\x${mac[4]}\x${mac[5]}\ \x$(printf '%x' $macchecksum)\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0"\ \SN=$sn",CHK="$checksum\ "\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x3C\x0\x0\x0\ \x0\x0\x0\x0\x1\x1\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x1\x1\x1\x1\ \x0\x1\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x1\x1\x1\x1\ \x1\x0\x1\x1\x1\x1\x1\x0\ \x1\x1\x1\x0\x0\x0\x0\x0\ \x0\x0\x0\x1\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\ \x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0" > vender.bin fi dd if=vender.bin of=/dev/mtdblock3 rm vender.bin echo Update Success! MAC:$macstr SN:$sn
解决猫盘掉ip问题 最蠢的办法,检查无IP重启 将下面脚本添加到,群晖的开机启动
控制面板-任务计划-新增-触发的任务-用户自定义脚本-开机启动
1 2 3 4 5 6 7 8 9 10 11 12 13 # !/bin/bash dt=`date '+%d/%m/%Y %H:%M:%S'` echo "$dt" sleep 60 num=`ping -c20 223.5.5.5 | tail -2 | head -1 | cut -f 3 -d"," | cut -f 1 -d"%" | cut -f 2 -d" "` echo $num echo $? if [ $? -eq 0 -a $num -eq 0 ]; then echo "$dt ok" >> /result.txt else echo "$dt noip loss $num reboot" >> /result.txt reboot fi
其它办法 https://bbs.nas66.com/thread-17505-1-1.html
https://bbs.nas66.com/thread-16639-1-1.html
https://bbs.nas66.com/thread-7843-1-1.html
https://bbs.nas66.com/thread-9350-1-1.html
https://bbs.nas66.com/thread-4593-5-3.html
群晖回退x3p https://bbs.nas66.com/forum.php?mod=viewthread&tid=2661
主要就是刷x3p的UBOOT,插U盘,U盘放x3p的自动安装镜像