#!/bin/bash

cmd=$(basename $0)

if [ $# -ne 5 ]; then
  echo "Syntax:" 1>&2
  echo "$cmd [debiun, ubuntu Code] [nfs directory] [defaults username] [passwd] [enp1s0]" 1>&2
  echo "example:" 1>&2
  echo "$cmd focal nfsroot user password eth-device-name(enp1s0 and so on)" 1>&2
  exit 1
fi

DEB=$1
NFS=$2
USR=$3
PSW=$4
ETH=$5

# same option --variant=minbase also available buildd|fakechroot|scratchbox 
sudo debootstrap \
 --include=linux-image-generic,grub-efi-amd64,openssh-server,bash-completion,iptables,nfs-common,vim,initramfs-tools,language-pack-ja,man-db \
	$DEB $NFS

echo "Asia/Tokyo" > $NFS/etc/timezone
cp /usr/share/zoneinfo/Japan $NFS/etc/localtime
echo "network:" >$NFS/etc/netplan/50-nfsroot-init.yaml
echo "  ethernets:" >>$NFS/etc/netplan/50-nfsroot-init.yaml
echo "    enp1s0:" >>$NFS/etc/netplan/50-nfsroot-init.yaml
echo "      accept-ra: true;" >>$NFS/etc/netplan/50-nfsroot-init.yaml
echo "      dhcp4: true;" >>$NFS/etc/netplan/50-nfsroot-init.yaml
echo "  version: 2" >>$NFS/etc/netplan/50-nfsroot-init.yaml
echo `basename $NFS` >$NFS/etc/hostname
echo "127.0.0.1	localhost " `basename $NFS` >$NFS/etc/hosts
echo "::1     localhost ip6-localhost ip6-loopback" >>$NFS/etc/hosts
echo "ff02::1         ip6-allnodes" >>$NFS/etc/hosts
echo "ff02::2         ip6-allrouters" >>$NFS/etc/hosts

grep -v '#' /etc/apt/sources.list >$NFS/etc/apt/sources.list
sed -i -e 's/exec update-grub/exec echo/' $NFS/etc/kernel/postinst.d/zz-update-grub
sed -i -e 's/Port 22/Port 8556/' $NFS/etc/ssh/sshd_config
sed -i -e 's/MODULES=most/MODULES=netboot/' $NFS/etc/initramfs-tools/initramfs.conf

mount -t proc none $NFS/proc
mount -t devtmpfs none $NFS/dev
mount -t sysfs none $NFS/sys

chroot $NFS useradd -G sudo -d /home/$USR -m -s /bin/bash \
	-p `mkpasswd -s -m sha-512 $PSW` $USR

umount $NFS/proc 
umount $NFS/dev 
umount $NFS/sys

echo done
