From f8a345e8d20f77e228301dbf565b606ee3ea93ac Mon Sep 17 00:00:00 2001 From: TomasM Date: Sat, 28 Oct 2017 06:40:02 -0400 Subject: [PATCH] better network support, dhcp detection, from=http://... support --- initramfs/init | 5 +- initramfs/initramfs_create | 6 ++ initramfs/static/mount.httpfs2 | Bin 293532 -> 293852 bytes livekitlib | 164 ++++++++++++++++++++++++++------- 4 files changed, 142 insertions(+), 33 deletions(-) diff --git a/initramfs/init b/initramfs/init index 6b87069..af8bf54 100644 --- a/initramfs/init +++ b/initramfs/init @@ -25,10 +25,13 @@ debug_start init_devs init_aufs init_zram -modprobe_everything + +# modprobe all devices excluding network drivers +modprobe_everything -v /drivers/net/ # find data dir with filesystem bundles DATA="$(find_data 60 "$DATAMNT")" +check_data_found "$DATA" debug_shell # setup persistent changes, if possible persistent_changes "$DATA" "$CHANGES" diff --git a/initramfs/initramfs_create b/initramfs/initramfs_create index 9a04d12..4ef6ccd 100755 --- a/initramfs/initramfs_create +++ b/initramfs/initramfs_create @@ -102,6 +102,12 @@ copy_including_deps /$LMK/kernel/drivers/scsi/scsi_mod.* copy_including_deps /$LMK/kernel/drivers/scsi/sg.* copy_including_deps /$LMK/kernel/drivers/ata +# network support drivers +if [ "$NETWORK" = "true" ]; then + # add all known ethernet drivers + copy_including_deps /$LMK/kernel/drivers/net/ethernet +fi + # copy all custom-built modules copy_including_deps /$LMK/updates diff --git a/initramfs/static/mount.httpfs2 b/initramfs/static/mount.httpfs2 index 88bdbf124af602636c470b36c4fa212ecd38df74..ab01e5690452cf1570c165676fbafd5de91ef9b0 100755 GIT binary patch delta 62606 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 diff --git a/livekitlib b/livekitlib index acba874..46dc4c5 100644 --- a/livekitlib +++ b/livekitlib @@ -53,6 +53,7 @@ echolog() log "$@" } + # show information about the debug shell show_debug_banner() { @@ -63,6 +64,7 @@ show_debug_banner() echo } + # debug_shell # executed when debug boot parameter is present # @@ -85,6 +87,7 @@ fatal() setsid sh -c 'exec sh < /dev/tty1 >/dev/tty1 2>&1' } + # get value of commandline parameter $1 # $1 = parameter to search for # @@ -103,6 +106,7 @@ allow_only_root() fi } + # Create bundle # call mksquashfs with apropriate arguments # $1 = directory which will be compressed to squashfs bundle @@ -135,6 +139,7 @@ transfer_initramfs() fi } + # mount virtual filesystems like proc etc # init_proc_sysfs() @@ -150,6 +155,9 @@ init_proc_sysfs() # modprobe all modules found in initial ramdisk +# $1 = -e for match, -v for negative match +# $2 = regex pattern +# modprobe_everything() { debug_log "modprobe_everything" "$*" @@ -157,7 +165,7 @@ modprobe_everything() echo_green_star >&2 echo "Probing for hardware" >&2 - find /lib/modules/ | fgrep .ko | xargs -n 1 modprobe 2>/dev/null + find /lib/modules/ | fgrep .ko | egrep $1 $2 | xargs -n 1 modprobe 2>/dev/null refresh_devs } @@ -183,6 +191,7 @@ init_devs() refresh_devs } + # Activate zram (auto-compression of RAM) # Compressed RAM consumes 1/2 or even 1/4 of original size # Setup static size of 500MB @@ -200,6 +209,7 @@ init_zram() fi } + # load the AUFS kernel module if needed # init_aufs() @@ -211,6 +221,7 @@ init_aufs() refresh_devs } + # Setup empty union # $1 = changes directory (ramfs or persistent changes) # $2 = union directory where to mount the union @@ -226,6 +237,7 @@ init_union() mount -t aufs -o xino="/.xino",trunc_xino,br="$1" aufs "$2" } + # Return device mounted for given directory # $1 = directory # @@ -245,6 +257,7 @@ mounted_device() done } + # Return mounted dir for given directory # $1 = directory # @@ -263,6 +276,7 @@ mounted_dir() done } + # Make sure to mount FAT12/16/32 using vfat # in order to support long filenames # $1 = device @@ -281,6 +295,7 @@ device_bestfs() echo "-t $FS" } + # Filesystem options for mount # $1 = filesystem or '-t filesystem' # @@ -297,6 +312,15 @@ fs_options() } +# echo first network device known at the moment of calling, eg. eth0 +# +network_device() +{ + debug_log "network_device" "$*" + cat /proc/net/dev | grep : | grep -v lo: | cut -d : -f 1 | tr -d " " | head -n 1 +} + + # Modprobe network kernel modules until a working driver is found. # These drivers are (or used to be) probed in Slackware's initrd. # The function returns the first device found, yet it doesn't have @@ -308,14 +332,11 @@ init_network_dev() debug_log "init_network_dev" "$*" local MODULE ETH - for MODULE in 3c59x acenic de4x5 e1000 e1000e e100 epic100 hp100 \ - ne2k-pci pcnet32 8139too 8139cp tulip via-rhine r8169 atl1e yellowfin \ - tg3 dl2k ns83820 atl1 b44 bnx2 skge sky2 tulip depca 3c501 3c503 \ - 3c505 3c507 3c509 3c515 ac3200 at1700 cosa cs89x0 de600 de620 e2100 \ - eepro eexpress eth16i ewrk3 forcedeth hostess_sv11 hp-plus hp ni52 \ - ni65 sb1000 sealevel smc-ultra sis900 smc9194 wd; do + for MODULE in 3c59x acenic e1000 e1000e e100 epic100 hp100 ne2k-pci \ + pcnet32 8139too 8139cp tulip via-rhine r8169 atl1e yellowfin tg3 \ + dl2k ns83820 atl1 b44 bnx2 skge sky2 tulip forcedeth sb1000 sis900; do modprobe $MODULE 2>/dev/null - ETH="$(cat /proc/net/dev | grep : | grep -v lo: | cut -d : -f 1 | tr -d " " | head -n 1)" + ETH="$(network_device)" if [ "$ETH" != "" ]; then echo $ETH return 0 @@ -324,9 +345,63 @@ init_network_dev() done # If we are here, none of the above specified modules worked. - # As a last chance, try to modprobe everything. - modprobe_everything - cat /proc/net/dev | grep : | grep -v lo: | cut -d : -f 1 | tr -d " " | head -n 1 + # As a last chance, try to modprobe everything else + modprobe_everything -e /drivers/net/ + echo $(network_device) +} + + +# Initialize network IP address +# either static from ip=bootparameter, or from DHCP +# +init_network_ip() +{ + debug_log "init_network_ip" "$*" + local IP ETH SCRIPT CLIENT SERVER GW MASK + + SCRIPT=/tmp/dhcpscript + ETH=$(init_network_dev) + IP=$(cmdline_value ip) + + echo "* Setting up network" >&2 + + if [ "$IP" != "" ]; then + # set IP address as given by boot paramter + echo "$IP" | while IFS=":" read CLIENT SERVER GW MASK; do + ifconfig $ETH "$CLIENT" netmask "$MASK" + route add default gw "$GW" + echo nameserver "$GW" >> /etc/resolv.conf + echo nameserver "$SERVER" >> /etc/resolv.conf + done + else + # if client ip is unknown, try to get a DHCP lease + ifconfig $ETH up + echo -e '#!/bin/sh\nif [ "$1" != "bound" ]; then exit; fi\nifconfig $interface $ip netmask $subnet\nroute add default gw $router\necho nameserver $dns >>/etc/resolv.conf' >$SCRIPT + chmod a+x $SCRIPT + udhcpc -i $ETH -n -s $SCRIPT -q >/dev/null + fi +} + + +# Mount data from http using httpfs +# $1 = from URL +# $2 = target +mount_data_http() +{ + debug_log "mount_data_http" "$*" + + echo_green_star >&2 + echo "Load data from $1" >&2 + + init_network_ip + + if [ "$(network_device)" != "" ]; then + echo "* Mounting remote file..." >&2 + mkdir -p "$2" + mount.httpfs2 -r 9999 -t 5 -C /tmp/httpfs.cache -S 100000000 -c /dev/null "$1" "$2" >/dev/null 2>/dev/null + mount -o loop "$2"/* "$2" # self mount + echo "$2/$LIVEKITNAME" + fi } @@ -336,28 +411,20 @@ init_network_dev() download_data_pxe() { debug_log "download_data_pxe" "$*" - local CMD CLIENT SERVER GW MASK PORT ETH PROTOCOL + local IP CMD CLIENT SERVER GW MASK PORT PROTOCOL mkdir -p "$1/$LIVEKITNAME" + IP="$(cmdline_value ip)" - cmdline_value ip | while IFS=":" read CLIENT SERVER GW MASK PORT; do + echo "$IP" | while IFS=":" read CLIENT SERVER GW MASK PORT; do echo_green_star >&2 - echo "Downloading files from $SERVER ..." >&2 + echo "Contacting PXE server $SERVER" >&2 - ETH=$(init_network_dev) if [ "$PORT" = "" ]; then PORT="7529"; fi - # set IP address as given by boot paramter - if [ "$CLIENT" != "" -a "$MASK" != "" ]; then - ifconfig $ETH "$CLIENT" netmask "$MASK" - route add default gw "$GW" - else - # if client ip is unknown, try to get a DHCP lease - udhcpc -i $ETH -f -q - fi + init_network_ip - # well known IP address of Google public DNS service - echo nameserver 8.8.8.8 >> /etc/resolv.conf + echo "* Downloading PXE file list" PROTOCOL=http wget -q -O "$1/PXEFILELIST" "http://$SERVER:$PORT/PXEFILELIST?$(uname -r):$(uname -m)" @@ -367,6 +434,8 @@ download_data_pxe() tftp -g -r PXEFILELIST -l "$1/PXEFILELIST" $SERVER fi + echo "* Downloading files from the list" + cat "$1/PXEFILELIST" | while read FILE; do if [ "$PROTOCOL" = "http" ]; then wget -O "$1/$LIVEKITNAME/$FILE" "http://$SERVER:$PORT/$FILE" @@ -380,6 +449,7 @@ download_data_pxe() echo "$1/$LIVEKITNAME" } + # Find LIVEKIT data by mounting all devices # If found, keep mounted, else unmount # $1 = data directory target (mount here) @@ -420,6 +490,7 @@ find_data_try() done } + # Retry finding LIVEKIT data several times, # until timeouted or until data is found # $1 = timeout @@ -431,12 +502,20 @@ find_data() local DATA FROM + FROM="$(cmdline_value from)" + + # boot parameter specified as from=http://server.com/file.iso + if [ "$(echo $FROM | grep 'http://')" != "" ]; then + mount_data_http "$FROM" "$2" + return + fi + + # if we got IP address as boot parameter, it means we booted over PXE if [ "$(cmdline_value ip)" != "" ]; then download_data_pxe "$2" return fi - FROM="$(cmdline_value from)" if [ "$FROM" = "" ]; then FROM="$LIVEKITNAME"; fi echo_green_star >&2 @@ -454,13 +533,20 @@ find_data() sleep 1 done echo "" >&2 - - if [ "$DATA" = "" ]; then - fatal "$LIVEKITNAME data not found" - fi - } + +# Check if data is found and exists +# $1 = data directory +# +check_data_found() +{ + if [ "$1" = "" -o ! -d "$1" ]; then + fatal "Could not locate $LIVEKITNAME data"; + fi +} + + # Activate persistent changes # $1 = data directory # $2 = target changes directory @@ -515,6 +601,7 @@ persistent_changes() fi } + # Copy content of rootcopy directory to union # $1 = data directory # $2 = union directory @@ -529,6 +616,7 @@ copy_rootcopy_content() fi } + # Copy data to RAM if requested # $1 = live data directory # $2 = changes directory @@ -561,6 +649,7 @@ copy_to_ram() fi } + # load filter # filter_load() @@ -574,6 +663,7 @@ filter_load() fi } + # noload filter # filter_noload() @@ -594,6 +684,7 @@ sortmod() cat - | sed -r "s,(.*/(.*)),\\2:\\1," | sort -n | cut -d : -f 2- } + # Mount squashfs filesystem bundles # and add them to union # $1 = directory where to search for bundles @@ -617,6 +708,7 @@ union_append_bundles() done } + # Create empty fstab properly # $1 = root directory # @@ -641,6 +733,14 @@ change_root() { debug_log "change_root" "$*" + # if we are booting over httpfs, we need to copyup these files so they are + # accessible on union without any further lookup down, else httpfs locks + if [ "$(network_device)" != "" ]; then + touch "$1/etc/resolv.conf" + touch "$1/etc/hosts" + touch "$1/etc/gai.conf" + fi + umount /proc umount /sys @@ -671,4 +771,4 @@ change_root() mount -n -o remount,ro aufs . pivot_root . mnt/live exec $CHROOT . $INIT < dev/console > dev/console 2>&1 -} \ No newline at end of file +}