Browse Source

Enable and configure wpa_supplicant with dhcpcd

The installer was originally written when the dhcpcd wpa_supplicant hook
was enabled. In early 2019, the hook was disabled and it appears that
the installer has been unable to configure WiFi since then.

To address this, enable the wpa_supplicant service, configure it, and
reload the service when dhcpcd is used for network connectivity.

Closes #5

Also changes to a better file for checking if the network is working.
Cameron Nemo 4 years ago
parent
commit
a8f87aa5a9
2 changed files with 32 additions and 24 deletions
  1. 4 4
      build-x86-images.sh.in
  2. 28 20
      installer.sh.in

+ 4 - 4
build-x86-images.sh.in

@@ -32,11 +32,11 @@ build_variant() {
 
 
     case $variant in
     case $variant in
         base)
         base)
-            SERVICES="$SERVICES dhcpcd acpid"
+            SERVICES="$SERVICES dhcpcd wpa_supplicant acpid"
         ;;
         ;;
         enlightenment)
         enlightenment)
             PKGS="$PKGS $XORG_PKGS lxdm enlightenment terminology udisks2 firefox-esr"
             PKGS="$PKGS $XORG_PKGS lxdm enlightenment terminology udisks2 firefox-esr"
-            SERVICES="$SERVICES acpid dhcpcd lxdm dbus polkitd"
+            SERVICES="$SERVICES acpid dhcpcd wpa_supplicant lxdm dbus polkitd"
         ;;
         ;;
         xfce)
         xfce)
             PKGS="$PKGS $XORG_PKGS lxdm xfce4 gnome-themes-standard gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
             PKGS="$PKGS $XORG_PKGS lxdm xfce4 gnome-themes-standard gnome-keyring network-manager-applet gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
@@ -60,11 +60,11 @@ build_variant() {
         ;;
         ;;
         lxde)
         lxde)
             PKGS="$PKGS $XORG_PKGS lxde lxdm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
             PKGS="$PKGS $XORG_PKGS lxde lxdm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
-            SERVICES="$SERVICES acpid dbus dhcpcd lxdm polkitd"
+            SERVICES="$SERVICES acpid dbus dhcpcd wpa_supplicant lxdm polkitd"
         ;;
         ;;
         lxqt)
         lxqt)
             PKGS="$PKGS $XORG_PKGS lxqt lxdm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
             PKGS="$PKGS $XORG_PKGS lxqt lxdm gvfs-afc gvfs-mtp gvfs-smb udisks2 firefox-esr"
-            SERVICES="$SERVICES elogind dbus dhcpcd lxdm polkitd"
+            SERVICES="$SERVICES elogind dbus dhcpcd wpa_supplicant lxdm polkitd"
         ;;
         ;;
         *)
         *)
             >&2 echo "Unknown variant $variant"
             >&2 echo "Unknown variant $variant"

+ 28 - 20
installer.sh.in

@@ -822,8 +822,8 @@ set_bootloader() {
 }
 }
 
 
 test_network() {
 test_network() {
-    rm -f xtraeme.asc && \
-        xbps-uhelper fetch https://repo-default.voidlinux.org/live/xtraeme.asc >$LOG 2>&1
+    rm -f otime && \
+        xbps-uhelper fetch https://repo-default.voidlinux.org/current/otime >$LOG 2>&1
     if [ $? -eq 0 ]; then
     if [ $? -eq 0 ]; then
         DIALOG --msgbox "Network is working properly!" ${MSGBOXSIZE}
         DIALOG --msgbox "Network is working properly!" ${MSGBOXSIZE}
         NETWORK_DONE=1
         NETWORK_DONE=1
@@ -852,19 +852,27 @@ configure_wifi() {
         DIALOG --msgbox "Invalid AP password." ${MSGBOXSIZE}
         DIALOG --msgbox "Invalid AP password." ${MSGBOXSIZE}
     fi
     fi
 
 
-    rm -f ${_wpasupconf%.conf}-${dev}.conf
-    cp -f ${_wpasupconf} ${_wpasupconf%.conf}-${dev}.conf
+    # reset the configuration to the default, if necessary
+    # otherwise backup the configuration
+    if [ -f ${_wpasupconf}.orig ]; then
+        cp -f ${_wpasupconf}.orig ${_wpasupconf}
+    else
+        cp -f ${_wpasupconf} ${_wpasupconf}.orig
+    fi
     if [ "$enc" = "wep" ]; then
     if [ "$enc" = "wep" ]; then
-        echo "network={" >> ${_wpasupconf%.conf}-${dev}.conf
-        echo "  ssid=\"$ssid\"" >> ${_wpasupconf%.conf}-${dev}.conf
-        echo "  wep_key0=\"$pass\"" >> ${_wpasupconf%.conf}-${dev}.conf
-        echo "  wep_tx_keyidx=0" >> ${_wpasupconf%.conf}-${dev}.conf
-        echo "  auth_alg=SHARED" >> ${_wpasupconf%.conf}-${dev}.conf
-        echo "}" >> ${_wpasupconf%.conf}-${dev}.conf
+        cat << EOF >> ${_wpasupconf}
+network={
+  ssid="$ssid"
+  wep_key0="$pass"
+  wep_tx_keyidx=0
+  auth_alg=SHARED
+}
+EOF
     else
     else
-        wpa_passphrase "$ssid" "$pass" >> ${_wpasupconf%.conf}-${dev}.conf
+        wpa_passphrase "$ssid" "$pass" >> ${_wpasupconf}
     fi
     fi
 
 
+    sv restart wpa_supplicant
     configure_net_dhcp $dev
     configure_net_dhcp $dev
     return $?
     return $?
 }
 }
@@ -882,7 +890,7 @@ configure_net() {
 }
 }
 
 
 iface_setup() {
 iface_setup() {
-    ip addr show dev $1|grep -q 'inet '
+    ip addr show dev $1 | grep -q -e 'inet ' -e 'inet6 '
     return $?
     return $?
 }
 }
 
 
@@ -891,13 +899,14 @@ configure_net_dhcp() {
 
 
     iface_setup $dev
     iface_setup $dev
     if [ $? -eq 1 ]; then
     if [ $? -eq 1 ]; then
-        dhcpcd -t 10 -w -4 -L $dev -e "wpa_supplicant_conf=/etc/wpa_supplicant/wpa_supplicant-${dev}.conf" 2>&1 | tee $LOG | \
+        sv restart dhcpcd 2>&1 | tee $LOG | \
             DIALOG --progressbox "Initializing $dev via DHCP..." ${WIDGET_SIZE}
             DIALOG --progressbox "Initializing $dev via DHCP..." ${WIDGET_SIZE}
         if [ $? -ne 0 ]; then
         if [ $? -ne 0 ]; then
             DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} failed to run dhcpcd. See $LOG for details." ${MSGBOXSIZE}
             DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} failed to run dhcpcd. See $LOG for details." ${MSGBOXSIZE}
             return 1
             return 1
         fi
         fi
-        iface_setup $dev
+        export -f iface_setup
+        timeout 10s bash -c "while true; do iface_setup $dev; sleep 0.25; done"
         if [ $? -eq 1 ]; then
         if [ $? -eq 1 ]; then
             DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} DHCP request failed for $dev. Check $LOG for errors." ${MSGBOXSIZE}
             DIALOG --msgbox "${BOLD}${RED}ERROR:${RESET} DHCP request failed for $dev. Check $LOG for errors." ${MSGBOXSIZE}
             return 1
             return 1
@@ -1305,15 +1314,14 @@ ${BOLD}Do you want to continue?${RESET}" 20 80 || return
             # network type empty??!!!
             # network type empty??!!!
             :
             :
         elif [ "$_type" = "dhcp" ]; then
         elif [ "$_type" = "dhcp" ]; then
-            if [ -f /etc/wpa_supplicant/wpa_supplicant-${_dev}.conf ]; then
-                cp /etc/wpa_supplicant/wpa_supplicant-${_dev}.conf $TARGETDIR/etc/wpa_supplicant
-                ln -sf /etc/sv/dhcpcd-${_dev} $TARGETDIR/etc/runit/runsvdir/default/dhcpcd-${_dev}
-            else
-                enable_dhcpd
+            if $(echo $_dev|egrep -q "^wl.*" 2>/dev/null); then
+                cp /etc/wpa_supplicant/wpa_supplicant.conf $TARGETDIR/etc/wpa_supplicant
+                ln -sf /etc/sv/wpa_supplicant $TARGETDIR/etc/runit/runsvdir/default/wpa_supplicant
             fi
             fi
+            enable_dhcpd
         elif [ -n "$_dev" -a "$_type" = "static" ]; then
         elif [ -n "$_dev" -a "$_type" = "static" ]; then
             # static IP through dhcpcd.
             # static IP through dhcpcd.
-            mv $TARGETDIR/etc/dhcpcd.conf $TARGETDIR/etc/dhdpcd.conf.orig
+            mv $TARGETDIR/etc/dhcpcd.conf $TARGETDIR/etc/dhcpcd.conf.orig
             echo "# Static IP configuration set by the void-installer for $_dev." \
             echo "# Static IP configuration set by the void-installer for $_dev." \
                 >$TARGETDIR/etc/dhcpcd.conf
                 >$TARGETDIR/etc/dhcpcd.conf
             echo "interface $_dev" >>$TARGETDIR/etc/dhcpcd.conf
             echo "interface $_dev" >>$TARGETDIR/etc/dhcpcd.conf