hwe kernel to fix btrfs-send bug
[automated-distro-installer] / wrt-setup-local
index f5dbe502f30dfe04adb58f0154aeedc082de872a..43628bc8bee6f049a19807c2fc0c549ad45ab01c 100755 (executable)
 set -eE -o pipefail
 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
 
-
 pmirror() {
-    # background: upgrading all packages is not recommended because it
-    # doesn't go into the firmware. build new firmware if you want
-    # lots of upgrades. I think /tmp/opkg-lists is a pre openwrt 14 location.
-    f=(/tmp/opkg-lists/* /var/opkg-lists/*)
-    if ! (( $(date -r $f +%s) + 60*60*24 > $(date +%s) )); then
-        opkg update
-    fi
+  # background: upgrading all packages is not recommended because it
+  # doesn't go into the firmware. build new firmware if you want
+  # lots of upgrades. I think /tmp/opkg-lists is a pre openwrt 14 location.
+  f=(/var/opkg-lists/*)
+  if ! (( $(date -r $f +%s) + 60*60*24 > $(date +%s) )); then
+    opkg update
+  fi
 }
 
 pi() {
-    for x in "$@"; do
-        if [[ ! $(opkg list-installed "$x") ]]; then
-            pmirror
-            opkg install "$@"
-        fi
-    done
+  for x in "$@"; do
+    if [[ ! $(opkg list-installed "$x") ]]; then
+      pmirror
+      opkg install "$@"
+    fi
+  done
 }
 
 v() {
-    printf "+ %s\n" "$*"
-    "$@"
+  printf "+ %s\n" "$*"
+  "$@"
 }
 
 ### network config
 ###
-l=10.0.0
+ssid="check out gnu.org"
 lan=10.0.0.0
 mask=255.255.0.0
+l=${lan%.0}
+
+passwd -l root ||: #already locked fails
 
-cat >/usr/bin/arch-pxe-mount <<'EOFOUTER'
+cat >/usr/bin/archlike-pxe-mount <<'EOFOUTER'
 #!/bin/bash
 # symlinks are collapsed for nfs mount points, so use a bind mount.
 # tried putting this in /etc/config/fstab,
-# then doig block mount, it didn't work. This doesn't persist across reboots,
+# then doing block mount, it didn't work. This doesn't persist across reboots,
 # todo: figure that out
-d=/run/archiso/bootmnt
-cat > /etc/fstab <<EOF
+rm -f /etc/fstab
+for d in /run/{arch,parabola}iso/bootmnt; do
+cat >>/etc/fstab <<EOF
 /mnt/usb/tftpboot $d none bind 0 0
 EOF
 mount | grep $d &>/dev/null || mount $d
+done
 /etc/init.d/nfsd restart
 EOFOUTER
-chmod +x /usr/bin/arch-pxe-mount
+chmod +x /usr/bin/archlike-pxe-mount
 
 cat >.profile <<'EOF'
 # changing login shell emits spam on ssh single commands & scp
@@ -75,9 +79,6 @@ v pi kmod-usb-storage block-mount kmod-fs-ext4 nfs-kernel-server \
 
 
 
-sed -ri "s/option[[:space:]]+encryption[[:space:]].*/option encryption psk2/;s/option[[:space:]]+key.*/option key pictionary49/" /etc/config/wireless
-sed -i '/^[[:space:]]*option disabled/d' /etc/config/wireless
-v wifi
 
 
 v /etc/init.d/fstab enable ||:
@@ -87,9 +88,10 @@ v /etc/init.d/fstab enable ||:
 # 255 == module already loaded
 for mod in scsi_mod sd_mod; do v modprobe $mod || [[ $? == 255 ]]; done
 
-# for arch pxe. The default settings in the installer expect to find
-# the NFS at /run/archiso/bootmnt
+# for archlike pxe. The default settings in the installer expect to find
+# the NFS at one of these dirs
 mkdir -p /run/archiso/bootmnt
+mkdir -p /run/parabolaiso/bootmnt
 
 # todo: at some later time, i found /mnt/usb not mounted, watch to see if
 # that is the case after running this or rebooting.
@@ -128,6 +130,7 @@ cedit /etc/exports <<EOF || v /etc/init.d/nfsd restart ||:
 /mnt/usb  $lan/$netmask(rw,no_root_squash,insecure,sync,no_subtree_check)
 # for arch pxe
 /run/archiso/bootmnt   $lan/$netmask(rw,no_root_squash,insecure,sync,no_subtree_check)
+/run/parabolaiso/bootmnt       $lan/$netmask(rw,no_root_squash,insecure,sync,no_subtree_check)
 EOF
 
 
@@ -153,6 +156,32 @@ v /etc/init.d/nfsd enable
 # fi
 
 
+wireless_restart=false
+key=pictionary49
+for x in 0 1; do
+  if [[ $(uci get wireless.default_radio$x.ssid) != "$ssid" ]]; then
+    v uci set wireless.default_radio$x.ssid="$ssid"
+    wireless_restart=true
+  fi
+  if [[ $(uci get wireless.default_radio$x.key) != $key ]]; then
+    v uci set wireless.default_radio$x.key=$key
+    wireless_restart=true
+  fi
+  if [[ $(uci get wireless.default_radio$x.encryption) != psk2 ]]; then
+    v uci set wireless.default_radio$x.encryption=psk2
+    wireless_restart=true
+  fi
+  if [[ $(uci get wireless.default_radio$x.disabled 2>/dev/null) ]]; then
+    v uci delete wireless.default_radio$x.disabled
+    wireless_restart=true
+  fi
+done
+
+if $wireless_restart; then
+  uci commit wireless
+  v wifi
+fi
+
 
 ########## openvpn exampl
 ########## missing firewall settings for routing lan
@@ -177,6 +206,7 @@ v /etc/init.d/nfsd enable
 # EOF
 
 
+
 v cedit /etc/config/network <<EOF || v /etc/init.d/network reload
 config 'route' 'transmission'
         option 'interface' 'lan'
@@ -185,6 +215,7 @@ config 'route' 'transmission'
         option 'gateway' '$l.3'
 EOF
 
+firewall_restart=false
 v cedit /etc/config/firewall <<EOF || firewall_restart=true
 config redirect
     option name ssh
@@ -294,27 +325,27 @@ EOF
 
 # avoid using the dns servers that my isp tells me about.
 if [[ $(uci get dhcp.@dnsmasq[0].resolvfile 2>/dev/null) ]]; then
-    # default is '/tmp/resolv.conf.auto', we switch to the dnsmasq default of
-    # /etc/resolv.conf. not sure why I did this.
-    v uci delete dhcp.@dnsmasq[0].resolvfile
-    uci commit dhcp
-    dnsmasq_restart=true
+  # default is '/tmp/resolv.conf.auto', we switch to the dnsmasq default of
+  # /etc/resolv.conf. not sure why I did this.
+  v uci delete dhcp.@dnsmasq[0].resolvfile
+  uci commit dhcp
+  dnsmasq_restart=true
 fi
 
 if [[ $(uci get dhcp.@dnsmasq[0].domain) != b8.nz ]]; then
-    v uci set dhcp.@dnsmasq[0].domain=b8.nz
-    uci commit dhcp
-    dnsmasq_restart=true
+  v uci set dhcp.@dnsmasq[0].domain=b8.nz
+  uci commit dhcp
+  dnsmasq_restart=true
 fi
-if [[ $(uci get dhcp.@dnsmasq[0].local) != b8.nz ]]; then
-    v uci set dhcp.@dnsmasq[0].local=/b8.nz/
-    uci commit dhcp
-    dnsmasq_restart=true
+if [[ $(uci get dhcp.@dnsmasq[0].local) != /b8.nz/ ]]; then
+  v uci set dhcp.@dnsmasq[0].local=/b8.nz/
+  uci commit dhcp
+  dnsmasq_restart=true
 fi
 
 if [[ $(uci get system.@system[0].hostname) != wrt ]]; then
-    v uci set system.@system[0].hostname=wrt
-    uci commit system
+  v uci set system.@system[0].hostname=wrt
+  uci commit system
 fi
 
 
@@ -405,9 +436,27 @@ tftp-root=/mnt/usb/tftpboot
 EOF
 
 if $dnsmasq_restart; then
-    v /etc/init.d/dnsmasq restart
+  v /etc/init.d/dnsmasq restart
 fi
 
 if $firewall_restart; then
-    v /etc/init.d/firewall restart
+  v /etc/init.d/firewall restart
+fi
+
+
+reboot=false
+if [[ $(uci get network.lan.ipaddr) != $l.1 ]]; then
+  v uci set network.lan.ipaddr=$l.1
+  uci commit network
+  reboot=true
+fi
+if [[ $(uci get network.lan.netmask) != $mask ]]; then
+  v uci set network.lan.netmask=$mask
+  uci commit network
+  reboot=true
+fi
+
+if $reboot; then
+  reboot
 fi
+exit 0