Browse Source

Beaglebone black ethernet restart daemon

Bob Mottram 6 years ago
parent
commit
0bcd7aa279
2 changed files with 85 additions and 0 deletions
  1. 4
    0
      src/freedombone-image-customise
  2. 81
    0
      src/freedombone-utils-network

+ 4
- 0
src/freedombone-image-customise View File

@@ -270,6 +270,10 @@ following commands, then enter your details.
270 270
                                     Freedom in the Mesh
271 271
 " > "$rootdir/etc/motd"
272 272
     fi
273
+
274
+    if [[ "$MACHINE" == "beaglebone"* ]]; then
275
+        bbb_network_restart_daemon "$rootdir"
276
+    fi
273 277
 }
274 278
 
275 279
 configure_ssh() {

+ 81
- 0
src/freedombone-utils-network View File

@@ -44,6 +44,87 @@ ROUTER_IP_ADDRESS="192.168.1.254"
44 44
 
45 45
 MESH_INSTALL_DIR=/var/lib
46 46
 
47
+# For Beaglebone Black network reboot daemon
48
+BBBRTC_REPO="https://code.freedombone.net/bashrc/bbbrtc"
49
+PHYREG_REPO="https://code.freedombone.net/bashrc/phyreg"
50
+
51
+function bbb_network_restart_daemon {
52
+    rdir="$1"
53
+
54
+    # This checks if there is an ethernet boot fault
55
+    # and if so it reboots and tries again
56
+    # https://github.com/bigjosh/bbbphyfix
57
+
58
+    if [ ! -d "$rdir$INSTALL_DIR" ]; then
59
+        mkdir -p "$rdir$INSTALL_DIR"
60
+    fi
61
+
62
+    #first install the bbbrtc command that we will need
63
+    cd "$rdir$INSTALL_DIR" || exit 357893563
64
+    git clone $BBBRTC_REPO "$rdir$INSTALL_DIR/bbbrtc"
65
+    cd "$rdir$INSTALL_DIR/bbbrtc" || exit 357893563
66
+    if ! make; then
67
+        exit 3568735
68
+    fi
69
+
70
+    #next install the bbbphyreg command that we will need
71
+    cd "$rdir$INSTALL_DIR" || exit 357893563
72
+    git clone $PHYREG_REPO "$rdir$INSTALL_DIR/phyreg"
73
+    cd "$rdir$INSTALL_DIR/phyreg" || exit 54789786
74
+    make clean
75
+    if ! make; then
76
+        exit 46879275
77
+    fi
78
+    make install
79
+
80
+    { echo '#!/bin/bash';
81
+      echo '';
82
+      echo 'sleep 30';
83
+      echo '';
84
+      echo "if [[ \$(phyreg test 18 13) == \"1\" ]]; then";
85
+      echo '';
86
+      echo '    sleep 1';
87
+      echo '';
88
+      echo "    NOW=\$(bbbrtc now)";
89
+      echo "    echo \"chkphy:Rebooting NOW=\$NOW\" >/dev/kmsg";
90
+      echo "    echo \"Rebooting\" >>/var/tmp/chkphy.log";
91
+      echo '    # make sure that log message actually gets written before we pull the plug';
92
+      echo '    sync';
93
+      echo '    i2cset -f -y 0 0x24 0x0a 0x00';
94
+      echo '    bbbrtc now 130';
95
+      echo '    bbbrtc wake 110';
96
+      echo '    bbbrtc sleep 102';
97
+      echo '    bbbrtc now 100';
98
+      echo '    while true;';
99
+      echo '    do echo waiting to reboot';
100
+      echo '        sleep 10';
101
+      echo '    done';
102
+      echo '    fi';
103
+      echo '';
104
+      echo "echo \"chkphy:eth0 good\" >/dev/kmsg"; } > "${rdir}/usr/bin/chkphy"
105
+    chmod +x "${rdir}/usr/bin/chkphy"
106
+
107
+    { echo '[Unit]';
108
+      echo "Description=Beaglebone Black Network Restart Daemon";
109
+      echo 'After=syslog.target';
110
+      echo 'After=network.target';
111
+      echo '';
112
+      echo '[Service]';
113
+      echo 'Type=simple';
114
+      echo 'User=root';
115
+      echo 'Group=root';
116
+      echo 'WorkingDirectory=/root';
117
+      echo 'ExecStart=/usr/bin/chkphy';
118
+      echo '';
119
+      echo '[Install]';
120
+      echo 'WantedBy=multi-user.target'; } > "${rdir}/etc/systemd/system/bbbnetwork.service"
121
+    if [ ! "${rdir}" ]; then
122
+        systemctl enable bbbnetwork
123
+    else
124
+        chroot "$rdir" systemctl enable bbbnetwork
125
+    fi
126
+}
127
+
47 128
 function get_app_icann_address {
48 129
     app_name="$1"
49 130
     if grep -q "${app_name} domain" "$COMPLETION_FILE"; then