99 lines
3.2 KiB
Bash
99 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
# Failsafe minimal text-mode firstboot
|
|
|
|
# Welcome
|
|
|
|
echo "########################################################"
|
|
echo "### ###"
|
|
echo "### Welcome to `cat /etc/qubes-release` ###"
|
|
echo "### ###"
|
|
echo "########################################################"
|
|
echo
|
|
echo "This is failsafe text-mode firstboot. If you see this message, you have"
|
|
echo "some problem with Xorg (most probably video driver)"
|
|
echo
|
|
echo "Anyway some basic setup is needed to continue:"
|
|
|
|
# User creation
|
|
|
|
echo
|
|
echo "1. Setup user account"
|
|
user=
|
|
while [ -z "$user" ]; do
|
|
echo -n "Enter desired username: "
|
|
read user
|
|
if echo "$user" | grep -q "[^a-z0-9]"; then
|
|
echo "ERROR: Invalid characters in username, try again"
|
|
elif id $user > /dev/null 2>&1; then
|
|
echo "ERROR: This user already exists, try again"
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
useradd -G qubes -m "$user" || exit 1
|
|
while ! passwd "$user"; do true; done
|
|
|
|
|
|
# Create default VMs
|
|
|
|
echo
|
|
echo "2. Create default VMs"
|
|
echo
|
|
echo "Choose one option:"
|
|
echo " 1. Create default service VMs, and pre-defined AppVMs (work, banking, personal, untrusted)"
|
|
echo " 2. Just create default service VMs"
|
|
echo " 3. Do not create any VMs right now (not recommended, for advanced users only)"
|
|
vms_option=
|
|
while true; do
|
|
echo -n "Enter your choice (1/2/3): "
|
|
read vms_option
|
|
if [ "$vms_option" == "1" ]; then
|
|
vms_service=yes
|
|
vms_app=yes
|
|
break
|
|
elif [ "$vms_option" == "2" ]; then
|
|
vms_service=yes
|
|
break
|
|
elif [ "$vms_option" == "3" ]; then
|
|
break
|
|
else
|
|
echo "ERROR: Invalid choice, try again"
|
|
fi
|
|
done
|
|
|
|
set -e
|
|
|
|
if [ "$vms_service" == "yes" ]; then
|
|
echo "-> Creating default netvm..."
|
|
su -c "/usr/bin/qvm-create --net --label red netvm" - $user
|
|
for dev in `/sbin/lspci -mm -n | sed -ne 's/^\([0-9][0-9]:[0-9][0-9].[0-9]\) "02.*/\1/p'`; do
|
|
su -c "/usr/bin/qvm-pci -a netvm $dev" - $user
|
|
done
|
|
echo "-> Creating default firewallvm..."
|
|
su -c "/usr/bin/qvm-create --proxy --label green firewallvm" - $user
|
|
su -c "/usr/bin/qvm-prefs --set firewallvm netvm netvm" - $user
|
|
su -c "/usr/bin/qubes-prefs --set default-netvm firewallvm" - $user
|
|
echo "-> Configuring template..."
|
|
/bin/mkdir -p /mnt/template-root
|
|
for template in `ls /var/lib/qubes/vm-templates`; do
|
|
/bin/mount -oloop "/var/lib/qubes/vm-templates/$template/root.img" /mnt/template-root
|
|
cp /etc/localtime /mnt/template-root/etc
|
|
cp /etc/ntp.conf /mnt/template-root/etc
|
|
umount /mnt/template-root
|
|
done
|
|
echo "-> Starting network..."
|
|
service qubes_netvm start
|
|
echo "-> Creating DispVM savefile (can take long time)..."
|
|
su -c "/usr/bin/qvm-create-default-dvm --default-template --default-script" - $user
|
|
fi
|
|
|
|
if [ "$vms_app" == "yes" ]; then
|
|
echo "-> Creating default AppVMs..."
|
|
su -c "/usr/bin/qvm-create work --label green" - $user
|
|
su -c "/usr/bin/qvm-create banking --label green" - $user
|
|
su -c "/usr/bin/qvm-create personal --label yellow" - $user
|
|
su -c "/usr/bin/qvm-create untrusted --label red" - $user
|
|
fi
|
|
echo "-> Done."
|