From 3cc4f528a41eb350720519878294cbc6786e24eb Mon Sep 17 00:00:00 2001 From: gh2o Date: Sun, 20 Jul 2014 15:32:12 -0700 Subject: [PATCH 1/4] full network config --- install.sh | 115 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 93 insertions(+), 22 deletions(-) diff --git a/install.sh b/install.sh index d2f8e0d..697c39b 100755 --- a/install.sh +++ b/install.sh @@ -63,6 +63,45 @@ mask2prefix() { echo ${prefix} } +parse_debian_interfaces() { + local filename="${1}" # path to interfaces file + local interface="${2}" # interface name + local addrtype="${3}" # inet or inet6 + local found=false address prefix gateway + local kw args + while read kw args; do + if ! ${found}; then + if [ "${kw}" = "iface" ] && \ + [ "${args}" = "${interface} ${addrtype} static" ]; then + found=true + fi + continue + fi + case ${kw} in + iface) + break + ;; + address) + address="${args}" + ;; + netmask) + if [ "${args/.}" != "${args}" ]; then + prefix=$(mask2prefix "${args}") + else + prefix="${args}" + fi + ;; + gateway) + gateway="${args}" + ;; + esac + done <"${filename}" + echo "local pdi_found=${found};" + echo "local pdi_address='${address}';" + echo "local pdi_prefix='${prefix}';" + echo "local pdi_gateway='${gateway}';" +} + clean_archroot() { local file local prompted=false @@ -264,31 +303,63 @@ postbootstrap_configuration() { rm /archroot/etc/shadow.new ) - # set up network - local grepfd - local ipaddr netmask gateway prefixlen + # set up internet network local eni=/etc/network/interfaces - exec {grepfd}< <( - grep -m 1 -o 'address [0-9.]\+' ${eni} - grep -m 1 -o 'netmask [0-9.]\+' ${eni} - grep -m 1 -o 'gateway [0-9.]\+' ${eni} - ) - read ignored ipaddr <&${grepfd} - read ignored netmask <&${grepfd} - read ignored gateway <&${grepfd} - exec {grepfd}<&- - prefixlen=$(mask2prefix ${netmask}) + { + cat <<-EOF + [Match] + Name=eth0 - cat > /archroot/etc/systemd/network/internet.network </archroot/etc/systemd/network/internet.network -[Network] -Address=${ipaddr}/${prefixlen} -Gateway=${gateway} -DNS=8.8.8.8 -DNS=8.8.4.4 -EOF + # set up private network + eval "$(parse_debian_interfaces ${eni} eth1 inet)" + if ${pdi_found}; then + cat >/archroot/etc/systemd/network/private <<-EOF + [Match] + Name=eth1 + + [Network] + Address=${pdi_address}/${pdi_prefix} + EOF + fi # copy over ssh keys cp -p /etc/ssh/ssh_*_key{,.pub} /archroot/etc/ssh/ From b5f5588ff5c0821cdfd4c97de7bf29ab3071c1c1 Mon Sep 17 00:00:00 2001 From: gh2o Date: Sun, 20 Jul 2014 15:40:37 -0700 Subject: [PATCH 2/4] parse_debian_interfaces avoid unbound variables errors --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 697c39b..8f1b6cc 100755 --- a/install.sh +++ b/install.sh @@ -67,7 +67,7 @@ parse_debian_interfaces() { local filename="${1}" # path to interfaces file local interface="${2}" # interface name local addrtype="${3}" # inet or inet6 - local found=false address prefix gateway + local found=false address= prefix= gateway= local kw args while read kw args; do if ! ${found}; then From 060b203fbd4d6fca90b5969887d14538cf864115 Mon Sep 17 00:00:00 2001 From: gh2o Date: Sun, 20 Jul 2014 15:43:58 -0700 Subject: [PATCH 3/4] fix typo --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 8f1b6cc..09c51b5 100755 --- a/install.sh +++ b/install.sh @@ -352,7 +352,7 @@ postbootstrap_configuration() { # set up private network eval "$(parse_debian_interfaces ${eni} eth1 inet)" if ${pdi_found}; then - cat >/archroot/etc/systemd/network/private <<-EOF + cat >/archroot/etc/systemd/network/private.network <<-EOF [Match] Name=eth1 From fc8ae5595c2c1b25b8042cc1e102c86fd3504ce2 Mon Sep 17 00:00:00 2001 From: gh2o Date: Sun, 20 Jul 2014 15:49:24 -0700 Subject: [PATCH 4/4] migrate hostname --- install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.sh b/install.sh index 09c51b5..e0759dc 100755 --- a/install.sh +++ b/install.sh @@ -292,6 +292,9 @@ postbootstrap_configuration() { # set up fstab echo "LABEL=DOROOT / ext4 defaults 0 1" >> /archroot/etc/fstab + # set up hostname + [ -e /etc/hostname ] && cp /etc/hostname /archroot/etc/hostname + # set up shadow ( umask 077