projects:livenet:server

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
projects:livenet:server [2018/03/12 23:21] nicolaprojects:livenet:server [2018/03/21 11:56] (current) – [install livenet client package] scipio
Line 1: Line 1:
-{{indexmenu>:projects:livenet#1|navbar tsort}}+===== Requirements ===== 
 +** HW**2 nic device
  
-===== Software richiesto =====+**OS**: Ubuntu server 17.10
  
-**Sistema operativo**: Ubuntu server 17.10+<code>apt install bash debootstrap schroot syslinux nfs-kernel-server tftpd-hpa xorriso pigz  zfsutils-linux</code> 
 + 
 +**Optional config** 
 + 
 +<code>apt install isc-dhcp-server </code> 
 + 
 +**network config ** 
 +nano /etc/netplan/01-netcfg.yaml  
 + 
 +<code> 
 +# This file describes the network interfaces available on your system 
 +# For more information, see netplan(5). 
 +network: 
 +  version: 2 
 +  renderer: networkd 
 +  ethernets: 
 +    ens3: 
 +      dhcp4: no 
 +      addresses: [10.1.22.2/24] 
 +      gateway4: 192.168.122.1 
 +      nameservers: 
 +        addresses: [8.8.8.8,8.8.4.4] 
 +    ens4: 
 +      dhcp4: yes 
 + 
 + 
 + 
 +</code> 
 + 
 +<code>netplan apply</code> 
 +===== Build livenet environment ===== 
 +==== Preparazione dell'ambiente zfs ==== 
 + 
 +<code>zpool create livenet /dev/sdb</code> 
 +<code>zfs create livenet/images</code> 
 +<code>zfs create livenet/boot</code> 
 + 
 +Download package  git clone https://github.com/scipioni/livenet-server.git 
 +edit /etc/default/livenet like this 
 + 
 +<code> 
 +# folder that contains livenet system 
 +BASE=/livenet 
 +IMAGES=${BASE}/images 
 +BOOT=${BASE}/boot 
 +</code> 
 + 
 +==== Trivial FTP ==== 
 +edit /etc/default/tftp-hpa 
 +<code> 
 +TFTP_USERNAME="tftp" 
 +TFTP_DIRECTORY="/zfsp_livenet/boot" 
 +TFTP_ADDRESS="0.0.0.0:69" 
 +TFTP_OPTIONS="--secure" 
 +</code> 
 + 
 +<code>mkdir /livenet/boot/pxelinux.cfg 
 + 
 +cp -a /usr/lib/syslinux/* /livenet/boot 
 + 
 +cp /livenet/boot/modules/efi64/* /livenet/boot </code> 
 + 
 +edit /livenet/boot/pxelinux.cfg/default 
 +<code> 
 +default menu.c32 
 +prompt 0 
 +#timeout 100 
 + 
 +menu title PXE Special Boot Menu 
 +MENU AUTOBOOT Starting Livenet in # seconds 
 + 
 +label bootlocal 
 +   menu label ^Boot local disk 
 +   menu default 
 +   localboot 0 
 + 
 +label nfs 
 +   menu label Ubuntu 18.04 - diskless 
 +   kernel /bionic/kernel 
 +   append initrd=/bionic/initrd ro livenet_root=10.1.22.2:/zfsp_livenet/images/bionic livenet_profile=default 
 + 
 +label nfs 
 +   menu label Ubuntu 14.04 - install 
 +   kernel /trusty/kernel 
 +   append initrd=/trusty/initrd ro livenet_root=10.0.254.240:/images/trusty livenet_profile=default livenet_action=install livenet_action_end=reboot 
 + 
 +</code> 
 + 
 + 
 + 
 + 
 + 
 + 
 +===== BUILD IMAGE CLIENT ==== 
 +zfs create livenet/images/bionic 
 +debootstrap --arch amd64 bionic /zfsp_livenet/images/bionic/ http://archive.ubuntu.com/ubuntu 
 + 
 +cd /livenet/images 
 +run .... 
 +<code> 
 +R=bionic 
 +cat > ${R}/etc/hosts <<QWK 
 +127.0.0.1   localhost livenet-host 
 +::1     localhost ip6-localhost ip6-loopback 
 +ff02::    ip6-allnodes 
 +ff02::    ip6-allrouters 
 +QWK 
 + 
 +chroot ${R} lsb_release -c | awk '{print $2}' > ${R}/etc/debian_chroot 
 +chroot bionic/ 
 +chroot ${R} apt-get -y -q install locales dialog 
 +chroot ${R} locale-gen en_GB.UTF-8 
 +chroot ${R} locale-gen it_IT.UTF-8 
 +chroot ${R} update-locale LANG=it_IT.UTF-8 LANGUAGE=it:en_US:en 
 +echo Europe/Rome > ${R}/etc/timezone 
 +cp ${R}/usr/share/zoneinfo/Europe/Rome ${R}/etc/localtime 
 +cat > ${R}/usr/sbin/policy-rc.d <<QWE 
 +#!/bin/sh 
 + 
 +# dpkg/apt not start any daemons when things are installed in the chroot 
 + 
 +if [ ! "\\\`cat /etc/hostname\\\`" = "\\\`hostname\\\`" ]; then 
 +    exit 101 
 +fi 
 +QWE 
 + 
 +chmod +x ${R}/usr/sbin/policy-rc.d 
 +</code> 
 + 
 +<code>mount --bind /zfsp_livenet/images/bionic/boot/ /zfsp_livenet/boot/bionic</code> 
 + 
 +<code> 
 +DISTR=bionic 
 + 
 +cat > /etc/apt/sources.list <<QWE 
 +############################################################# 
 +################### OFFICIAL UBUNTU REPOS ################### 
 +############################################################# 
 +###### Ubuntu Main Repos 
 +deb http://archive.ubuntu.com/ubuntu/ ${DISTR} main restricted universe multiverse  
 +###### Ubuntu Update Repos 
 +deb http://archive.ubuntu.com/ubuntu/ ${DISTR}-security main restricted universe multiverse  
 +deb http://archive.ubuntu.com/ubuntu/ ${DISTR}-updates main restricted universe multiverse  
 +deb http://archive.ubuntu.com/ubuntu/ ${DISTR}-proposed main restricted universe multiverse  
 +deb http://archive.ubuntu.com/ubuntu/ ${DISTR}-backports main restricted universe multiverse  
 +###### Ubuntu Partner Repo 
 +deb http://archive.canonical.com/ubuntu ${DISTR} partner 
 +QWE 
 +</code> 
 + 
 +<code> 
 +apt update apt -y upgrade 
 +apt -y install initramfs-tools  python-passlib pv screen byobu lsof pigz rsync nfs-common libpam-script xloadimage conntrack 
 +</code> 
 + 
 +==== install livenet client package ==== 
 + 
 +<code> 
 +# copiare /home/scipio/.netrv e /home/scipio/.gitconfig in <chroot>/root/ 
 +cd /root 
 +git clone  https://github.com/scipioni/livenet-client.git 
 +cd livenet-client 
 +git checkout bionic 
 +mv .git / 
 +git status 
 +find / -maxdepth 1 > .gitignore 
 + 
 +</code> 
 + 
 +inside git directory 
 +<code> 
 +rsync -avb etc/ /etc/ 
 +rsync -avb usr/ /usr/ 
 +rsync -avb debian / 
 +rsync -avb README.md / 
 +apt-get -y install linux-generic 
 +</code> 
 + 
 +==== etc/initramfs-tools/hooks/livenet ==== 
 +<code> 
 +#!/bin/sh -e 
 +# initramfs hook for livenet 
 +#set -x 
 +PREREQ="" 
 + 
 +# Output pre-requisites 
 +prereqs() 
 +
 +       echo "$PREREQ" 
 +
 + 
 +case "$1" in 
 +    prereqs) 
 +       prereqs 
 +       exit 0 
 +       ;; 
 +esac 
 + 
 +. /usr/share/initramfs-tools/hook-functions 
 + 
 +rm ${DESTDIR}/bin/cpio # importante! altrimenti rimane un cpio troppo semplificato 
 +copy_exec /bin/cpio /bin 
 + 
 +mkdir -p ${DESTDIR}/conf 
 +cp /etc/livenet/livenet.conf ${DESTDIR}/conf 
 +[ -f /etc/livenet/livenet.conf.override ] && cp /etc/livenet/livenet.conf.override ${DESTDIR}/conf 
 +cp /etc/initramfs-tools/scripts/functions-livenet ${DESTDIR}/conf 
 + 
 +manual_add_modules aufs 
 +manual_add_modules overlayfs 
 +auto_add_modules net 
 +auto_add_modules nfsv4 
 + 
 +# pulizia di firmware non necessario e pesante 
 +set +e 
 +rm -f ${DESTDIR}/lib/firmware/* >/dev/null 2>&
 +set -e 
 + 
 +### qui sotto andrebbe commentato in produzione ### 
 + 
 +# tastiera italiana in initram 
 +# attivata da do_debug_shell (loadkeys /etc/boottime.kmap.gz) 
 +#cp -au /etc/console-setup/cached.kmap.gz ${DESTDIR}/etc/boottime.kmap.gz 
 + 
 +# nfs4 
 +#copy_exec /usr/sbin/rpc.idmapd /bin 
 +#copy_exec /sbin/mount.nfs /bin 
 +#cp -au /etc/netconfig ${DESTDIR}/etc/netconfig 
 + 
 +#cat > ${DESTDIR}/etc/passwd <<EOF 
 +#nobody::65534:65534:nobody:/nonexistent:/bin/sh 
 +#EOF 
 +#cat > ${DESTDIR}/etc/group <<EOF 
 +#nogroup:x:65534: 
 +#EOF 
 + 
 +# debug purpose ################ 
 +# ricordati di mettere FRAMEBUFFER=n in /etc/initramfs-tools/conf.d/splash 
 +#copy_exec /sbin/ifconfig 
 +#copy_exec /sbin/lsmod /bin 
 +#copy_exec /usr/bin/lspci /bin 
 +################################# 
 + 
 +# wireless ##################### 
 +#copy_exec /sbin/iwconfig 
 +#copy_exec /sbin/iwlist 
 +#copy_exec /sbin/iwpriv 
 +#copy_exec /sbin/iwevent 
 +#copy_exec /sbin/iwgetid 
 +#copy_exec /sbin/iwspy 
 +#copy_exec /usr/sbin/rfkill 
 +#cp -au /lib/firmware/iwl*-[13].ucode ${DESTDIR}/lib/firmware 
 +################################# 
 +</code> 
 + 
 +===Rebuild initramfs image === 
 +ln-mng --kernel 
 + 
 +===== DHCP ===== 
 +==== Abilitare dhcpd su specifica scheda ==== 
 +Editare la riga in 
 + 
 +/etc/default/isc-dhcp-server 
 + 
 +<code>INTERFACESv4="ens3"</code> 
 + 
 +==== Configurazione dhcpd ==== 
 +editare il file /etc/dhcp/dhcpd.conf 
 +al termine service isc-dhcp-service restart 
 +<code> 
 +ddns-update-style none; 
 +authoritative; 
 + 
 +option domain-name              "livenet"; 
 +option domain-name-servers      8.8.8.8; 
 + 
 +allow bootp; 
 +allow booting; 
 +  
 +option space PXE; 
 +# Code 1: Multicast IP address of bootfile 
 +option PXE.mtftp-ip code 1 = ip-address; 
 +# Code 2: UDP port that client should monitor for MTFTP responses 
 +option PXE.mtftp-cport code 2 = unsigned integer 16; 
 +# Code 3: UDP port that MTFTP servers are using to listen for MTFTP requests 
 +option PXE.mtftp-sport code 3 = unsigned integer 16; 
 +# Code 4: Number of secondes a client must listen for activity before trying 
 +#         to start a new MTFTP transfer 
 +option PXE.mtftp-tmout code 4 = unsigned integer 8; 
 +option PXE.mtftp-delay code 5 = unsigned integer 8; 
 +# Code 5: Number of secondes a client must listen before trying to restart 
 +#         a MTFTP transfer 
 +option PXE.discovery-control code 6 = unsigned integer 8; 
 +option PXE.discovery-mcast-addr code 7 = ip-address; 
 +set vendor-string = option vendor-class-identifier; 
 + 
 +class "PXE"
 +   match if substring(option vendor-class-identifier, 0, 9) = "PXEClient"; 
 +   option vendor-class-identifier "PXEClient"; 
 +   vendor-option-space PXE; 
 +   option PXE.mtftp-ip 0.0.0.0; 
 +
 + 
 +class "Etherboot"
 +   match if substring(option vendor-class-identifier, 0, 9) = "Etherboot"; 
 +   option vendor-class-identifier "Etherboot"; 
 +   vendor-option-space PXE; 
 +   option PXE.mtftp-ip 0.0.0.0; 
 +
 + 
 +class "LIVENET"
 +    match if (substring(option vendor-class-identifier,0,7) = "LIVENET") or (substring(option vendor-class-identifier,0,9) = "PXEClient") or (substring(option vendor-class-identifier,0,9) = "Etherboot"); 
 +    log ( info, "Packet from PXE or LIVENET client"); 
 +
 + 
 +shared-network "clients"
 +  subnet 10.1.22.0 netmask 255.255.255.0 { 
 +  option subnet-mask 255.255.255.0; 
 +  option routers 10.1.22.2; 
 +  #default-lease-time 28800; 
 +  #max-lease-time 86400; 
 + 
 +  pool { 
 +      # restringe il lease solo alla classe LIVENET 
 +      allow members of "LIVENET"; 
 +      range 10.1.22.10 10.1.22.100; 
 +      filename "/pxelinux.0"; 
 +      next-server 10.1.22.2; 
 +      } 
 +  } 
 +
 + 
 + 
 + 
 +</code>
  
-apt install bash debootstrap schroot syslinux nfs-kernel-server tftpd-hpa xorriso pigz  zfsutils-linux 
  
-**software facoltativo ma usato nel test** 
  
- apt install isc-dhcp-server 
  • projects/livenet/server.1520893308.txt.gz
  • Last modified: 2018/03/12 23:21
  • by nicola